main-BtLo_Yv3.js•4.81 MB
function _mergeNamespaces(n2, m2) {
for (var i = 0; i < m2.length; i++) {
const e2 = m2[i];
if (typeof e2 !== "string" && !Array.isArray(e2)) {
for (const k2 in e2) {
if (k2 !== "default" && !(k2 in n2)) {
const d2 = Object.getOwnPropertyDescriptor(e2, k2);
if (d2) {
Object.defineProperty(n2, k2, d2.get ? d2 : {
enumerable: true,
get: () => e2[k2]
});
}
}
}
}
}
return Object.freeze(Object.defineProperty(n2, Symbol.toStringTag, { value: "Module" }));
}
var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
function getDefaultExportFromCjs(x2) {
return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, "default") ? x2["default"] : x2;
}
var jsxRuntime = { exports: {} };
var reactJsxRuntime_production_min = {};
var react = { exports: {} };
var react_production_min = {};
/**
* @license React
* react.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
var l$3 = Symbol.for("react.element"), n$3 = Symbol.for("react.portal"), p$4 = Symbol.for("react.fragment"), q$3 = Symbol.for("react.strict_mode"), r$1 = Symbol.for("react.profiler"), t$2 = Symbol.for("react.provider"), u$1 = Symbol.for("react.context"), v$3 = Symbol.for("react.forward_ref"), w$1 = Symbol.for("react.suspense"), x$1 = Symbol.for("react.memo"), y$1 = Symbol.for("react.lazy"), z$2 = Symbol.iterator;
function A$2(a) {
if (null === a || "object" !== typeof a) return null;
a = z$2 && a[z$2] || a["@@iterator"];
return "function" === typeof a ? a : null;
}
var B$1 = { isMounted: function() {
return false;
}, enqueueForceUpdate: function() {
}, enqueueReplaceState: function() {
}, enqueueSetState: function() {
} }, C$1 = Object.assign, D$1 = {};
function E$1(a, b2, e2) {
this.props = a;
this.context = b2;
this.refs = D$1;
this.updater = e2 || B$1;
}
E$1.prototype.isReactComponent = {};
E$1.prototype.setState = function(a, b2) {
if ("object" !== typeof a && "function" !== typeof a && null != a) throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");
this.updater.enqueueSetState(this, a, b2, "setState");
};
E$1.prototype.forceUpdate = function(a) {
this.updater.enqueueForceUpdate(this, a, "forceUpdate");
};
function F() {
}
F.prototype = E$1.prototype;
function G$1(a, b2, e2) {
this.props = a;
this.context = b2;
this.refs = D$1;
this.updater = e2 || B$1;
}
var H$1 = G$1.prototype = new F();
H$1.constructor = G$1;
C$1(H$1, E$1.prototype);
H$1.isPureReactComponent = true;
var I$1 = Array.isArray, J = Object.prototype.hasOwnProperty, K$1 = { current: null }, L$1 = { key: true, ref: true, __self: true, __source: true };
function M$1(a, b2, e2) {
var d2, c2 = {}, k2 = null, h2 = null;
if (null != b2) for (d2 in void 0 !== b2.ref && (h2 = b2.ref), void 0 !== b2.key && (k2 = "" + b2.key), b2) J.call(b2, d2) && !L$1.hasOwnProperty(d2) && (c2[d2] = b2[d2]);
var g2 = arguments.length - 2;
if (1 === g2) c2.children = e2;
else if (1 < g2) {
for (var f2 = Array(g2), m2 = 0; m2 < g2; m2++) f2[m2] = arguments[m2 + 2];
c2.children = f2;
}
if (a && a.defaultProps) for (d2 in g2 = a.defaultProps, g2) void 0 === c2[d2] && (c2[d2] = g2[d2]);
return { $$typeof: l$3, type: a, key: k2, ref: h2, props: c2, _owner: K$1.current };
}
function N$1(a, b2) {
return { $$typeof: l$3, type: a.type, key: b2, ref: a.ref, props: a.props, _owner: a._owner };
}
function O$1(a) {
return "object" === typeof a && null !== a && a.$$typeof === l$3;
}
function escape(a) {
var b2 = { "=": "=0", ":": "=2" };
return "$" + a.replace(/[=:]/g, function(a2) {
return b2[a2];
});
}
var P$1 = /\/+/g;
function Q$1(a, b2) {
return "object" === typeof a && null !== a && null != a.key ? escape("" + a.key) : b2.toString(36);
}
function R$1(a, b2, e2, d2, c2) {
var k2 = typeof a;
if ("undefined" === k2 || "boolean" === k2) a = null;
var h2 = false;
if (null === a) h2 = true;
else switch (k2) {
case "string":
case "number":
h2 = true;
break;
case "object":
switch (a.$$typeof) {
case l$3:
case n$3:
h2 = true;
}
}
if (h2) return h2 = a, c2 = c2(h2), a = "" === d2 ? "." + Q$1(h2, 0) : d2, I$1(c2) ? (e2 = "", null != a && (e2 = a.replace(P$1, "$&/") + "/"), R$1(c2, b2, e2, "", function(a2) {
return a2;
})) : null != c2 && (O$1(c2) && (c2 = N$1(c2, e2 + (!c2.key || h2 && h2.key === c2.key ? "" : ("" + c2.key).replace(P$1, "$&/") + "/") + a)), b2.push(c2)), 1;
h2 = 0;
d2 = "" === d2 ? "." : d2 + ":";
if (I$1(a)) for (var g2 = 0; g2 < a.length; g2++) {
k2 = a[g2];
var f2 = d2 + Q$1(k2, g2);
h2 += R$1(k2, b2, e2, f2, c2);
}
else if (f2 = A$2(a), "function" === typeof f2) for (a = f2.call(a), g2 = 0; !(k2 = a.next()).done; ) k2 = k2.value, f2 = d2 + Q$1(k2, g2++), h2 += R$1(k2, b2, e2, f2, c2);
else if ("object" === k2) throw b2 = String(a), Error("Objects are not valid as a React child (found: " + ("[object Object]" === b2 ? "object with keys {" + Object.keys(a).join(", ") + "}" : b2) + "). If you meant to render a collection of children, use an array instead.");
return h2;
}
function S$1(a, b2, e2) {
if (null == a) return a;
var d2 = [], c2 = 0;
R$1(a, d2, "", "", function(a2) {
return b2.call(e2, a2, c2++);
});
return d2;
}
function T$1(a) {
if (-1 === a._status) {
var b2 = a._result;
b2 = b2();
b2.then(function(b3) {
if (0 === a._status || -1 === a._status) a._status = 1, a._result = b3;
}, function(b3) {
if (0 === a._status || -1 === a._status) a._status = 2, a._result = b3;
});
-1 === a._status && (a._status = 0, a._result = b2);
}
if (1 === a._status) return a._result.default;
throw a._result;
}
var U$1 = { current: null }, V$1 = { transition: null }, W$1 = { ReactCurrentDispatcher: U$1, ReactCurrentBatchConfig: V$1, ReactCurrentOwner: K$1 };
function X$1() {
throw Error("act(...) is not supported in production builds of React.");
}
react_production_min.Children = { map: S$1, forEach: function(a, b2, e2) {
S$1(a, function() {
b2.apply(this, arguments);
}, e2);
}, count: function(a) {
var b2 = 0;
S$1(a, function() {
b2++;
});
return b2;
}, toArray: function(a) {
return S$1(a, function(a2) {
return a2;
}) || [];
}, only: function(a) {
if (!O$1(a)) throw Error("React.Children.only expected to receive a single React element child.");
return a;
} };
react_production_min.Component = E$1;
react_production_min.Fragment = p$4;
react_production_min.Profiler = r$1;
react_production_min.PureComponent = G$1;
react_production_min.StrictMode = q$3;
react_production_min.Suspense = w$1;
react_production_min.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = W$1;
react_production_min.act = X$1;
react_production_min.cloneElement = function(a, b2, e2) {
if (null === a || void 0 === a) throw Error("React.cloneElement(...): The argument must be a React element, but you passed " + a + ".");
var d2 = C$1({}, a.props), c2 = a.key, k2 = a.ref, h2 = a._owner;
if (null != b2) {
void 0 !== b2.ref && (k2 = b2.ref, h2 = K$1.current);
void 0 !== b2.key && (c2 = "" + b2.key);
if (a.type && a.type.defaultProps) var g2 = a.type.defaultProps;
for (f2 in b2) J.call(b2, f2) && !L$1.hasOwnProperty(f2) && (d2[f2] = void 0 === b2[f2] && void 0 !== g2 ? g2[f2] : b2[f2]);
}
var f2 = arguments.length - 2;
if (1 === f2) d2.children = e2;
else if (1 < f2) {
g2 = Array(f2);
for (var m2 = 0; m2 < f2; m2++) g2[m2] = arguments[m2 + 2];
d2.children = g2;
}
return { $$typeof: l$3, type: a.type, key: c2, ref: k2, props: d2, _owner: h2 };
};
react_production_min.createContext = function(a) {
a = { $$typeof: u$1, _currentValue: a, _currentValue2: a, _threadCount: 0, Provider: null, Consumer: null, _defaultValue: null, _globalName: null };
a.Provider = { $$typeof: t$2, _context: a };
return a.Consumer = a;
};
react_production_min.createElement = M$1;
react_production_min.createFactory = function(a) {
var b2 = M$1.bind(null, a);
b2.type = a;
return b2;
};
react_production_min.createRef = function() {
return { current: null };
};
react_production_min.forwardRef = function(a) {
return { $$typeof: v$3, render: a };
};
react_production_min.isValidElement = O$1;
react_production_min.lazy = function(a) {
return { $$typeof: y$1, _payload: { _status: -1, _result: a }, _init: T$1 };
};
react_production_min.memo = function(a, b2) {
return { $$typeof: x$1, type: a, compare: void 0 === b2 ? null : b2 };
};
react_production_min.startTransition = function(a) {
var b2 = V$1.transition;
V$1.transition = {};
try {
a();
} finally {
V$1.transition = b2;
}
};
react_production_min.unstable_act = X$1;
react_production_min.useCallback = function(a, b2) {
return U$1.current.useCallback(a, b2);
};
react_production_min.useContext = function(a) {
return U$1.current.useContext(a);
};
react_production_min.useDebugValue = function() {
};
react_production_min.useDeferredValue = function(a) {
return U$1.current.useDeferredValue(a);
};
react_production_min.useEffect = function(a, b2) {
return U$1.current.useEffect(a, b2);
};
react_production_min.useId = function() {
return U$1.current.useId();
};
react_production_min.useImperativeHandle = function(a, b2, e2) {
return U$1.current.useImperativeHandle(a, b2, e2);
};
react_production_min.useInsertionEffect = function(a, b2) {
return U$1.current.useInsertionEffect(a, b2);
};
react_production_min.useLayoutEffect = function(a, b2) {
return U$1.current.useLayoutEffect(a, b2);
};
react_production_min.useMemo = function(a, b2) {
return U$1.current.useMemo(a, b2);
};
react_production_min.useReducer = function(a, b2, e2) {
return U$1.current.useReducer(a, b2, e2);
};
react_production_min.useRef = function(a) {
return U$1.current.useRef(a);
};
react_production_min.useState = function(a) {
return U$1.current.useState(a);
};
react_production_min.useSyncExternalStore = function(a, b2, e2) {
return U$1.current.useSyncExternalStore(a, b2, e2);
};
react_production_min.useTransition = function() {
return U$1.current.useTransition();
};
react_production_min.version = "18.3.1";
{
react.exports = react_production_min;
}
var reactExports = react.exports;
const React = /* @__PURE__ */ getDefaultExportFromCjs(reactExports);
const React$1 = /* @__PURE__ */ _mergeNamespaces({
__proto__: null,
default: React
}, [reactExports]);
/**
* @license React
* react-jsx-runtime.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
var f$2 = reactExports, k$3 = Symbol.for("react.element"), l$2 = Symbol.for("react.fragment"), m$4 = Object.prototype.hasOwnProperty, n$2 = f$2.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, p$3 = { key: true, ref: true, __self: true, __source: true };
function q$2(c2, a, g2) {
var b2, d2 = {}, e2 = null, h2 = null;
void 0 !== g2 && (e2 = "" + g2);
void 0 !== a.key && (e2 = "" + a.key);
void 0 !== a.ref && (h2 = a.ref);
for (b2 in a) m$4.call(a, b2) && !p$3.hasOwnProperty(b2) && (d2[b2] = a[b2]);
if (c2 && c2.defaultProps) for (b2 in a = c2.defaultProps, a) void 0 === d2[b2] && (d2[b2] = a[b2]);
return { $$typeof: k$3, type: c2, key: e2, ref: h2, props: d2, _owner: n$2.current };
}
reactJsxRuntime_production_min.Fragment = l$2;
reactJsxRuntime_production_min.jsx = q$2;
reactJsxRuntime_production_min.jsxs = q$2;
{
jsxRuntime.exports = reactJsxRuntime_production_min;
}
var jsxRuntimeExports = jsxRuntime.exports;
var client = {};
var reactDom = { exports: {} };
var reactDom_production_min = {};
var scheduler = { exports: {} };
var scheduler_production_min = {};
/**
* @license React
* scheduler.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
(function(exports) {
function f2(a, b2) {
var c2 = a.length;
a.push(b2);
a: for (; 0 < c2; ) {
var d2 = c2 - 1 >>> 1, e2 = a[d2];
if (0 < g2(e2, b2)) a[d2] = b2, a[c2] = e2, c2 = d2;
else break a;
}
}
function h2(a) {
return 0 === a.length ? null : a[0];
}
function k2(a) {
if (0 === a.length) return null;
var b2 = a[0], c2 = a.pop();
if (c2 !== b2) {
a[0] = c2;
a: for (var d2 = 0, e2 = a.length, w2 = e2 >>> 1; d2 < w2; ) {
var m2 = 2 * (d2 + 1) - 1, C2 = a[m2], n2 = m2 + 1, x2 = a[n2];
if (0 > g2(C2, c2)) n2 < e2 && 0 > g2(x2, C2) ? (a[d2] = x2, a[n2] = c2, d2 = n2) : (a[d2] = C2, a[m2] = c2, d2 = m2);
else if (n2 < e2 && 0 > g2(x2, c2)) a[d2] = x2, a[n2] = c2, d2 = n2;
else break a;
}
}
return b2;
}
function g2(a, b2) {
var c2 = a.sortIndex - b2.sortIndex;
return 0 !== c2 ? c2 : a.id - b2.id;
}
if ("object" === typeof performance && "function" === typeof performance.now) {
var l2 = performance;
exports.unstable_now = function() {
return l2.now();
};
} else {
var p2 = Date, q2 = p2.now();
exports.unstable_now = function() {
return p2.now() - q2;
};
}
var r2 = [], t2 = [], u2 = 1, v4 = null, y2 = 3, z2 = false, A2 = false, B2 = false, D2 = "function" === typeof setTimeout ? setTimeout : null, E2 = "function" === typeof clearTimeout ? clearTimeout : null, F2 = "undefined" !== typeof setImmediate ? setImmediate : null;
"undefined" !== typeof navigator && void 0 !== navigator.scheduling && void 0 !== navigator.scheduling.isInputPending && navigator.scheduling.isInputPending.bind(navigator.scheduling);
function G2(a) {
for (var b2 = h2(t2); null !== b2; ) {
if (null === b2.callback) k2(t2);
else if (b2.startTime <= a) k2(t2), b2.sortIndex = b2.expirationTime, f2(r2, b2);
else break;
b2 = h2(t2);
}
}
function H2(a) {
B2 = false;
G2(a);
if (!A2) if (null !== h2(r2)) A2 = true, I2(J2);
else {
var b2 = h2(t2);
null !== b2 && K2(H2, b2.startTime - a);
}
}
function J2(a, b2) {
A2 = false;
B2 && (B2 = false, E2(L2), L2 = -1);
z2 = true;
var c2 = y2;
try {
G2(b2);
for (v4 = h2(r2); null !== v4 && (!(v4.expirationTime > b2) || a && !M2()); ) {
var d2 = v4.callback;
if ("function" === typeof d2) {
v4.callback = null;
y2 = v4.priorityLevel;
var e2 = d2(v4.expirationTime <= b2);
b2 = exports.unstable_now();
"function" === typeof e2 ? v4.callback = e2 : v4 === h2(r2) && k2(r2);
G2(b2);
} else k2(r2);
v4 = h2(r2);
}
if (null !== v4) var w2 = true;
else {
var m2 = h2(t2);
null !== m2 && K2(H2, m2.startTime - b2);
w2 = false;
}
return w2;
} finally {
v4 = null, y2 = c2, z2 = false;
}
}
var N2 = false, O2 = null, L2 = -1, P2 = 5, Q2 = -1;
function M2() {
return exports.unstable_now() - Q2 < P2 ? false : true;
}
function R2() {
if (null !== O2) {
var a = exports.unstable_now();
Q2 = a;
var b2 = true;
try {
b2 = O2(true, a);
} finally {
b2 ? S2() : (N2 = false, O2 = null);
}
} else N2 = false;
}
var S2;
if ("function" === typeof F2) S2 = function() {
F2(R2);
};
else if ("undefined" !== typeof MessageChannel) {
var T2 = new MessageChannel(), U2 = T2.port2;
T2.port1.onmessage = R2;
S2 = function() {
U2.postMessage(null);
};
} else S2 = function() {
D2(R2, 0);
};
function I2(a) {
O2 = a;
N2 || (N2 = true, S2());
}
function K2(a, b2) {
L2 = D2(function() {
a(exports.unstable_now());
}, b2);
}
exports.unstable_IdlePriority = 5;
exports.unstable_ImmediatePriority = 1;
exports.unstable_LowPriority = 4;
exports.unstable_NormalPriority = 3;
exports.unstable_Profiling = null;
exports.unstable_UserBlockingPriority = 2;
exports.unstable_cancelCallback = function(a) {
a.callback = null;
};
exports.unstable_continueExecution = function() {
A2 || z2 || (A2 = true, I2(J2));
};
exports.unstable_forceFrameRate = function(a) {
0 > a || 125 < a ? console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported") : P2 = 0 < a ? Math.floor(1e3 / a) : 5;
};
exports.unstable_getCurrentPriorityLevel = function() {
return y2;
};
exports.unstable_getFirstCallbackNode = function() {
return h2(r2);
};
exports.unstable_next = function(a) {
switch (y2) {
case 1:
case 2:
case 3:
var b2 = 3;
break;
default:
b2 = y2;
}
var c2 = y2;
y2 = b2;
try {
return a();
} finally {
y2 = c2;
}
};
exports.unstable_pauseExecution = function() {
};
exports.unstable_requestPaint = function() {
};
exports.unstable_runWithPriority = function(a, b2) {
switch (a) {
case 1:
case 2:
case 3:
case 4:
case 5:
break;
default:
a = 3;
}
var c2 = y2;
y2 = a;
try {
return b2();
} finally {
y2 = c2;
}
};
exports.unstable_scheduleCallback = function(a, b2, c2) {
var d2 = exports.unstable_now();
"object" === typeof c2 && null !== c2 ? (c2 = c2.delay, c2 = "number" === typeof c2 && 0 < c2 ? d2 + c2 : d2) : c2 = d2;
switch (a) {
case 1:
var e2 = -1;
break;
case 2:
e2 = 250;
break;
case 5:
e2 = 1073741823;
break;
case 4:
e2 = 1e4;
break;
default:
e2 = 5e3;
}
e2 = c2 + e2;
a = { id: u2++, callback: b2, priorityLevel: a, startTime: c2, expirationTime: e2, sortIndex: -1 };
c2 > d2 ? (a.sortIndex = c2, f2(t2, a), null === h2(r2) && a === h2(t2) && (B2 ? (E2(L2), L2 = -1) : B2 = true, K2(H2, c2 - d2))) : (a.sortIndex = e2, f2(r2, a), A2 || z2 || (A2 = true, I2(J2)));
return a;
};
exports.unstable_shouldYield = M2;
exports.unstable_wrapCallback = function(a) {
var b2 = y2;
return function() {
var c2 = y2;
y2 = b2;
try {
return a.apply(this, arguments);
} finally {
y2 = c2;
}
};
};
})(scheduler_production_min);
{
scheduler.exports = scheduler_production_min;
}
var schedulerExports = scheduler.exports;
/**
* @license React
* react-dom.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
var aa = reactExports, ca = schedulerExports;
function p$2(a) {
for (var b2 = "https://reactjs.org/docs/error-decoder.html?invariant=" + a, c2 = 1; c2 < arguments.length; c2++) b2 += "&args[]=" + encodeURIComponent(arguments[c2]);
return "Minified React error #" + a + "; visit " + b2 + " for the full message or use the non-minified dev environment for full errors and additional helpful warnings.";
}
var da = /* @__PURE__ */ new Set(), ea = {};
function fa(a, b2) {
ha(a, b2);
ha(a + "Capture", b2);
}
function ha(a, b2) {
ea[a] = b2;
for (a = 0; a < b2.length; a++) da.add(b2[a]);
}
var ia = !("undefined" === typeof window || "undefined" === typeof window.document || "undefined" === typeof window.document.createElement), ja = Object.prototype.hasOwnProperty, ka = /^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/, la = {}, ma = {};
function oa(a) {
if (ja.call(ma, a)) return true;
if (ja.call(la, a)) return false;
if (ka.test(a)) return ma[a] = true;
la[a] = true;
return false;
}
function pa(a, b2, c2, d2) {
if (null !== c2 && 0 === c2.type) return false;
switch (typeof b2) {
case "function":
case "symbol":
return true;
case "boolean":
if (d2) return false;
if (null !== c2) return !c2.acceptsBooleans;
a = a.toLowerCase().slice(0, 5);
return "data-" !== a && "aria-" !== a;
default:
return false;
}
}
function qa(a, b2, c2, d2) {
if (null === b2 || "undefined" === typeof b2 || pa(a, b2, c2, d2)) return true;
if (d2) return false;
if (null !== c2) switch (c2.type) {
case 3:
return !b2;
case 4:
return false === b2;
case 5:
return isNaN(b2);
case 6:
return isNaN(b2) || 1 > b2;
}
return false;
}
function v$2(a, b2, c2, d2, e2, f2, g2) {
this.acceptsBooleans = 2 === b2 || 3 === b2 || 4 === b2;
this.attributeName = d2;
this.attributeNamespace = e2;
this.mustUseProperty = c2;
this.propertyName = a;
this.type = b2;
this.sanitizeURL = f2;
this.removeEmptyString = g2;
}
var z$1 = {};
"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(a) {
z$1[a] = new v$2(a, 0, false, a, null, false, false);
});
[["acceptCharset", "accept-charset"], ["className", "class"], ["htmlFor", "for"], ["httpEquiv", "http-equiv"]].forEach(function(a) {
var b2 = a[0];
z$1[b2] = new v$2(b2, 1, false, a[1], null, false, false);
});
["contentEditable", "draggable", "spellCheck", "value"].forEach(function(a) {
z$1[a] = new v$2(a, 2, false, a.toLowerCase(), null, false, false);
});
["autoReverse", "externalResourcesRequired", "focusable", "preserveAlpha"].forEach(function(a) {
z$1[a] = new v$2(a, 2, false, a, null, false, false);
});
"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(a) {
z$1[a] = new v$2(a, 3, false, a.toLowerCase(), null, false, false);
});
["checked", "multiple", "muted", "selected"].forEach(function(a) {
z$1[a] = new v$2(a, 3, true, a, null, false, false);
});
["capture", "download"].forEach(function(a) {
z$1[a] = new v$2(a, 4, false, a, null, false, false);
});
["cols", "rows", "size", "span"].forEach(function(a) {
z$1[a] = new v$2(a, 6, false, a, null, false, false);
});
["rowSpan", "start"].forEach(function(a) {
z$1[a] = new v$2(a, 5, false, a.toLowerCase(), null, false, false);
});
var ra = /[\-:]([a-z])/g;
function sa(a) {
return a[1].toUpperCase();
}
"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(a) {
var b2 = a.replace(
ra,
sa
);
z$1[b2] = new v$2(b2, 1, false, a, null, false, false);
});
"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(a) {
var b2 = a.replace(ra, sa);
z$1[b2] = new v$2(b2, 1, false, a, "http://www.w3.org/1999/xlink", false, false);
});
["xml:base", "xml:lang", "xml:space"].forEach(function(a) {
var b2 = a.replace(ra, sa);
z$1[b2] = new v$2(b2, 1, false, a, "http://www.w3.org/XML/1998/namespace", false, false);
});
["tabIndex", "crossOrigin"].forEach(function(a) {
z$1[a] = new v$2(a, 1, false, a.toLowerCase(), null, false, false);
});
z$1.xlinkHref = new v$2("xlinkHref", 1, false, "xlink:href", "http://www.w3.org/1999/xlink", true, false);
["src", "href", "action", "formAction"].forEach(function(a) {
z$1[a] = new v$2(a, 1, false, a.toLowerCase(), null, true, true);
});
function ta(a, b2, c2, d2) {
var e2 = z$1.hasOwnProperty(b2) ? z$1[b2] : null;
if (null !== e2 ? 0 !== e2.type : d2 || !(2 < b2.length) || "o" !== b2[0] && "O" !== b2[0] || "n" !== b2[1] && "N" !== b2[1]) qa(b2, c2, e2, d2) && (c2 = null), d2 || null === e2 ? oa(b2) && (null === c2 ? a.removeAttribute(b2) : a.setAttribute(b2, "" + c2)) : e2.mustUseProperty ? a[e2.propertyName] = null === c2 ? 3 === e2.type ? false : "" : c2 : (b2 = e2.attributeName, d2 = e2.attributeNamespace, null === c2 ? a.removeAttribute(b2) : (e2 = e2.type, c2 = 3 === e2 || 4 === e2 && true === c2 ? "" : "" + c2, d2 ? a.setAttributeNS(d2, b2, c2) : a.setAttribute(b2, c2)));
}
var ua = aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, va = Symbol.for("react.element"), wa = Symbol.for("react.portal"), ya = Symbol.for("react.fragment"), za = Symbol.for("react.strict_mode"), Aa = Symbol.for("react.profiler"), Ba = Symbol.for("react.provider"), Ca = Symbol.for("react.context"), Da = Symbol.for("react.forward_ref"), Ea = Symbol.for("react.suspense"), Fa = Symbol.for("react.suspense_list"), Ga = Symbol.for("react.memo"), Ha = Symbol.for("react.lazy");
var Ia = Symbol.for("react.offscreen");
var Ja = Symbol.iterator;
function Ka(a) {
if (null === a || "object" !== typeof a) return null;
a = Ja && a[Ja] || a["@@iterator"];
return "function" === typeof a ? a : null;
}
var A$1 = Object.assign, La;
function Ma(a) {
if (void 0 === La) try {
throw Error();
} catch (c2) {
var b2 = c2.stack.trim().match(/\n( *(at )?)/);
La = b2 && b2[1] || "";
}
return "\n" + La + a;
}
var Na = false;
function Oa(a, b2) {
if (!a || Na) return "";
Na = true;
var c2 = Error.prepareStackTrace;
Error.prepareStackTrace = void 0;
try {
if (b2) if (b2 = function() {
throw Error();
}, Object.defineProperty(b2.prototype, "props", { set: function() {
throw Error();
} }), "object" === typeof Reflect && Reflect.construct) {
try {
Reflect.construct(b2, []);
} catch (l2) {
var d2 = l2;
}
Reflect.construct(a, [], b2);
} else {
try {
b2.call();
} catch (l2) {
d2 = l2;
}
a.call(b2.prototype);
}
else {
try {
throw Error();
} catch (l2) {
d2 = l2;
}
a();
}
} catch (l2) {
if (l2 && d2 && "string" === typeof l2.stack) {
for (var e2 = l2.stack.split("\n"), f2 = d2.stack.split("\n"), g2 = e2.length - 1, h2 = f2.length - 1; 1 <= g2 && 0 <= h2 && e2[g2] !== f2[h2]; ) h2--;
for (; 1 <= g2 && 0 <= h2; g2--, h2--) if (e2[g2] !== f2[h2]) {
if (1 !== g2 || 1 !== h2) {
do
if (g2--, h2--, 0 > h2 || e2[g2] !== f2[h2]) {
var k2 = "\n" + e2[g2].replace(" at new ", " at ");
a.displayName && k2.includes("<anonymous>") && (k2 = k2.replace("<anonymous>", a.displayName));
return k2;
}
while (1 <= g2 && 0 <= h2);
}
break;
}
}
} finally {
Na = false, Error.prepareStackTrace = c2;
}
return (a = a ? a.displayName || a.name : "") ? Ma(a) : "";
}
function Pa(a) {
switch (a.tag) {
case 5:
return Ma(a.type);
case 16:
return Ma("Lazy");
case 13:
return Ma("Suspense");
case 19:
return Ma("SuspenseList");
case 0:
case 2:
case 15:
return a = Oa(a.type, false), a;
case 11:
return a = Oa(a.type.render, false), a;
case 1:
return a = Oa(a.type, true), a;
default:
return "";
}
}
function Qa(a) {
if (null == a) return null;
if ("function" === typeof a) return a.displayName || a.name || null;
if ("string" === typeof a) return a;
switch (a) {
case ya:
return "Fragment";
case wa:
return "Portal";
case Aa:
return "Profiler";
case za:
return "StrictMode";
case Ea:
return "Suspense";
case Fa:
return "SuspenseList";
}
if ("object" === typeof a) switch (a.$$typeof) {
case Ca:
return (a.displayName || "Context") + ".Consumer";
case Ba:
return (a._context.displayName || "Context") + ".Provider";
case Da:
var b2 = a.render;
a = a.displayName;
a || (a = b2.displayName || b2.name || "", a = "" !== a ? "ForwardRef(" + a + ")" : "ForwardRef");
return a;
case Ga:
return b2 = a.displayName || null, null !== b2 ? b2 : Qa(a.type) || "Memo";
case Ha:
b2 = a._payload;
a = a._init;
try {
return Qa(a(b2));
} catch (c2) {
}
}
return null;
}
function Ra(a) {
var b2 = a.type;
switch (a.tag) {
case 24:
return "Cache";
case 9:
return (b2.displayName || "Context") + ".Consumer";
case 10:
return (b2._context.displayName || "Context") + ".Provider";
case 18:
return "DehydratedFragment";
case 11:
return a = b2.render, a = a.displayName || a.name || "", b2.displayName || ("" !== a ? "ForwardRef(" + a + ")" : "ForwardRef");
case 7:
return "Fragment";
case 5:
return b2;
case 4:
return "Portal";
case 3:
return "Root";
case 6:
return "Text";
case 16:
return Qa(b2);
case 8:
return b2 === za ? "StrictMode" : "Mode";
case 22:
return "Offscreen";
case 12:
return "Profiler";
case 21:
return "Scope";
case 13:
return "Suspense";
case 19:
return "SuspenseList";
case 25:
return "TracingMarker";
case 1:
case 0:
case 17:
case 2:
case 14:
case 15:
if ("function" === typeof b2) return b2.displayName || b2.name || null;
if ("string" === typeof b2) return b2;
}
return null;
}
function Sa(a) {
switch (typeof a) {
case "boolean":
case "number":
case "string":
case "undefined":
return a;
case "object":
return a;
default:
return "";
}
}
function Ta(a) {
var b2 = a.type;
return (a = a.nodeName) && "input" === a.toLowerCase() && ("checkbox" === b2 || "radio" === b2);
}
function Ua(a) {
var b2 = Ta(a) ? "checked" : "value", c2 = Object.getOwnPropertyDescriptor(a.constructor.prototype, b2), d2 = "" + a[b2];
if (!a.hasOwnProperty(b2) && "undefined" !== typeof c2 && "function" === typeof c2.get && "function" === typeof c2.set) {
var e2 = c2.get, f2 = c2.set;
Object.defineProperty(a, b2, { configurable: true, get: function() {
return e2.call(this);
}, set: function(a2) {
d2 = "" + a2;
f2.call(this, a2);
} });
Object.defineProperty(a, b2, { enumerable: c2.enumerable });
return { getValue: function() {
return d2;
}, setValue: function(a2) {
d2 = "" + a2;
}, stopTracking: function() {
a._valueTracker = null;
delete a[b2];
} };
}
}
function Va(a) {
a._valueTracker || (a._valueTracker = Ua(a));
}
function Wa(a) {
if (!a) return false;
var b2 = a._valueTracker;
if (!b2) return true;
var c2 = b2.getValue();
var d2 = "";
a && (d2 = Ta(a) ? a.checked ? "true" : "false" : a.value);
a = d2;
return a !== c2 ? (b2.setValue(a), true) : false;
}
function Xa(a) {
a = a || ("undefined" !== typeof document ? document : void 0);
if ("undefined" === typeof a) return null;
try {
return a.activeElement || a.body;
} catch (b2) {
return a.body;
}
}
function Ya(a, b2) {
var c2 = b2.checked;
return A$1({}, b2, { defaultChecked: void 0, defaultValue: void 0, value: void 0, checked: null != c2 ? c2 : a._wrapperState.initialChecked });
}
function Za(a, b2) {
var c2 = null == b2.defaultValue ? "" : b2.defaultValue, d2 = null != b2.checked ? b2.checked : b2.defaultChecked;
c2 = Sa(null != b2.value ? b2.value : c2);
a._wrapperState = { initialChecked: d2, initialValue: c2, controlled: "checkbox" === b2.type || "radio" === b2.type ? null != b2.checked : null != b2.value };
}
function ab(a, b2) {
b2 = b2.checked;
null != b2 && ta(a, "checked", b2, false);
}
function bb(a, b2) {
ab(a, b2);
var c2 = Sa(b2.value), d2 = b2.type;
if (null != c2) if ("number" === d2) {
if (0 === c2 && "" === a.value || a.value != c2) a.value = "" + c2;
} else a.value !== "" + c2 && (a.value = "" + c2);
else if ("submit" === d2 || "reset" === d2) {
a.removeAttribute("value");
return;
}
b2.hasOwnProperty("value") ? cb(a, b2.type, c2) : b2.hasOwnProperty("defaultValue") && cb(a, b2.type, Sa(b2.defaultValue));
null == b2.checked && null != b2.defaultChecked && (a.defaultChecked = !!b2.defaultChecked);
}
function db(a, b2, c2) {
if (b2.hasOwnProperty("value") || b2.hasOwnProperty("defaultValue")) {
var d2 = b2.type;
if (!("submit" !== d2 && "reset" !== d2 || void 0 !== b2.value && null !== b2.value)) return;
b2 = "" + a._wrapperState.initialValue;
c2 || b2 === a.value || (a.value = b2);
a.defaultValue = b2;
}
c2 = a.name;
"" !== c2 && (a.name = "");
a.defaultChecked = !!a._wrapperState.initialChecked;
"" !== c2 && (a.name = c2);
}
function cb(a, b2, c2) {
if ("number" !== b2 || Xa(a.ownerDocument) !== a) null == c2 ? a.defaultValue = "" + a._wrapperState.initialValue : a.defaultValue !== "" + c2 && (a.defaultValue = "" + c2);
}
var eb = Array.isArray;
function fb(a, b2, c2, d2) {
a = a.options;
if (b2) {
b2 = {};
for (var e2 = 0; e2 < c2.length; e2++) b2["$" + c2[e2]] = true;
for (c2 = 0; c2 < a.length; c2++) e2 = b2.hasOwnProperty("$" + a[c2].value), a[c2].selected !== e2 && (a[c2].selected = e2), e2 && d2 && (a[c2].defaultSelected = true);
} else {
c2 = "" + Sa(c2);
b2 = null;
for (e2 = 0; e2 < a.length; e2++) {
if (a[e2].value === c2) {
a[e2].selected = true;
d2 && (a[e2].defaultSelected = true);
return;
}
null !== b2 || a[e2].disabled || (b2 = a[e2]);
}
null !== b2 && (b2.selected = true);
}
}
function gb(a, b2) {
if (null != b2.dangerouslySetInnerHTML) throw Error(p$2(91));
return A$1({}, b2, { value: void 0, defaultValue: void 0, children: "" + a._wrapperState.initialValue });
}
function hb(a, b2) {
var c2 = b2.value;
if (null == c2) {
c2 = b2.children;
b2 = b2.defaultValue;
if (null != c2) {
if (null != b2) throw Error(p$2(92));
if (eb(c2)) {
if (1 < c2.length) throw Error(p$2(93));
c2 = c2[0];
}
b2 = c2;
}
null == b2 && (b2 = "");
c2 = b2;
}
a._wrapperState = { initialValue: Sa(c2) };
}
function ib(a, b2) {
var c2 = Sa(b2.value), d2 = Sa(b2.defaultValue);
null != c2 && (c2 = "" + c2, c2 !== a.value && (a.value = c2), null == b2.defaultValue && a.defaultValue !== c2 && (a.defaultValue = c2));
null != d2 && (a.defaultValue = "" + d2);
}
function jb(a) {
var b2 = a.textContent;
b2 === a._wrapperState.initialValue && "" !== b2 && null !== b2 && (a.value = b2);
}
function kb(a) {
switch (a) {
case "svg":
return "http://www.w3.org/2000/svg";
case "math":
return "http://www.w3.org/1998/Math/MathML";
default:
return "http://www.w3.org/1999/xhtml";
}
}
function lb$1(a, b2) {
return null == a || "http://www.w3.org/1999/xhtml" === a ? kb(b2) : "http://www.w3.org/2000/svg" === a && "foreignObject" === b2 ? "http://www.w3.org/1999/xhtml" : a;
}
var mb, nb = function(a) {
return "undefined" !== typeof MSApp && MSApp.execUnsafeLocalFunction ? function(b2, c2, d2, e2) {
MSApp.execUnsafeLocalFunction(function() {
return a(b2, c2, d2, e2);
});
} : a;
}(function(a, b2) {
if ("http://www.w3.org/2000/svg" !== a.namespaceURI || "innerHTML" in a) a.innerHTML = b2;
else {
mb = mb || document.createElement("div");
mb.innerHTML = "<svg>" + b2.valueOf().toString() + "</svg>";
for (b2 = mb.firstChild; a.firstChild; ) a.removeChild(a.firstChild);
for (; b2.firstChild; ) a.appendChild(b2.firstChild);
}
});
function ob(a, b2) {
if (b2) {
var c2 = a.firstChild;
if (c2 && c2 === a.lastChild && 3 === c2.nodeType) {
c2.nodeValue = b2;
return;
}
}
a.textContent = b2;
}
var pb = {
animationIterationCount: true,
aspectRatio: true,
borderImageOutset: true,
borderImageSlice: true,
borderImageWidth: true,
boxFlex: true,
boxFlexGroup: true,
boxOrdinalGroup: true,
columnCount: true,
columns: true,
flex: true,
flexGrow: true,
flexPositive: true,
flexShrink: true,
flexNegative: true,
flexOrder: true,
gridArea: true,
gridRow: true,
gridRowEnd: true,
gridRowSpan: true,
gridRowStart: true,
gridColumn: true,
gridColumnEnd: true,
gridColumnSpan: true,
gridColumnStart: true,
fontWeight: true,
lineClamp: true,
lineHeight: true,
opacity: true,
order: true,
orphans: true,
tabSize: true,
widows: true,
zIndex: true,
zoom: true,
fillOpacity: true,
floodOpacity: true,
stopOpacity: true,
strokeDasharray: true,
strokeDashoffset: true,
strokeMiterlimit: true,
strokeOpacity: true,
strokeWidth: true
}, qb = ["Webkit", "ms", "Moz", "O"];
Object.keys(pb).forEach(function(a) {
qb.forEach(function(b2) {
b2 = b2 + a.charAt(0).toUpperCase() + a.substring(1);
pb[b2] = pb[a];
});
});
function rb$1(a, b2, c2) {
return null == b2 || "boolean" === typeof b2 || "" === b2 ? "" : c2 || "number" !== typeof b2 || 0 === b2 || pb.hasOwnProperty(a) && pb[a] ? ("" + b2).trim() : b2 + "px";
}
function sb(a, b2) {
a = a.style;
for (var c2 in b2) if (b2.hasOwnProperty(c2)) {
var d2 = 0 === c2.indexOf("--"), e2 = rb$1(c2, b2[c2], d2);
"float" === c2 && (c2 = "cssFloat");
d2 ? a.setProperty(c2, e2) : a[c2] = e2;
}
}
var tb = A$1({ menuitem: true }, { area: true, base: true, br: true, col: true, embed: true, hr: true, img: true, input: true, keygen: true, link: true, meta: true, param: true, source: true, track: true, wbr: true });
function ub(a, b2) {
if (b2) {
if (tb[a] && (null != b2.children || null != b2.dangerouslySetInnerHTML)) throw Error(p$2(137, a));
if (null != b2.dangerouslySetInnerHTML) {
if (null != b2.children) throw Error(p$2(60));
if ("object" !== typeof b2.dangerouslySetInnerHTML || !("__html" in b2.dangerouslySetInnerHTML)) throw Error(p$2(61));
}
if (null != b2.style && "object" !== typeof b2.style) throw Error(p$2(62));
}
}
function vb(a, b2) {
if (-1 === a.indexOf("-")) return "string" === typeof b2.is;
switch (a) {
case "annotation-xml":
case "color-profile":
case "font-face":
case "font-face-src":
case "font-face-uri":
case "font-face-format":
case "font-face-name":
case "missing-glyph":
return false;
default:
return true;
}
}
var wb = null;
function xb(a) {
a = a.target || a.srcElement || window;
a.correspondingUseElement && (a = a.correspondingUseElement);
return 3 === a.nodeType ? a.parentNode : a;
}
var yb = null, zb = null, Ab = null;
function Bb(a) {
if (a = Cb(a)) {
if ("function" !== typeof yb) throw Error(p$2(280));
var b2 = a.stateNode;
b2 && (b2 = Db(b2), yb(a.stateNode, a.type, b2));
}
}
function Eb(a) {
zb ? Ab ? Ab.push(a) : Ab = [a] : zb = a;
}
function Fb() {
if (zb) {
var a = zb, b2 = Ab;
Ab = zb = null;
Bb(a);
if (b2) for (a = 0; a < b2.length; a++) Bb(b2[a]);
}
}
function Gb(a, b2) {
return a(b2);
}
function Hb() {
}
var Ib = false;
function Jb(a, b2, c2) {
if (Ib) return a(b2, c2);
Ib = true;
try {
return Gb(a, b2, c2);
} finally {
if (Ib = false, null !== zb || null !== Ab) Hb(), Fb();
}
}
function Kb(a, b2) {
var c2 = a.stateNode;
if (null === c2) return null;
var d2 = Db(c2);
if (null === d2) return null;
c2 = d2[b2];
a: switch (b2) {
case "onClick":
case "onClickCapture":
case "onDoubleClick":
case "onDoubleClickCapture":
case "onMouseDown":
case "onMouseDownCapture":
case "onMouseMove":
case "onMouseMoveCapture":
case "onMouseUp":
case "onMouseUpCapture":
case "onMouseEnter":
(d2 = !d2.disabled) || (a = a.type, d2 = !("button" === a || "input" === a || "select" === a || "textarea" === a));
a = !d2;
break a;
default:
a = false;
}
if (a) return null;
if (c2 && "function" !== typeof c2) throw Error(p$2(231, b2, typeof c2));
return c2;
}
var Lb = false;
if (ia) try {
var Mb = {};
Object.defineProperty(Mb, "passive", { get: function() {
Lb = true;
} });
window.addEventListener("test", Mb, Mb);
window.removeEventListener("test", Mb, Mb);
} catch (a) {
Lb = false;
}
function Nb(a, b2, c2, d2, e2, f2, g2, h2, k2) {
var l2 = Array.prototype.slice.call(arguments, 3);
try {
b2.apply(c2, l2);
} catch (m2) {
this.onError(m2);
}
}
var Ob = false, Pb = null, Qb = false, Rb = null, Sb = { onError: function(a) {
Ob = true;
Pb = a;
} };
function Tb(a, b2, c2, d2, e2, f2, g2, h2, k2) {
Ob = false;
Pb = null;
Nb.apply(Sb, arguments);
}
function Ub(a, b2, c2, d2, e2, f2, g2, h2, k2) {
Tb.apply(this, arguments);
if (Ob) {
if (Ob) {
var l2 = Pb;
Ob = false;
Pb = null;
} else throw Error(p$2(198));
Qb || (Qb = true, Rb = l2);
}
}
function Vb(a) {
var b2 = a, c2 = a;
if (a.alternate) for (; b2.return; ) b2 = b2.return;
else {
a = b2;
do
b2 = a, 0 !== (b2.flags & 4098) && (c2 = b2.return), a = b2.return;
while (a);
}
return 3 === b2.tag ? c2 : null;
}
function Wb(a) {
if (13 === a.tag) {
var b2 = a.memoizedState;
null === b2 && (a = a.alternate, null !== a && (b2 = a.memoizedState));
if (null !== b2) return b2.dehydrated;
}
return null;
}
function Xb(a) {
if (Vb(a) !== a) throw Error(p$2(188));
}
function Yb(a) {
var b2 = a.alternate;
if (!b2) {
b2 = Vb(a);
if (null === b2) throw Error(p$2(188));
return b2 !== a ? null : a;
}
for (var c2 = a, d2 = b2; ; ) {
var e2 = c2.return;
if (null === e2) break;
var f2 = e2.alternate;
if (null === f2) {
d2 = e2.return;
if (null !== d2) {
c2 = d2;
continue;
}
break;
}
if (e2.child === f2.child) {
for (f2 = e2.child; f2; ) {
if (f2 === c2) return Xb(e2), a;
if (f2 === d2) return Xb(e2), b2;
f2 = f2.sibling;
}
throw Error(p$2(188));
}
if (c2.return !== d2.return) c2 = e2, d2 = f2;
else {
for (var g2 = false, h2 = e2.child; h2; ) {
if (h2 === c2) {
g2 = true;
c2 = e2;
d2 = f2;
break;
}
if (h2 === d2) {
g2 = true;
d2 = e2;
c2 = f2;
break;
}
h2 = h2.sibling;
}
if (!g2) {
for (h2 = f2.child; h2; ) {
if (h2 === c2) {
g2 = true;
c2 = f2;
d2 = e2;
break;
}
if (h2 === d2) {
g2 = true;
d2 = f2;
c2 = e2;
break;
}
h2 = h2.sibling;
}
if (!g2) throw Error(p$2(189));
}
}
if (c2.alternate !== d2) throw Error(p$2(190));
}
if (3 !== c2.tag) throw Error(p$2(188));
return c2.stateNode.current === c2 ? a : b2;
}
function Zb(a) {
a = Yb(a);
return null !== a ? $b(a) : null;
}
function $b(a) {
if (5 === a.tag || 6 === a.tag) return a;
for (a = a.child; null !== a; ) {
var b2 = $b(a);
if (null !== b2) return b2;
a = a.sibling;
}
return null;
}
var ac = ca.unstable_scheduleCallback, bc = ca.unstable_cancelCallback, cc = ca.unstable_shouldYield, dc = ca.unstable_requestPaint, B = ca.unstable_now, ec = ca.unstable_getCurrentPriorityLevel, fc = ca.unstable_ImmediatePriority, gc = ca.unstable_UserBlockingPriority, hc = ca.unstable_NormalPriority, ic = ca.unstable_LowPriority, jc = ca.unstable_IdlePriority, kc = null, lc = null;
function mc(a) {
if (lc && "function" === typeof lc.onCommitFiberRoot) try {
lc.onCommitFiberRoot(kc, a, void 0, 128 === (a.current.flags & 128));
} catch (b2) {
}
}
var oc = Math.clz32 ? Math.clz32 : nc, pc = Math.log, qc = Math.LN2;
function nc(a) {
a >>>= 0;
return 0 === a ? 32 : 31 - (pc(a) / qc | 0) | 0;
}
var rc = 64, sc = 4194304;
function tc(a) {
switch (a & -a) {
case 1:
return 1;
case 2:
return 2;
case 4:
return 4;
case 8:
return 8;
case 16:
return 16;
case 32:
return 32;
case 64:
case 128:
case 256:
case 512:
case 1024:
case 2048:
case 4096:
case 8192:
case 16384:
case 32768:
case 65536:
case 131072:
case 262144:
case 524288:
case 1048576:
case 2097152:
return a & 4194240;
case 4194304:
case 8388608:
case 16777216:
case 33554432:
case 67108864:
return a & 130023424;
case 134217728:
return 134217728;
case 268435456:
return 268435456;
case 536870912:
return 536870912;
case 1073741824:
return 1073741824;
default:
return a;
}
}
function uc(a, b2) {
var c2 = a.pendingLanes;
if (0 === c2) return 0;
var d2 = 0, e2 = a.suspendedLanes, f2 = a.pingedLanes, g2 = c2 & 268435455;
if (0 !== g2) {
var h2 = g2 & ~e2;
0 !== h2 ? d2 = tc(h2) : (f2 &= g2, 0 !== f2 && (d2 = tc(f2)));
} else g2 = c2 & ~e2, 0 !== g2 ? d2 = tc(g2) : 0 !== f2 && (d2 = tc(f2));
if (0 === d2) return 0;
if (0 !== b2 && b2 !== d2 && 0 === (b2 & e2) && (e2 = d2 & -d2, f2 = b2 & -b2, e2 >= f2 || 16 === e2 && 0 !== (f2 & 4194240))) return b2;
0 !== (d2 & 4) && (d2 |= c2 & 16);
b2 = a.entangledLanes;
if (0 !== b2) for (a = a.entanglements, b2 &= d2; 0 < b2; ) c2 = 31 - oc(b2), e2 = 1 << c2, d2 |= a[c2], b2 &= ~e2;
return d2;
}
function vc(a, b2) {
switch (a) {
case 1:
case 2:
case 4:
return b2 + 250;
case 8:
case 16:
case 32:
case 64:
case 128:
case 256:
case 512:
case 1024:
case 2048:
case 4096:
case 8192:
case 16384:
case 32768:
case 65536:
case 131072:
case 262144:
case 524288:
case 1048576:
case 2097152:
return b2 + 5e3;
case 4194304:
case 8388608:
case 16777216:
case 33554432:
case 67108864:
return -1;
case 134217728:
case 268435456:
case 536870912:
case 1073741824:
return -1;
default:
return -1;
}
}
function wc(a, b2) {
for (var c2 = a.suspendedLanes, d2 = a.pingedLanes, e2 = a.expirationTimes, f2 = a.pendingLanes; 0 < f2; ) {
var g2 = 31 - oc(f2), h2 = 1 << g2, k2 = e2[g2];
if (-1 === k2) {
if (0 === (h2 & c2) || 0 !== (h2 & d2)) e2[g2] = vc(h2, b2);
} else k2 <= b2 && (a.expiredLanes |= h2);
f2 &= ~h2;
}
}
function xc(a) {
a = a.pendingLanes & -1073741825;
return 0 !== a ? a : a & 1073741824 ? 1073741824 : 0;
}
function yc() {
var a = rc;
rc <<= 1;
0 === (rc & 4194240) && (rc = 64);
return a;
}
function zc(a) {
for (var b2 = [], c2 = 0; 31 > c2; c2++) b2.push(a);
return b2;
}
function Ac(a, b2, c2) {
a.pendingLanes |= b2;
536870912 !== b2 && (a.suspendedLanes = 0, a.pingedLanes = 0);
a = a.eventTimes;
b2 = 31 - oc(b2);
a[b2] = c2;
}
function Bc(a, b2) {
var c2 = a.pendingLanes & ~b2;
a.pendingLanes = b2;
a.suspendedLanes = 0;
a.pingedLanes = 0;
a.expiredLanes &= b2;
a.mutableReadLanes &= b2;
a.entangledLanes &= b2;
b2 = a.entanglements;
var d2 = a.eventTimes;
for (a = a.expirationTimes; 0 < c2; ) {
var e2 = 31 - oc(c2), f2 = 1 << e2;
b2[e2] = 0;
d2[e2] = -1;
a[e2] = -1;
c2 &= ~f2;
}
}
function Cc(a, b2) {
var c2 = a.entangledLanes |= b2;
for (a = a.entanglements; c2; ) {
var d2 = 31 - oc(c2), e2 = 1 << d2;
e2 & b2 | a[d2] & b2 && (a[d2] |= b2);
c2 &= ~e2;
}
}
var C = 0;
function Dc(a) {
a &= -a;
return 1 < a ? 4 < a ? 0 !== (a & 268435455) ? 16 : 536870912 : 4 : 1;
}
var Ec, Fc, Gc, Hc, Ic, Jc = false, Kc = [], Lc = null, Mc = null, Nc = null, Oc = /* @__PURE__ */ new Map(), Pc = /* @__PURE__ */ new Map(), Qc = [], Rc = "mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");
function Sc(a, b2) {
switch (a) {
case "focusin":
case "focusout":
Lc = null;
break;
case "dragenter":
case "dragleave":
Mc = null;
break;
case "mouseover":
case "mouseout":
Nc = null;
break;
case "pointerover":
case "pointerout":
Oc.delete(b2.pointerId);
break;
case "gotpointercapture":
case "lostpointercapture":
Pc.delete(b2.pointerId);
}
}
function Tc(a, b2, c2, d2, e2, f2) {
if (null === a || a.nativeEvent !== f2) return a = { blockedOn: b2, domEventName: c2, eventSystemFlags: d2, nativeEvent: f2, targetContainers: [e2] }, null !== b2 && (b2 = Cb(b2), null !== b2 && Fc(b2)), a;
a.eventSystemFlags |= d2;
b2 = a.targetContainers;
null !== e2 && -1 === b2.indexOf(e2) && b2.push(e2);
return a;
}
function Uc(a, b2, c2, d2, e2) {
switch (b2) {
case "focusin":
return Lc = Tc(Lc, a, b2, c2, d2, e2), true;
case "dragenter":
return Mc = Tc(Mc, a, b2, c2, d2, e2), true;
case "mouseover":
return Nc = Tc(Nc, a, b2, c2, d2, e2), true;
case "pointerover":
var f2 = e2.pointerId;
Oc.set(f2, Tc(Oc.get(f2) || null, a, b2, c2, d2, e2));
return true;
case "gotpointercapture":
return f2 = e2.pointerId, Pc.set(f2, Tc(Pc.get(f2) || null, a, b2, c2, d2, e2)), true;
}
return false;
}
function Vc(a) {
var b2 = Wc(a.target);
if (null !== b2) {
var c2 = Vb(b2);
if (null !== c2) {
if (b2 = c2.tag, 13 === b2) {
if (b2 = Wb(c2), null !== b2) {
a.blockedOn = b2;
Ic(a.priority, function() {
Gc(c2);
});
return;
}
} else if (3 === b2 && c2.stateNode.current.memoizedState.isDehydrated) {
a.blockedOn = 3 === c2.tag ? c2.stateNode.containerInfo : null;
return;
}
}
}
a.blockedOn = null;
}
function Xc(a) {
if (null !== a.blockedOn) return false;
for (var b2 = a.targetContainers; 0 < b2.length; ) {
var c2 = Yc(a.domEventName, a.eventSystemFlags, b2[0], a.nativeEvent);
if (null === c2) {
c2 = a.nativeEvent;
var d2 = new c2.constructor(c2.type, c2);
wb = d2;
c2.target.dispatchEvent(d2);
wb = null;
} else return b2 = Cb(c2), null !== b2 && Fc(b2), a.blockedOn = c2, false;
b2.shift();
}
return true;
}
function Zc(a, b2, c2) {
Xc(a) && c2.delete(b2);
}
function $c() {
Jc = false;
null !== Lc && Xc(Lc) && (Lc = null);
null !== Mc && Xc(Mc) && (Mc = null);
null !== Nc && Xc(Nc) && (Nc = null);
Oc.forEach(Zc);
Pc.forEach(Zc);
}
function ad(a, b2) {
a.blockedOn === b2 && (a.blockedOn = null, Jc || (Jc = true, ca.unstable_scheduleCallback(ca.unstable_NormalPriority, $c)));
}
function bd(a) {
function b2(b3) {
return ad(b3, a);
}
if (0 < Kc.length) {
ad(Kc[0], a);
for (var c2 = 1; c2 < Kc.length; c2++) {
var d2 = Kc[c2];
d2.blockedOn === a && (d2.blockedOn = null);
}
}
null !== Lc && ad(Lc, a);
null !== Mc && ad(Mc, a);
null !== Nc && ad(Nc, a);
Oc.forEach(b2);
Pc.forEach(b2);
for (c2 = 0; c2 < Qc.length; c2++) d2 = Qc[c2], d2.blockedOn === a && (d2.blockedOn = null);
for (; 0 < Qc.length && (c2 = Qc[0], null === c2.blockedOn); ) Vc(c2), null === c2.blockedOn && Qc.shift();
}
var cd = ua.ReactCurrentBatchConfig, dd = true;
function ed(a, b2, c2, d2) {
var e2 = C, f2 = cd.transition;
cd.transition = null;
try {
C = 1, fd(a, b2, c2, d2);
} finally {
C = e2, cd.transition = f2;
}
}
function gd(a, b2, c2, d2) {
var e2 = C, f2 = cd.transition;
cd.transition = null;
try {
C = 4, fd(a, b2, c2, d2);
} finally {
C = e2, cd.transition = f2;
}
}
function fd(a, b2, c2, d2) {
if (dd) {
var e2 = Yc(a, b2, c2, d2);
if (null === e2) hd(a, b2, d2, id$1, c2), Sc(a, d2);
else if (Uc(e2, a, b2, c2, d2)) d2.stopPropagation();
else if (Sc(a, d2), b2 & 4 && -1 < Rc.indexOf(a)) {
for (; null !== e2; ) {
var f2 = Cb(e2);
null !== f2 && Ec(f2);
f2 = Yc(a, b2, c2, d2);
null === f2 && hd(a, b2, d2, id$1, c2);
if (f2 === e2) break;
e2 = f2;
}
null !== e2 && d2.stopPropagation();
} else hd(a, b2, d2, null, c2);
}
}
var id$1 = null;
function Yc(a, b2, c2, d2) {
id$1 = null;
a = xb(d2);
a = Wc(a);
if (null !== a) if (b2 = Vb(a), null === b2) a = null;
else if (c2 = b2.tag, 13 === c2) {
a = Wb(b2);
if (null !== a) return a;
a = null;
} else if (3 === c2) {
if (b2.stateNode.current.memoizedState.isDehydrated) return 3 === b2.tag ? b2.stateNode.containerInfo : null;
a = null;
} else b2 !== a && (a = null);
id$1 = a;
return null;
}
function jd(a) {
switch (a) {
case "cancel":
case "click":
case "close":
case "contextmenu":
case "copy":
case "cut":
case "auxclick":
case "dblclick":
case "dragend":
case "dragstart":
case "drop":
case "focusin":
case "focusout":
case "input":
case "invalid":
case "keydown":
case "keypress":
case "keyup":
case "mousedown":
case "mouseup":
case "paste":
case "pause":
case "play":
case "pointercancel":
case "pointerdown":
case "pointerup":
case "ratechange":
case "reset":
case "resize":
case "seeked":
case "submit":
case "touchcancel":
case "touchend":
case "touchstart":
case "volumechange":
case "change":
case "selectionchange":
case "textInput":
case "compositionstart":
case "compositionend":
case "compositionupdate":
case "beforeblur":
case "afterblur":
case "beforeinput":
case "blur":
case "fullscreenchange":
case "focus":
case "hashchange":
case "popstate":
case "select":
case "selectstart":
return 1;
case "drag":
case "dragenter":
case "dragexit":
case "dragleave":
case "dragover":
case "mousemove":
case "mouseout":
case "mouseover":
case "pointermove":
case "pointerout":
case "pointerover":
case "scroll":
case "toggle":
case "touchmove":
case "wheel":
case "mouseenter":
case "mouseleave":
case "pointerenter":
case "pointerleave":
return 4;
case "message":
switch (ec()) {
case fc:
return 1;
case gc:
return 4;
case hc:
case ic:
return 16;
case jc:
return 536870912;
default:
return 16;
}
default:
return 16;
}
}
var kd = null, ld = null, md = null;
function nd() {
if (md) return md;
var a, b2 = ld, c2 = b2.length, d2, e2 = "value" in kd ? kd.value : kd.textContent, f2 = e2.length;
for (a = 0; a < c2 && b2[a] === e2[a]; a++) ;
var g2 = c2 - a;
for (d2 = 1; d2 <= g2 && b2[c2 - d2] === e2[f2 - d2]; d2++) ;
return md = e2.slice(a, 1 < d2 ? 1 - d2 : void 0);
}
function od(a) {
var b2 = a.keyCode;
"charCode" in a ? (a = a.charCode, 0 === a && 13 === b2 && (a = 13)) : a = b2;
10 === a && (a = 13);
return 32 <= a || 13 === a ? a : 0;
}
function pd() {
return true;
}
function qd() {
return false;
}
function rd(a) {
function b2(b3, d2, e2, f2, g2) {
this._reactName = b3;
this._targetInst = e2;
this.type = d2;
this.nativeEvent = f2;
this.target = g2;
this.currentTarget = null;
for (var c2 in a) a.hasOwnProperty(c2) && (b3 = a[c2], this[c2] = b3 ? b3(f2) : f2[c2]);
this.isDefaultPrevented = (null != f2.defaultPrevented ? f2.defaultPrevented : false === f2.returnValue) ? pd : qd;
this.isPropagationStopped = qd;
return this;
}
A$1(b2.prototype, { preventDefault: function() {
this.defaultPrevented = true;
var a2 = this.nativeEvent;
a2 && (a2.preventDefault ? a2.preventDefault() : "unknown" !== typeof a2.returnValue && (a2.returnValue = false), this.isDefaultPrevented = pd);
}, stopPropagation: function() {
var a2 = this.nativeEvent;
a2 && (a2.stopPropagation ? a2.stopPropagation() : "unknown" !== typeof a2.cancelBubble && (a2.cancelBubble = true), this.isPropagationStopped = pd);
}, persist: function() {
}, isPersistent: pd });
return b2;
}
var sd = { eventPhase: 0, bubbles: 0, cancelable: 0, timeStamp: function(a) {
return a.timeStamp || Date.now();
}, defaultPrevented: 0, isTrusted: 0 }, td = rd(sd), ud = A$1({}, sd, { view: 0, detail: 0 }), vd = rd(ud), wd, xd, yd, Ad = A$1({}, ud, { screenX: 0, screenY: 0, clientX: 0, clientY: 0, pageX: 0, pageY: 0, ctrlKey: 0, shiftKey: 0, altKey: 0, metaKey: 0, getModifierState: zd, button: 0, buttons: 0, relatedTarget: function(a) {
return void 0 === a.relatedTarget ? a.fromElement === a.srcElement ? a.toElement : a.fromElement : a.relatedTarget;
}, movementX: function(a) {
if ("movementX" in a) return a.movementX;
a !== yd && (yd && "mousemove" === a.type ? (wd = a.screenX - yd.screenX, xd = a.screenY - yd.screenY) : xd = wd = 0, yd = a);
return wd;
}, movementY: function(a) {
return "movementY" in a ? a.movementY : xd;
} }), Bd = rd(Ad), Cd = A$1({}, Ad, { dataTransfer: 0 }), Dd = rd(Cd), Ed = A$1({}, ud, { relatedTarget: 0 }), Fd = rd(Ed), Gd = A$1({}, sd, { animationName: 0, elapsedTime: 0, pseudoElement: 0 }), Hd = rd(Gd), Id = A$1({}, sd, { clipboardData: function(a) {
return "clipboardData" in a ? a.clipboardData : window.clipboardData;
} }), Jd = rd(Id), Kd = A$1({}, sd, { data: 0 }), Ld = rd(Kd), Md = {
Esc: "Escape",
Spacebar: " ",
Left: "ArrowLeft",
Up: "ArrowUp",
Right: "ArrowRight",
Down: "ArrowDown",
Del: "Delete",
Win: "OS",
Menu: "ContextMenu",
Apps: "ContextMenu",
Scroll: "ScrollLock",
MozPrintableKey: "Unidentified"
}, Nd = {
8: "Backspace",
9: "Tab",
12: "Clear",
13: "Enter",
16: "Shift",
17: "Control",
18: "Alt",
19: "Pause",
20: "CapsLock",
27: "Escape",
32: " ",
33: "PageUp",
34: "PageDown",
35: "End",
36: "Home",
37: "ArrowLeft",
38: "ArrowUp",
39: "ArrowRight",
40: "ArrowDown",
45: "Insert",
46: "Delete",
112: "F1",
113: "F2",
114: "F3",
115: "F4",
116: "F5",
117: "F6",
118: "F7",
119: "F8",
120: "F9",
121: "F10",
122: "F11",
123: "F12",
144: "NumLock",
145: "ScrollLock",
224: "Meta"
}, Od = { Alt: "altKey", Control: "ctrlKey", Meta: "metaKey", Shift: "shiftKey" };
function Pd(a) {
var b2 = this.nativeEvent;
return b2.getModifierState ? b2.getModifierState(a) : (a = Od[a]) ? !!b2[a] : false;
}
function zd() {
return Pd;
}
var Qd = A$1({}, ud, { key: function(a) {
if (a.key) {
var b2 = Md[a.key] || a.key;
if ("Unidentified" !== b2) return b2;
}
return "keypress" === a.type ? (a = od(a), 13 === a ? "Enter" : String.fromCharCode(a)) : "keydown" === a.type || "keyup" === a.type ? Nd[a.keyCode] || "Unidentified" : "";
}, code: 0, location: 0, ctrlKey: 0, shiftKey: 0, altKey: 0, metaKey: 0, repeat: 0, locale: 0, getModifierState: zd, charCode: function(a) {
return "keypress" === a.type ? od(a) : 0;
}, keyCode: function(a) {
return "keydown" === a.type || "keyup" === a.type ? a.keyCode : 0;
}, which: function(a) {
return "keypress" === a.type ? od(a) : "keydown" === a.type || "keyup" === a.type ? a.keyCode : 0;
} }), Rd = rd(Qd), Sd = A$1({}, Ad, { pointerId: 0, width: 0, height: 0, pressure: 0, tangentialPressure: 0, tiltX: 0, tiltY: 0, twist: 0, pointerType: 0, isPrimary: 0 }), Td = rd(Sd), Ud = A$1({}, ud, { touches: 0, targetTouches: 0, changedTouches: 0, altKey: 0, metaKey: 0, ctrlKey: 0, shiftKey: 0, getModifierState: zd }), Vd = rd(Ud), Wd = A$1({}, sd, { propertyName: 0, elapsedTime: 0, pseudoElement: 0 }), Xd = rd(Wd), Yd = A$1({}, Ad, {
deltaX: function(a) {
return "deltaX" in a ? a.deltaX : "wheelDeltaX" in a ? -a.wheelDeltaX : 0;
},
deltaY: function(a) {
return "deltaY" in a ? a.deltaY : "wheelDeltaY" in a ? -a.wheelDeltaY : "wheelDelta" in a ? -a.wheelDelta : 0;
},
deltaZ: 0,
deltaMode: 0
}), Zd = rd(Yd), $d = [9, 13, 27, 32], ae = ia && "CompositionEvent" in window, be = null;
ia && "documentMode" in document && (be = document.documentMode);
var ce = ia && "TextEvent" in window && !be, de = ia && (!ae || be && 8 < be && 11 >= be), ee = String.fromCharCode(32), fe = false;
function ge(a, b2) {
switch (a) {
case "keyup":
return -1 !== $d.indexOf(b2.keyCode);
case "keydown":
return 229 !== b2.keyCode;
case "keypress":
case "mousedown":
case "focusout":
return true;
default:
return false;
}
}
function he(a) {
a = a.detail;
return "object" === typeof a && "data" in a ? a.data : null;
}
var ie = false;
function je(a, b2) {
switch (a) {
case "compositionend":
return he(b2);
case "keypress":
if (32 !== b2.which) return null;
fe = true;
return ee;
case "textInput":
return a = b2.data, a === ee && fe ? null : a;
default:
return null;
}
}
function ke(a, b2) {
if (ie) return "compositionend" === a || !ae && ge(a, b2) ? (a = nd(), md = ld = kd = null, ie = false, a) : null;
switch (a) {
case "paste":
return null;
case "keypress":
if (!(b2.ctrlKey || b2.altKey || b2.metaKey) || b2.ctrlKey && b2.altKey) {
if (b2.char && 1 < b2.char.length) return b2.char;
if (b2.which) return String.fromCharCode(b2.which);
}
return null;
case "compositionend":
return de && "ko" !== b2.locale ? null : b2.data;
default:
return null;
}
}
var le = { color: true, date: true, datetime: true, "datetime-local": true, email: true, month: true, number: true, password: true, range: true, search: true, tel: true, text: true, time: true, url: true, week: true };
function me(a) {
var b2 = a && a.nodeName && a.nodeName.toLowerCase();
return "input" === b2 ? !!le[a.type] : "textarea" === b2 ? true : false;
}
function ne(a, b2, c2, d2) {
Eb(d2);
b2 = oe(b2, "onChange");
0 < b2.length && (c2 = new td("onChange", "change", null, c2, d2), a.push({ event: c2, listeners: b2 }));
}
var pe = null, qe = null;
function re$1(a) {
se(a, 0);
}
function te(a) {
var b2 = ue(a);
if (Wa(b2)) return a;
}
function ve(a, b2) {
if ("change" === a) return b2;
}
var we = false;
if (ia) {
var xe;
if (ia) {
var ye = "oninput" in document;
if (!ye) {
var ze = document.createElement("div");
ze.setAttribute("oninput", "return;");
ye = "function" === typeof ze.oninput;
}
xe = ye;
} else xe = false;
we = xe && (!document.documentMode || 9 < document.documentMode);
}
function Ae() {
pe && (pe.detachEvent("onpropertychange", Be), qe = pe = null);
}
function Be(a) {
if ("value" === a.propertyName && te(qe)) {
var b2 = [];
ne(b2, qe, a, xb(a));
Jb(re$1, b2);
}
}
function Ce(a, b2, c2) {
"focusin" === a ? (Ae(), pe = b2, qe = c2, pe.attachEvent("onpropertychange", Be)) : "focusout" === a && Ae();
}
function De(a) {
if ("selectionchange" === a || "keyup" === a || "keydown" === a) return te(qe);
}
function Ee(a, b2) {
if ("click" === a) return te(b2);
}
function Fe(a, b2) {
if ("input" === a || "change" === a) return te(b2);
}
function Ge(a, b2) {
return a === b2 && (0 !== a || 1 / a === 1 / b2) || a !== a && b2 !== b2;
}
var He = "function" === typeof Object.is ? Object.is : Ge;
function Ie(a, b2) {
if (He(a, b2)) return true;
if ("object" !== typeof a || null === a || "object" !== typeof b2 || null === b2) return false;
var c2 = Object.keys(a), d2 = Object.keys(b2);
if (c2.length !== d2.length) return false;
for (d2 = 0; d2 < c2.length; d2++) {
var e2 = c2[d2];
if (!ja.call(b2, e2) || !He(a[e2], b2[e2])) return false;
}
return true;
}
function Je(a) {
for (; a && a.firstChild; ) a = a.firstChild;
return a;
}
function Ke(a, b2) {
var c2 = Je(a);
a = 0;
for (var d2; c2; ) {
if (3 === c2.nodeType) {
d2 = a + c2.textContent.length;
if (a <= b2 && d2 >= b2) return { node: c2, offset: b2 - a };
a = d2;
}
a: {
for (; c2; ) {
if (c2.nextSibling) {
c2 = c2.nextSibling;
break a;
}
c2 = c2.parentNode;
}
c2 = void 0;
}
c2 = Je(c2);
}
}
function Le(a, b2) {
return a && b2 ? a === b2 ? true : a && 3 === a.nodeType ? false : b2 && 3 === b2.nodeType ? Le(a, b2.parentNode) : "contains" in a ? a.contains(b2) : a.compareDocumentPosition ? !!(a.compareDocumentPosition(b2) & 16) : false : false;
}
function Me() {
for (var a = window, b2 = Xa(); b2 instanceof a.HTMLIFrameElement; ) {
try {
var c2 = "string" === typeof b2.contentWindow.location.href;
} catch (d2) {
c2 = false;
}
if (c2) a = b2.contentWindow;
else break;
b2 = Xa(a.document);
}
return b2;
}
function Ne(a) {
var b2 = a && a.nodeName && a.nodeName.toLowerCase();
return b2 && ("input" === b2 && ("text" === a.type || "search" === a.type || "tel" === a.type || "url" === a.type || "password" === a.type) || "textarea" === b2 || "true" === a.contentEditable);
}
function Oe(a) {
var b2 = Me(), c2 = a.focusedElem, d2 = a.selectionRange;
if (b2 !== c2 && c2 && c2.ownerDocument && Le(c2.ownerDocument.documentElement, c2)) {
if (null !== d2 && Ne(c2)) {
if (b2 = d2.start, a = d2.end, void 0 === a && (a = b2), "selectionStart" in c2) c2.selectionStart = b2, c2.selectionEnd = Math.min(a, c2.value.length);
else if (a = (b2 = c2.ownerDocument || document) && b2.defaultView || window, a.getSelection) {
a = a.getSelection();
var e2 = c2.textContent.length, f2 = Math.min(d2.start, e2);
d2 = void 0 === d2.end ? f2 : Math.min(d2.end, e2);
!a.extend && f2 > d2 && (e2 = d2, d2 = f2, f2 = e2);
e2 = Ke(c2, f2);
var g2 = Ke(
c2,
d2
);
e2 && g2 && (1 !== a.rangeCount || a.anchorNode !== e2.node || a.anchorOffset !== e2.offset || a.focusNode !== g2.node || a.focusOffset !== g2.offset) && (b2 = b2.createRange(), b2.setStart(e2.node, e2.offset), a.removeAllRanges(), f2 > d2 ? (a.addRange(b2), a.extend(g2.node, g2.offset)) : (b2.setEnd(g2.node, g2.offset), a.addRange(b2)));
}
}
b2 = [];
for (a = c2; a = a.parentNode; ) 1 === a.nodeType && b2.push({ element: a, left: a.scrollLeft, top: a.scrollTop });
"function" === typeof c2.focus && c2.focus();
for (c2 = 0; c2 < b2.length; c2++) a = b2[c2], a.element.scrollLeft = a.left, a.element.scrollTop = a.top;
}
}
var Pe = ia && "documentMode" in document && 11 >= document.documentMode, Qe = null, Re = null, Se = null, Te = false;
function Ue(a, b2, c2) {
var d2 = c2.window === c2 ? c2.document : 9 === c2.nodeType ? c2 : c2.ownerDocument;
Te || null == Qe || Qe !== Xa(d2) || (d2 = Qe, "selectionStart" in d2 && Ne(d2) ? d2 = { start: d2.selectionStart, end: d2.selectionEnd } : (d2 = (d2.ownerDocument && d2.ownerDocument.defaultView || window).getSelection(), d2 = { anchorNode: d2.anchorNode, anchorOffset: d2.anchorOffset, focusNode: d2.focusNode, focusOffset: d2.focusOffset }), Se && Ie(Se, d2) || (Se = d2, d2 = oe(Re, "onSelect"), 0 < d2.length && (b2 = new td("onSelect", "select", null, b2, c2), a.push({ event: b2, listeners: d2 }), b2.target = Qe)));
}
function Ve(a, b2) {
var c2 = {};
c2[a.toLowerCase()] = b2.toLowerCase();
c2["Webkit" + a] = "webkit" + b2;
c2["Moz" + a] = "moz" + b2;
return c2;
}
var We = { animationend: Ve("Animation", "AnimationEnd"), animationiteration: Ve("Animation", "AnimationIteration"), animationstart: Ve("Animation", "AnimationStart"), transitionend: Ve("Transition", "TransitionEnd") }, Xe = {}, Ye = {};
ia && (Ye = document.createElement("div").style, "AnimationEvent" in window || (delete We.animationend.animation, delete We.animationiteration.animation, delete We.animationstart.animation), "TransitionEvent" in window || delete We.transitionend.transition);
function Ze(a) {
if (Xe[a]) return Xe[a];
if (!We[a]) return a;
var b2 = We[a], c2;
for (c2 in b2) if (b2.hasOwnProperty(c2) && c2 in Ye) return Xe[a] = b2[c2];
return a;
}
var $e = Ze("animationend"), af = Ze("animationiteration"), bf = Ze("animationstart"), cf = Ze("transitionend"), df = /* @__PURE__ */ new Map(), ef = "abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");
function ff(a, b2) {
df.set(a, b2);
fa(b2, [a]);
}
for (var gf = 0; gf < ef.length; gf++) {
var hf = ef[gf], jf = hf.toLowerCase(), kf = hf[0].toUpperCase() + hf.slice(1);
ff(jf, "on" + kf);
}
ff($e, "onAnimationEnd");
ff(af, "onAnimationIteration");
ff(bf, "onAnimationStart");
ff("dblclick", "onDoubleClick");
ff("focusin", "onFocus");
ff("focusout", "onBlur");
ff(cf, "onTransitionEnd");
ha("onMouseEnter", ["mouseout", "mouseover"]);
ha("onMouseLeave", ["mouseout", "mouseover"]);
ha("onPointerEnter", ["pointerout", "pointerover"]);
ha("onPointerLeave", ["pointerout", "pointerover"]);
fa("onChange", "change click focusin focusout input keydown keyup selectionchange".split(" "));
fa("onSelect", "focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" "));
fa("onBeforeInput", ["compositionend", "keypress", "textInput", "paste"]);
fa("onCompositionEnd", "compositionend focusout keydown keypress keyup mousedown".split(" "));
fa("onCompositionStart", "compositionstart focusout keydown keypress keyup mousedown".split(" "));
fa("onCompositionUpdate", "compositionupdate focusout keydown keypress keyup mousedown".split(" "));
var lf = "abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "), mf = new Set("cancel close invalid load scroll toggle".split(" ").concat(lf));
function nf(a, b2, c2) {
var d2 = a.type || "unknown-event";
a.currentTarget = c2;
Ub(d2, b2, void 0, a);
a.currentTarget = null;
}
function se(a, b2) {
b2 = 0 !== (b2 & 4);
for (var c2 = 0; c2 < a.length; c2++) {
var d2 = a[c2], e2 = d2.event;
d2 = d2.listeners;
a: {
var f2 = void 0;
if (b2) for (var g2 = d2.length - 1; 0 <= g2; g2--) {
var h2 = d2[g2], k2 = h2.instance, l2 = h2.currentTarget;
h2 = h2.listener;
if (k2 !== f2 && e2.isPropagationStopped()) break a;
nf(e2, h2, l2);
f2 = k2;
}
else for (g2 = 0; g2 < d2.length; g2++) {
h2 = d2[g2];
k2 = h2.instance;
l2 = h2.currentTarget;
h2 = h2.listener;
if (k2 !== f2 && e2.isPropagationStopped()) break a;
nf(e2, h2, l2);
f2 = k2;
}
}
}
if (Qb) throw a = Rb, Qb = false, Rb = null, a;
}
function D(a, b2) {
var c2 = b2[of];
void 0 === c2 && (c2 = b2[of] = /* @__PURE__ */ new Set());
var d2 = a + "__bubble";
c2.has(d2) || (pf(b2, a, 2, false), c2.add(d2));
}
function qf(a, b2, c2) {
var d2 = 0;
b2 && (d2 |= 4);
pf(c2, a, d2, b2);
}
var rf = "_reactListening" + Math.random().toString(36).slice(2);
function sf(a) {
if (!a[rf]) {
a[rf] = true;
da.forEach(function(b3) {
"selectionchange" !== b3 && (mf.has(b3) || qf(b3, false, a), qf(b3, true, a));
});
var b2 = 9 === a.nodeType ? a : a.ownerDocument;
null === b2 || b2[rf] || (b2[rf] = true, qf("selectionchange", false, b2));
}
}
function pf(a, b2, c2, d2) {
switch (jd(b2)) {
case 1:
var e2 = ed;
break;
case 4:
e2 = gd;
break;
default:
e2 = fd;
}
c2 = e2.bind(null, b2, c2, a);
e2 = void 0;
!Lb || "touchstart" !== b2 && "touchmove" !== b2 && "wheel" !== b2 || (e2 = true);
d2 ? void 0 !== e2 ? a.addEventListener(b2, c2, { capture: true, passive: e2 }) : a.addEventListener(b2, c2, true) : void 0 !== e2 ? a.addEventListener(b2, c2, { passive: e2 }) : a.addEventListener(b2, c2, false);
}
function hd(a, b2, c2, d2, e2) {
var f2 = d2;
if (0 === (b2 & 1) && 0 === (b2 & 2) && null !== d2) a: for (; ; ) {
if (null === d2) return;
var g2 = d2.tag;
if (3 === g2 || 4 === g2) {
var h2 = d2.stateNode.containerInfo;
if (h2 === e2 || 8 === h2.nodeType && h2.parentNode === e2) break;
if (4 === g2) for (g2 = d2.return; null !== g2; ) {
var k2 = g2.tag;
if (3 === k2 || 4 === k2) {
if (k2 = g2.stateNode.containerInfo, k2 === e2 || 8 === k2.nodeType && k2.parentNode === e2) return;
}
g2 = g2.return;
}
for (; null !== h2; ) {
g2 = Wc(h2);
if (null === g2) return;
k2 = g2.tag;
if (5 === k2 || 6 === k2) {
d2 = f2 = g2;
continue a;
}
h2 = h2.parentNode;
}
}
d2 = d2.return;
}
Jb(function() {
var d3 = f2, e3 = xb(c2), g3 = [];
a: {
var h3 = df.get(a);
if (void 0 !== h3) {
var k3 = td, n2 = a;
switch (a) {
case "keypress":
if (0 === od(c2)) break a;
case "keydown":
case "keyup":
k3 = Rd;
break;
case "focusin":
n2 = "focus";
k3 = Fd;
break;
case "focusout":
n2 = "blur";
k3 = Fd;
break;
case "beforeblur":
case "afterblur":
k3 = Fd;
break;
case "click":
if (2 === c2.button) break a;
case "auxclick":
case "dblclick":
case "mousedown":
case "mousemove":
case "mouseup":
case "mouseout":
case "mouseover":
case "contextmenu":
k3 = Bd;
break;
case "drag":
case "dragend":
case "dragenter":
case "dragexit":
case "dragleave":
case "dragover":
case "dragstart":
case "drop":
k3 = Dd;
break;
case "touchcancel":
case "touchend":
case "touchmove":
case "touchstart":
k3 = Vd;
break;
case $e:
case af:
case bf:
k3 = Hd;
break;
case cf:
k3 = Xd;
break;
case "scroll":
k3 = vd;
break;
case "wheel":
k3 = Zd;
break;
case "copy":
case "cut":
case "paste":
k3 = Jd;
break;
case "gotpointercapture":
case "lostpointercapture":
case "pointercancel":
case "pointerdown":
case "pointermove":
case "pointerout":
case "pointerover":
case "pointerup":
k3 = Td;
}
var t2 = 0 !== (b2 & 4), J2 = !t2 && "scroll" === a, x2 = t2 ? null !== h3 ? h3 + "Capture" : null : h3;
t2 = [];
for (var w2 = d3, u2; null !== w2; ) {
u2 = w2;
var F2 = u2.stateNode;
5 === u2.tag && null !== F2 && (u2 = F2, null !== x2 && (F2 = Kb(w2, x2), null != F2 && t2.push(tf(w2, F2, u2))));
if (J2) break;
w2 = w2.return;
}
0 < t2.length && (h3 = new k3(h3, n2, null, c2, e3), g3.push({ event: h3, listeners: t2 }));
}
}
if (0 === (b2 & 7)) {
a: {
h3 = "mouseover" === a || "pointerover" === a;
k3 = "mouseout" === a || "pointerout" === a;
if (h3 && c2 !== wb && (n2 = c2.relatedTarget || c2.fromElement) && (Wc(n2) || n2[uf])) break a;
if (k3 || h3) {
h3 = e3.window === e3 ? e3 : (h3 = e3.ownerDocument) ? h3.defaultView || h3.parentWindow : window;
if (k3) {
if (n2 = c2.relatedTarget || c2.toElement, k3 = d3, n2 = n2 ? Wc(n2) : null, null !== n2 && (J2 = Vb(n2), n2 !== J2 || 5 !== n2.tag && 6 !== n2.tag)) n2 = null;
} else k3 = null, n2 = d3;
if (k3 !== n2) {
t2 = Bd;
F2 = "onMouseLeave";
x2 = "onMouseEnter";
w2 = "mouse";
if ("pointerout" === a || "pointerover" === a) t2 = Td, F2 = "onPointerLeave", x2 = "onPointerEnter", w2 = "pointer";
J2 = null == k3 ? h3 : ue(k3);
u2 = null == n2 ? h3 : ue(n2);
h3 = new t2(F2, w2 + "leave", k3, c2, e3);
h3.target = J2;
h3.relatedTarget = u2;
F2 = null;
Wc(e3) === d3 && (t2 = new t2(x2, w2 + "enter", n2, c2, e3), t2.target = u2, t2.relatedTarget = J2, F2 = t2);
J2 = F2;
if (k3 && n2) b: {
t2 = k3;
x2 = n2;
w2 = 0;
for (u2 = t2; u2; u2 = vf(u2)) w2++;
u2 = 0;
for (F2 = x2; F2; F2 = vf(F2)) u2++;
for (; 0 < w2 - u2; ) t2 = vf(t2), w2--;
for (; 0 < u2 - w2; ) x2 = vf(x2), u2--;
for (; w2--; ) {
if (t2 === x2 || null !== x2 && t2 === x2.alternate) break b;
t2 = vf(t2);
x2 = vf(x2);
}
t2 = null;
}
else t2 = null;
null !== k3 && wf(g3, h3, k3, t2, false);
null !== n2 && null !== J2 && wf(g3, J2, n2, t2, true);
}
}
}
a: {
h3 = d3 ? ue(d3) : window;
k3 = h3.nodeName && h3.nodeName.toLowerCase();
if ("select" === k3 || "input" === k3 && "file" === h3.type) var na = ve;
else if (me(h3)) if (we) na = Fe;
else {
na = De;
var xa = Ce;
}
else (k3 = h3.nodeName) && "input" === k3.toLowerCase() && ("checkbox" === h3.type || "radio" === h3.type) && (na = Ee);
if (na && (na = na(a, d3))) {
ne(g3, na, c2, e3);
break a;
}
xa && xa(a, h3, d3);
"focusout" === a && (xa = h3._wrapperState) && xa.controlled && "number" === h3.type && cb(h3, "number", h3.value);
}
xa = d3 ? ue(d3) : window;
switch (a) {
case "focusin":
if (me(xa) || "true" === xa.contentEditable) Qe = xa, Re = d3, Se = null;
break;
case "focusout":
Se = Re = Qe = null;
break;
case "mousedown":
Te = true;
break;
case "contextmenu":
case "mouseup":
case "dragend":
Te = false;
Ue(g3, c2, e3);
break;
case "selectionchange":
if (Pe) break;
case "keydown":
case "keyup":
Ue(g3, c2, e3);
}
var $a;
if (ae) b: {
switch (a) {
case "compositionstart":
var ba = "onCompositionStart";
break b;
case "compositionend":
ba = "onCompositionEnd";
break b;
case "compositionupdate":
ba = "onCompositionUpdate";
break b;
}
ba = void 0;
}
else ie ? ge(a, c2) && (ba = "onCompositionEnd") : "keydown" === a && 229 === c2.keyCode && (ba = "onCompositionStart");
ba && (de && "ko" !== c2.locale && (ie || "onCompositionStart" !== ba ? "onCompositionEnd" === ba && ie && ($a = nd()) : (kd = e3, ld = "value" in kd ? kd.value : kd.textContent, ie = true)), xa = oe(d3, ba), 0 < xa.length && (ba = new Ld(ba, a, null, c2, e3), g3.push({ event: ba, listeners: xa }), $a ? ba.data = $a : ($a = he(c2), null !== $a && (ba.data = $a))));
if ($a = ce ? je(a, c2) : ke(a, c2)) d3 = oe(d3, "onBeforeInput"), 0 < d3.length && (e3 = new Ld("onBeforeInput", "beforeinput", null, c2, e3), g3.push({ event: e3, listeners: d3 }), e3.data = $a);
}
se(g3, b2);
});
}
function tf(a, b2, c2) {
return { instance: a, listener: b2, currentTarget: c2 };
}
function oe(a, b2) {
for (var c2 = b2 + "Capture", d2 = []; null !== a; ) {
var e2 = a, f2 = e2.stateNode;
5 === e2.tag && null !== f2 && (e2 = f2, f2 = Kb(a, c2), null != f2 && d2.unshift(tf(a, f2, e2)), f2 = Kb(a, b2), null != f2 && d2.push(tf(a, f2, e2)));
a = a.return;
}
return d2;
}
function vf(a) {
if (null === a) return null;
do
a = a.return;
while (a && 5 !== a.tag);
return a ? a : null;
}
function wf(a, b2, c2, d2, e2) {
for (var f2 = b2._reactName, g2 = []; null !== c2 && c2 !== d2; ) {
var h2 = c2, k2 = h2.alternate, l2 = h2.stateNode;
if (null !== k2 && k2 === d2) break;
5 === h2.tag && null !== l2 && (h2 = l2, e2 ? (k2 = Kb(c2, f2), null != k2 && g2.unshift(tf(c2, k2, h2))) : e2 || (k2 = Kb(c2, f2), null != k2 && g2.push(tf(c2, k2, h2))));
c2 = c2.return;
}
0 !== g2.length && a.push({ event: b2, listeners: g2 });
}
var xf = /\r\n?/g, yf = /\u0000|\uFFFD/g;
function zf(a) {
return ("string" === typeof a ? a : "" + a).replace(xf, "\n").replace(yf, "");
}
function Af(a, b2, c2) {
b2 = zf(b2);
if (zf(a) !== b2 && c2) throw Error(p$2(425));
}
function Bf() {
}
var Cf = null, Df = null;
function Ef(a, b2) {
return "textarea" === a || "noscript" === a || "string" === typeof b2.children || "number" === typeof b2.children || "object" === typeof b2.dangerouslySetInnerHTML && null !== b2.dangerouslySetInnerHTML && null != b2.dangerouslySetInnerHTML.__html;
}
var Ff = "function" === typeof setTimeout ? setTimeout : void 0, Gf = "function" === typeof clearTimeout ? clearTimeout : void 0, Hf = "function" === typeof Promise ? Promise : void 0, Jf = "function" === typeof queueMicrotask ? queueMicrotask : "undefined" !== typeof Hf ? function(a) {
return Hf.resolve(null).then(a).catch(If);
} : Ff;
function If(a) {
setTimeout(function() {
throw a;
});
}
function Kf(a, b2) {
var c2 = b2, d2 = 0;
do {
var e2 = c2.nextSibling;
a.removeChild(c2);
if (e2 && 8 === e2.nodeType) if (c2 = e2.data, "/$" === c2) {
if (0 === d2) {
a.removeChild(e2);
bd(b2);
return;
}
d2--;
} else "$" !== c2 && "$?" !== c2 && "$!" !== c2 || d2++;
c2 = e2;
} while (c2);
bd(b2);
}
function Lf(a) {
for (; null != a; a = a.nextSibling) {
var b2 = a.nodeType;
if (1 === b2 || 3 === b2) break;
if (8 === b2) {
b2 = a.data;
if ("$" === b2 || "$!" === b2 || "$?" === b2) break;
if ("/$" === b2) return null;
}
}
return a;
}
function Mf(a) {
a = a.previousSibling;
for (var b2 = 0; a; ) {
if (8 === a.nodeType) {
var c2 = a.data;
if ("$" === c2 || "$!" === c2 || "$?" === c2) {
if (0 === b2) return a;
b2--;
} else "/$" === c2 && b2++;
}
a = a.previousSibling;
}
return null;
}
var Nf = Math.random().toString(36).slice(2), Of = "__reactFiber$" + Nf, Pf = "__reactProps$" + Nf, uf = "__reactContainer$" + Nf, of = "__reactEvents$" + Nf, Qf = "__reactListeners$" + Nf, Rf = "__reactHandles$" + Nf;
function Wc(a) {
var b2 = a[Of];
if (b2) return b2;
for (var c2 = a.parentNode; c2; ) {
if (b2 = c2[uf] || c2[Of]) {
c2 = b2.alternate;
if (null !== b2.child || null !== c2 && null !== c2.child) for (a = Mf(a); null !== a; ) {
if (c2 = a[Of]) return c2;
a = Mf(a);
}
return b2;
}
a = c2;
c2 = a.parentNode;
}
return null;
}
function Cb(a) {
a = a[Of] || a[uf];
return !a || 5 !== a.tag && 6 !== a.tag && 13 !== a.tag && 3 !== a.tag ? null : a;
}
function ue(a) {
if (5 === a.tag || 6 === a.tag) return a.stateNode;
throw Error(p$2(33));
}
function Db(a) {
return a[Pf] || null;
}
var Sf = [], Tf = -1;
function Uf(a) {
return { current: a };
}
function E(a) {
0 > Tf || (a.current = Sf[Tf], Sf[Tf] = null, Tf--);
}
function G(a, b2) {
Tf++;
Sf[Tf] = a.current;
a.current = b2;
}
var Vf = {}, H = Uf(Vf), Wf = Uf(false), Xf = Vf;
function Yf(a, b2) {
var c2 = a.type.contextTypes;
if (!c2) return Vf;
var d2 = a.stateNode;
if (d2 && d2.__reactInternalMemoizedUnmaskedChildContext === b2) return d2.__reactInternalMemoizedMaskedChildContext;
var e2 = {}, f2;
for (f2 in c2) e2[f2] = b2[f2];
d2 && (a = a.stateNode, a.__reactInternalMemoizedUnmaskedChildContext = b2, a.__reactInternalMemoizedMaskedChildContext = e2);
return e2;
}
function Zf(a) {
a = a.childContextTypes;
return null !== a && void 0 !== a;
}
function $f() {
E(Wf);
E(H);
}
function ag(a, b2, c2) {
if (H.current !== Vf) throw Error(p$2(168));
G(H, b2);
G(Wf, c2);
}
function bg(a, b2, c2) {
var d2 = a.stateNode;
b2 = b2.childContextTypes;
if ("function" !== typeof d2.getChildContext) return c2;
d2 = d2.getChildContext();
for (var e2 in d2) if (!(e2 in b2)) throw Error(p$2(108, Ra(a) || "Unknown", e2));
return A$1({}, c2, d2);
}
function cg(a) {
a = (a = a.stateNode) && a.__reactInternalMemoizedMergedChildContext || Vf;
Xf = H.current;
G(H, a);
G(Wf, Wf.current);
return true;
}
function dg(a, b2, c2) {
var d2 = a.stateNode;
if (!d2) throw Error(p$2(169));
c2 ? (a = bg(a, b2, Xf), d2.__reactInternalMemoizedMergedChildContext = a, E(Wf), E(H), G(H, a)) : E(Wf);
G(Wf, c2);
}
var eg = null, fg = false, gg = false;
function hg(a) {
null === eg ? eg = [a] : eg.push(a);
}
function ig(a) {
fg = true;
hg(a);
}
function jg() {
if (!gg && null !== eg) {
gg = true;
var a = 0, b2 = C;
try {
var c2 = eg;
for (C = 1; a < c2.length; a++) {
var d2 = c2[a];
do
d2 = d2(true);
while (null !== d2);
}
eg = null;
fg = false;
} catch (e2) {
throw null !== eg && (eg = eg.slice(a + 1)), ac(fc, jg), e2;
} finally {
C = b2, gg = false;
}
}
return null;
}
var kg = [], lg = 0, mg = null, ng = 0, og = [], pg = 0, qg = null, rg = 1, sg = "";
function tg(a, b2) {
kg[lg++] = ng;
kg[lg++] = mg;
mg = a;
ng = b2;
}
function ug(a, b2, c2) {
og[pg++] = rg;
og[pg++] = sg;
og[pg++] = qg;
qg = a;
var d2 = rg;
a = sg;
var e2 = 32 - oc(d2) - 1;
d2 &= ~(1 << e2);
c2 += 1;
var f2 = 32 - oc(b2) + e2;
if (30 < f2) {
var g2 = e2 - e2 % 5;
f2 = (d2 & (1 << g2) - 1).toString(32);
d2 >>= g2;
e2 -= g2;
rg = 1 << 32 - oc(b2) + e2 | c2 << e2 | d2;
sg = f2 + a;
} else rg = 1 << f2 | c2 << e2 | d2, sg = a;
}
function vg(a) {
null !== a.return && (tg(a, 1), ug(a, 1, 0));
}
function wg(a) {
for (; a === mg; ) mg = kg[--lg], kg[lg] = null, ng = kg[--lg], kg[lg] = null;
for (; a === qg; ) qg = og[--pg], og[pg] = null, sg = og[--pg], og[pg] = null, rg = og[--pg], og[pg] = null;
}
var xg = null, yg = null, I = false, zg = null;
function Ag(a, b2) {
var c2 = Bg(5, null, null, 0);
c2.elementType = "DELETED";
c2.stateNode = b2;
c2.return = a;
b2 = a.deletions;
null === b2 ? (a.deletions = [c2], a.flags |= 16) : b2.push(c2);
}
function Cg(a, b2) {
switch (a.tag) {
case 5:
var c2 = a.type;
b2 = 1 !== b2.nodeType || c2.toLowerCase() !== b2.nodeName.toLowerCase() ? null : b2;
return null !== b2 ? (a.stateNode = b2, xg = a, yg = Lf(b2.firstChild), true) : false;
case 6:
return b2 = "" === a.pendingProps || 3 !== b2.nodeType ? null : b2, null !== b2 ? (a.stateNode = b2, xg = a, yg = null, true) : false;
case 13:
return b2 = 8 !== b2.nodeType ? null : b2, null !== b2 ? (c2 = null !== qg ? { id: rg, overflow: sg } : null, a.memoizedState = { dehydrated: b2, treeContext: c2, retryLane: 1073741824 }, c2 = Bg(18, null, null, 0), c2.stateNode = b2, c2.return = a, a.child = c2, xg = a, yg = null, true) : false;
default:
return false;
}
}
function Dg(a) {
return 0 !== (a.mode & 1) && 0 === (a.flags & 128);
}
function Eg(a) {
if (I) {
var b2 = yg;
if (b2) {
var c2 = b2;
if (!Cg(a, b2)) {
if (Dg(a)) throw Error(p$2(418));
b2 = Lf(c2.nextSibling);
var d2 = xg;
b2 && Cg(a, b2) ? Ag(d2, c2) : (a.flags = a.flags & -4097 | 2, I = false, xg = a);
}
} else {
if (Dg(a)) throw Error(p$2(418));
a.flags = a.flags & -4097 | 2;
I = false;
xg = a;
}
}
}
function Fg(a) {
for (a = a.return; null !== a && 5 !== a.tag && 3 !== a.tag && 13 !== a.tag; ) a = a.return;
xg = a;
}
function Gg(a) {
if (a !== xg) return false;
if (!I) return Fg(a), I = true, false;
var b2;
(b2 = 3 !== a.tag) && !(b2 = 5 !== a.tag) && (b2 = a.type, b2 = "head" !== b2 && "body" !== b2 && !Ef(a.type, a.memoizedProps));
if (b2 && (b2 = yg)) {
if (Dg(a)) throw Hg(), Error(p$2(418));
for (; b2; ) Ag(a, b2), b2 = Lf(b2.nextSibling);
}
Fg(a);
if (13 === a.tag) {
a = a.memoizedState;
a = null !== a ? a.dehydrated : null;
if (!a) throw Error(p$2(317));
a: {
a = a.nextSibling;
for (b2 = 0; a; ) {
if (8 === a.nodeType) {
var c2 = a.data;
if ("/$" === c2) {
if (0 === b2) {
yg = Lf(a.nextSibling);
break a;
}
b2--;
} else "$" !== c2 && "$!" !== c2 && "$?" !== c2 || b2++;
}
a = a.nextSibling;
}
yg = null;
}
} else yg = xg ? Lf(a.stateNode.nextSibling) : null;
return true;
}
function Hg() {
for (var a = yg; a; ) a = Lf(a.nextSibling);
}
function Ig() {
yg = xg = null;
I = false;
}
function Jg(a) {
null === zg ? zg = [a] : zg.push(a);
}
var Kg = ua.ReactCurrentBatchConfig;
function Lg(a, b2, c2) {
a = c2.ref;
if (null !== a && "function" !== typeof a && "object" !== typeof a) {
if (c2._owner) {
c2 = c2._owner;
if (c2) {
if (1 !== c2.tag) throw Error(p$2(309));
var d2 = c2.stateNode;
}
if (!d2) throw Error(p$2(147, a));
var e2 = d2, f2 = "" + a;
if (null !== b2 && null !== b2.ref && "function" === typeof b2.ref && b2.ref._stringRef === f2) return b2.ref;
b2 = function(a2) {
var b3 = e2.refs;
null === a2 ? delete b3[f2] : b3[f2] = a2;
};
b2._stringRef = f2;
return b2;
}
if ("string" !== typeof a) throw Error(p$2(284));
if (!c2._owner) throw Error(p$2(290, a));
}
return a;
}
function Mg(a, b2) {
a = Object.prototype.toString.call(b2);
throw Error(p$2(31, "[object Object]" === a ? "object with keys {" + Object.keys(b2).join(", ") + "}" : a));
}
function Ng(a) {
var b2 = a._init;
return b2(a._payload);
}
function Og(a) {
function b2(b3, c3) {
if (a) {
var d3 = b3.deletions;
null === d3 ? (b3.deletions = [c3], b3.flags |= 16) : d3.push(c3);
}
}
function c2(c3, d3) {
if (!a) return null;
for (; null !== d3; ) b2(c3, d3), d3 = d3.sibling;
return null;
}
function d2(a2, b3) {
for (a2 = /* @__PURE__ */ new Map(); null !== b3; ) null !== b3.key ? a2.set(b3.key, b3) : a2.set(b3.index, b3), b3 = b3.sibling;
return a2;
}
function e2(a2, b3) {
a2 = Pg(a2, b3);
a2.index = 0;
a2.sibling = null;
return a2;
}
function f2(b3, c3, d3) {
b3.index = d3;
if (!a) return b3.flags |= 1048576, c3;
d3 = b3.alternate;
if (null !== d3) return d3 = d3.index, d3 < c3 ? (b3.flags |= 2, c3) : d3;
b3.flags |= 2;
return c3;
}
function g2(b3) {
a && null === b3.alternate && (b3.flags |= 2);
return b3;
}
function h2(a2, b3, c3, d3) {
if (null === b3 || 6 !== b3.tag) return b3 = Qg(c3, a2.mode, d3), b3.return = a2, b3;
b3 = e2(b3, c3);
b3.return = a2;
return b3;
}
function k2(a2, b3, c3, d3) {
var f3 = c3.type;
if (f3 === ya) return m2(a2, b3, c3.props.children, d3, c3.key);
if (null !== b3 && (b3.elementType === f3 || "object" === typeof f3 && null !== f3 && f3.$$typeof === Ha && Ng(f3) === b3.type)) return d3 = e2(b3, c3.props), d3.ref = Lg(a2, b3, c3), d3.return = a2, d3;
d3 = Rg(c3.type, c3.key, c3.props, null, a2.mode, d3);
d3.ref = Lg(a2, b3, c3);
d3.return = a2;
return d3;
}
function l2(a2, b3, c3, d3) {
if (null === b3 || 4 !== b3.tag || b3.stateNode.containerInfo !== c3.containerInfo || b3.stateNode.implementation !== c3.implementation) return b3 = Sg(c3, a2.mode, d3), b3.return = a2, b3;
b3 = e2(b3, c3.children || []);
b3.return = a2;
return b3;
}
function m2(a2, b3, c3, d3, f3) {
if (null === b3 || 7 !== b3.tag) return b3 = Tg(c3, a2.mode, d3, f3), b3.return = a2, b3;
b3 = e2(b3, c3);
b3.return = a2;
return b3;
}
function q2(a2, b3, c3) {
if ("string" === typeof b3 && "" !== b3 || "number" === typeof b3) return b3 = Qg("" + b3, a2.mode, c3), b3.return = a2, b3;
if ("object" === typeof b3 && null !== b3) {
switch (b3.$$typeof) {
case va:
return c3 = Rg(b3.type, b3.key, b3.props, null, a2.mode, c3), c3.ref = Lg(a2, null, b3), c3.return = a2, c3;
case wa:
return b3 = Sg(b3, a2.mode, c3), b3.return = a2, b3;
case Ha:
var d3 = b3._init;
return q2(a2, d3(b3._payload), c3);
}
if (eb(b3) || Ka(b3)) return b3 = Tg(b3, a2.mode, c3, null), b3.return = a2, b3;
Mg(a2, b3);
}
return null;
}
function r2(a2, b3, c3, d3) {
var e3 = null !== b3 ? b3.key : null;
if ("string" === typeof c3 && "" !== c3 || "number" === typeof c3) return null !== e3 ? null : h2(a2, b3, "" + c3, d3);
if ("object" === typeof c3 && null !== c3) {
switch (c3.$$typeof) {
case va:
return c3.key === e3 ? k2(a2, b3, c3, d3) : null;
case wa:
return c3.key === e3 ? l2(a2, b3, c3, d3) : null;
case Ha:
return e3 = c3._init, r2(
a2,
b3,
e3(c3._payload),
d3
);
}
if (eb(c3) || Ka(c3)) return null !== e3 ? null : m2(a2, b3, c3, d3, null);
Mg(a2, c3);
}
return null;
}
function y2(a2, b3, c3, d3, e3) {
if ("string" === typeof d3 && "" !== d3 || "number" === typeof d3) return a2 = a2.get(c3) || null, h2(b3, a2, "" + d3, e3);
if ("object" === typeof d3 && null !== d3) {
switch (d3.$$typeof) {
case va:
return a2 = a2.get(null === d3.key ? c3 : d3.key) || null, k2(b3, a2, d3, e3);
case wa:
return a2 = a2.get(null === d3.key ? c3 : d3.key) || null, l2(b3, a2, d3, e3);
case Ha:
var f3 = d3._init;
return y2(a2, b3, c3, f3(d3._payload), e3);
}
if (eb(d3) || Ka(d3)) return a2 = a2.get(c3) || null, m2(b3, a2, d3, e3, null);
Mg(b3, d3);
}
return null;
}
function n2(e3, g3, h3, k3) {
for (var l3 = null, m3 = null, u2 = g3, w2 = g3 = 0, x2 = null; null !== u2 && w2 < h3.length; w2++) {
u2.index > w2 ? (x2 = u2, u2 = null) : x2 = u2.sibling;
var n3 = r2(e3, u2, h3[w2], k3);
if (null === n3) {
null === u2 && (u2 = x2);
break;
}
a && u2 && null === n3.alternate && b2(e3, u2);
g3 = f2(n3, g3, w2);
null === m3 ? l3 = n3 : m3.sibling = n3;
m3 = n3;
u2 = x2;
}
if (w2 === h3.length) return c2(e3, u2), I && tg(e3, w2), l3;
if (null === u2) {
for (; w2 < h3.length; w2++) u2 = q2(e3, h3[w2], k3), null !== u2 && (g3 = f2(u2, g3, w2), null === m3 ? l3 = u2 : m3.sibling = u2, m3 = u2);
I && tg(e3, w2);
return l3;
}
for (u2 = d2(e3, u2); w2 < h3.length; w2++) x2 = y2(u2, e3, w2, h3[w2], k3), null !== x2 && (a && null !== x2.alternate && u2.delete(null === x2.key ? w2 : x2.key), g3 = f2(x2, g3, w2), null === m3 ? l3 = x2 : m3.sibling = x2, m3 = x2);
a && u2.forEach(function(a2) {
return b2(e3, a2);
});
I && tg(e3, w2);
return l3;
}
function t2(e3, g3, h3, k3) {
var l3 = Ka(h3);
if ("function" !== typeof l3) throw Error(p$2(150));
h3 = l3.call(h3);
if (null == h3) throw Error(p$2(151));
for (var u2 = l3 = null, m3 = g3, w2 = g3 = 0, x2 = null, n3 = h3.next(); null !== m3 && !n3.done; w2++, n3 = h3.next()) {
m3.index > w2 ? (x2 = m3, m3 = null) : x2 = m3.sibling;
var t3 = r2(e3, m3, n3.value, k3);
if (null === t3) {
null === m3 && (m3 = x2);
break;
}
a && m3 && null === t3.alternate && b2(e3, m3);
g3 = f2(t3, g3, w2);
null === u2 ? l3 = t3 : u2.sibling = t3;
u2 = t3;
m3 = x2;
}
if (n3.done) return c2(
e3,
m3
), I && tg(e3, w2), l3;
if (null === m3) {
for (; !n3.done; w2++, n3 = h3.next()) n3 = q2(e3, n3.value, k3), null !== n3 && (g3 = f2(n3, g3, w2), null === u2 ? l3 = n3 : u2.sibling = n3, u2 = n3);
I && tg(e3, w2);
return l3;
}
for (m3 = d2(e3, m3); !n3.done; w2++, n3 = h3.next()) n3 = y2(m3, e3, w2, n3.value, k3), null !== n3 && (a && null !== n3.alternate && m3.delete(null === n3.key ? w2 : n3.key), g3 = f2(n3, g3, w2), null === u2 ? l3 = n3 : u2.sibling = n3, u2 = n3);
a && m3.forEach(function(a2) {
return b2(e3, a2);
});
I && tg(e3, w2);
return l3;
}
function J2(a2, d3, f3, h3) {
"object" === typeof f3 && null !== f3 && f3.type === ya && null === f3.key && (f3 = f3.props.children);
if ("object" === typeof f3 && null !== f3) {
switch (f3.$$typeof) {
case va:
a: {
for (var k3 = f3.key, l3 = d3; null !== l3; ) {
if (l3.key === k3) {
k3 = f3.type;
if (k3 === ya) {
if (7 === l3.tag) {
c2(a2, l3.sibling);
d3 = e2(l3, f3.props.children);
d3.return = a2;
a2 = d3;
break a;
}
} else if (l3.elementType === k3 || "object" === typeof k3 && null !== k3 && k3.$$typeof === Ha && Ng(k3) === l3.type) {
c2(a2, l3.sibling);
d3 = e2(l3, f3.props);
d3.ref = Lg(a2, l3, f3);
d3.return = a2;
a2 = d3;
break a;
}
c2(a2, l3);
break;
} else b2(a2, l3);
l3 = l3.sibling;
}
f3.type === ya ? (d3 = Tg(f3.props.children, a2.mode, h3, f3.key), d3.return = a2, a2 = d3) : (h3 = Rg(f3.type, f3.key, f3.props, null, a2.mode, h3), h3.ref = Lg(a2, d3, f3), h3.return = a2, a2 = h3);
}
return g2(a2);
case wa:
a: {
for (l3 = f3.key; null !== d3; ) {
if (d3.key === l3) if (4 === d3.tag && d3.stateNode.containerInfo === f3.containerInfo && d3.stateNode.implementation === f3.implementation) {
c2(a2, d3.sibling);
d3 = e2(d3, f3.children || []);
d3.return = a2;
a2 = d3;
break a;
} else {
c2(a2, d3);
break;
}
else b2(a2, d3);
d3 = d3.sibling;
}
d3 = Sg(f3, a2.mode, h3);
d3.return = a2;
a2 = d3;
}
return g2(a2);
case Ha:
return l3 = f3._init, J2(a2, d3, l3(f3._payload), h3);
}
if (eb(f3)) return n2(a2, d3, f3, h3);
if (Ka(f3)) return t2(a2, d3, f3, h3);
Mg(a2, f3);
}
return "string" === typeof f3 && "" !== f3 || "number" === typeof f3 ? (f3 = "" + f3, null !== d3 && 6 === d3.tag ? (c2(a2, d3.sibling), d3 = e2(d3, f3), d3.return = a2, a2 = d3) : (c2(a2, d3), d3 = Qg(f3, a2.mode, h3), d3.return = a2, a2 = d3), g2(a2)) : c2(a2, d3);
}
return J2;
}
var Ug = Og(true), Vg = Og(false), Wg = Uf(null), Xg = null, Yg = null, Zg = null;
function $g() {
Zg = Yg = Xg = null;
}
function ah(a) {
var b2 = Wg.current;
E(Wg);
a._currentValue = b2;
}
function bh(a, b2, c2) {
for (; null !== a; ) {
var d2 = a.alternate;
(a.childLanes & b2) !== b2 ? (a.childLanes |= b2, null !== d2 && (d2.childLanes |= b2)) : null !== d2 && (d2.childLanes & b2) !== b2 && (d2.childLanes |= b2);
if (a === c2) break;
a = a.return;
}
}
function ch(a, b2) {
Xg = a;
Zg = Yg = null;
a = a.dependencies;
null !== a && null !== a.firstContext && (0 !== (a.lanes & b2) && (dh = true), a.firstContext = null);
}
function eh(a) {
var b2 = a._currentValue;
if (Zg !== a) if (a = { context: a, memoizedValue: b2, next: null }, null === Yg) {
if (null === Xg) throw Error(p$2(308));
Yg = a;
Xg.dependencies = { lanes: 0, firstContext: a };
} else Yg = Yg.next = a;
return b2;
}
var fh = null;
function gh(a) {
null === fh ? fh = [a] : fh.push(a);
}
function hh(a, b2, c2, d2) {
var e2 = b2.interleaved;
null === e2 ? (c2.next = c2, gh(b2)) : (c2.next = e2.next, e2.next = c2);
b2.interleaved = c2;
return ih(a, d2);
}
function ih(a, b2) {
a.lanes |= b2;
var c2 = a.alternate;
null !== c2 && (c2.lanes |= b2);
c2 = a;
for (a = a.return; null !== a; ) a.childLanes |= b2, c2 = a.alternate, null !== c2 && (c2.childLanes |= b2), c2 = a, a = a.return;
return 3 === c2.tag ? c2.stateNode : null;
}
var jh = false;
function kh(a) {
a.updateQueue = { baseState: a.memoizedState, firstBaseUpdate: null, lastBaseUpdate: null, shared: { pending: null, interleaved: null, lanes: 0 }, effects: null };
}
function lh(a, b2) {
a = a.updateQueue;
b2.updateQueue === a && (b2.updateQueue = { baseState: a.baseState, firstBaseUpdate: a.firstBaseUpdate, lastBaseUpdate: a.lastBaseUpdate, shared: a.shared, effects: a.effects });
}
function mh(a, b2) {
return { eventTime: a, lane: b2, tag: 0, payload: null, callback: null, next: null };
}
function nh(a, b2, c2) {
var d2 = a.updateQueue;
if (null === d2) return null;
d2 = d2.shared;
if (0 !== (K & 2)) {
var e2 = d2.pending;
null === e2 ? b2.next = b2 : (b2.next = e2.next, e2.next = b2);
d2.pending = b2;
return ih(a, c2);
}
e2 = d2.interleaved;
null === e2 ? (b2.next = b2, gh(d2)) : (b2.next = e2.next, e2.next = b2);
d2.interleaved = b2;
return ih(a, c2);
}
function oh(a, b2, c2) {
b2 = b2.updateQueue;
if (null !== b2 && (b2 = b2.shared, 0 !== (c2 & 4194240))) {
var d2 = b2.lanes;
d2 &= a.pendingLanes;
c2 |= d2;
b2.lanes = c2;
Cc(a, c2);
}
}
function ph(a, b2) {
var c2 = a.updateQueue, d2 = a.alternate;
if (null !== d2 && (d2 = d2.updateQueue, c2 === d2)) {
var e2 = null, f2 = null;
c2 = c2.firstBaseUpdate;
if (null !== c2) {
do {
var g2 = { eventTime: c2.eventTime, lane: c2.lane, tag: c2.tag, payload: c2.payload, callback: c2.callback, next: null };
null === f2 ? e2 = f2 = g2 : f2 = f2.next = g2;
c2 = c2.next;
} while (null !== c2);
null === f2 ? e2 = f2 = b2 : f2 = f2.next = b2;
} else e2 = f2 = b2;
c2 = { baseState: d2.baseState, firstBaseUpdate: e2, lastBaseUpdate: f2, shared: d2.shared, effects: d2.effects };
a.updateQueue = c2;
return;
}
a = c2.lastBaseUpdate;
null === a ? c2.firstBaseUpdate = b2 : a.next = b2;
c2.lastBaseUpdate = b2;
}
function qh(a, b2, c2, d2) {
var e2 = a.updateQueue;
jh = false;
var f2 = e2.firstBaseUpdate, g2 = e2.lastBaseUpdate, h2 = e2.shared.pending;
if (null !== h2) {
e2.shared.pending = null;
var k2 = h2, l2 = k2.next;
k2.next = null;
null === g2 ? f2 = l2 : g2.next = l2;
g2 = k2;
var m2 = a.alternate;
null !== m2 && (m2 = m2.updateQueue, h2 = m2.lastBaseUpdate, h2 !== g2 && (null === h2 ? m2.firstBaseUpdate = l2 : h2.next = l2, m2.lastBaseUpdate = k2));
}
if (null !== f2) {
var q2 = e2.baseState;
g2 = 0;
m2 = l2 = k2 = null;
h2 = f2;
do {
var r2 = h2.lane, y2 = h2.eventTime;
if ((d2 & r2) === r2) {
null !== m2 && (m2 = m2.next = {
eventTime: y2,
lane: 0,
tag: h2.tag,
payload: h2.payload,
callback: h2.callback,
next: null
});
a: {
var n2 = a, t2 = h2;
r2 = b2;
y2 = c2;
switch (t2.tag) {
case 1:
n2 = t2.payload;
if ("function" === typeof n2) {
q2 = n2.call(y2, q2, r2);
break a;
}
q2 = n2;
break a;
case 3:
n2.flags = n2.flags & -65537 | 128;
case 0:
n2 = t2.payload;
r2 = "function" === typeof n2 ? n2.call(y2, q2, r2) : n2;
if (null === r2 || void 0 === r2) break a;
q2 = A$1({}, q2, r2);
break a;
case 2:
jh = true;
}
}
null !== h2.callback && 0 !== h2.lane && (a.flags |= 64, r2 = e2.effects, null === r2 ? e2.effects = [h2] : r2.push(h2));
} else y2 = { eventTime: y2, lane: r2, tag: h2.tag, payload: h2.payload, callback: h2.callback, next: null }, null === m2 ? (l2 = m2 = y2, k2 = q2) : m2 = m2.next = y2, g2 |= r2;
h2 = h2.next;
if (null === h2) if (h2 = e2.shared.pending, null === h2) break;
else r2 = h2, h2 = r2.next, r2.next = null, e2.lastBaseUpdate = r2, e2.shared.pending = null;
} while (1);
null === m2 && (k2 = q2);
e2.baseState = k2;
e2.firstBaseUpdate = l2;
e2.lastBaseUpdate = m2;
b2 = e2.shared.interleaved;
if (null !== b2) {
e2 = b2;
do
g2 |= e2.lane, e2 = e2.next;
while (e2 !== b2);
} else null === f2 && (e2.shared.lanes = 0);
rh |= g2;
a.lanes = g2;
a.memoizedState = q2;
}
}
function sh(a, b2, c2) {
a = b2.effects;
b2.effects = null;
if (null !== a) for (b2 = 0; b2 < a.length; b2++) {
var d2 = a[b2], e2 = d2.callback;
if (null !== e2) {
d2.callback = null;
d2 = c2;
if ("function" !== typeof e2) throw Error(p$2(191, e2));
e2.call(d2);
}
}
}
var th = {}, uh = Uf(th), vh = Uf(th), wh = Uf(th);
function xh(a) {
if (a === th) throw Error(p$2(174));
return a;
}
function yh(a, b2) {
G(wh, b2);
G(vh, a);
G(uh, th);
a = b2.nodeType;
switch (a) {
case 9:
case 11:
b2 = (b2 = b2.documentElement) ? b2.namespaceURI : lb$1(null, "");
break;
default:
a = 8 === a ? b2.parentNode : b2, b2 = a.namespaceURI || null, a = a.tagName, b2 = lb$1(b2, a);
}
E(uh);
G(uh, b2);
}
function zh$1() {
E(uh);
E(vh);
E(wh);
}
function Ah(a) {
xh(wh.current);
var b2 = xh(uh.current);
var c2 = lb$1(b2, a.type);
b2 !== c2 && (G(vh, a), G(uh, c2));
}
function Bh(a) {
vh.current === a && (E(uh), E(vh));
}
var L = Uf(0);
function Ch(a) {
for (var b2 = a; null !== b2; ) {
if (13 === b2.tag) {
var c2 = b2.memoizedState;
if (null !== c2 && (c2 = c2.dehydrated, null === c2 || "$?" === c2.data || "$!" === c2.data)) return b2;
} else if (19 === b2.tag && void 0 !== b2.memoizedProps.revealOrder) {
if (0 !== (b2.flags & 128)) return b2;
} else if (null !== b2.child) {
b2.child.return = b2;
b2 = b2.child;
continue;
}
if (b2 === a) break;
for (; null === b2.sibling; ) {
if (null === b2.return || b2.return === a) return null;
b2 = b2.return;
}
b2.sibling.return = b2.return;
b2 = b2.sibling;
}
return null;
}
var Dh = [];
function Eh() {
for (var a = 0; a < Dh.length; a++) Dh[a]._workInProgressVersionPrimary = null;
Dh.length = 0;
}
var Fh = ua.ReactCurrentDispatcher, Gh = ua.ReactCurrentBatchConfig, Hh = 0, M = null, N = null, O = null, Ih = false, Jh = false, Kh = 0, Lh = 0;
function P() {
throw Error(p$2(321));
}
function Mh(a, b2) {
if (null === b2) return false;
for (var c2 = 0; c2 < b2.length && c2 < a.length; c2++) if (!He(a[c2], b2[c2])) return false;
return true;
}
function Nh(a, b2, c2, d2, e2, f2) {
Hh = f2;
M = b2;
b2.memoizedState = null;
b2.updateQueue = null;
b2.lanes = 0;
Fh.current = null === a || null === a.memoizedState ? Oh : Ph;
a = c2(d2, e2);
if (Jh) {
f2 = 0;
do {
Jh = false;
Kh = 0;
if (25 <= f2) throw Error(p$2(301));
f2 += 1;
O = N = null;
b2.updateQueue = null;
Fh.current = Qh;
a = c2(d2, e2);
} while (Jh);
}
Fh.current = Rh;
b2 = null !== N && null !== N.next;
Hh = 0;
O = N = M = null;
Ih = false;
if (b2) throw Error(p$2(300));
return a;
}
function Sh() {
var a = 0 !== Kh;
Kh = 0;
return a;
}
function Th() {
var a = { memoizedState: null, baseState: null, baseQueue: null, queue: null, next: null };
null === O ? M.memoizedState = O = a : O = O.next = a;
return O;
}
function Uh() {
if (null === N) {
var a = M.alternate;
a = null !== a ? a.memoizedState : null;
} else a = N.next;
var b2 = null === O ? M.memoizedState : O.next;
if (null !== b2) O = b2, N = a;
else {
if (null === a) throw Error(p$2(310));
N = a;
a = { memoizedState: N.memoizedState, baseState: N.baseState, baseQueue: N.baseQueue, queue: N.queue, next: null };
null === O ? M.memoizedState = O = a : O = O.next = a;
}
return O;
}
function Vh(a, b2) {
return "function" === typeof b2 ? b2(a) : b2;
}
function Wh(a) {
var b2 = Uh(), c2 = b2.queue;
if (null === c2) throw Error(p$2(311));
c2.lastRenderedReducer = a;
var d2 = N, e2 = d2.baseQueue, f2 = c2.pending;
if (null !== f2) {
if (null !== e2) {
var g2 = e2.next;
e2.next = f2.next;
f2.next = g2;
}
d2.baseQueue = e2 = f2;
c2.pending = null;
}
if (null !== e2) {
f2 = e2.next;
d2 = d2.baseState;
var h2 = g2 = null, k2 = null, l2 = f2;
do {
var m2 = l2.lane;
if ((Hh & m2) === m2) null !== k2 && (k2 = k2.next = { lane: 0, action: l2.action, hasEagerState: l2.hasEagerState, eagerState: l2.eagerState, next: null }), d2 = l2.hasEagerState ? l2.eagerState : a(d2, l2.action);
else {
var q2 = {
lane: m2,
action: l2.action,
hasEagerState: l2.hasEagerState,
eagerState: l2.eagerState,
next: null
};
null === k2 ? (h2 = k2 = q2, g2 = d2) : k2 = k2.next = q2;
M.lanes |= m2;
rh |= m2;
}
l2 = l2.next;
} while (null !== l2 && l2 !== f2);
null === k2 ? g2 = d2 : k2.next = h2;
He(d2, b2.memoizedState) || (dh = true);
b2.memoizedState = d2;
b2.baseState = g2;
b2.baseQueue = k2;
c2.lastRenderedState = d2;
}
a = c2.interleaved;
if (null !== a) {
e2 = a;
do
f2 = e2.lane, M.lanes |= f2, rh |= f2, e2 = e2.next;
while (e2 !== a);
} else null === e2 && (c2.lanes = 0);
return [b2.memoizedState, c2.dispatch];
}
function Xh(a) {
var b2 = Uh(), c2 = b2.queue;
if (null === c2) throw Error(p$2(311));
c2.lastRenderedReducer = a;
var d2 = c2.dispatch, e2 = c2.pending, f2 = b2.memoizedState;
if (null !== e2) {
c2.pending = null;
var g2 = e2 = e2.next;
do
f2 = a(f2, g2.action), g2 = g2.next;
while (g2 !== e2);
He(f2, b2.memoizedState) || (dh = true);
b2.memoizedState = f2;
null === b2.baseQueue && (b2.baseState = f2);
c2.lastRenderedState = f2;
}
return [f2, d2];
}
function Yh() {
}
function Zh(a, b2) {
var c2 = M, d2 = Uh(), e2 = b2(), f2 = !He(d2.memoizedState, e2);
f2 && (d2.memoizedState = e2, dh = true);
d2 = d2.queue;
$h(ai.bind(null, c2, d2, a), [a]);
if (d2.getSnapshot !== b2 || f2 || null !== O && O.memoizedState.tag & 1) {
c2.flags |= 2048;
bi(9, ci.bind(null, c2, d2, e2, b2), void 0, null);
if (null === Q) throw Error(p$2(349));
0 !== (Hh & 30) || di(c2, b2, e2);
}
return e2;
}
function di(a, b2, c2) {
a.flags |= 16384;
a = { getSnapshot: b2, value: c2 };
b2 = M.updateQueue;
null === b2 ? (b2 = { lastEffect: null, stores: null }, M.updateQueue = b2, b2.stores = [a]) : (c2 = b2.stores, null === c2 ? b2.stores = [a] : c2.push(a));
}
function ci(a, b2, c2, d2) {
b2.value = c2;
b2.getSnapshot = d2;
ei(b2) && fi(a);
}
function ai(a, b2, c2) {
return c2(function() {
ei(b2) && fi(a);
});
}
function ei(a) {
var b2 = a.getSnapshot;
a = a.value;
try {
var c2 = b2();
return !He(a, c2);
} catch (d2) {
return true;
}
}
function fi(a) {
var b2 = ih(a, 1);
null !== b2 && gi(b2, a, 1, -1);
}
function hi(a) {
var b2 = Th();
"function" === typeof a && (a = a());
b2.memoizedState = b2.baseState = a;
a = { pending: null, interleaved: null, lanes: 0, dispatch: null, lastRenderedReducer: Vh, lastRenderedState: a };
b2.queue = a;
a = a.dispatch = ii.bind(null, M, a);
return [b2.memoizedState, a];
}
function bi(a, b2, c2, d2) {
a = { tag: a, create: b2, destroy: c2, deps: d2, next: null };
b2 = M.updateQueue;
null === b2 ? (b2 = { lastEffect: null, stores: null }, M.updateQueue = b2, b2.lastEffect = a.next = a) : (c2 = b2.lastEffect, null === c2 ? b2.lastEffect = a.next = a : (d2 = c2.next, c2.next = a, a.next = d2, b2.lastEffect = a));
return a;
}
function ji() {
return Uh().memoizedState;
}
function ki(a, b2, c2, d2) {
var e2 = Th();
M.flags |= a;
e2.memoizedState = bi(1 | b2, c2, void 0, void 0 === d2 ? null : d2);
}
function li(a, b2, c2, d2) {
var e2 = Uh();
d2 = void 0 === d2 ? null : d2;
var f2 = void 0;
if (null !== N) {
var g2 = N.memoizedState;
f2 = g2.destroy;
if (null !== d2 && Mh(d2, g2.deps)) {
e2.memoizedState = bi(b2, c2, f2, d2);
return;
}
}
M.flags |= a;
e2.memoizedState = bi(1 | b2, c2, f2, d2);
}
function mi(a, b2) {
return ki(8390656, 8, a, b2);
}
function $h(a, b2) {
return li(2048, 8, a, b2);
}
function ni(a, b2) {
return li(4, 2, a, b2);
}
function oi(a, b2) {
return li(4, 4, a, b2);
}
function pi(a, b2) {
if ("function" === typeof b2) return a = a(), b2(a), function() {
b2(null);
};
if (null !== b2 && void 0 !== b2) return a = a(), b2.current = a, function() {
b2.current = null;
};
}
function qi(a, b2, c2) {
c2 = null !== c2 && void 0 !== c2 ? c2.concat([a]) : null;
return li(4, 4, pi.bind(null, b2, a), c2);
}
function ri() {
}
function si(a, b2) {
var c2 = Uh();
b2 = void 0 === b2 ? null : b2;
var d2 = c2.memoizedState;
if (null !== d2 && null !== b2 && Mh(b2, d2[1])) return d2[0];
c2.memoizedState = [a, b2];
return a;
}
function ti(a, b2) {
var c2 = Uh();
b2 = void 0 === b2 ? null : b2;
var d2 = c2.memoizedState;
if (null !== d2 && null !== b2 && Mh(b2, d2[1])) return d2[0];
a = a();
c2.memoizedState = [a, b2];
return a;
}
function ui(a, b2, c2) {
if (0 === (Hh & 21)) return a.baseState && (a.baseState = false, dh = true), a.memoizedState = c2;
He(c2, b2) || (c2 = yc(), M.lanes |= c2, rh |= c2, a.baseState = true);
return b2;
}
function vi(a, b2) {
var c2 = C;
C = 0 !== c2 && 4 > c2 ? c2 : 4;
a(true);
var d2 = Gh.transition;
Gh.transition = {};
try {
a(false), b2();
} finally {
C = c2, Gh.transition = d2;
}
}
function wi() {
return Uh().memoizedState;
}
function xi(a, b2, c2) {
var d2 = yi(a);
c2 = { lane: d2, action: c2, hasEagerState: false, eagerState: null, next: null };
if (zi(a)) Ai(b2, c2);
else if (c2 = hh(a, b2, c2, d2), null !== c2) {
var e2 = R();
gi(c2, a, d2, e2);
Bi(c2, b2, d2);
}
}
function ii(a, b2, c2) {
var d2 = yi(a), e2 = { lane: d2, action: c2, hasEagerState: false, eagerState: null, next: null };
if (zi(a)) Ai(b2, e2);
else {
var f2 = a.alternate;
if (0 === a.lanes && (null === f2 || 0 === f2.lanes) && (f2 = b2.lastRenderedReducer, null !== f2)) try {
var g2 = b2.lastRenderedState, h2 = f2(g2, c2);
e2.hasEagerState = true;
e2.eagerState = h2;
if (He(h2, g2)) {
var k2 = b2.interleaved;
null === k2 ? (e2.next = e2, gh(b2)) : (e2.next = k2.next, k2.next = e2);
b2.interleaved = e2;
return;
}
} catch (l2) {
} finally {
}
c2 = hh(a, b2, e2, d2);
null !== c2 && (e2 = R(), gi(c2, a, d2, e2), Bi(c2, b2, d2));
}
}
function zi(a) {
var b2 = a.alternate;
return a === M || null !== b2 && b2 === M;
}
function Ai(a, b2) {
Jh = Ih = true;
var c2 = a.pending;
null === c2 ? b2.next = b2 : (b2.next = c2.next, c2.next = b2);
a.pending = b2;
}
function Bi(a, b2, c2) {
if (0 !== (c2 & 4194240)) {
var d2 = b2.lanes;
d2 &= a.pendingLanes;
c2 |= d2;
b2.lanes = c2;
Cc(a, c2);
}
}
var Rh = { readContext: eh, useCallback: P, useContext: P, useEffect: P, useImperativeHandle: P, useInsertionEffect: P, useLayoutEffect: P, useMemo: P, useReducer: P, useRef: P, useState: P, useDebugValue: P, useDeferredValue: P, useTransition: P, useMutableSource: P, useSyncExternalStore: P, useId: P, unstable_isNewReconciler: false }, Oh = { readContext: eh, useCallback: function(a, b2) {
Th().memoizedState = [a, void 0 === b2 ? null : b2];
return a;
}, useContext: eh, useEffect: mi, useImperativeHandle: function(a, b2, c2) {
c2 = null !== c2 && void 0 !== c2 ? c2.concat([a]) : null;
return ki(
4194308,
4,
pi.bind(null, b2, a),
c2
);
}, useLayoutEffect: function(a, b2) {
return ki(4194308, 4, a, b2);
}, useInsertionEffect: function(a, b2) {
return ki(4, 2, a, b2);
}, useMemo: function(a, b2) {
var c2 = Th();
b2 = void 0 === b2 ? null : b2;
a = a();
c2.memoizedState = [a, b2];
return a;
}, useReducer: function(a, b2, c2) {
var d2 = Th();
b2 = void 0 !== c2 ? c2(b2) : b2;
d2.memoizedState = d2.baseState = b2;
a = { pending: null, interleaved: null, lanes: 0, dispatch: null, lastRenderedReducer: a, lastRenderedState: b2 };
d2.queue = a;
a = a.dispatch = xi.bind(null, M, a);
return [d2.memoizedState, a];
}, useRef: function(a) {
var b2 = Th();
a = { current: a };
return b2.memoizedState = a;
}, useState: hi, useDebugValue: ri, useDeferredValue: function(a) {
return Th().memoizedState = a;
}, useTransition: function() {
var a = hi(false), b2 = a[0];
a = vi.bind(null, a[1]);
Th().memoizedState = a;
return [b2, a];
}, useMutableSource: function() {
}, useSyncExternalStore: function(a, b2, c2) {
var d2 = M, e2 = Th();
if (I) {
if (void 0 === c2) throw Error(p$2(407));
c2 = c2();
} else {
c2 = b2();
if (null === Q) throw Error(p$2(349));
0 !== (Hh & 30) || di(d2, b2, c2);
}
e2.memoizedState = c2;
var f2 = { value: c2, getSnapshot: b2 };
e2.queue = f2;
mi(ai.bind(
null,
d2,
f2,
a
), [a]);
d2.flags |= 2048;
bi(9, ci.bind(null, d2, f2, c2, b2), void 0, null);
return c2;
}, useId: function() {
var a = Th(), b2 = Q.identifierPrefix;
if (I) {
var c2 = sg;
var d2 = rg;
c2 = (d2 & ~(1 << 32 - oc(d2) - 1)).toString(32) + c2;
b2 = ":" + b2 + "R" + c2;
c2 = Kh++;
0 < c2 && (b2 += "H" + c2.toString(32));
b2 += ":";
} else c2 = Lh++, b2 = ":" + b2 + "r" + c2.toString(32) + ":";
return a.memoizedState = b2;
}, unstable_isNewReconciler: false }, Ph = {
readContext: eh,
useCallback: si,
useContext: eh,
useEffect: $h,
useImperativeHandle: qi,
useInsertionEffect: ni,
useLayoutEffect: oi,
useMemo: ti,
useReducer: Wh,
useRef: ji,
useState: function() {
return Wh(Vh);
},
useDebugValue: ri,
useDeferredValue: function(a) {
var b2 = Uh();
return ui(b2, N.memoizedState, a);
},
useTransition: function() {
var a = Wh(Vh)[0], b2 = Uh().memoizedState;
return [a, b2];
},
useMutableSource: Yh,
useSyncExternalStore: Zh,
useId: wi,
unstable_isNewReconciler: false
}, Qh = { readContext: eh, useCallback: si, useContext: eh, useEffect: $h, useImperativeHandle: qi, useInsertionEffect: ni, useLayoutEffect: oi, useMemo: ti, useReducer: Xh, useRef: ji, useState: function() {
return Xh(Vh);
}, useDebugValue: ri, useDeferredValue: function(a) {
var b2 = Uh();
return null === N ? b2.memoizedState = a : ui(b2, N.memoizedState, a);
}, useTransition: function() {
var a = Xh(Vh)[0], b2 = Uh().memoizedState;
return [a, b2];
}, useMutableSource: Yh, useSyncExternalStore: Zh, useId: wi, unstable_isNewReconciler: false };
function Ci(a, b2) {
if (a && a.defaultProps) {
b2 = A$1({}, b2);
a = a.defaultProps;
for (var c2 in a) void 0 === b2[c2] && (b2[c2] = a[c2]);
return b2;
}
return b2;
}
function Di(a, b2, c2, d2) {
b2 = a.memoizedState;
c2 = c2(d2, b2);
c2 = null === c2 || void 0 === c2 ? b2 : A$1({}, b2, c2);
a.memoizedState = c2;
0 === a.lanes && (a.updateQueue.baseState = c2);
}
var Ei = { isMounted: function(a) {
return (a = a._reactInternals) ? Vb(a) === a : false;
}, enqueueSetState: function(a, b2, c2) {
a = a._reactInternals;
var d2 = R(), e2 = yi(a), f2 = mh(d2, e2);
f2.payload = b2;
void 0 !== c2 && null !== c2 && (f2.callback = c2);
b2 = nh(a, f2, e2);
null !== b2 && (gi(b2, a, e2, d2), oh(b2, a, e2));
}, enqueueReplaceState: function(a, b2, c2) {
a = a._reactInternals;
var d2 = R(), e2 = yi(a), f2 = mh(d2, e2);
f2.tag = 1;
f2.payload = b2;
void 0 !== c2 && null !== c2 && (f2.callback = c2);
b2 = nh(a, f2, e2);
null !== b2 && (gi(b2, a, e2, d2), oh(b2, a, e2));
}, enqueueForceUpdate: function(a, b2) {
a = a._reactInternals;
var c2 = R(), d2 = yi(a), e2 = mh(c2, d2);
e2.tag = 2;
void 0 !== b2 && null !== b2 && (e2.callback = b2);
b2 = nh(a, e2, d2);
null !== b2 && (gi(b2, a, d2, c2), oh(b2, a, d2));
} };
function Fi(a, b2, c2, d2, e2, f2, g2) {
a = a.stateNode;
return "function" === typeof a.shouldComponentUpdate ? a.shouldComponentUpdate(d2, f2, g2) : b2.prototype && b2.prototype.isPureReactComponent ? !Ie(c2, d2) || !Ie(e2, f2) : true;
}
function Gi(a, b2, c2) {
var d2 = false, e2 = Vf;
var f2 = b2.contextType;
"object" === typeof f2 && null !== f2 ? f2 = eh(f2) : (e2 = Zf(b2) ? Xf : H.current, d2 = b2.contextTypes, f2 = (d2 = null !== d2 && void 0 !== d2) ? Yf(a, e2) : Vf);
b2 = new b2(c2, f2);
a.memoizedState = null !== b2.state && void 0 !== b2.state ? b2.state : null;
b2.updater = Ei;
a.stateNode = b2;
b2._reactInternals = a;
d2 && (a = a.stateNode, a.__reactInternalMemoizedUnmaskedChildContext = e2, a.__reactInternalMemoizedMaskedChildContext = f2);
return b2;
}
function Hi(a, b2, c2, d2) {
a = b2.state;
"function" === typeof b2.componentWillReceiveProps && b2.componentWillReceiveProps(c2, d2);
"function" === typeof b2.UNSAFE_componentWillReceiveProps && b2.UNSAFE_componentWillReceiveProps(c2, d2);
b2.state !== a && Ei.enqueueReplaceState(b2, b2.state, null);
}
function Ii(a, b2, c2, d2) {
var e2 = a.stateNode;
e2.props = c2;
e2.state = a.memoizedState;
e2.refs = {};
kh(a);
var f2 = b2.contextType;
"object" === typeof f2 && null !== f2 ? e2.context = eh(f2) : (f2 = Zf(b2) ? Xf : H.current, e2.context = Yf(a, f2));
e2.state = a.memoizedState;
f2 = b2.getDerivedStateFromProps;
"function" === typeof f2 && (Di(a, b2, f2, c2), e2.state = a.memoizedState);
"function" === typeof b2.getDerivedStateFromProps || "function" === typeof e2.getSnapshotBeforeUpdate || "function" !== typeof e2.UNSAFE_componentWillMount && "function" !== typeof e2.componentWillMount || (b2 = e2.state, "function" === typeof e2.componentWillMount && e2.componentWillMount(), "function" === typeof e2.UNSAFE_componentWillMount && e2.UNSAFE_componentWillMount(), b2 !== e2.state && Ei.enqueueReplaceState(e2, e2.state, null), qh(a, c2, e2, d2), e2.state = a.memoizedState);
"function" === typeof e2.componentDidMount && (a.flags |= 4194308);
}
function Ji(a, b2) {
try {
var c2 = "", d2 = b2;
do
c2 += Pa(d2), d2 = d2.return;
while (d2);
var e2 = c2;
} catch (f2) {
e2 = "\nError generating stack: " + f2.message + "\n" + f2.stack;
}
return { value: a, source: b2, stack: e2, digest: null };
}
function Ki(a, b2, c2) {
return { value: a, source: null, stack: null != c2 ? c2 : null, digest: null != b2 ? b2 : null };
}
function Li(a, b2) {
try {
console.error(b2.value);
} catch (c2) {
setTimeout(function() {
throw c2;
});
}
}
var Mi = "function" === typeof WeakMap ? WeakMap : Map;
function Ni(a, b2, c2) {
c2 = mh(-1, c2);
c2.tag = 3;
c2.payload = { element: null };
var d2 = b2.value;
c2.callback = function() {
Oi || (Oi = true, Pi = d2);
Li(a, b2);
};
return c2;
}
function Qi(a, b2, c2) {
c2 = mh(-1, c2);
c2.tag = 3;
var d2 = a.type.getDerivedStateFromError;
if ("function" === typeof d2) {
var e2 = b2.value;
c2.payload = function() {
return d2(e2);
};
c2.callback = function() {
Li(a, b2);
};
}
var f2 = a.stateNode;
null !== f2 && "function" === typeof f2.componentDidCatch && (c2.callback = function() {
Li(a, b2);
"function" !== typeof d2 && (null === Ri ? Ri = /* @__PURE__ */ new Set([this]) : Ri.add(this));
var c3 = b2.stack;
this.componentDidCatch(b2.value, { componentStack: null !== c3 ? c3 : "" });
});
return c2;
}
function Si(a, b2, c2) {
var d2 = a.pingCache;
if (null === d2) {
d2 = a.pingCache = new Mi();
var e2 = /* @__PURE__ */ new Set();
d2.set(b2, e2);
} else e2 = d2.get(b2), void 0 === e2 && (e2 = /* @__PURE__ */ new Set(), d2.set(b2, e2));
e2.has(c2) || (e2.add(c2), a = Ti.bind(null, a, b2, c2), b2.then(a, a));
}
function Ui(a) {
do {
var b2;
if (b2 = 13 === a.tag) b2 = a.memoizedState, b2 = null !== b2 ? null !== b2.dehydrated ? true : false : true;
if (b2) return a;
a = a.return;
} while (null !== a);
return null;
}
function Vi(a, b2, c2, d2, e2) {
if (0 === (a.mode & 1)) return a === b2 ? a.flags |= 65536 : (a.flags |= 128, c2.flags |= 131072, c2.flags &= -52805, 1 === c2.tag && (null === c2.alternate ? c2.tag = 17 : (b2 = mh(-1, 1), b2.tag = 2, nh(c2, b2, 1))), c2.lanes |= 1), a;
a.flags |= 65536;
a.lanes = e2;
return a;
}
var Wi = ua.ReactCurrentOwner, dh = false;
function Xi(a, b2, c2, d2) {
b2.child = null === a ? Vg(b2, null, c2, d2) : Ug(b2, a.child, c2, d2);
}
function Yi(a, b2, c2, d2, e2) {
c2 = c2.render;
var f2 = b2.ref;
ch(b2, e2);
d2 = Nh(a, b2, c2, d2, f2, e2);
c2 = Sh();
if (null !== a && !dh) return b2.updateQueue = a.updateQueue, b2.flags &= -2053, a.lanes &= ~e2, Zi(a, b2, e2);
I && c2 && vg(b2);
b2.flags |= 1;
Xi(a, b2, d2, e2);
return b2.child;
}
function $i(a, b2, c2, d2, e2) {
if (null === a) {
var f2 = c2.type;
if ("function" === typeof f2 && !aj(f2) && void 0 === f2.defaultProps && null === c2.compare && void 0 === c2.defaultProps) return b2.tag = 15, b2.type = f2, bj(a, b2, f2, d2, e2);
a = Rg(c2.type, null, d2, b2, b2.mode, e2);
a.ref = b2.ref;
a.return = b2;
return b2.child = a;
}
f2 = a.child;
if (0 === (a.lanes & e2)) {
var g2 = f2.memoizedProps;
c2 = c2.compare;
c2 = null !== c2 ? c2 : Ie;
if (c2(g2, d2) && a.ref === b2.ref) return Zi(a, b2, e2);
}
b2.flags |= 1;
a = Pg(f2, d2);
a.ref = b2.ref;
a.return = b2;
return b2.child = a;
}
function bj(a, b2, c2, d2, e2) {
if (null !== a) {
var f2 = a.memoizedProps;
if (Ie(f2, d2) && a.ref === b2.ref) if (dh = false, b2.pendingProps = d2 = f2, 0 !== (a.lanes & e2)) 0 !== (a.flags & 131072) && (dh = true);
else return b2.lanes = a.lanes, Zi(a, b2, e2);
}
return cj(a, b2, c2, d2, e2);
}
function dj(a, b2, c2) {
var d2 = b2.pendingProps, e2 = d2.children, f2 = null !== a ? a.memoizedState : null;
if ("hidden" === d2.mode) if (0 === (b2.mode & 1)) b2.memoizedState = { baseLanes: 0, cachePool: null, transitions: null }, G(ej, fj), fj |= c2;
else {
if (0 === (c2 & 1073741824)) return a = null !== f2 ? f2.baseLanes | c2 : c2, b2.lanes = b2.childLanes = 1073741824, b2.memoizedState = { baseLanes: a, cachePool: null, transitions: null }, b2.updateQueue = null, G(ej, fj), fj |= a, null;
b2.memoizedState = { baseLanes: 0, cachePool: null, transitions: null };
d2 = null !== f2 ? f2.baseLanes : c2;
G(ej, fj);
fj |= d2;
}
else null !== f2 ? (d2 = f2.baseLanes | c2, b2.memoizedState = null) : d2 = c2, G(ej, fj), fj |= d2;
Xi(a, b2, e2, c2);
return b2.child;
}
function gj(a, b2) {
var c2 = b2.ref;
if (null === a && null !== c2 || null !== a && a.ref !== c2) b2.flags |= 512, b2.flags |= 2097152;
}
function cj(a, b2, c2, d2, e2) {
var f2 = Zf(c2) ? Xf : H.current;
f2 = Yf(b2, f2);
ch(b2, e2);
c2 = Nh(a, b2, c2, d2, f2, e2);
d2 = Sh();
if (null !== a && !dh) return b2.updateQueue = a.updateQueue, b2.flags &= -2053, a.lanes &= ~e2, Zi(a, b2, e2);
I && d2 && vg(b2);
b2.flags |= 1;
Xi(a, b2, c2, e2);
return b2.child;
}
function hj(a, b2, c2, d2, e2) {
if (Zf(c2)) {
var f2 = true;
cg(b2);
} else f2 = false;
ch(b2, e2);
if (null === b2.stateNode) ij(a, b2), Gi(b2, c2, d2), Ii(b2, c2, d2, e2), d2 = true;
else if (null === a) {
var g2 = b2.stateNode, h2 = b2.memoizedProps;
g2.props = h2;
var k2 = g2.context, l2 = c2.contextType;
"object" === typeof l2 && null !== l2 ? l2 = eh(l2) : (l2 = Zf(c2) ? Xf : H.current, l2 = Yf(b2, l2));
var m2 = c2.getDerivedStateFromProps, q2 = "function" === typeof m2 || "function" === typeof g2.getSnapshotBeforeUpdate;
q2 || "function" !== typeof g2.UNSAFE_componentWillReceiveProps && "function" !== typeof g2.componentWillReceiveProps || (h2 !== d2 || k2 !== l2) && Hi(b2, g2, d2, l2);
jh = false;
var r2 = b2.memoizedState;
g2.state = r2;
qh(b2, d2, g2, e2);
k2 = b2.memoizedState;
h2 !== d2 || r2 !== k2 || Wf.current || jh ? ("function" === typeof m2 && (Di(b2, c2, m2, d2), k2 = b2.memoizedState), (h2 = jh || Fi(b2, c2, h2, d2, r2, k2, l2)) ? (q2 || "function" !== typeof g2.UNSAFE_componentWillMount && "function" !== typeof g2.componentWillMount || ("function" === typeof g2.componentWillMount && g2.componentWillMount(), "function" === typeof g2.UNSAFE_componentWillMount && g2.UNSAFE_componentWillMount()), "function" === typeof g2.componentDidMount && (b2.flags |= 4194308)) : ("function" === typeof g2.componentDidMount && (b2.flags |= 4194308), b2.memoizedProps = d2, b2.memoizedState = k2), g2.props = d2, g2.state = k2, g2.context = l2, d2 = h2) : ("function" === typeof g2.componentDidMount && (b2.flags |= 4194308), d2 = false);
} else {
g2 = b2.stateNode;
lh(a, b2);
h2 = b2.memoizedProps;
l2 = b2.type === b2.elementType ? h2 : Ci(b2.type, h2);
g2.props = l2;
q2 = b2.pendingProps;
r2 = g2.context;
k2 = c2.contextType;
"object" === typeof k2 && null !== k2 ? k2 = eh(k2) : (k2 = Zf(c2) ? Xf : H.current, k2 = Yf(b2, k2));
var y2 = c2.getDerivedStateFromProps;
(m2 = "function" === typeof y2 || "function" === typeof g2.getSnapshotBeforeUpdate) || "function" !== typeof g2.UNSAFE_componentWillReceiveProps && "function" !== typeof g2.componentWillReceiveProps || (h2 !== q2 || r2 !== k2) && Hi(b2, g2, d2, k2);
jh = false;
r2 = b2.memoizedState;
g2.state = r2;
qh(b2, d2, g2, e2);
var n2 = b2.memoizedState;
h2 !== q2 || r2 !== n2 || Wf.current || jh ? ("function" === typeof y2 && (Di(b2, c2, y2, d2), n2 = b2.memoizedState), (l2 = jh || Fi(b2, c2, l2, d2, r2, n2, k2) || false) ? (m2 || "function" !== typeof g2.UNSAFE_componentWillUpdate && "function" !== typeof g2.componentWillUpdate || ("function" === typeof g2.componentWillUpdate && g2.componentWillUpdate(d2, n2, k2), "function" === typeof g2.UNSAFE_componentWillUpdate && g2.UNSAFE_componentWillUpdate(d2, n2, k2)), "function" === typeof g2.componentDidUpdate && (b2.flags |= 4), "function" === typeof g2.getSnapshotBeforeUpdate && (b2.flags |= 1024)) : ("function" !== typeof g2.componentDidUpdate || h2 === a.memoizedProps && r2 === a.memoizedState || (b2.flags |= 4), "function" !== typeof g2.getSnapshotBeforeUpdate || h2 === a.memoizedProps && r2 === a.memoizedState || (b2.flags |= 1024), b2.memoizedProps = d2, b2.memoizedState = n2), g2.props = d2, g2.state = n2, g2.context = k2, d2 = l2) : ("function" !== typeof g2.componentDidUpdate || h2 === a.memoizedProps && r2 === a.memoizedState || (b2.flags |= 4), "function" !== typeof g2.getSnapshotBeforeUpdate || h2 === a.memoizedProps && r2 === a.memoizedState || (b2.flags |= 1024), d2 = false);
}
return jj(a, b2, c2, d2, f2, e2);
}
function jj(a, b2, c2, d2, e2, f2) {
gj(a, b2);
var g2 = 0 !== (b2.flags & 128);
if (!d2 && !g2) return e2 && dg(b2, c2, false), Zi(a, b2, f2);
d2 = b2.stateNode;
Wi.current = b2;
var h2 = g2 && "function" !== typeof c2.getDerivedStateFromError ? null : d2.render();
b2.flags |= 1;
null !== a && g2 ? (b2.child = Ug(b2, a.child, null, f2), b2.child = Ug(b2, null, h2, f2)) : Xi(a, b2, h2, f2);
b2.memoizedState = d2.state;
e2 && dg(b2, c2, true);
return b2.child;
}
function kj(a) {
var b2 = a.stateNode;
b2.pendingContext ? ag(a, b2.pendingContext, b2.pendingContext !== b2.context) : b2.context && ag(a, b2.context, false);
yh(a, b2.containerInfo);
}
function lj(a, b2, c2, d2, e2) {
Ig();
Jg(e2);
b2.flags |= 256;
Xi(a, b2, c2, d2);
return b2.child;
}
var mj = { dehydrated: null, treeContext: null, retryLane: 0 };
function nj(a) {
return { baseLanes: a, cachePool: null, transitions: null };
}
function oj(a, b2, c2) {
var d2 = b2.pendingProps, e2 = L.current, f2 = false, g2 = 0 !== (b2.flags & 128), h2;
(h2 = g2) || (h2 = null !== a && null === a.memoizedState ? false : 0 !== (e2 & 2));
if (h2) f2 = true, b2.flags &= -129;
else if (null === a || null !== a.memoizedState) e2 |= 1;
G(L, e2 & 1);
if (null === a) {
Eg(b2);
a = b2.memoizedState;
if (null !== a && (a = a.dehydrated, null !== a)) return 0 === (b2.mode & 1) ? b2.lanes = 1 : "$!" === a.data ? b2.lanes = 8 : b2.lanes = 1073741824, null;
g2 = d2.children;
a = d2.fallback;
return f2 ? (d2 = b2.mode, f2 = b2.child, g2 = { mode: "hidden", children: g2 }, 0 === (d2 & 1) && null !== f2 ? (f2.childLanes = 0, f2.pendingProps = g2) : f2 = pj(g2, d2, 0, null), a = Tg(a, d2, c2, null), f2.return = b2, a.return = b2, f2.sibling = a, b2.child = f2, b2.child.memoizedState = nj(c2), b2.memoizedState = mj, a) : qj(b2, g2);
}
e2 = a.memoizedState;
if (null !== e2 && (h2 = e2.dehydrated, null !== h2)) return rj(a, b2, g2, d2, h2, e2, c2);
if (f2) {
f2 = d2.fallback;
g2 = b2.mode;
e2 = a.child;
h2 = e2.sibling;
var k2 = { mode: "hidden", children: d2.children };
0 === (g2 & 1) && b2.child !== e2 ? (d2 = b2.child, d2.childLanes = 0, d2.pendingProps = k2, b2.deletions = null) : (d2 = Pg(e2, k2), d2.subtreeFlags = e2.subtreeFlags & 14680064);
null !== h2 ? f2 = Pg(h2, f2) : (f2 = Tg(f2, g2, c2, null), f2.flags |= 2);
f2.return = b2;
d2.return = b2;
d2.sibling = f2;
b2.child = d2;
d2 = f2;
f2 = b2.child;
g2 = a.child.memoizedState;
g2 = null === g2 ? nj(c2) : { baseLanes: g2.baseLanes | c2, cachePool: null, transitions: g2.transitions };
f2.memoizedState = g2;
f2.childLanes = a.childLanes & ~c2;
b2.memoizedState = mj;
return d2;
}
f2 = a.child;
a = f2.sibling;
d2 = Pg(f2, { mode: "visible", children: d2.children });
0 === (b2.mode & 1) && (d2.lanes = c2);
d2.return = b2;
d2.sibling = null;
null !== a && (c2 = b2.deletions, null === c2 ? (b2.deletions = [a], b2.flags |= 16) : c2.push(a));
b2.child = d2;
b2.memoizedState = null;
return d2;
}
function qj(a, b2) {
b2 = pj({ mode: "visible", children: b2 }, a.mode, 0, null);
b2.return = a;
return a.child = b2;
}
function sj(a, b2, c2, d2) {
null !== d2 && Jg(d2);
Ug(b2, a.child, null, c2);
a = qj(b2, b2.pendingProps.children);
a.flags |= 2;
b2.memoizedState = null;
return a;
}
function rj(a, b2, c2, d2, e2, f2, g2) {
if (c2) {
if (b2.flags & 256) return b2.flags &= -257, d2 = Ki(Error(p$2(422))), sj(a, b2, g2, d2);
if (null !== b2.memoizedState) return b2.child = a.child, b2.flags |= 128, null;
f2 = d2.fallback;
e2 = b2.mode;
d2 = pj({ mode: "visible", children: d2.children }, e2, 0, null);
f2 = Tg(f2, e2, g2, null);
f2.flags |= 2;
d2.return = b2;
f2.return = b2;
d2.sibling = f2;
b2.child = d2;
0 !== (b2.mode & 1) && Ug(b2, a.child, null, g2);
b2.child.memoizedState = nj(g2);
b2.memoizedState = mj;
return f2;
}
if (0 === (b2.mode & 1)) return sj(a, b2, g2, null);
if ("$!" === e2.data) {
d2 = e2.nextSibling && e2.nextSibling.dataset;
if (d2) var h2 = d2.dgst;
d2 = h2;
f2 = Error(p$2(419));
d2 = Ki(f2, d2, void 0);
return sj(a, b2, g2, d2);
}
h2 = 0 !== (g2 & a.childLanes);
if (dh || h2) {
d2 = Q;
if (null !== d2) {
switch (g2 & -g2) {
case 4:
e2 = 2;
break;
case 16:
e2 = 8;
break;
case 64:
case 128:
case 256:
case 512:
case 1024:
case 2048:
case 4096:
case 8192:
case 16384:
case 32768:
case 65536:
case 131072:
case 262144:
case 524288:
case 1048576:
case 2097152:
case 4194304:
case 8388608:
case 16777216:
case 33554432:
case 67108864:
e2 = 32;
break;
case 536870912:
e2 = 268435456;
break;
default:
e2 = 0;
}
e2 = 0 !== (e2 & (d2.suspendedLanes | g2)) ? 0 : e2;
0 !== e2 && e2 !== f2.retryLane && (f2.retryLane = e2, ih(a, e2), gi(d2, a, e2, -1));
}
tj();
d2 = Ki(Error(p$2(421)));
return sj(a, b2, g2, d2);
}
if ("$?" === e2.data) return b2.flags |= 128, b2.child = a.child, b2 = uj.bind(null, a), e2._reactRetry = b2, null;
a = f2.treeContext;
yg = Lf(e2.nextSibling);
xg = b2;
I = true;
zg = null;
null !== a && (og[pg++] = rg, og[pg++] = sg, og[pg++] = qg, rg = a.id, sg = a.overflow, qg = b2);
b2 = qj(b2, d2.children);
b2.flags |= 4096;
return b2;
}
function vj(a, b2, c2) {
a.lanes |= b2;
var d2 = a.alternate;
null !== d2 && (d2.lanes |= b2);
bh(a.return, b2, c2);
}
function wj(a, b2, c2, d2, e2) {
var f2 = a.memoizedState;
null === f2 ? a.memoizedState = { isBackwards: b2, rendering: null, renderingStartTime: 0, last: d2, tail: c2, tailMode: e2 } : (f2.isBackwards = b2, f2.rendering = null, f2.renderingStartTime = 0, f2.last = d2, f2.tail = c2, f2.tailMode = e2);
}
function xj(a, b2, c2) {
var d2 = b2.pendingProps, e2 = d2.revealOrder, f2 = d2.tail;
Xi(a, b2, d2.children, c2);
d2 = L.current;
if (0 !== (d2 & 2)) d2 = d2 & 1 | 2, b2.flags |= 128;
else {
if (null !== a && 0 !== (a.flags & 128)) a: for (a = b2.child; null !== a; ) {
if (13 === a.tag) null !== a.memoizedState && vj(a, c2, b2);
else if (19 === a.tag) vj(a, c2, b2);
else if (null !== a.child) {
a.child.return = a;
a = a.child;
continue;
}
if (a === b2) break a;
for (; null === a.sibling; ) {
if (null === a.return || a.return === b2) break a;
a = a.return;
}
a.sibling.return = a.return;
a = a.sibling;
}
d2 &= 1;
}
G(L, d2);
if (0 === (b2.mode & 1)) b2.memoizedState = null;
else switch (e2) {
case "forwards":
c2 = b2.child;
for (e2 = null; null !== c2; ) a = c2.alternate, null !== a && null === Ch(a) && (e2 = c2), c2 = c2.sibling;
c2 = e2;
null === c2 ? (e2 = b2.child, b2.child = null) : (e2 = c2.sibling, c2.sibling = null);
wj(b2, false, e2, c2, f2);
break;
case "backwards":
c2 = null;
e2 = b2.child;
for (b2.child = null; null !== e2; ) {
a = e2.alternate;
if (null !== a && null === Ch(a)) {
b2.child = e2;
break;
}
a = e2.sibling;
e2.sibling = c2;
c2 = e2;
e2 = a;
}
wj(b2, true, c2, null, f2);
break;
case "together":
wj(b2, false, null, null, void 0);
break;
default:
b2.memoizedState = null;
}
return b2.child;
}
function ij(a, b2) {
0 === (b2.mode & 1) && null !== a && (a.alternate = null, b2.alternate = null, b2.flags |= 2);
}
function Zi(a, b2, c2) {
null !== a && (b2.dependencies = a.dependencies);
rh |= b2.lanes;
if (0 === (c2 & b2.childLanes)) return null;
if (null !== a && b2.child !== a.child) throw Error(p$2(153));
if (null !== b2.child) {
a = b2.child;
c2 = Pg(a, a.pendingProps);
b2.child = c2;
for (c2.return = b2; null !== a.sibling; ) a = a.sibling, c2 = c2.sibling = Pg(a, a.pendingProps), c2.return = b2;
c2.sibling = null;
}
return b2.child;
}
function yj(a, b2, c2) {
switch (b2.tag) {
case 3:
kj(b2);
Ig();
break;
case 5:
Ah(b2);
break;
case 1:
Zf(b2.type) && cg(b2);
break;
case 4:
yh(b2, b2.stateNode.containerInfo);
break;
case 10:
var d2 = b2.type._context, e2 = b2.memoizedProps.value;
G(Wg, d2._currentValue);
d2._currentValue = e2;
break;
case 13:
d2 = b2.memoizedState;
if (null !== d2) {
if (null !== d2.dehydrated) return G(L, L.current & 1), b2.flags |= 128, null;
if (0 !== (c2 & b2.child.childLanes)) return oj(a, b2, c2);
G(L, L.current & 1);
a = Zi(a, b2, c2);
return null !== a ? a.sibling : null;
}
G(L, L.current & 1);
break;
case 19:
d2 = 0 !== (c2 & b2.childLanes);
if (0 !== (a.flags & 128)) {
if (d2) return xj(a, b2, c2);
b2.flags |= 128;
}
e2 = b2.memoizedState;
null !== e2 && (e2.rendering = null, e2.tail = null, e2.lastEffect = null);
G(L, L.current);
if (d2) break;
else return null;
case 22:
case 23:
return b2.lanes = 0, dj(a, b2, c2);
}
return Zi(a, b2, c2);
}
var zj, Aj, Bj, Cj;
zj = function(a, b2) {
for (var c2 = b2.child; null !== c2; ) {
if (5 === c2.tag || 6 === c2.tag) a.appendChild(c2.stateNode);
else if (4 !== c2.tag && null !== c2.child) {
c2.child.return = c2;
c2 = c2.child;
continue;
}
if (c2 === b2) break;
for (; null === c2.sibling; ) {
if (null === c2.return || c2.return === b2) return;
c2 = c2.return;
}
c2.sibling.return = c2.return;
c2 = c2.sibling;
}
};
Aj = function() {
};
Bj = function(a, b2, c2, d2) {
var e2 = a.memoizedProps;
if (e2 !== d2) {
a = b2.stateNode;
xh(uh.current);
var f2 = null;
switch (c2) {
case "input":
e2 = Ya(a, e2);
d2 = Ya(a, d2);
f2 = [];
break;
case "select":
e2 = A$1({}, e2, { value: void 0 });
d2 = A$1({}, d2, { value: void 0 });
f2 = [];
break;
case "textarea":
e2 = gb(a, e2);
d2 = gb(a, d2);
f2 = [];
break;
default:
"function" !== typeof e2.onClick && "function" === typeof d2.onClick && (a.onclick = Bf);
}
ub(c2, d2);
var g2;
c2 = null;
for (l2 in e2) if (!d2.hasOwnProperty(l2) && e2.hasOwnProperty(l2) && null != e2[l2]) if ("style" === l2) {
var h2 = e2[l2];
for (g2 in h2) h2.hasOwnProperty(g2) && (c2 || (c2 = {}), c2[g2] = "");
} else "dangerouslySetInnerHTML" !== l2 && "children" !== l2 && "suppressContentEditableWarning" !== l2 && "suppressHydrationWarning" !== l2 && "autoFocus" !== l2 && (ea.hasOwnProperty(l2) ? f2 || (f2 = []) : (f2 = f2 || []).push(l2, null));
for (l2 in d2) {
var k2 = d2[l2];
h2 = null != e2 ? e2[l2] : void 0;
if (d2.hasOwnProperty(l2) && k2 !== h2 && (null != k2 || null != h2)) if ("style" === l2) if (h2) {
for (g2 in h2) !h2.hasOwnProperty(g2) || k2 && k2.hasOwnProperty(g2) || (c2 || (c2 = {}), c2[g2] = "");
for (g2 in k2) k2.hasOwnProperty(g2) && h2[g2] !== k2[g2] && (c2 || (c2 = {}), c2[g2] = k2[g2]);
} else c2 || (f2 || (f2 = []), f2.push(
l2,
c2
)), c2 = k2;
else "dangerouslySetInnerHTML" === l2 ? (k2 = k2 ? k2.__html : void 0, h2 = h2 ? h2.__html : void 0, null != k2 && h2 !== k2 && (f2 = f2 || []).push(l2, k2)) : "children" === l2 ? "string" !== typeof k2 && "number" !== typeof k2 || (f2 = f2 || []).push(l2, "" + k2) : "suppressContentEditableWarning" !== l2 && "suppressHydrationWarning" !== l2 && (ea.hasOwnProperty(l2) ? (null != k2 && "onScroll" === l2 && D("scroll", a), f2 || h2 === k2 || (f2 = [])) : (f2 = f2 || []).push(l2, k2));
}
c2 && (f2 = f2 || []).push("style", c2);
var l2 = f2;
if (b2.updateQueue = l2) b2.flags |= 4;
}
};
Cj = function(a, b2, c2, d2) {
c2 !== d2 && (b2.flags |= 4);
};
function Dj(a, b2) {
if (!I) switch (a.tailMode) {
case "hidden":
b2 = a.tail;
for (var c2 = null; null !== b2; ) null !== b2.alternate && (c2 = b2), b2 = b2.sibling;
null === c2 ? a.tail = null : c2.sibling = null;
break;
case "collapsed":
c2 = a.tail;
for (var d2 = null; null !== c2; ) null !== c2.alternate && (d2 = c2), c2 = c2.sibling;
null === d2 ? b2 || null === a.tail ? a.tail = null : a.tail.sibling = null : d2.sibling = null;
}
}
function S(a) {
var b2 = null !== a.alternate && a.alternate.child === a.child, c2 = 0, d2 = 0;
if (b2) for (var e2 = a.child; null !== e2; ) c2 |= e2.lanes | e2.childLanes, d2 |= e2.subtreeFlags & 14680064, d2 |= e2.flags & 14680064, e2.return = a, e2 = e2.sibling;
else for (e2 = a.child; null !== e2; ) c2 |= e2.lanes | e2.childLanes, d2 |= e2.subtreeFlags, d2 |= e2.flags, e2.return = a, e2 = e2.sibling;
a.subtreeFlags |= d2;
a.childLanes = c2;
return b2;
}
function Ej(a, b2, c2) {
var d2 = b2.pendingProps;
wg(b2);
switch (b2.tag) {
case 2:
case 16:
case 15:
case 0:
case 11:
case 7:
case 8:
case 12:
case 9:
case 14:
return S(b2), null;
case 1:
return Zf(b2.type) && $f(), S(b2), null;
case 3:
d2 = b2.stateNode;
zh$1();
E(Wf);
E(H);
Eh();
d2.pendingContext && (d2.context = d2.pendingContext, d2.pendingContext = null);
if (null === a || null === a.child) Gg(b2) ? b2.flags |= 4 : null === a || a.memoizedState.isDehydrated && 0 === (b2.flags & 256) || (b2.flags |= 1024, null !== zg && (Fj(zg), zg = null));
Aj(a, b2);
S(b2);
return null;
case 5:
Bh(b2);
var e2 = xh(wh.current);
c2 = b2.type;
if (null !== a && null != b2.stateNode) Bj(a, b2, c2, d2, e2), a.ref !== b2.ref && (b2.flags |= 512, b2.flags |= 2097152);
else {
if (!d2) {
if (null === b2.stateNode) throw Error(p$2(166));
S(b2);
return null;
}
a = xh(uh.current);
if (Gg(b2)) {
d2 = b2.stateNode;
c2 = b2.type;
var f2 = b2.memoizedProps;
d2[Of] = b2;
d2[Pf] = f2;
a = 0 !== (b2.mode & 1);
switch (c2) {
case "dialog":
D("cancel", d2);
D("close", d2);
break;
case "iframe":
case "object":
case "embed":
D("load", d2);
break;
case "video":
case "audio":
for (e2 = 0; e2 < lf.length; e2++) D(lf[e2], d2);
break;
case "source":
D("error", d2);
break;
case "img":
case "image":
case "link":
D(
"error",
d2
);
D("load", d2);
break;
case "details":
D("toggle", d2);
break;
case "input":
Za(d2, f2);
D("invalid", d2);
break;
case "select":
d2._wrapperState = { wasMultiple: !!f2.multiple };
D("invalid", d2);
break;
case "textarea":
hb(d2, f2), D("invalid", d2);
}
ub(c2, f2);
e2 = null;
for (var g2 in f2) if (f2.hasOwnProperty(g2)) {
var h2 = f2[g2];
"children" === g2 ? "string" === typeof h2 ? d2.textContent !== h2 && (true !== f2.suppressHydrationWarning && Af(d2.textContent, h2, a), e2 = ["children", h2]) : "number" === typeof h2 && d2.textContent !== "" + h2 && (true !== f2.suppressHydrationWarning && Af(
d2.textContent,
h2,
a
), e2 = ["children", "" + h2]) : ea.hasOwnProperty(g2) && null != h2 && "onScroll" === g2 && D("scroll", d2);
}
switch (c2) {
case "input":
Va(d2);
db(d2, f2, true);
break;
case "textarea":
Va(d2);
jb(d2);
break;
case "select":
case "option":
break;
default:
"function" === typeof f2.onClick && (d2.onclick = Bf);
}
d2 = e2;
b2.updateQueue = d2;
null !== d2 && (b2.flags |= 4);
} else {
g2 = 9 === e2.nodeType ? e2 : e2.ownerDocument;
"http://www.w3.org/1999/xhtml" === a && (a = kb(c2));
"http://www.w3.org/1999/xhtml" === a ? "script" === c2 ? (a = g2.createElement("div"), a.innerHTML = "<script><\/script>", a = a.removeChild(a.firstChild)) : "string" === typeof d2.is ? a = g2.createElement(c2, { is: d2.is }) : (a = g2.createElement(c2), "select" === c2 && (g2 = a, d2.multiple ? g2.multiple = true : d2.size && (g2.size = d2.size))) : a = g2.createElementNS(a, c2);
a[Of] = b2;
a[Pf] = d2;
zj(a, b2, false, false);
b2.stateNode = a;
a: {
g2 = vb(c2, d2);
switch (c2) {
case "dialog":
D("cancel", a);
D("close", a);
e2 = d2;
break;
case "iframe":
case "object":
case "embed":
D("load", a);
e2 = d2;
break;
case "video":
case "audio":
for (e2 = 0; e2 < lf.length; e2++) D(lf[e2], a);
e2 = d2;
break;
case "source":
D("error", a);
e2 = d2;
break;
case "img":
case "image":
case "link":
D(
"error",
a
);
D("load", a);
e2 = d2;
break;
case "details":
D("toggle", a);
e2 = d2;
break;
case "input":
Za(a, d2);
e2 = Ya(a, d2);
D("invalid", a);
break;
case "option":
e2 = d2;
break;
case "select":
a._wrapperState = { wasMultiple: !!d2.multiple };
e2 = A$1({}, d2, { value: void 0 });
D("invalid", a);
break;
case "textarea":
hb(a, d2);
e2 = gb(a, d2);
D("invalid", a);
break;
default:
e2 = d2;
}
ub(c2, e2);
h2 = e2;
for (f2 in h2) if (h2.hasOwnProperty(f2)) {
var k2 = h2[f2];
"style" === f2 ? sb(a, k2) : "dangerouslySetInnerHTML" === f2 ? (k2 = k2 ? k2.__html : void 0, null != k2 && nb(a, k2)) : "children" === f2 ? "string" === typeof k2 ? ("textarea" !== c2 || "" !== k2) && ob(a, k2) : "number" === typeof k2 && ob(a, "" + k2) : "suppressContentEditableWarning" !== f2 && "suppressHydrationWarning" !== f2 && "autoFocus" !== f2 && (ea.hasOwnProperty(f2) ? null != k2 && "onScroll" === f2 && D("scroll", a) : null != k2 && ta(a, f2, k2, g2));
}
switch (c2) {
case "input":
Va(a);
db(a, d2, false);
break;
case "textarea":
Va(a);
jb(a);
break;
case "option":
null != d2.value && a.setAttribute("value", "" + Sa(d2.value));
break;
case "select":
a.multiple = !!d2.multiple;
f2 = d2.value;
null != f2 ? fb(a, !!d2.multiple, f2, false) : null != d2.defaultValue && fb(
a,
!!d2.multiple,
d2.defaultValue,
true
);
break;
default:
"function" === typeof e2.onClick && (a.onclick = Bf);
}
switch (c2) {
case "button":
case "input":
case "select":
case "textarea":
d2 = !!d2.autoFocus;
break a;
case "img":
d2 = true;
break a;
default:
d2 = false;
}
}
d2 && (b2.flags |= 4);
}
null !== b2.ref && (b2.flags |= 512, b2.flags |= 2097152);
}
S(b2);
return null;
case 6:
if (a && null != b2.stateNode) Cj(a, b2, a.memoizedProps, d2);
else {
if ("string" !== typeof d2 && null === b2.stateNode) throw Error(p$2(166));
c2 = xh(wh.current);
xh(uh.current);
if (Gg(b2)) {
d2 = b2.stateNode;
c2 = b2.memoizedProps;
d2[Of] = b2;
if (f2 = d2.nodeValue !== c2) {
if (a = xg, null !== a) switch (a.tag) {
case 3:
Af(d2.nodeValue, c2, 0 !== (a.mode & 1));
break;
case 5:
true !== a.memoizedProps.suppressHydrationWarning && Af(d2.nodeValue, c2, 0 !== (a.mode & 1));
}
}
f2 && (b2.flags |= 4);
} else d2 = (9 === c2.nodeType ? c2 : c2.ownerDocument).createTextNode(d2), d2[Of] = b2, b2.stateNode = d2;
}
S(b2);
return null;
case 13:
E(L);
d2 = b2.memoizedState;
if (null === a || null !== a.memoizedState && null !== a.memoizedState.dehydrated) {
if (I && null !== yg && 0 !== (b2.mode & 1) && 0 === (b2.flags & 128)) Hg(), Ig(), b2.flags |= 98560, f2 = false;
else if (f2 = Gg(b2), null !== d2 && null !== d2.dehydrated) {
if (null === a) {
if (!f2) throw Error(p$2(318));
f2 = b2.memoizedState;
f2 = null !== f2 ? f2.dehydrated : null;
if (!f2) throw Error(p$2(317));
f2[Of] = b2;
} else Ig(), 0 === (b2.flags & 128) && (b2.memoizedState = null), b2.flags |= 4;
S(b2);
f2 = false;
} else null !== zg && (Fj(zg), zg = null), f2 = true;
if (!f2) return b2.flags & 65536 ? b2 : null;
}
if (0 !== (b2.flags & 128)) return b2.lanes = c2, b2;
d2 = null !== d2;
d2 !== (null !== a && null !== a.memoizedState) && d2 && (b2.child.flags |= 8192, 0 !== (b2.mode & 1) && (null === a || 0 !== (L.current & 1) ? 0 === T && (T = 3) : tj()));
null !== b2.updateQueue && (b2.flags |= 4);
S(b2);
return null;
case 4:
return zh$1(), Aj(a, b2), null === a && sf(b2.stateNode.containerInfo), S(b2), null;
case 10:
return ah(b2.type._context), S(b2), null;
case 17:
return Zf(b2.type) && $f(), S(b2), null;
case 19:
E(L);
f2 = b2.memoizedState;
if (null === f2) return S(b2), null;
d2 = 0 !== (b2.flags & 128);
g2 = f2.rendering;
if (null === g2) if (d2) Dj(f2, false);
else {
if (0 !== T || null !== a && 0 !== (a.flags & 128)) for (a = b2.child; null !== a; ) {
g2 = Ch(a);
if (null !== g2) {
b2.flags |= 128;
Dj(f2, false);
d2 = g2.updateQueue;
null !== d2 && (b2.updateQueue = d2, b2.flags |= 4);
b2.subtreeFlags = 0;
d2 = c2;
for (c2 = b2.child; null !== c2; ) f2 = c2, a = d2, f2.flags &= 14680066, g2 = f2.alternate, null === g2 ? (f2.childLanes = 0, f2.lanes = a, f2.child = null, f2.subtreeFlags = 0, f2.memoizedProps = null, f2.memoizedState = null, f2.updateQueue = null, f2.dependencies = null, f2.stateNode = null) : (f2.childLanes = g2.childLanes, f2.lanes = g2.lanes, f2.child = g2.child, f2.subtreeFlags = 0, f2.deletions = null, f2.memoizedProps = g2.memoizedProps, f2.memoizedState = g2.memoizedState, f2.updateQueue = g2.updateQueue, f2.type = g2.type, a = g2.dependencies, f2.dependencies = null === a ? null : { lanes: a.lanes, firstContext: a.firstContext }), c2 = c2.sibling;
G(L, L.current & 1 | 2);
return b2.child;
}
a = a.sibling;
}
null !== f2.tail && B() > Gj && (b2.flags |= 128, d2 = true, Dj(f2, false), b2.lanes = 4194304);
}
else {
if (!d2) if (a = Ch(g2), null !== a) {
if (b2.flags |= 128, d2 = true, c2 = a.updateQueue, null !== c2 && (b2.updateQueue = c2, b2.flags |= 4), Dj(f2, true), null === f2.tail && "hidden" === f2.tailMode && !g2.alternate && !I) return S(b2), null;
} else 2 * B() - f2.renderingStartTime > Gj && 1073741824 !== c2 && (b2.flags |= 128, d2 = true, Dj(f2, false), b2.lanes = 4194304);
f2.isBackwards ? (g2.sibling = b2.child, b2.child = g2) : (c2 = f2.last, null !== c2 ? c2.sibling = g2 : b2.child = g2, f2.last = g2);
}
if (null !== f2.tail) return b2 = f2.tail, f2.rendering = b2, f2.tail = b2.sibling, f2.renderingStartTime = B(), b2.sibling = null, c2 = L.current, G(L, d2 ? c2 & 1 | 2 : c2 & 1), b2;
S(b2);
return null;
case 22:
case 23:
return Hj(), d2 = null !== b2.memoizedState, null !== a && null !== a.memoizedState !== d2 && (b2.flags |= 8192), d2 && 0 !== (b2.mode & 1) ? 0 !== (fj & 1073741824) && (S(b2), b2.subtreeFlags & 6 && (b2.flags |= 8192)) : S(b2), null;
case 24:
return null;
case 25:
return null;
}
throw Error(p$2(156, b2.tag));
}
function Ij(a, b2) {
wg(b2);
switch (b2.tag) {
case 1:
return Zf(b2.type) && $f(), a = b2.flags, a & 65536 ? (b2.flags = a & -65537 | 128, b2) : null;
case 3:
return zh$1(), E(Wf), E(H), Eh(), a = b2.flags, 0 !== (a & 65536) && 0 === (a & 128) ? (b2.flags = a & -65537 | 128, b2) : null;
case 5:
return Bh(b2), null;
case 13:
E(L);
a = b2.memoizedState;
if (null !== a && null !== a.dehydrated) {
if (null === b2.alternate) throw Error(p$2(340));
Ig();
}
a = b2.flags;
return a & 65536 ? (b2.flags = a & -65537 | 128, b2) : null;
case 19:
return E(L), null;
case 4:
return zh$1(), null;
case 10:
return ah(b2.type._context), null;
case 22:
case 23:
return Hj(), null;
case 24:
return null;
default:
return null;
}
}
var Jj = false, U = false, Kj = "function" === typeof WeakSet ? WeakSet : Set, V = null;
function Lj(a, b2) {
var c2 = a.ref;
if (null !== c2) if ("function" === typeof c2) try {
c2(null);
} catch (d2) {
W(a, b2, d2);
}
else c2.current = null;
}
function Mj(a, b2, c2) {
try {
c2();
} catch (d2) {
W(a, b2, d2);
}
}
var Nj = false;
function Oj(a, b2) {
Cf = dd;
a = Me();
if (Ne(a)) {
if ("selectionStart" in a) var c2 = { start: a.selectionStart, end: a.selectionEnd };
else a: {
c2 = (c2 = a.ownerDocument) && c2.defaultView || window;
var d2 = c2.getSelection && c2.getSelection();
if (d2 && 0 !== d2.rangeCount) {
c2 = d2.anchorNode;
var e2 = d2.anchorOffset, f2 = d2.focusNode;
d2 = d2.focusOffset;
try {
c2.nodeType, f2.nodeType;
} catch (F2) {
c2 = null;
break a;
}
var g2 = 0, h2 = -1, k2 = -1, l2 = 0, m2 = 0, q2 = a, r2 = null;
b: for (; ; ) {
for (var y2; ; ) {
q2 !== c2 || 0 !== e2 && 3 !== q2.nodeType || (h2 = g2 + e2);
q2 !== f2 || 0 !== d2 && 3 !== q2.nodeType || (k2 = g2 + d2);
3 === q2.nodeType && (g2 += q2.nodeValue.length);
if (null === (y2 = q2.firstChild)) break;
r2 = q2;
q2 = y2;
}
for (; ; ) {
if (q2 === a) break b;
r2 === c2 && ++l2 === e2 && (h2 = g2);
r2 === f2 && ++m2 === d2 && (k2 = g2);
if (null !== (y2 = q2.nextSibling)) break;
q2 = r2;
r2 = q2.parentNode;
}
q2 = y2;
}
c2 = -1 === h2 || -1 === k2 ? null : { start: h2, end: k2 };
} else c2 = null;
}
c2 = c2 || { start: 0, end: 0 };
} else c2 = null;
Df = { focusedElem: a, selectionRange: c2 };
dd = false;
for (V = b2; null !== V; ) if (b2 = V, a = b2.child, 0 !== (b2.subtreeFlags & 1028) && null !== a) a.return = b2, V = a;
else for (; null !== V; ) {
b2 = V;
try {
var n2 = b2.alternate;
if (0 !== (b2.flags & 1024)) switch (b2.tag) {
case 0:
case 11:
case 15:
break;
case 1:
if (null !== n2) {
var t2 = n2.memoizedProps, J2 = n2.memoizedState, x2 = b2.stateNode, w2 = x2.getSnapshotBeforeUpdate(b2.elementType === b2.type ? t2 : Ci(b2.type, t2), J2);
x2.__reactInternalSnapshotBeforeUpdate = w2;
}
break;
case 3:
var u2 = b2.stateNode.containerInfo;
1 === u2.nodeType ? u2.textContent = "" : 9 === u2.nodeType && u2.documentElement && u2.removeChild(u2.documentElement);
break;
case 5:
case 6:
case 4:
case 17:
break;
default:
throw Error(p$2(163));
}
} catch (F2) {
W(b2, b2.return, F2);
}
a = b2.sibling;
if (null !== a) {
a.return = b2.return;
V = a;
break;
}
V = b2.return;
}
n2 = Nj;
Nj = false;
return n2;
}
function Pj(a, b2, c2) {
var d2 = b2.updateQueue;
d2 = null !== d2 ? d2.lastEffect : null;
if (null !== d2) {
var e2 = d2 = d2.next;
do {
if ((e2.tag & a) === a) {
var f2 = e2.destroy;
e2.destroy = void 0;
void 0 !== f2 && Mj(b2, c2, f2);
}
e2 = e2.next;
} while (e2 !== d2);
}
}
function Qj(a, b2) {
b2 = b2.updateQueue;
b2 = null !== b2 ? b2.lastEffect : null;
if (null !== b2) {
var c2 = b2 = b2.next;
do {
if ((c2.tag & a) === a) {
var d2 = c2.create;
c2.destroy = d2();
}
c2 = c2.next;
} while (c2 !== b2);
}
}
function Rj(a) {
var b2 = a.ref;
if (null !== b2) {
var c2 = a.stateNode;
switch (a.tag) {
case 5:
a = c2;
break;
default:
a = c2;
}
"function" === typeof b2 ? b2(a) : b2.current = a;
}
}
function Sj(a) {
var b2 = a.alternate;
null !== b2 && (a.alternate = null, Sj(b2));
a.child = null;
a.deletions = null;
a.sibling = null;
5 === a.tag && (b2 = a.stateNode, null !== b2 && (delete b2[Of], delete b2[Pf], delete b2[of], delete b2[Qf], delete b2[Rf]));
a.stateNode = null;
a.return = null;
a.dependencies = null;
a.memoizedProps = null;
a.memoizedState = null;
a.pendingProps = null;
a.stateNode = null;
a.updateQueue = null;
}
function Tj(a) {
return 5 === a.tag || 3 === a.tag || 4 === a.tag;
}
function Uj(a) {
a: for (; ; ) {
for (; null === a.sibling; ) {
if (null === a.return || Tj(a.return)) return null;
a = a.return;
}
a.sibling.return = a.return;
for (a = a.sibling; 5 !== a.tag && 6 !== a.tag && 18 !== a.tag; ) {
if (a.flags & 2) continue a;
if (null === a.child || 4 === a.tag) continue a;
else a.child.return = a, a = a.child;
}
if (!(a.flags & 2)) return a.stateNode;
}
}
function Vj(a, b2, c2) {
var d2 = a.tag;
if (5 === d2 || 6 === d2) a = a.stateNode, b2 ? 8 === c2.nodeType ? c2.parentNode.insertBefore(a, b2) : c2.insertBefore(a, b2) : (8 === c2.nodeType ? (b2 = c2.parentNode, b2.insertBefore(a, c2)) : (b2 = c2, b2.appendChild(a)), c2 = c2._reactRootContainer, null !== c2 && void 0 !== c2 || null !== b2.onclick || (b2.onclick = Bf));
else if (4 !== d2 && (a = a.child, null !== a)) for (Vj(a, b2, c2), a = a.sibling; null !== a; ) Vj(a, b2, c2), a = a.sibling;
}
function Wj(a, b2, c2) {
var d2 = a.tag;
if (5 === d2 || 6 === d2) a = a.stateNode, b2 ? c2.insertBefore(a, b2) : c2.appendChild(a);
else if (4 !== d2 && (a = a.child, null !== a)) for (Wj(a, b2, c2), a = a.sibling; null !== a; ) Wj(a, b2, c2), a = a.sibling;
}
var X = null, Xj = false;
function Yj(a, b2, c2) {
for (c2 = c2.child; null !== c2; ) Zj(a, b2, c2), c2 = c2.sibling;
}
function Zj(a, b2, c2) {
if (lc && "function" === typeof lc.onCommitFiberUnmount) try {
lc.onCommitFiberUnmount(kc, c2);
} catch (h2) {
}
switch (c2.tag) {
case 5:
U || Lj(c2, b2);
case 6:
var d2 = X, e2 = Xj;
X = null;
Yj(a, b2, c2);
X = d2;
Xj = e2;
null !== X && (Xj ? (a = X, c2 = c2.stateNode, 8 === a.nodeType ? a.parentNode.removeChild(c2) : a.removeChild(c2)) : X.removeChild(c2.stateNode));
break;
case 18:
null !== X && (Xj ? (a = X, c2 = c2.stateNode, 8 === a.nodeType ? Kf(a.parentNode, c2) : 1 === a.nodeType && Kf(a, c2), bd(a)) : Kf(X, c2.stateNode));
break;
case 4:
d2 = X;
e2 = Xj;
X = c2.stateNode.containerInfo;
Xj = true;
Yj(a, b2, c2);
X = d2;
Xj = e2;
break;
case 0:
case 11:
case 14:
case 15:
if (!U && (d2 = c2.updateQueue, null !== d2 && (d2 = d2.lastEffect, null !== d2))) {
e2 = d2 = d2.next;
do {
var f2 = e2, g2 = f2.destroy;
f2 = f2.tag;
void 0 !== g2 && (0 !== (f2 & 2) ? Mj(c2, b2, g2) : 0 !== (f2 & 4) && Mj(c2, b2, g2));
e2 = e2.next;
} while (e2 !== d2);
}
Yj(a, b2, c2);
break;
case 1:
if (!U && (Lj(c2, b2), d2 = c2.stateNode, "function" === typeof d2.componentWillUnmount)) try {
d2.props = c2.memoizedProps, d2.state = c2.memoizedState, d2.componentWillUnmount();
} catch (h2) {
W(c2, b2, h2);
}
Yj(a, b2, c2);
break;
case 21:
Yj(a, b2, c2);
break;
case 22:
c2.mode & 1 ? (U = (d2 = U) || null !== c2.memoizedState, Yj(a, b2, c2), U = d2) : Yj(a, b2, c2);
break;
default:
Yj(a, b2, c2);
}
}
function ak(a) {
var b2 = a.updateQueue;
if (null !== b2) {
a.updateQueue = null;
var c2 = a.stateNode;
null === c2 && (c2 = a.stateNode = new Kj());
b2.forEach(function(b3) {
var d2 = bk.bind(null, a, b3);
c2.has(b3) || (c2.add(b3), b3.then(d2, d2));
});
}
}
function ck(a, b2) {
var c2 = b2.deletions;
if (null !== c2) for (var d2 = 0; d2 < c2.length; d2++) {
var e2 = c2[d2];
try {
var f2 = a, g2 = b2, h2 = g2;
a: for (; null !== h2; ) {
switch (h2.tag) {
case 5:
X = h2.stateNode;
Xj = false;
break a;
case 3:
X = h2.stateNode.containerInfo;
Xj = true;
break a;
case 4:
X = h2.stateNode.containerInfo;
Xj = true;
break a;
}
h2 = h2.return;
}
if (null === X) throw Error(p$2(160));
Zj(f2, g2, e2);
X = null;
Xj = false;
var k2 = e2.alternate;
null !== k2 && (k2.return = null);
e2.return = null;
} catch (l2) {
W(e2, b2, l2);
}
}
if (b2.subtreeFlags & 12854) for (b2 = b2.child; null !== b2; ) dk(b2, a), b2 = b2.sibling;
}
function dk(a, b2) {
var c2 = a.alternate, d2 = a.flags;
switch (a.tag) {
case 0:
case 11:
case 14:
case 15:
ck(b2, a);
ek(a);
if (d2 & 4) {
try {
Pj(3, a, a.return), Qj(3, a);
} catch (t2) {
W(a, a.return, t2);
}
try {
Pj(5, a, a.return);
} catch (t2) {
W(a, a.return, t2);
}
}
break;
case 1:
ck(b2, a);
ek(a);
d2 & 512 && null !== c2 && Lj(c2, c2.return);
break;
case 5:
ck(b2, a);
ek(a);
d2 & 512 && null !== c2 && Lj(c2, c2.return);
if (a.flags & 32) {
var e2 = a.stateNode;
try {
ob(e2, "");
} catch (t2) {
W(a, a.return, t2);
}
}
if (d2 & 4 && (e2 = a.stateNode, null != e2)) {
var f2 = a.memoizedProps, g2 = null !== c2 ? c2.memoizedProps : f2, h2 = a.type, k2 = a.updateQueue;
a.updateQueue = null;
if (null !== k2) try {
"input" === h2 && "radio" === f2.type && null != f2.name && ab(e2, f2);
vb(h2, g2);
var l2 = vb(h2, f2);
for (g2 = 0; g2 < k2.length; g2 += 2) {
var m2 = k2[g2], q2 = k2[g2 + 1];
"style" === m2 ? sb(e2, q2) : "dangerouslySetInnerHTML" === m2 ? nb(e2, q2) : "children" === m2 ? ob(e2, q2) : ta(e2, m2, q2, l2);
}
switch (h2) {
case "input":
bb(e2, f2);
break;
case "textarea":
ib(e2, f2);
break;
case "select":
var r2 = e2._wrapperState.wasMultiple;
e2._wrapperState.wasMultiple = !!f2.multiple;
var y2 = f2.value;
null != y2 ? fb(e2, !!f2.multiple, y2, false) : r2 !== !!f2.multiple && (null != f2.defaultValue ? fb(
e2,
!!f2.multiple,
f2.defaultValue,
true
) : fb(e2, !!f2.multiple, f2.multiple ? [] : "", false));
}
e2[Pf] = f2;
} catch (t2) {
W(a, a.return, t2);
}
}
break;
case 6:
ck(b2, a);
ek(a);
if (d2 & 4) {
if (null === a.stateNode) throw Error(p$2(162));
e2 = a.stateNode;
f2 = a.memoizedProps;
try {
e2.nodeValue = f2;
} catch (t2) {
W(a, a.return, t2);
}
}
break;
case 3:
ck(b2, a);
ek(a);
if (d2 & 4 && null !== c2 && c2.memoizedState.isDehydrated) try {
bd(b2.containerInfo);
} catch (t2) {
W(a, a.return, t2);
}
break;
case 4:
ck(b2, a);
ek(a);
break;
case 13:
ck(b2, a);
ek(a);
e2 = a.child;
e2.flags & 8192 && (f2 = null !== e2.memoizedState, e2.stateNode.isHidden = f2, !f2 || null !== e2.alternate && null !== e2.alternate.memoizedState || (fk = B()));
d2 & 4 && ak(a);
break;
case 22:
m2 = null !== c2 && null !== c2.memoizedState;
a.mode & 1 ? (U = (l2 = U) || m2, ck(b2, a), U = l2) : ck(b2, a);
ek(a);
if (d2 & 8192) {
l2 = null !== a.memoizedState;
if ((a.stateNode.isHidden = l2) && !m2 && 0 !== (a.mode & 1)) for (V = a, m2 = a.child; null !== m2; ) {
for (q2 = V = m2; null !== V; ) {
r2 = V;
y2 = r2.child;
switch (r2.tag) {
case 0:
case 11:
case 14:
case 15:
Pj(4, r2, r2.return);
break;
case 1:
Lj(r2, r2.return);
var n2 = r2.stateNode;
if ("function" === typeof n2.componentWillUnmount) {
d2 = r2;
c2 = r2.return;
try {
b2 = d2, n2.props = b2.memoizedProps, n2.state = b2.memoizedState, n2.componentWillUnmount();
} catch (t2) {
W(d2, c2, t2);
}
}
break;
case 5:
Lj(r2, r2.return);
break;
case 22:
if (null !== r2.memoizedState) {
gk(q2);
continue;
}
}
null !== y2 ? (y2.return = r2, V = y2) : gk(q2);
}
m2 = m2.sibling;
}
a: for (m2 = null, q2 = a; ; ) {
if (5 === q2.tag) {
if (null === m2) {
m2 = q2;
try {
e2 = q2.stateNode, l2 ? (f2 = e2.style, "function" === typeof f2.setProperty ? f2.setProperty("display", "none", "important") : f2.display = "none") : (h2 = q2.stateNode, k2 = q2.memoizedProps.style, g2 = void 0 !== k2 && null !== k2 && k2.hasOwnProperty("display") ? k2.display : null, h2.style.display = rb$1("display", g2));
} catch (t2) {
W(a, a.return, t2);
}
}
} else if (6 === q2.tag) {
if (null === m2) try {
q2.stateNode.nodeValue = l2 ? "" : q2.memoizedProps;
} catch (t2) {
W(a, a.return, t2);
}
} else if ((22 !== q2.tag && 23 !== q2.tag || null === q2.memoizedState || q2 === a) && null !== q2.child) {
q2.child.return = q2;
q2 = q2.child;
continue;
}
if (q2 === a) break a;
for (; null === q2.sibling; ) {
if (null === q2.return || q2.return === a) break a;
m2 === q2 && (m2 = null);
q2 = q2.return;
}
m2 === q2 && (m2 = null);
q2.sibling.return = q2.return;
q2 = q2.sibling;
}
}
break;
case 19:
ck(b2, a);
ek(a);
d2 & 4 && ak(a);
break;
case 21:
break;
default:
ck(
b2,
a
), ek(a);
}
}
function ek(a) {
var b2 = a.flags;
if (b2 & 2) {
try {
a: {
for (var c2 = a.return; null !== c2; ) {
if (Tj(c2)) {
var d2 = c2;
break a;
}
c2 = c2.return;
}
throw Error(p$2(160));
}
switch (d2.tag) {
case 5:
var e2 = d2.stateNode;
d2.flags & 32 && (ob(e2, ""), d2.flags &= -33);
var f2 = Uj(a);
Wj(a, f2, e2);
break;
case 3:
case 4:
var g2 = d2.stateNode.containerInfo, h2 = Uj(a);
Vj(a, h2, g2);
break;
default:
throw Error(p$2(161));
}
} catch (k2) {
W(a, a.return, k2);
}
a.flags &= -3;
}
b2 & 4096 && (a.flags &= -4097);
}
function hk(a, b2, c2) {
V = a;
ik(a);
}
function ik(a, b2, c2) {
for (var d2 = 0 !== (a.mode & 1); null !== V; ) {
var e2 = V, f2 = e2.child;
if (22 === e2.tag && d2) {
var g2 = null !== e2.memoizedState || Jj;
if (!g2) {
var h2 = e2.alternate, k2 = null !== h2 && null !== h2.memoizedState || U;
h2 = Jj;
var l2 = U;
Jj = g2;
if ((U = k2) && !l2) for (V = e2; null !== V; ) g2 = V, k2 = g2.child, 22 === g2.tag && null !== g2.memoizedState ? jk(e2) : null !== k2 ? (k2.return = g2, V = k2) : jk(e2);
for (; null !== f2; ) V = f2, ik(f2), f2 = f2.sibling;
V = e2;
Jj = h2;
U = l2;
}
kk(a);
} else 0 !== (e2.subtreeFlags & 8772) && null !== f2 ? (f2.return = e2, V = f2) : kk(a);
}
}
function kk(a) {
for (; null !== V; ) {
var b2 = V;
if (0 !== (b2.flags & 8772)) {
var c2 = b2.alternate;
try {
if (0 !== (b2.flags & 8772)) switch (b2.tag) {
case 0:
case 11:
case 15:
U || Qj(5, b2);
break;
case 1:
var d2 = b2.stateNode;
if (b2.flags & 4 && !U) if (null === c2) d2.componentDidMount();
else {
var e2 = b2.elementType === b2.type ? c2.memoizedProps : Ci(b2.type, c2.memoizedProps);
d2.componentDidUpdate(e2, c2.memoizedState, d2.__reactInternalSnapshotBeforeUpdate);
}
var f2 = b2.updateQueue;
null !== f2 && sh(b2, f2, d2);
break;
case 3:
var g2 = b2.updateQueue;
if (null !== g2) {
c2 = null;
if (null !== b2.child) switch (b2.child.tag) {
case 5:
c2 = b2.child.stateNode;
break;
case 1:
c2 = b2.child.stateNode;
}
sh(b2, g2, c2);
}
break;
case 5:
var h2 = b2.stateNode;
if (null === c2 && b2.flags & 4) {
c2 = h2;
var k2 = b2.memoizedProps;
switch (b2.type) {
case "button":
case "input":
case "select":
case "textarea":
k2.autoFocus && c2.focus();
break;
case "img":
k2.src && (c2.src = k2.src);
}
}
break;
case 6:
break;
case 4:
break;
case 12:
break;
case 13:
if (null === b2.memoizedState) {
var l2 = b2.alternate;
if (null !== l2) {
var m2 = l2.memoizedState;
if (null !== m2) {
var q2 = m2.dehydrated;
null !== q2 && bd(q2);
}
}
}
break;
case 19:
case 17:
case 21:
case 22:
case 23:
case 25:
break;
default:
throw Error(p$2(163));
}
U || b2.flags & 512 && Rj(b2);
} catch (r2) {
W(b2, b2.return, r2);
}
}
if (b2 === a) {
V = null;
break;
}
c2 = b2.sibling;
if (null !== c2) {
c2.return = b2.return;
V = c2;
break;
}
V = b2.return;
}
}
function gk(a) {
for (; null !== V; ) {
var b2 = V;
if (b2 === a) {
V = null;
break;
}
var c2 = b2.sibling;
if (null !== c2) {
c2.return = b2.return;
V = c2;
break;
}
V = b2.return;
}
}
function jk(a) {
for (; null !== V; ) {
var b2 = V;
try {
switch (b2.tag) {
case 0:
case 11:
case 15:
var c2 = b2.return;
try {
Qj(4, b2);
} catch (k2) {
W(b2, c2, k2);
}
break;
case 1:
var d2 = b2.stateNode;
if ("function" === typeof d2.componentDidMount) {
var e2 = b2.return;
try {
d2.componentDidMount();
} catch (k2) {
W(b2, e2, k2);
}
}
var f2 = b2.return;
try {
Rj(b2);
} catch (k2) {
W(b2, f2, k2);
}
break;
case 5:
var g2 = b2.return;
try {
Rj(b2);
} catch (k2) {
W(b2, g2, k2);
}
}
} catch (k2) {
W(b2, b2.return, k2);
}
if (b2 === a) {
V = null;
break;
}
var h2 = b2.sibling;
if (null !== h2) {
h2.return = b2.return;
V = h2;
break;
}
V = b2.return;
}
}
var lk = Math.ceil, mk = ua.ReactCurrentDispatcher, nk = ua.ReactCurrentOwner, ok = ua.ReactCurrentBatchConfig, K = 0, Q = null, Y = null, Z = 0, fj = 0, ej = Uf(0), T = 0, pk = null, rh = 0, qk = 0, rk = 0, sk = null, tk = null, fk = 0, Gj = Infinity, uk = null, Oi = false, Pi = null, Ri = null, vk = false, wk = null, xk = 0, yk = 0, zk = null, Ak = -1, Bk = 0;
function R() {
return 0 !== (K & 6) ? B() : -1 !== Ak ? Ak : Ak = B();
}
function yi(a) {
if (0 === (a.mode & 1)) return 1;
if (0 !== (K & 2) && 0 !== Z) return Z & -Z;
if (null !== Kg.transition) return 0 === Bk && (Bk = yc()), Bk;
a = C;
if (0 !== a) return a;
a = window.event;
a = void 0 === a ? 16 : jd(a.type);
return a;
}
function gi(a, b2, c2, d2) {
if (50 < yk) throw yk = 0, zk = null, Error(p$2(185));
Ac(a, c2, d2);
if (0 === (K & 2) || a !== Q) a === Q && (0 === (K & 2) && (qk |= c2), 4 === T && Ck(a, Z)), Dk(a, d2), 1 === c2 && 0 === K && 0 === (b2.mode & 1) && (Gj = B() + 500, fg && jg());
}
function Dk(a, b2) {
var c2 = a.callbackNode;
wc(a, b2);
var d2 = uc(a, a === Q ? Z : 0);
if (0 === d2) null !== c2 && bc(c2), a.callbackNode = null, a.callbackPriority = 0;
else if (b2 = d2 & -d2, a.callbackPriority !== b2) {
null != c2 && bc(c2);
if (1 === b2) 0 === a.tag ? ig(Ek.bind(null, a)) : hg(Ek.bind(null, a)), Jf(function() {
0 === (K & 6) && jg();
}), c2 = null;
else {
switch (Dc(d2)) {
case 1:
c2 = fc;
break;
case 4:
c2 = gc;
break;
case 16:
c2 = hc;
break;
case 536870912:
c2 = jc;
break;
default:
c2 = hc;
}
c2 = Fk(c2, Gk.bind(null, a));
}
a.callbackPriority = b2;
a.callbackNode = c2;
}
}
function Gk(a, b2) {
Ak = -1;
Bk = 0;
if (0 !== (K & 6)) throw Error(p$2(327));
var c2 = a.callbackNode;
if (Hk() && a.callbackNode !== c2) return null;
var d2 = uc(a, a === Q ? Z : 0);
if (0 === d2) return null;
if (0 !== (d2 & 30) || 0 !== (d2 & a.expiredLanes) || b2) b2 = Ik(a, d2);
else {
b2 = d2;
var e2 = K;
K |= 2;
var f2 = Jk();
if (Q !== a || Z !== b2) uk = null, Gj = B() + 500, Kk(a, b2);
do
try {
Lk();
break;
} catch (h2) {
Mk(a, h2);
}
while (1);
$g();
mk.current = f2;
K = e2;
null !== Y ? b2 = 0 : (Q = null, Z = 0, b2 = T);
}
if (0 !== b2) {
2 === b2 && (e2 = xc(a), 0 !== e2 && (d2 = e2, b2 = Nk(a, e2)));
if (1 === b2) throw c2 = pk, Kk(a, 0), Ck(a, d2), Dk(a, B()), c2;
if (6 === b2) Ck(a, d2);
else {
e2 = a.current.alternate;
if (0 === (d2 & 30) && !Ok(e2) && (b2 = Ik(a, d2), 2 === b2 && (f2 = xc(a), 0 !== f2 && (d2 = f2, b2 = Nk(a, f2))), 1 === b2)) throw c2 = pk, Kk(a, 0), Ck(a, d2), Dk(a, B()), c2;
a.finishedWork = e2;
a.finishedLanes = d2;
switch (b2) {
case 0:
case 1:
throw Error(p$2(345));
case 2:
Pk(a, tk, uk);
break;
case 3:
Ck(a, d2);
if ((d2 & 130023424) === d2 && (b2 = fk + 500 - B(), 10 < b2)) {
if (0 !== uc(a, 0)) break;
e2 = a.suspendedLanes;
if ((e2 & d2) !== d2) {
R();
a.pingedLanes |= a.suspendedLanes & e2;
break;
}
a.timeoutHandle = Ff(Pk.bind(null, a, tk, uk), b2);
break;
}
Pk(a, tk, uk);
break;
case 4:
Ck(a, d2);
if ((d2 & 4194240) === d2) break;
b2 = a.eventTimes;
for (e2 = -1; 0 < d2; ) {
var g2 = 31 - oc(d2);
f2 = 1 << g2;
g2 = b2[g2];
g2 > e2 && (e2 = g2);
d2 &= ~f2;
}
d2 = e2;
d2 = B() - d2;
d2 = (120 > d2 ? 120 : 480 > d2 ? 480 : 1080 > d2 ? 1080 : 1920 > d2 ? 1920 : 3e3 > d2 ? 3e3 : 4320 > d2 ? 4320 : 1960 * lk(d2 / 1960)) - d2;
if (10 < d2) {
a.timeoutHandle = Ff(Pk.bind(null, a, tk, uk), d2);
break;
}
Pk(a, tk, uk);
break;
case 5:
Pk(a, tk, uk);
break;
default:
throw Error(p$2(329));
}
}
}
Dk(a, B());
return a.callbackNode === c2 ? Gk.bind(null, a) : null;
}
function Nk(a, b2) {
var c2 = sk;
a.current.memoizedState.isDehydrated && (Kk(a, b2).flags |= 256);
a = Ik(a, b2);
2 !== a && (b2 = tk, tk = c2, null !== b2 && Fj(b2));
return a;
}
function Fj(a) {
null === tk ? tk = a : tk.push.apply(tk, a);
}
function Ok(a) {
for (var b2 = a; ; ) {
if (b2.flags & 16384) {
var c2 = b2.updateQueue;
if (null !== c2 && (c2 = c2.stores, null !== c2)) for (var d2 = 0; d2 < c2.length; d2++) {
var e2 = c2[d2], f2 = e2.getSnapshot;
e2 = e2.value;
try {
if (!He(f2(), e2)) return false;
} catch (g2) {
return false;
}
}
}
c2 = b2.child;
if (b2.subtreeFlags & 16384 && null !== c2) c2.return = b2, b2 = c2;
else {
if (b2 === a) break;
for (; null === b2.sibling; ) {
if (null === b2.return || b2.return === a) return true;
b2 = b2.return;
}
b2.sibling.return = b2.return;
b2 = b2.sibling;
}
}
return true;
}
function Ck(a, b2) {
b2 &= ~rk;
b2 &= ~qk;
a.suspendedLanes |= b2;
a.pingedLanes &= ~b2;
for (a = a.expirationTimes; 0 < b2; ) {
var c2 = 31 - oc(b2), d2 = 1 << c2;
a[c2] = -1;
b2 &= ~d2;
}
}
function Ek(a) {
if (0 !== (K & 6)) throw Error(p$2(327));
Hk();
var b2 = uc(a, 0);
if (0 === (b2 & 1)) return Dk(a, B()), null;
var c2 = Ik(a, b2);
if (0 !== a.tag && 2 === c2) {
var d2 = xc(a);
0 !== d2 && (b2 = d2, c2 = Nk(a, d2));
}
if (1 === c2) throw c2 = pk, Kk(a, 0), Ck(a, b2), Dk(a, B()), c2;
if (6 === c2) throw Error(p$2(345));
a.finishedWork = a.current.alternate;
a.finishedLanes = b2;
Pk(a, tk, uk);
Dk(a, B());
return null;
}
function Qk(a, b2) {
var c2 = K;
K |= 1;
try {
return a(b2);
} finally {
K = c2, 0 === K && (Gj = B() + 500, fg && jg());
}
}
function Rk(a) {
null !== wk && 0 === wk.tag && 0 === (K & 6) && Hk();
var b2 = K;
K |= 1;
var c2 = ok.transition, d2 = C;
try {
if (ok.transition = null, C = 1, a) return a();
} finally {
C = d2, ok.transition = c2, K = b2, 0 === (K & 6) && jg();
}
}
function Hj() {
fj = ej.current;
E(ej);
}
function Kk(a, b2) {
a.finishedWork = null;
a.finishedLanes = 0;
var c2 = a.timeoutHandle;
-1 !== c2 && (a.timeoutHandle = -1, Gf(c2));
if (null !== Y) for (c2 = Y.return; null !== c2; ) {
var d2 = c2;
wg(d2);
switch (d2.tag) {
case 1:
d2 = d2.type.childContextTypes;
null !== d2 && void 0 !== d2 && $f();
break;
case 3:
zh$1();
E(Wf);
E(H);
Eh();
break;
case 5:
Bh(d2);
break;
case 4:
zh$1();
break;
case 13:
E(L);
break;
case 19:
E(L);
break;
case 10:
ah(d2.type._context);
break;
case 22:
case 23:
Hj();
}
c2 = c2.return;
}
Q = a;
Y = a = Pg(a.current, null);
Z = fj = b2;
T = 0;
pk = null;
rk = qk = rh = 0;
tk = sk = null;
if (null !== fh) {
for (b2 = 0; b2 < fh.length; b2++) if (c2 = fh[b2], d2 = c2.interleaved, null !== d2) {
c2.interleaved = null;
var e2 = d2.next, f2 = c2.pending;
if (null !== f2) {
var g2 = f2.next;
f2.next = e2;
d2.next = g2;
}
c2.pending = d2;
}
fh = null;
}
return a;
}
function Mk(a, b2) {
do {
var c2 = Y;
try {
$g();
Fh.current = Rh;
if (Ih) {
for (var d2 = M.memoizedState; null !== d2; ) {
var e2 = d2.queue;
null !== e2 && (e2.pending = null);
d2 = d2.next;
}
Ih = false;
}
Hh = 0;
O = N = M = null;
Jh = false;
Kh = 0;
nk.current = null;
if (null === c2 || null === c2.return) {
T = 1;
pk = b2;
Y = null;
break;
}
a: {
var f2 = a, g2 = c2.return, h2 = c2, k2 = b2;
b2 = Z;
h2.flags |= 32768;
if (null !== k2 && "object" === typeof k2 && "function" === typeof k2.then) {
var l2 = k2, m2 = h2, q2 = m2.tag;
if (0 === (m2.mode & 1) && (0 === q2 || 11 === q2 || 15 === q2)) {
var r2 = m2.alternate;
r2 ? (m2.updateQueue = r2.updateQueue, m2.memoizedState = r2.memoizedState, m2.lanes = r2.lanes) : (m2.updateQueue = null, m2.memoizedState = null);
}
var y2 = Ui(g2);
if (null !== y2) {
y2.flags &= -257;
Vi(y2, g2, h2, f2, b2);
y2.mode & 1 && Si(f2, l2, b2);
b2 = y2;
k2 = l2;
var n2 = b2.updateQueue;
if (null === n2) {
var t2 = /* @__PURE__ */ new Set();
t2.add(k2);
b2.updateQueue = t2;
} else n2.add(k2);
break a;
} else {
if (0 === (b2 & 1)) {
Si(f2, l2, b2);
tj();
break a;
}
k2 = Error(p$2(426));
}
} else if (I && h2.mode & 1) {
var J2 = Ui(g2);
if (null !== J2) {
0 === (J2.flags & 65536) && (J2.flags |= 256);
Vi(J2, g2, h2, f2, b2);
Jg(Ji(k2, h2));
break a;
}
}
f2 = k2 = Ji(k2, h2);
4 !== T && (T = 2);
null === sk ? sk = [f2] : sk.push(f2);
f2 = g2;
do {
switch (f2.tag) {
case 3:
f2.flags |= 65536;
b2 &= -b2;
f2.lanes |= b2;
var x2 = Ni(f2, k2, b2);
ph(f2, x2);
break a;
case 1:
h2 = k2;
var w2 = f2.type, u2 = f2.stateNode;
if (0 === (f2.flags & 128) && ("function" === typeof w2.getDerivedStateFromError || null !== u2 && "function" === typeof u2.componentDidCatch && (null === Ri || !Ri.has(u2)))) {
f2.flags |= 65536;
b2 &= -b2;
f2.lanes |= b2;
var F2 = Qi(f2, h2, b2);
ph(f2, F2);
break a;
}
}
f2 = f2.return;
} while (null !== f2);
}
Sk(c2);
} catch (na) {
b2 = na;
Y === c2 && null !== c2 && (Y = c2 = c2.return);
continue;
}
break;
} while (1);
}
function Jk() {
var a = mk.current;
mk.current = Rh;
return null === a ? Rh : a;
}
function tj() {
if (0 === T || 3 === T || 2 === T) T = 4;
null === Q || 0 === (rh & 268435455) && 0 === (qk & 268435455) || Ck(Q, Z);
}
function Ik(a, b2) {
var c2 = K;
K |= 2;
var d2 = Jk();
if (Q !== a || Z !== b2) uk = null, Kk(a, b2);
do
try {
Tk();
break;
} catch (e2) {
Mk(a, e2);
}
while (1);
$g();
K = c2;
mk.current = d2;
if (null !== Y) throw Error(p$2(261));
Q = null;
Z = 0;
return T;
}
function Tk() {
for (; null !== Y; ) Uk(Y);
}
function Lk() {
for (; null !== Y && !cc(); ) Uk(Y);
}
function Uk(a) {
var b2 = Vk(a.alternate, a, fj);
a.memoizedProps = a.pendingProps;
null === b2 ? Sk(a) : Y = b2;
nk.current = null;
}
function Sk(a) {
var b2 = a;
do {
var c2 = b2.alternate;
a = b2.return;
if (0 === (b2.flags & 32768)) {
if (c2 = Ej(c2, b2, fj), null !== c2) {
Y = c2;
return;
}
} else {
c2 = Ij(c2, b2);
if (null !== c2) {
c2.flags &= 32767;
Y = c2;
return;
}
if (null !== a) a.flags |= 32768, a.subtreeFlags = 0, a.deletions = null;
else {
T = 6;
Y = null;
return;
}
}
b2 = b2.sibling;
if (null !== b2) {
Y = b2;
return;
}
Y = b2 = a;
} while (null !== b2);
0 === T && (T = 5);
}
function Pk(a, b2, c2) {
var d2 = C, e2 = ok.transition;
try {
ok.transition = null, C = 1, Wk(a, b2, c2, d2);
} finally {
ok.transition = e2, C = d2;
}
return null;
}
function Wk(a, b2, c2, d2) {
do
Hk();
while (null !== wk);
if (0 !== (K & 6)) throw Error(p$2(327));
c2 = a.finishedWork;
var e2 = a.finishedLanes;
if (null === c2) return null;
a.finishedWork = null;
a.finishedLanes = 0;
if (c2 === a.current) throw Error(p$2(177));
a.callbackNode = null;
a.callbackPriority = 0;
var f2 = c2.lanes | c2.childLanes;
Bc(a, f2);
a === Q && (Y = Q = null, Z = 0);
0 === (c2.subtreeFlags & 2064) && 0 === (c2.flags & 2064) || vk || (vk = true, Fk(hc, function() {
Hk();
return null;
}));
f2 = 0 !== (c2.flags & 15990);
if (0 !== (c2.subtreeFlags & 15990) || f2) {
f2 = ok.transition;
ok.transition = null;
var g2 = C;
C = 1;
var h2 = K;
K |= 4;
nk.current = null;
Oj(a, c2);
dk(c2, a);
Oe(Df);
dd = !!Cf;
Df = Cf = null;
a.current = c2;
hk(c2);
dc();
K = h2;
C = g2;
ok.transition = f2;
} else a.current = c2;
vk && (vk = false, wk = a, xk = e2);
f2 = a.pendingLanes;
0 === f2 && (Ri = null);
mc(c2.stateNode);
Dk(a, B());
if (null !== b2) for (d2 = a.onRecoverableError, c2 = 0; c2 < b2.length; c2++) e2 = b2[c2], d2(e2.value, { componentStack: e2.stack, digest: e2.digest });
if (Oi) throw Oi = false, a = Pi, Pi = null, a;
0 !== (xk & 1) && 0 !== a.tag && Hk();
f2 = a.pendingLanes;
0 !== (f2 & 1) ? a === zk ? yk++ : (yk = 0, zk = a) : yk = 0;
jg();
return null;
}
function Hk() {
if (null !== wk) {
var a = Dc(xk), b2 = ok.transition, c2 = C;
try {
ok.transition = null;
C = 16 > a ? 16 : a;
if (null === wk) var d2 = false;
else {
a = wk;
wk = null;
xk = 0;
if (0 !== (K & 6)) throw Error(p$2(331));
var e2 = K;
K |= 4;
for (V = a.current; null !== V; ) {
var f2 = V, g2 = f2.child;
if (0 !== (V.flags & 16)) {
var h2 = f2.deletions;
if (null !== h2) {
for (var k2 = 0; k2 < h2.length; k2++) {
var l2 = h2[k2];
for (V = l2; null !== V; ) {
var m2 = V;
switch (m2.tag) {
case 0:
case 11:
case 15:
Pj(8, m2, f2);
}
var q2 = m2.child;
if (null !== q2) q2.return = m2, V = q2;
else for (; null !== V; ) {
m2 = V;
var r2 = m2.sibling, y2 = m2.return;
Sj(m2);
if (m2 === l2) {
V = null;
break;
}
if (null !== r2) {
r2.return = y2;
V = r2;
break;
}
V = y2;
}
}
}
var n2 = f2.alternate;
if (null !== n2) {
var t2 = n2.child;
if (null !== t2) {
n2.child = null;
do {
var J2 = t2.sibling;
t2.sibling = null;
t2 = J2;
} while (null !== t2);
}
}
V = f2;
}
}
if (0 !== (f2.subtreeFlags & 2064) && null !== g2) g2.return = f2, V = g2;
else b: for (; null !== V; ) {
f2 = V;
if (0 !== (f2.flags & 2048)) switch (f2.tag) {
case 0:
case 11:
case 15:
Pj(9, f2, f2.return);
}
var x2 = f2.sibling;
if (null !== x2) {
x2.return = f2.return;
V = x2;
break b;
}
V = f2.return;
}
}
var w2 = a.current;
for (V = w2; null !== V; ) {
g2 = V;
var u2 = g2.child;
if (0 !== (g2.subtreeFlags & 2064) && null !== u2) u2.return = g2, V = u2;
else b: for (g2 = w2; null !== V; ) {
h2 = V;
if (0 !== (h2.flags & 2048)) try {
switch (h2.tag) {
case 0:
case 11:
case 15:
Qj(9, h2);
}
} catch (na) {
W(h2, h2.return, na);
}
if (h2 === g2) {
V = null;
break b;
}
var F2 = h2.sibling;
if (null !== F2) {
F2.return = h2.return;
V = F2;
break b;
}
V = h2.return;
}
}
K = e2;
jg();
if (lc && "function" === typeof lc.onPostCommitFiberRoot) try {
lc.onPostCommitFiberRoot(kc, a);
} catch (na) {
}
d2 = true;
}
return d2;
} finally {
C = c2, ok.transition = b2;
}
}
return false;
}
function Xk(a, b2, c2) {
b2 = Ji(c2, b2);
b2 = Ni(a, b2, 1);
a = nh(a, b2, 1);
b2 = R();
null !== a && (Ac(a, 1, b2), Dk(a, b2));
}
function W(a, b2, c2) {
if (3 === a.tag) Xk(a, a, c2);
else for (; null !== b2; ) {
if (3 === b2.tag) {
Xk(b2, a, c2);
break;
} else if (1 === b2.tag) {
var d2 = b2.stateNode;
if ("function" === typeof b2.type.getDerivedStateFromError || "function" === typeof d2.componentDidCatch && (null === Ri || !Ri.has(d2))) {
a = Ji(c2, a);
a = Qi(b2, a, 1);
b2 = nh(b2, a, 1);
a = R();
null !== b2 && (Ac(b2, 1, a), Dk(b2, a));
break;
}
}
b2 = b2.return;
}
}
function Ti(a, b2, c2) {
var d2 = a.pingCache;
null !== d2 && d2.delete(b2);
b2 = R();
a.pingedLanes |= a.suspendedLanes & c2;
Q === a && (Z & c2) === c2 && (4 === T || 3 === T && (Z & 130023424) === Z && 500 > B() - fk ? Kk(a, 0) : rk |= c2);
Dk(a, b2);
}
function Yk(a, b2) {
0 === b2 && (0 === (a.mode & 1) ? b2 = 1 : (b2 = sc, sc <<= 1, 0 === (sc & 130023424) && (sc = 4194304)));
var c2 = R();
a = ih(a, b2);
null !== a && (Ac(a, b2, c2), Dk(a, c2));
}
function uj(a) {
var b2 = a.memoizedState, c2 = 0;
null !== b2 && (c2 = b2.retryLane);
Yk(a, c2);
}
function bk(a, b2) {
var c2 = 0;
switch (a.tag) {
case 13:
var d2 = a.stateNode;
var e2 = a.memoizedState;
null !== e2 && (c2 = e2.retryLane);
break;
case 19:
d2 = a.stateNode;
break;
default:
throw Error(p$2(314));
}
null !== d2 && d2.delete(b2);
Yk(a, c2);
}
var Vk;
Vk = function(a, b2, c2) {
if (null !== a) if (a.memoizedProps !== b2.pendingProps || Wf.current) dh = true;
else {
if (0 === (a.lanes & c2) && 0 === (b2.flags & 128)) return dh = false, yj(a, b2, c2);
dh = 0 !== (a.flags & 131072) ? true : false;
}
else dh = false, I && 0 !== (b2.flags & 1048576) && ug(b2, ng, b2.index);
b2.lanes = 0;
switch (b2.tag) {
case 2:
var d2 = b2.type;
ij(a, b2);
a = b2.pendingProps;
var e2 = Yf(b2, H.current);
ch(b2, c2);
e2 = Nh(null, b2, d2, a, e2, c2);
var f2 = Sh();
b2.flags |= 1;
"object" === typeof e2 && null !== e2 && "function" === typeof e2.render && void 0 === e2.$$typeof ? (b2.tag = 1, b2.memoizedState = null, b2.updateQueue = null, Zf(d2) ? (f2 = true, cg(b2)) : f2 = false, b2.memoizedState = null !== e2.state && void 0 !== e2.state ? e2.state : null, kh(b2), e2.updater = Ei, b2.stateNode = e2, e2._reactInternals = b2, Ii(b2, d2, a, c2), b2 = jj(null, b2, d2, true, f2, c2)) : (b2.tag = 0, I && f2 && vg(b2), Xi(null, b2, e2, c2), b2 = b2.child);
return b2;
case 16:
d2 = b2.elementType;
a: {
ij(a, b2);
a = b2.pendingProps;
e2 = d2._init;
d2 = e2(d2._payload);
b2.type = d2;
e2 = b2.tag = Zk(d2);
a = Ci(d2, a);
switch (e2) {
case 0:
b2 = cj(null, b2, d2, a, c2);
break a;
case 1:
b2 = hj(null, b2, d2, a, c2);
break a;
case 11:
b2 = Yi(null, b2, d2, a, c2);
break a;
case 14:
b2 = $i(null, b2, d2, Ci(d2.type, a), c2);
break a;
}
throw Error(p$2(
306,
d2,
""
));
}
return b2;
case 0:
return d2 = b2.type, e2 = b2.pendingProps, e2 = b2.elementType === d2 ? e2 : Ci(d2, e2), cj(a, b2, d2, e2, c2);
case 1:
return d2 = b2.type, e2 = b2.pendingProps, e2 = b2.elementType === d2 ? e2 : Ci(d2, e2), hj(a, b2, d2, e2, c2);
case 3:
a: {
kj(b2);
if (null === a) throw Error(p$2(387));
d2 = b2.pendingProps;
f2 = b2.memoizedState;
e2 = f2.element;
lh(a, b2);
qh(b2, d2, null, c2);
var g2 = b2.memoizedState;
d2 = g2.element;
if (f2.isDehydrated) if (f2 = { element: d2, isDehydrated: false, cache: g2.cache, pendingSuspenseBoundaries: g2.pendingSuspenseBoundaries, transitions: g2.transitions }, b2.updateQueue.baseState = f2, b2.memoizedState = f2, b2.flags & 256) {
e2 = Ji(Error(p$2(423)), b2);
b2 = lj(a, b2, d2, c2, e2);
break a;
} else if (d2 !== e2) {
e2 = Ji(Error(p$2(424)), b2);
b2 = lj(a, b2, d2, c2, e2);
break a;
} else for (yg = Lf(b2.stateNode.containerInfo.firstChild), xg = b2, I = true, zg = null, c2 = Vg(b2, null, d2, c2), b2.child = c2; c2; ) c2.flags = c2.flags & -3 | 4096, c2 = c2.sibling;
else {
Ig();
if (d2 === e2) {
b2 = Zi(a, b2, c2);
break a;
}
Xi(a, b2, d2, c2);
}
b2 = b2.child;
}
return b2;
case 5:
return Ah(b2), null === a && Eg(b2), d2 = b2.type, e2 = b2.pendingProps, f2 = null !== a ? a.memoizedProps : null, g2 = e2.children, Ef(d2, e2) ? g2 = null : null !== f2 && Ef(d2, f2) && (b2.flags |= 32), gj(a, b2), Xi(a, b2, g2, c2), b2.child;
case 6:
return null === a && Eg(b2), null;
case 13:
return oj(a, b2, c2);
case 4:
return yh(b2, b2.stateNode.containerInfo), d2 = b2.pendingProps, null === a ? b2.child = Ug(b2, null, d2, c2) : Xi(a, b2, d2, c2), b2.child;
case 11:
return d2 = b2.type, e2 = b2.pendingProps, e2 = b2.elementType === d2 ? e2 : Ci(d2, e2), Yi(a, b2, d2, e2, c2);
case 7:
return Xi(a, b2, b2.pendingProps, c2), b2.child;
case 8:
return Xi(a, b2, b2.pendingProps.children, c2), b2.child;
case 12:
return Xi(a, b2, b2.pendingProps.children, c2), b2.child;
case 10:
a: {
d2 = b2.type._context;
e2 = b2.pendingProps;
f2 = b2.memoizedProps;
g2 = e2.value;
G(Wg, d2._currentValue);
d2._currentValue = g2;
if (null !== f2) if (He(f2.value, g2)) {
if (f2.children === e2.children && !Wf.current) {
b2 = Zi(a, b2, c2);
break a;
}
} else for (f2 = b2.child, null !== f2 && (f2.return = b2); null !== f2; ) {
var h2 = f2.dependencies;
if (null !== h2) {
g2 = f2.child;
for (var k2 = h2.firstContext; null !== k2; ) {
if (k2.context === d2) {
if (1 === f2.tag) {
k2 = mh(-1, c2 & -c2);
k2.tag = 2;
var l2 = f2.updateQueue;
if (null !== l2) {
l2 = l2.shared;
var m2 = l2.pending;
null === m2 ? k2.next = k2 : (k2.next = m2.next, m2.next = k2);
l2.pending = k2;
}
}
f2.lanes |= c2;
k2 = f2.alternate;
null !== k2 && (k2.lanes |= c2);
bh(
f2.return,
c2,
b2
);
h2.lanes |= c2;
break;
}
k2 = k2.next;
}
} else if (10 === f2.tag) g2 = f2.type === b2.type ? null : f2.child;
else if (18 === f2.tag) {
g2 = f2.return;
if (null === g2) throw Error(p$2(341));
g2.lanes |= c2;
h2 = g2.alternate;
null !== h2 && (h2.lanes |= c2);
bh(g2, c2, b2);
g2 = f2.sibling;
} else g2 = f2.child;
if (null !== g2) g2.return = f2;
else for (g2 = f2; null !== g2; ) {
if (g2 === b2) {
g2 = null;
break;
}
f2 = g2.sibling;
if (null !== f2) {
f2.return = g2.return;
g2 = f2;
break;
}
g2 = g2.return;
}
f2 = g2;
}
Xi(a, b2, e2.children, c2);
b2 = b2.child;
}
return b2;
case 9:
return e2 = b2.type, d2 = b2.pendingProps.children, ch(b2, c2), e2 = eh(e2), d2 = d2(e2), b2.flags |= 1, Xi(a, b2, d2, c2), b2.child;
case 14:
return d2 = b2.type, e2 = Ci(d2, b2.pendingProps), e2 = Ci(d2.type, e2), $i(a, b2, d2, e2, c2);
case 15:
return bj(a, b2, b2.type, b2.pendingProps, c2);
case 17:
return d2 = b2.type, e2 = b2.pendingProps, e2 = b2.elementType === d2 ? e2 : Ci(d2, e2), ij(a, b2), b2.tag = 1, Zf(d2) ? (a = true, cg(b2)) : a = false, ch(b2, c2), Gi(b2, d2, e2), Ii(b2, d2, e2, c2), jj(null, b2, d2, true, a, c2);
case 19:
return xj(a, b2, c2);
case 22:
return dj(a, b2, c2);
}
throw Error(p$2(156, b2.tag));
};
function Fk(a, b2) {
return ac(a, b2);
}
function $k(a, b2, c2, d2) {
this.tag = a;
this.key = c2;
this.sibling = this.child = this.return = this.stateNode = this.type = this.elementType = null;
this.index = 0;
this.ref = null;
this.pendingProps = b2;
this.dependencies = this.memoizedState = this.updateQueue = this.memoizedProps = null;
this.mode = d2;
this.subtreeFlags = this.flags = 0;
this.deletions = null;
this.childLanes = this.lanes = 0;
this.alternate = null;
}
function Bg(a, b2, c2, d2) {
return new $k(a, b2, c2, d2);
}
function aj(a) {
a = a.prototype;
return !(!a || !a.isReactComponent);
}
function Zk(a) {
if ("function" === typeof a) return aj(a) ? 1 : 0;
if (void 0 !== a && null !== a) {
a = a.$$typeof;
if (a === Da) return 11;
if (a === Ga) return 14;
}
return 2;
}
function Pg(a, b2) {
var c2 = a.alternate;
null === c2 ? (c2 = Bg(a.tag, b2, a.key, a.mode), c2.elementType = a.elementType, c2.type = a.type, c2.stateNode = a.stateNode, c2.alternate = a, a.alternate = c2) : (c2.pendingProps = b2, c2.type = a.type, c2.flags = 0, c2.subtreeFlags = 0, c2.deletions = null);
c2.flags = a.flags & 14680064;
c2.childLanes = a.childLanes;
c2.lanes = a.lanes;
c2.child = a.child;
c2.memoizedProps = a.memoizedProps;
c2.memoizedState = a.memoizedState;
c2.updateQueue = a.updateQueue;
b2 = a.dependencies;
c2.dependencies = null === b2 ? null : { lanes: b2.lanes, firstContext: b2.firstContext };
c2.sibling = a.sibling;
c2.index = a.index;
c2.ref = a.ref;
return c2;
}
function Rg(a, b2, c2, d2, e2, f2) {
var g2 = 2;
d2 = a;
if ("function" === typeof a) aj(a) && (g2 = 1);
else if ("string" === typeof a) g2 = 5;
else a: switch (a) {
case ya:
return Tg(c2.children, e2, f2, b2);
case za:
g2 = 8;
e2 |= 8;
break;
case Aa:
return a = Bg(12, c2, b2, e2 | 2), a.elementType = Aa, a.lanes = f2, a;
case Ea:
return a = Bg(13, c2, b2, e2), a.elementType = Ea, a.lanes = f2, a;
case Fa:
return a = Bg(19, c2, b2, e2), a.elementType = Fa, a.lanes = f2, a;
case Ia:
return pj(c2, e2, f2, b2);
default:
if ("object" === typeof a && null !== a) switch (a.$$typeof) {
case Ba:
g2 = 10;
break a;
case Ca:
g2 = 9;
break a;
case Da:
g2 = 11;
break a;
case Ga:
g2 = 14;
break a;
case Ha:
g2 = 16;
d2 = null;
break a;
}
throw Error(p$2(130, null == a ? a : typeof a, ""));
}
b2 = Bg(g2, c2, b2, e2);
b2.elementType = a;
b2.type = d2;
b2.lanes = f2;
return b2;
}
function Tg(a, b2, c2, d2) {
a = Bg(7, a, d2, b2);
a.lanes = c2;
return a;
}
function pj(a, b2, c2, d2) {
a = Bg(22, a, d2, b2);
a.elementType = Ia;
a.lanes = c2;
a.stateNode = { isHidden: false };
return a;
}
function Qg(a, b2, c2) {
a = Bg(6, a, null, b2);
a.lanes = c2;
return a;
}
function Sg(a, b2, c2) {
b2 = Bg(4, null !== a.children ? a.children : [], a.key, b2);
b2.lanes = c2;
b2.stateNode = { containerInfo: a.containerInfo, pendingChildren: null, implementation: a.implementation };
return b2;
}
function al(a, b2, c2, d2, e2) {
this.tag = b2;
this.containerInfo = a;
this.finishedWork = this.pingCache = this.current = this.pendingChildren = null;
this.timeoutHandle = -1;
this.callbackNode = this.pendingContext = this.context = null;
this.callbackPriority = 0;
this.eventTimes = zc(0);
this.expirationTimes = zc(-1);
this.entangledLanes = this.finishedLanes = this.mutableReadLanes = this.expiredLanes = this.pingedLanes = this.suspendedLanes = this.pendingLanes = 0;
this.entanglements = zc(0);
this.identifierPrefix = d2;
this.onRecoverableError = e2;
this.mutableSourceEagerHydrationData = null;
}
function bl(a, b2, c2, d2, e2, f2, g2, h2, k2) {
a = new al(a, b2, c2, h2, k2);
1 === b2 ? (b2 = 1, true === f2 && (b2 |= 8)) : b2 = 0;
f2 = Bg(3, null, null, b2);
a.current = f2;
f2.stateNode = a;
f2.memoizedState = { element: d2, isDehydrated: c2, cache: null, transitions: null, pendingSuspenseBoundaries: null };
kh(f2);
return a;
}
function cl(a, b2, c2) {
var d2 = 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;
return { $$typeof: wa, key: null == d2 ? null : "" + d2, children: a, containerInfo: b2, implementation: c2 };
}
function dl(a) {
if (!a) return Vf;
a = a._reactInternals;
a: {
if (Vb(a) !== a || 1 !== a.tag) throw Error(p$2(170));
var b2 = a;
do {
switch (b2.tag) {
case 3:
b2 = b2.stateNode.context;
break a;
case 1:
if (Zf(b2.type)) {
b2 = b2.stateNode.__reactInternalMemoizedMergedChildContext;
break a;
}
}
b2 = b2.return;
} while (null !== b2);
throw Error(p$2(171));
}
if (1 === a.tag) {
var c2 = a.type;
if (Zf(c2)) return bg(a, c2, b2);
}
return b2;
}
function el(a, b2, c2, d2, e2, f2, g2, h2, k2) {
a = bl(c2, d2, true, a, e2, f2, g2, h2, k2);
a.context = dl(null);
c2 = a.current;
d2 = R();
e2 = yi(c2);
f2 = mh(d2, e2);
f2.callback = void 0 !== b2 && null !== b2 ? b2 : null;
nh(c2, f2, e2);
a.current.lanes = e2;
Ac(a, e2, d2);
Dk(a, d2);
return a;
}
function fl(a, b2, c2, d2) {
var e2 = b2.current, f2 = R(), g2 = yi(e2);
c2 = dl(c2);
null === b2.context ? b2.context = c2 : b2.pendingContext = c2;
b2 = mh(f2, g2);
b2.payload = { element: a };
d2 = void 0 === d2 ? null : d2;
null !== d2 && (b2.callback = d2);
a = nh(e2, b2, g2);
null !== a && (gi(a, e2, g2, f2), oh(a, e2, g2));
return g2;
}
function gl(a) {
a = a.current;
if (!a.child) return null;
switch (a.child.tag) {
case 5:
return a.child.stateNode;
default:
return a.child.stateNode;
}
}
function hl(a, b2) {
a = a.memoizedState;
if (null !== a && null !== a.dehydrated) {
var c2 = a.retryLane;
a.retryLane = 0 !== c2 && c2 < b2 ? c2 : b2;
}
}
function il(a, b2) {
hl(a, b2);
(a = a.alternate) && hl(a, b2);
}
function jl() {
return null;
}
var kl = "function" === typeof reportError ? reportError : function(a) {
console.error(a);
};
function ll(a) {
this._internalRoot = a;
}
ml.prototype.render = ll.prototype.render = function(a) {
var b2 = this._internalRoot;
if (null === b2) throw Error(p$2(409));
fl(a, b2, null, null);
};
ml.prototype.unmount = ll.prototype.unmount = function() {
var a = this._internalRoot;
if (null !== a) {
this._internalRoot = null;
var b2 = a.containerInfo;
Rk(function() {
fl(null, a, null, null);
});
b2[uf] = null;
}
};
function ml(a) {
this._internalRoot = a;
}
ml.prototype.unstable_scheduleHydration = function(a) {
if (a) {
var b2 = Hc();
a = { blockedOn: null, target: a, priority: b2 };
for (var c2 = 0; c2 < Qc.length && 0 !== b2 && b2 < Qc[c2].priority; c2++) ;
Qc.splice(c2, 0, a);
0 === c2 && Vc(a);
}
};
function nl(a) {
return !(!a || 1 !== a.nodeType && 9 !== a.nodeType && 11 !== a.nodeType);
}
function ol(a) {
return !(!a || 1 !== a.nodeType && 9 !== a.nodeType && 11 !== a.nodeType && (8 !== a.nodeType || " react-mount-point-unstable " !== a.nodeValue));
}
function pl() {
}
function ql(a, b2, c2, d2, e2) {
if (e2) {
if ("function" === typeof d2) {
var f2 = d2;
d2 = function() {
var a2 = gl(g2);
f2.call(a2);
};
}
var g2 = el(b2, d2, a, 0, null, false, false, "", pl);
a._reactRootContainer = g2;
a[uf] = g2.current;
sf(8 === a.nodeType ? a.parentNode : a);
Rk();
return g2;
}
for (; e2 = a.lastChild; ) a.removeChild(e2);
if ("function" === typeof d2) {
var h2 = d2;
d2 = function() {
var a2 = gl(k2);
h2.call(a2);
};
}
var k2 = bl(a, 0, false, null, null, false, false, "", pl);
a._reactRootContainer = k2;
a[uf] = k2.current;
sf(8 === a.nodeType ? a.parentNode : a);
Rk(function() {
fl(b2, k2, c2, d2);
});
return k2;
}
function rl(a, b2, c2, d2, e2) {
var f2 = c2._reactRootContainer;
if (f2) {
var g2 = f2;
if ("function" === typeof e2) {
var h2 = e2;
e2 = function() {
var a2 = gl(g2);
h2.call(a2);
};
}
fl(b2, g2, a, e2);
} else g2 = ql(c2, b2, a, e2, d2);
return gl(g2);
}
Ec = function(a) {
switch (a.tag) {
case 3:
var b2 = a.stateNode;
if (b2.current.memoizedState.isDehydrated) {
var c2 = tc(b2.pendingLanes);
0 !== c2 && (Cc(b2, c2 | 1), Dk(b2, B()), 0 === (K & 6) && (Gj = B() + 500, jg()));
}
break;
case 13:
Rk(function() {
var b3 = ih(a, 1);
if (null !== b3) {
var c3 = R();
gi(b3, a, 1, c3);
}
}), il(a, 1);
}
};
Fc = function(a) {
if (13 === a.tag) {
var b2 = ih(a, 134217728);
if (null !== b2) {
var c2 = R();
gi(b2, a, 134217728, c2);
}
il(a, 134217728);
}
};
Gc = function(a) {
if (13 === a.tag) {
var b2 = yi(a), c2 = ih(a, b2);
if (null !== c2) {
var d2 = R();
gi(c2, a, b2, d2);
}
il(a, b2);
}
};
Hc = function() {
return C;
};
Ic = function(a, b2) {
var c2 = C;
try {
return C = a, b2();
} finally {
C = c2;
}
};
yb = function(a, b2, c2) {
switch (b2) {
case "input":
bb(a, c2);
b2 = c2.name;
if ("radio" === c2.type && null != b2) {
for (c2 = a; c2.parentNode; ) c2 = c2.parentNode;
c2 = c2.querySelectorAll("input[name=" + JSON.stringify("" + b2) + '][type="radio"]');
for (b2 = 0; b2 < c2.length; b2++) {
var d2 = c2[b2];
if (d2 !== a && d2.form === a.form) {
var e2 = Db(d2);
if (!e2) throw Error(p$2(90));
Wa(d2);
bb(d2, e2);
}
}
}
break;
case "textarea":
ib(a, c2);
break;
case "select":
b2 = c2.value, null != b2 && fb(a, !!c2.multiple, b2, false);
}
};
Gb = Qk;
Hb = Rk;
var sl = { usingClientEntryPoint: false, Events: [Cb, ue, Db, Eb, Fb, Qk] }, tl = { findFiberByHostInstance: Wc, bundleType: 0, version: "18.3.1", rendererPackageName: "react-dom" };
var ul = { bundleType: tl.bundleType, version: tl.version, rendererPackageName: tl.rendererPackageName, rendererConfig: tl.rendererConfig, overrideHookState: null, overrideHookStateDeletePath: null, overrideHookStateRenamePath: null, overrideProps: null, overridePropsDeletePath: null, overridePropsRenamePath: null, setErrorHandler: null, setSuspenseHandler: null, scheduleUpdate: null, currentDispatcherRef: ua.ReactCurrentDispatcher, findHostInstanceByFiber: function(a) {
a = Zb(a);
return null === a ? null : a.stateNode;
}, findFiberByHostInstance: tl.findFiberByHostInstance || jl, findHostInstancesForRefresh: null, scheduleRefresh: null, scheduleRoot: null, setRefreshHandler: null, getCurrentFiber: null, reconcilerVersion: "18.3.1-next-f1338f8080-20240426" };
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var vl = __REACT_DEVTOOLS_GLOBAL_HOOK__;
if (!vl.isDisabled && vl.supportsFiber) try {
kc = vl.inject(ul), lc = vl;
} catch (a) {
}
}
reactDom_production_min.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = sl;
reactDom_production_min.createPortal = function(a, b2) {
var c2 = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;
if (!nl(b2)) throw Error(p$2(200));
return cl(a, b2, null, c2);
};
reactDom_production_min.createRoot = function(a, b2) {
if (!nl(a)) throw Error(p$2(299));
var c2 = false, d2 = "", e2 = kl;
null !== b2 && void 0 !== b2 && (true === b2.unstable_strictMode && (c2 = true), void 0 !== b2.identifierPrefix && (d2 = b2.identifierPrefix), void 0 !== b2.onRecoverableError && (e2 = b2.onRecoverableError));
b2 = bl(a, 1, false, null, null, c2, false, d2, e2);
a[uf] = b2.current;
sf(8 === a.nodeType ? a.parentNode : a);
return new ll(b2);
};
reactDom_production_min.findDOMNode = function(a) {
if (null == a) return null;
if (1 === a.nodeType) return a;
var b2 = a._reactInternals;
if (void 0 === b2) {
if ("function" === typeof a.render) throw Error(p$2(188));
a = Object.keys(a).join(",");
throw Error(p$2(268, a));
}
a = Zb(b2);
a = null === a ? null : a.stateNode;
return a;
};
reactDom_production_min.flushSync = function(a) {
return Rk(a);
};
reactDom_production_min.hydrate = function(a, b2, c2) {
if (!ol(b2)) throw Error(p$2(200));
return rl(null, a, b2, true, c2);
};
reactDom_production_min.hydrateRoot = function(a, b2, c2) {
if (!nl(a)) throw Error(p$2(405));
var d2 = null != c2 && c2.hydratedSources || null, e2 = false, f2 = "", g2 = kl;
null !== c2 && void 0 !== c2 && (true === c2.unstable_strictMode && (e2 = true), void 0 !== c2.identifierPrefix && (f2 = c2.identifierPrefix), void 0 !== c2.onRecoverableError && (g2 = c2.onRecoverableError));
b2 = el(b2, null, a, 1, null != c2 ? c2 : null, e2, false, f2, g2);
a[uf] = b2.current;
sf(a);
if (d2) for (a = 0; a < d2.length; a++) c2 = d2[a], e2 = c2._getVersion, e2 = e2(c2._source), null == b2.mutableSourceEagerHydrationData ? b2.mutableSourceEagerHydrationData = [c2, e2] : b2.mutableSourceEagerHydrationData.push(
c2,
e2
);
return new ml(b2);
};
reactDom_production_min.render = function(a, b2, c2) {
if (!ol(b2)) throw Error(p$2(200));
return rl(null, a, b2, false, c2);
};
reactDom_production_min.unmountComponentAtNode = function(a) {
if (!ol(a)) throw Error(p$2(40));
return a._reactRootContainer ? (Rk(function() {
rl(null, null, a, false, function() {
a._reactRootContainer = null;
a[uf] = null;
});
}), true) : false;
};
reactDom_production_min.unstable_batchedUpdates = Qk;
reactDom_production_min.unstable_renderSubtreeIntoContainer = function(a, b2, c2, d2) {
if (!ol(c2)) throw Error(p$2(200));
if (null == a || void 0 === a._reactInternals) throw Error(p$2(38));
return rl(a, b2, c2, false, d2);
};
reactDom_production_min.version = "18.3.1-next-f1338f8080-20240426";
function checkDCE() {
if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === "undefined" || typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== "function") {
return;
}
try {
__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);
} catch (err) {
console.error(err);
}
}
{
checkDCE();
reactDom.exports = reactDom_production_min;
}
var reactDomExports = reactDom.exports;
const ReactDOM = /* @__PURE__ */ getDefaultExportFromCjs(reactDomExports);
const ReactDOM$1 = /* @__PURE__ */ _mergeNamespaces({
__proto__: null,
default: ReactDOM
}, [reactDomExports]);
var m$3 = reactDomExports;
{
client.createRoot = m$3.createRoot;
client.hydrateRoot = m$3.hydrateRoot;
}
var IconContext = /* @__PURE__ */ reactExports.createContext({});
function _extends$2() {
return _extends$2 = Object.assign ? Object.assign.bind() : function(n2) {
for (var e2 = 1; e2 < arguments.length; e2++) {
var t2 = arguments[e2];
for (var r2 in t2) ({}).hasOwnProperty.call(t2, r2) && (n2[r2] = t2[r2]);
}
return n2;
}, _extends$2.apply(null, arguments);
}
function _arrayWithHoles(r2) {
if (Array.isArray(r2)) return r2;
}
function _iterableToArrayLimit(r2, l2) {
var t2 = null == r2 ? null : "undefined" != typeof Symbol && r2[Symbol.iterator] || r2["@@iterator"];
if (null != t2) {
var e2, n2, i, u2, a = [], f2 = true, o = false;
try {
if (i = (t2 = t2.call(r2)).next, 0 === l2) {
if (Object(t2) !== t2) return;
f2 = false;
} else for (; !(f2 = (e2 = i.call(t2)).done) && (a.push(e2.value), a.length !== l2); f2 = true) ;
} catch (r3) {
o = true, n2 = r3;
} finally {
try {
if (!f2 && null != t2["return"] && (u2 = t2["return"](), Object(u2) !== u2)) return;
} finally {
if (o) throw n2;
}
}
return a;
}
}
function _arrayLikeToArray(r2, a) {
(null == a || a > r2.length) && (a = r2.length);
for (var e2 = 0, n2 = Array(a); e2 < a; e2++) n2[e2] = r2[e2];
return n2;
}
function _unsupportedIterableToArray(r2, a) {
if (r2) {
if ("string" == typeof r2) return _arrayLikeToArray(r2, a);
var t2 = {}.toString.call(r2).slice(8, -1);
return "Object" === t2 && r2.constructor && (t2 = r2.constructor.name), "Map" === t2 || "Set" === t2 ? Array.from(r2) : "Arguments" === t2 || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t2) ? _arrayLikeToArray(r2, a) : void 0;
}
}
function _nonIterableRest() {
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function _slicedToArray(r2, e2) {
return _arrayWithHoles(r2) || _iterableToArrayLimit(r2, e2) || _unsupportedIterableToArray(r2, e2) || _nonIterableRest();
}
function _typeof$2(o) {
"@babel/helpers - typeof";
return _typeof$2 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) {
return typeof o2;
} : function(o2) {
return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2;
}, _typeof$2(o);
}
function toPrimitive$1(t2, r2) {
if ("object" != _typeof$2(t2) || !t2) return t2;
var e2 = t2[Symbol.toPrimitive];
if (void 0 !== e2) {
var i = e2.call(t2, r2 || "default");
if ("object" != _typeof$2(i)) return i;
throw new TypeError("@@toPrimitive must return a primitive value.");
}
return ("string" === r2 ? String : Number)(t2);
}
function toPropertyKey$1(t2) {
var i = toPrimitive$1(t2, "string");
return "symbol" == _typeof$2(i) ? i : i + "";
}
function _defineProperty(e2, r2, t2) {
return (r2 = toPropertyKey$1(r2)) in e2 ? Object.defineProperty(e2, r2, {
value: t2,
enumerable: true,
configurable: true,
writable: true
}) : e2[r2] = t2, e2;
}
function _objectWithoutPropertiesLoose(r2, e2) {
if (null == r2) return {};
var t2 = {};
for (var n2 in r2) if ({}.hasOwnProperty.call(r2, n2)) {
if (e2.includes(n2)) continue;
t2[n2] = r2[n2];
}
return t2;
}
function _objectWithoutProperties(e2, t2) {
if (null == e2) return {};
var o, r2, i = _objectWithoutPropertiesLoose(e2, t2);
if (Object.getOwnPropertySymbols) {
var s = Object.getOwnPropertySymbols(e2);
for (r2 = 0; r2 < s.length; r2++) o = s[r2], t2.includes(o) || {}.propertyIsEnumerable.call(e2, o) && (i[o] = e2[o]);
}
return i;
}
var classnames = { exports: {} };
/*!
Copyright (c) 2018 Jed Watson.
Licensed under the MIT License (MIT), see
http://jedwatson.github.io/classnames
*/
(function(module) {
(function() {
var hasOwn2 = {}.hasOwnProperty;
function classNames() {
var classes = "";
for (var i = 0; i < arguments.length; i++) {
var arg = arguments[i];
if (arg) {
classes = appendClass(classes, parseValue(arg));
}
}
return classes;
}
function parseValue(arg) {
if (typeof arg === "string" || typeof arg === "number") {
return arg;
}
if (typeof arg !== "object") {
return "";
}
if (Array.isArray(arg)) {
return classNames.apply(null, arg);
}
if (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes("[native code]")) {
return arg.toString();
}
var classes = "";
for (var key in arg) {
if (hasOwn2.call(arg, key) && arg[key]) {
classes = appendClass(classes, key);
}
}
return classes;
}
function appendClass(value, newClass) {
if (!newClass) {
return value;
}
if (value) {
return value + " " + newClass;
}
return value + newClass;
}
if (module.exports) {
classNames.default = classNames;
module.exports = classNames;
} else {
window.classNames = classNames;
}
})();
})(classnames);
var classnamesExports = classnames.exports;
const cls = /* @__PURE__ */ getDefaultExportFromCjs(classnamesExports);
function bound01$1(n2, max3) {
if (isOnePointZero$1(n2)) {
n2 = "100%";
}
var isPercent = isPercentage$1(n2);
n2 = max3 === 360 ? n2 : Math.min(max3, Math.max(0, parseFloat(n2)));
if (isPercent) {
n2 = parseInt(String(n2 * max3), 10) / 100;
}
if (Math.abs(n2 - max3) < 1e-6) {
return 1;
}
if (max3 === 360) {
n2 = (n2 < 0 ? n2 % max3 + max3 : n2 % max3) / parseFloat(String(max3));
} else {
n2 = n2 % max3 / parseFloat(String(max3));
}
return n2;
}
function clamp01$1(val) {
return Math.min(1, Math.max(0, val));
}
function isOnePointZero$1(n2) {
return typeof n2 === "string" && n2.indexOf(".") !== -1 && parseFloat(n2) === 1;
}
function isPercentage$1(n2) {
return typeof n2 === "string" && n2.indexOf("%") !== -1;
}
function boundAlpha$1(a) {
a = parseFloat(a);
if (isNaN(a) || a < 0 || a > 1) {
a = 1;
}
return a;
}
function convertToPercentage$1(n2) {
if (n2 <= 1) {
return "".concat(Number(n2) * 100, "%");
}
return n2;
}
function pad2$1(c2) {
return c2.length === 1 ? "0" + c2 : String(c2);
}
function rgbToRgb$1(r2, g2, b2) {
return {
r: bound01$1(r2, 255) * 255,
g: bound01$1(g2, 255) * 255,
b: bound01$1(b2, 255) * 255
};
}
function rgbToHsl$1(r2, g2, b2) {
r2 = bound01$1(r2, 255);
g2 = bound01$1(g2, 255);
b2 = bound01$1(b2, 255);
var max3 = Math.max(r2, g2, b2);
var min3 = Math.min(r2, g2, b2);
var h2 = 0;
var s = 0;
var l2 = (max3 + min3) / 2;
if (max3 === min3) {
s = 0;
h2 = 0;
} else {
var d2 = max3 - min3;
s = l2 > 0.5 ? d2 / (2 - max3 - min3) : d2 / (max3 + min3);
switch (max3) {
case r2:
h2 = (g2 - b2) / d2 + (g2 < b2 ? 6 : 0);
break;
case g2:
h2 = (b2 - r2) / d2 + 2;
break;
case b2:
h2 = (r2 - g2) / d2 + 4;
break;
}
h2 /= 6;
}
return { h: h2, s, l: l2 };
}
function hue2rgb(p2, q2, t2) {
if (t2 < 0) {
t2 += 1;
}
if (t2 > 1) {
t2 -= 1;
}
if (t2 < 1 / 6) {
return p2 + (q2 - p2) * (6 * t2);
}
if (t2 < 1 / 2) {
return q2;
}
if (t2 < 2 / 3) {
return p2 + (q2 - p2) * (2 / 3 - t2) * 6;
}
return p2;
}
function hslToRgb$1(h2, s, l2) {
var r2;
var g2;
var b2;
h2 = bound01$1(h2, 360);
s = bound01$1(s, 100);
l2 = bound01$1(l2, 100);
if (s === 0) {
g2 = l2;
b2 = l2;
r2 = l2;
} else {
var q2 = l2 < 0.5 ? l2 * (1 + s) : l2 + s - l2 * s;
var p2 = 2 * l2 - q2;
r2 = hue2rgb(p2, q2, h2 + 1 / 3);
g2 = hue2rgb(p2, q2, h2);
b2 = hue2rgb(p2, q2, h2 - 1 / 3);
}
return { r: r2 * 255, g: g2 * 255, b: b2 * 255 };
}
function rgbToHsv$1(r2, g2, b2) {
r2 = bound01$1(r2, 255);
g2 = bound01$1(g2, 255);
b2 = bound01$1(b2, 255);
var max3 = Math.max(r2, g2, b2);
var min3 = Math.min(r2, g2, b2);
var h2 = 0;
var v4 = max3;
var d2 = max3 - min3;
var s = max3 === 0 ? 0 : d2 / max3;
if (max3 === min3) {
h2 = 0;
} else {
switch (max3) {
case r2:
h2 = (g2 - b2) / d2 + (g2 < b2 ? 6 : 0);
break;
case g2:
h2 = (b2 - r2) / d2 + 2;
break;
case b2:
h2 = (r2 - g2) / d2 + 4;
break;
}
h2 /= 6;
}
return { h: h2, s, v: v4 };
}
function hsvToRgb$1(h2, s, v4) {
h2 = bound01$1(h2, 360) * 6;
s = bound01$1(s, 100);
v4 = bound01$1(v4, 100);
var i = Math.floor(h2);
var f2 = h2 - i;
var p2 = v4 * (1 - s);
var q2 = v4 * (1 - f2 * s);
var t2 = v4 * (1 - (1 - f2) * s);
var mod = i % 6;
var r2 = [v4, q2, p2, p2, t2, v4][mod];
var g2 = [t2, v4, v4, q2, p2, p2][mod];
var b2 = [p2, p2, t2, v4, v4, q2][mod];
return { r: r2 * 255, g: g2 * 255, b: b2 * 255 };
}
function rgbToHex$1(r2, g2, b2, allow3Char) {
var hex2 = [
pad2$1(Math.round(r2).toString(16)),
pad2$1(Math.round(g2).toString(16)),
pad2$1(Math.round(b2).toString(16))
];
if (allow3Char && hex2[0].startsWith(hex2[0].charAt(1)) && hex2[1].startsWith(hex2[1].charAt(1)) && hex2[2].startsWith(hex2[2].charAt(1))) {
return hex2[0].charAt(0) + hex2[1].charAt(0) + hex2[2].charAt(0);
}
return hex2.join("");
}
function rgbaToHex$1(r2, g2, b2, a, allow4Char) {
var hex2 = [
pad2$1(Math.round(r2).toString(16)),
pad2$1(Math.round(g2).toString(16)),
pad2$1(Math.round(b2).toString(16)),
pad2$1(convertDecimalToHex$1(a))
];
if (allow4Char && hex2[0].startsWith(hex2[0].charAt(1)) && hex2[1].startsWith(hex2[1].charAt(1)) && hex2[2].startsWith(hex2[2].charAt(1)) && hex2[3].startsWith(hex2[3].charAt(1))) {
return hex2[0].charAt(0) + hex2[1].charAt(0) + hex2[2].charAt(0) + hex2[3].charAt(0);
}
return hex2.join("");
}
function convertDecimalToHex$1(d2) {
return Math.round(parseFloat(d2) * 255).toString(16);
}
function convertHexToDecimal$1(h2) {
return parseIntFromHex$1(h2) / 255;
}
function parseIntFromHex$1(val) {
return parseInt(val, 16);
}
function numberInputToObject(color2) {
return {
r: color2 >> 16,
g: (color2 & 65280) >> 8,
b: color2 & 255
};
}
var names$1 = {
aliceblue: "#f0f8ff",
antiquewhite: "#faebd7",
aqua: "#00ffff",
aquamarine: "#7fffd4",
azure: "#f0ffff",
beige: "#f5f5dc",
bisque: "#ffe4c4",
black: "#000000",
blanchedalmond: "#ffebcd",
blue: "#0000ff",
blueviolet: "#8a2be2",
brown: "#a52a2a",
burlywood: "#deb887",
cadetblue: "#5f9ea0",
chartreuse: "#7fff00",
chocolate: "#d2691e",
coral: "#ff7f50",
cornflowerblue: "#6495ed",
cornsilk: "#fff8dc",
crimson: "#dc143c",
cyan: "#00ffff",
darkblue: "#00008b",
darkcyan: "#008b8b",
darkgoldenrod: "#b8860b",
darkgray: "#a9a9a9",
darkgreen: "#006400",
darkgrey: "#a9a9a9",
darkkhaki: "#bdb76b",
darkmagenta: "#8b008b",
darkolivegreen: "#556b2f",
darkorange: "#ff8c00",
darkorchid: "#9932cc",
darkred: "#8b0000",
darksalmon: "#e9967a",
darkseagreen: "#8fbc8f",
darkslateblue: "#483d8b",
darkslategray: "#2f4f4f",
darkslategrey: "#2f4f4f",
darkturquoise: "#00ced1",
darkviolet: "#9400d3",
deeppink: "#ff1493",
deepskyblue: "#00bfff",
dimgray: "#696969",
dimgrey: "#696969",
dodgerblue: "#1e90ff",
firebrick: "#b22222",
floralwhite: "#fffaf0",
forestgreen: "#228b22",
fuchsia: "#ff00ff",
gainsboro: "#dcdcdc",
ghostwhite: "#f8f8ff",
goldenrod: "#daa520",
gold: "#ffd700",
gray: "#808080",
green: "#008000",
greenyellow: "#adff2f",
grey: "#808080",
honeydew: "#f0fff0",
hotpink: "#ff69b4",
indianred: "#cd5c5c",
indigo: "#4b0082",
ivory: "#fffff0",
khaki: "#f0e68c",
lavenderblush: "#fff0f5",
lavender: "#e6e6fa",
lawngreen: "#7cfc00",
lemonchiffon: "#fffacd",
lightblue: "#add8e6",
lightcoral: "#f08080",
lightcyan: "#e0ffff",
lightgoldenrodyellow: "#fafad2",
lightgray: "#d3d3d3",
lightgreen: "#90ee90",
lightgrey: "#d3d3d3",
lightpink: "#ffb6c1",
lightsalmon: "#ffa07a",
lightseagreen: "#20b2aa",
lightskyblue: "#87cefa",
lightslategray: "#778899",
lightslategrey: "#778899",
lightsteelblue: "#b0c4de",
lightyellow: "#ffffe0",
lime: "#00ff00",
limegreen: "#32cd32",
linen: "#faf0e6",
magenta: "#ff00ff",
maroon: "#800000",
mediumaquamarine: "#66cdaa",
mediumblue: "#0000cd",
mediumorchid: "#ba55d3",
mediumpurple: "#9370db",
mediumseagreen: "#3cb371",
mediumslateblue: "#7b68ee",
mediumspringgreen: "#00fa9a",
mediumturquoise: "#48d1cc",
mediumvioletred: "#c71585",
midnightblue: "#191970",
mintcream: "#f5fffa",
mistyrose: "#ffe4e1",
moccasin: "#ffe4b5",
navajowhite: "#ffdead",
navy: "#000080",
oldlace: "#fdf5e6",
olive: "#808000",
olivedrab: "#6b8e23",
orange: "#ffa500",
orangered: "#ff4500",
orchid: "#da70d6",
palegoldenrod: "#eee8aa",
palegreen: "#98fb98",
paleturquoise: "#afeeee",
palevioletred: "#db7093",
papayawhip: "#ffefd5",
peachpuff: "#ffdab9",
peru: "#cd853f",
pink: "#ffc0cb",
plum: "#dda0dd",
powderblue: "#b0e0e6",
purple: "#800080",
rebeccapurple: "#663399",
red: "#ff0000",
rosybrown: "#bc8f8f",
royalblue: "#4169e1",
saddlebrown: "#8b4513",
salmon: "#fa8072",
sandybrown: "#f4a460",
seagreen: "#2e8b57",
seashell: "#fff5ee",
sienna: "#a0522d",
silver: "#c0c0c0",
skyblue: "#87ceeb",
slateblue: "#6a5acd",
slategray: "#708090",
slategrey: "#708090",
snow: "#fffafa",
springgreen: "#00ff7f",
steelblue: "#4682b4",
tan: "#d2b48c",
teal: "#008080",
thistle: "#d8bfd8",
tomato: "#ff6347",
turquoise: "#40e0d0",
violet: "#ee82ee",
wheat: "#f5deb3",
white: "#ffffff",
whitesmoke: "#f5f5f5",
yellow: "#ffff00",
yellowgreen: "#9acd32"
};
function inputToRGB$1(color2) {
var rgb = { r: 0, g: 0, b: 0 };
var a = 1;
var s = null;
var v4 = null;
var l2 = null;
var ok2 = false;
var format2 = false;
if (typeof color2 === "string") {
color2 = stringInputToObject$1(color2);
}
if (typeof color2 === "object") {
if (isValidCSSUnit$1(color2.r) && isValidCSSUnit$1(color2.g) && isValidCSSUnit$1(color2.b)) {
rgb = rgbToRgb$1(color2.r, color2.g, color2.b);
ok2 = true;
format2 = String(color2.r).substr(-1) === "%" ? "prgb" : "rgb";
} else if (isValidCSSUnit$1(color2.h) && isValidCSSUnit$1(color2.s) && isValidCSSUnit$1(color2.v)) {
s = convertToPercentage$1(color2.s);
v4 = convertToPercentage$1(color2.v);
rgb = hsvToRgb$1(color2.h, s, v4);
ok2 = true;
format2 = "hsv";
} else if (isValidCSSUnit$1(color2.h) && isValidCSSUnit$1(color2.s) && isValidCSSUnit$1(color2.l)) {
s = convertToPercentage$1(color2.s);
l2 = convertToPercentage$1(color2.l);
rgb = hslToRgb$1(color2.h, s, l2);
ok2 = true;
format2 = "hsl";
}
if (Object.prototype.hasOwnProperty.call(color2, "a")) {
a = color2.a;
}
}
a = boundAlpha$1(a);
return {
ok: ok2,
format: color2.format || format2,
r: Math.min(255, Math.max(rgb.r, 0)),
g: Math.min(255, Math.max(rgb.g, 0)),
b: Math.min(255, Math.max(rgb.b, 0)),
a
};
}
var CSS_INTEGER = "[-\\+]?\\d+%?";
var CSS_NUMBER = "[-\\+]?\\d*\\.\\d+%?";
var CSS_UNIT = "(?:".concat(CSS_NUMBER, ")|(?:").concat(CSS_INTEGER, ")");
var PERMISSIVE_MATCH3 = "[\\s|\\(]+(".concat(CSS_UNIT, ")[,|\\s]+(").concat(CSS_UNIT, ")[,|\\s]+(").concat(CSS_UNIT, ")\\s*\\)?");
var PERMISSIVE_MATCH4 = "[\\s|\\(]+(".concat(CSS_UNIT, ")[,|\\s]+(").concat(CSS_UNIT, ")[,|\\s]+(").concat(CSS_UNIT, ")[,|\\s]+(").concat(CSS_UNIT, ")\\s*\\)?");
var matchers$1 = {
CSS_UNIT: new RegExp(CSS_UNIT),
rgb: new RegExp("rgb" + PERMISSIVE_MATCH3),
rgba: new RegExp("rgba" + PERMISSIVE_MATCH4),
hsl: new RegExp("hsl" + PERMISSIVE_MATCH3),
hsla: new RegExp("hsla" + PERMISSIVE_MATCH4),
hsv: new RegExp("hsv" + PERMISSIVE_MATCH3),
hsva: new RegExp("hsva" + PERMISSIVE_MATCH4),
hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,
hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,
hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,
hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/
};
function stringInputToObject$1(color2) {
color2 = color2.trim().toLowerCase();
if (color2.length === 0) {
return false;
}
var named = false;
if (names$1[color2]) {
color2 = names$1[color2];
named = true;
} else if (color2 === "transparent") {
return { r: 0, g: 0, b: 0, a: 0, format: "name" };
}
var match2 = matchers$1.rgb.exec(color2);
if (match2) {
return { r: match2[1], g: match2[2], b: match2[3] };
}
match2 = matchers$1.rgba.exec(color2);
if (match2) {
return { r: match2[1], g: match2[2], b: match2[3], a: match2[4] };
}
match2 = matchers$1.hsl.exec(color2);
if (match2) {
return { h: match2[1], s: match2[2], l: match2[3] };
}
match2 = matchers$1.hsla.exec(color2);
if (match2) {
return { h: match2[1], s: match2[2], l: match2[3], a: match2[4] };
}
match2 = matchers$1.hsv.exec(color2);
if (match2) {
return { h: match2[1], s: match2[2], v: match2[3] };
}
match2 = matchers$1.hsva.exec(color2);
if (match2) {
return { h: match2[1], s: match2[2], v: match2[3], a: match2[4] };
}
match2 = matchers$1.hex8.exec(color2);
if (match2) {
return {
r: parseIntFromHex$1(match2[1]),
g: parseIntFromHex$1(match2[2]),
b: parseIntFromHex$1(match2[3]),
a: convertHexToDecimal$1(match2[4]),
format: named ? "name" : "hex8"
};
}
match2 = matchers$1.hex6.exec(color2);
if (match2) {
return {
r: parseIntFromHex$1(match2[1]),
g: parseIntFromHex$1(match2[2]),
b: parseIntFromHex$1(match2[3]),
format: named ? "name" : "hex"
};
}
match2 = matchers$1.hex4.exec(color2);
if (match2) {
return {
r: parseIntFromHex$1(match2[1] + match2[1]),
g: parseIntFromHex$1(match2[2] + match2[2]),
b: parseIntFromHex$1(match2[3] + match2[3]),
a: convertHexToDecimal$1(match2[4] + match2[4]),
format: named ? "name" : "hex8"
};
}
match2 = matchers$1.hex3.exec(color2);
if (match2) {
return {
r: parseIntFromHex$1(match2[1] + match2[1]),
g: parseIntFromHex$1(match2[2] + match2[2]),
b: parseIntFromHex$1(match2[3] + match2[3]),
format: named ? "name" : "hex"
};
}
return false;
}
function isValidCSSUnit$1(color2) {
return Boolean(matchers$1.CSS_UNIT.exec(String(color2)));
}
var TinyColor = (
/** @class */
function() {
function TinyColor2(color2, opts) {
if (color2 === void 0) {
color2 = "";
}
if (opts === void 0) {
opts = {};
}
var _a2;
if (color2 instanceof TinyColor2) {
return color2;
}
if (typeof color2 === "number") {
color2 = numberInputToObject(color2);
}
this.originalInput = color2;
var rgb = inputToRGB$1(color2);
this.originalInput = color2;
this.r = rgb.r;
this.g = rgb.g;
this.b = rgb.b;
this.a = rgb.a;
this.roundA = Math.round(100 * this.a) / 100;
this.format = (_a2 = opts.format) !== null && _a2 !== void 0 ? _a2 : rgb.format;
this.gradientType = opts.gradientType;
if (this.r < 1) {
this.r = Math.round(this.r);
}
if (this.g < 1) {
this.g = Math.round(this.g);
}
if (this.b < 1) {
this.b = Math.round(this.b);
}
this.isValid = rgb.ok;
}
TinyColor2.prototype.isDark = function() {
return this.getBrightness() < 128;
};
TinyColor2.prototype.isLight = function() {
return !this.isDark();
};
TinyColor2.prototype.getBrightness = function() {
var rgb = this.toRgb();
return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1e3;
};
TinyColor2.prototype.getLuminance = function() {
var rgb = this.toRgb();
var R2;
var G2;
var B2;
var RsRGB = rgb.r / 255;
var GsRGB = rgb.g / 255;
var BsRGB = rgb.b / 255;
if (RsRGB <= 0.03928) {
R2 = RsRGB / 12.92;
} else {
R2 = Math.pow((RsRGB + 0.055) / 1.055, 2.4);
}
if (GsRGB <= 0.03928) {
G2 = GsRGB / 12.92;
} else {
G2 = Math.pow((GsRGB + 0.055) / 1.055, 2.4);
}
if (BsRGB <= 0.03928) {
B2 = BsRGB / 12.92;
} else {
B2 = Math.pow((BsRGB + 0.055) / 1.055, 2.4);
}
return 0.2126 * R2 + 0.7152 * G2 + 0.0722 * B2;
};
TinyColor2.prototype.getAlpha = function() {
return this.a;
};
TinyColor2.prototype.setAlpha = function(alpha) {
this.a = boundAlpha$1(alpha);
this.roundA = Math.round(100 * this.a) / 100;
return this;
};
TinyColor2.prototype.isMonochrome = function() {
var s = this.toHsl().s;
return s === 0;
};
TinyColor2.prototype.toHsv = function() {
var hsv = rgbToHsv$1(this.r, this.g, this.b);
return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this.a };
};
TinyColor2.prototype.toHsvString = function() {
var hsv = rgbToHsv$1(this.r, this.g, this.b);
var h2 = Math.round(hsv.h * 360);
var s = Math.round(hsv.s * 100);
var v4 = Math.round(hsv.v * 100);
return this.a === 1 ? "hsv(".concat(h2, ", ").concat(s, "%, ").concat(v4, "%)") : "hsva(".concat(h2, ", ").concat(s, "%, ").concat(v4, "%, ").concat(this.roundA, ")");
};
TinyColor2.prototype.toHsl = function() {
var hsl = rgbToHsl$1(this.r, this.g, this.b);
return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this.a };
};
TinyColor2.prototype.toHslString = function() {
var hsl = rgbToHsl$1(this.r, this.g, this.b);
var h2 = Math.round(hsl.h * 360);
var s = Math.round(hsl.s * 100);
var l2 = Math.round(hsl.l * 100);
return this.a === 1 ? "hsl(".concat(h2, ", ").concat(s, "%, ").concat(l2, "%)") : "hsla(".concat(h2, ", ").concat(s, "%, ").concat(l2, "%, ").concat(this.roundA, ")");
};
TinyColor2.prototype.toHex = function(allow3Char) {
if (allow3Char === void 0) {
allow3Char = false;
}
return rgbToHex$1(this.r, this.g, this.b, allow3Char);
};
TinyColor2.prototype.toHexString = function(allow3Char) {
if (allow3Char === void 0) {
allow3Char = false;
}
return "#" + this.toHex(allow3Char);
};
TinyColor2.prototype.toHex8 = function(allow4Char) {
if (allow4Char === void 0) {
allow4Char = false;
}
return rgbaToHex$1(this.r, this.g, this.b, this.a, allow4Char);
};
TinyColor2.prototype.toHex8String = function(allow4Char) {
if (allow4Char === void 0) {
allow4Char = false;
}
return "#" + this.toHex8(allow4Char);
};
TinyColor2.prototype.toHexShortString = function(allowShortChar) {
if (allowShortChar === void 0) {
allowShortChar = false;
}
return this.a === 1 ? this.toHexString(allowShortChar) : this.toHex8String(allowShortChar);
};
TinyColor2.prototype.toRgb = function() {
return {
r: Math.round(this.r),
g: Math.round(this.g),
b: Math.round(this.b),
a: this.a
};
};
TinyColor2.prototype.toRgbString = function() {
var r2 = Math.round(this.r);
var g2 = Math.round(this.g);
var b2 = Math.round(this.b);
return this.a === 1 ? "rgb(".concat(r2, ", ").concat(g2, ", ").concat(b2, ")") : "rgba(".concat(r2, ", ").concat(g2, ", ").concat(b2, ", ").concat(this.roundA, ")");
};
TinyColor2.prototype.toPercentageRgb = function() {
var fmt = function(x2) {
return "".concat(Math.round(bound01$1(x2, 255) * 100), "%");
};
return {
r: fmt(this.r),
g: fmt(this.g),
b: fmt(this.b),
a: this.a
};
};
TinyColor2.prototype.toPercentageRgbString = function() {
var rnd = function(x2) {
return Math.round(bound01$1(x2, 255) * 100);
};
return this.a === 1 ? "rgb(".concat(rnd(this.r), "%, ").concat(rnd(this.g), "%, ").concat(rnd(this.b), "%)") : "rgba(".concat(rnd(this.r), "%, ").concat(rnd(this.g), "%, ").concat(rnd(this.b), "%, ").concat(this.roundA, ")");
};
TinyColor2.prototype.toName = function() {
if (this.a === 0) {
return "transparent";
}
if (this.a < 1) {
return false;
}
var hex2 = "#" + rgbToHex$1(this.r, this.g, this.b, false);
for (var _i = 0, _a2 = Object.entries(names$1); _i < _a2.length; _i++) {
var _b2 = _a2[_i], key = _b2[0], value = _b2[1];
if (hex2 === value) {
return key;
}
}
return false;
};
TinyColor2.prototype.toString = function(format2) {
var formatSet = Boolean(format2);
format2 = format2 !== null && format2 !== void 0 ? format2 : this.format;
var formattedString = false;
var hasAlpha = this.a < 1 && this.a >= 0;
var needsAlphaFormat = !formatSet && hasAlpha && (format2.startsWith("hex") || format2 === "name");
if (needsAlphaFormat) {
if (format2 === "name" && this.a === 0) {
return this.toName();
}
return this.toRgbString();
}
if (format2 === "rgb") {
formattedString = this.toRgbString();
}
if (format2 === "prgb") {
formattedString = this.toPercentageRgbString();
}
if (format2 === "hex" || format2 === "hex6") {
formattedString = this.toHexString();
}
if (format2 === "hex3") {
formattedString = this.toHexString(true);
}
if (format2 === "hex4") {
formattedString = this.toHex8String(true);
}
if (format2 === "hex8") {
formattedString = this.toHex8String();
}
if (format2 === "name") {
formattedString = this.toName();
}
if (format2 === "hsl") {
formattedString = this.toHslString();
}
if (format2 === "hsv") {
formattedString = this.toHsvString();
}
return formattedString || this.toHexString();
};
TinyColor2.prototype.toNumber = function() {
return (Math.round(this.r) << 16) + (Math.round(this.g) << 8) + Math.round(this.b);
};
TinyColor2.prototype.clone = function() {
return new TinyColor2(this.toString());
};
TinyColor2.prototype.lighten = function(amount) {
if (amount === void 0) {
amount = 10;
}
var hsl = this.toHsl();
hsl.l += amount / 100;
hsl.l = clamp01$1(hsl.l);
return new TinyColor2(hsl);
};
TinyColor2.prototype.brighten = function(amount) {
if (amount === void 0) {
amount = 10;
}
var rgb = this.toRgb();
rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100))));
rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100))));
rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100))));
return new TinyColor2(rgb);
};
TinyColor2.prototype.darken = function(amount) {
if (amount === void 0) {
amount = 10;
}
var hsl = this.toHsl();
hsl.l -= amount / 100;
hsl.l = clamp01$1(hsl.l);
return new TinyColor2(hsl);
};
TinyColor2.prototype.tint = function(amount) {
if (amount === void 0) {
amount = 10;
}
return this.mix("white", amount);
};
TinyColor2.prototype.shade = function(amount) {
if (amount === void 0) {
amount = 10;
}
return this.mix("black", amount);
};
TinyColor2.prototype.desaturate = function(amount) {
if (amount === void 0) {
amount = 10;
}
var hsl = this.toHsl();
hsl.s -= amount / 100;
hsl.s = clamp01$1(hsl.s);
return new TinyColor2(hsl);
};
TinyColor2.prototype.saturate = function(amount) {
if (amount === void 0) {
amount = 10;
}
var hsl = this.toHsl();
hsl.s += amount / 100;
hsl.s = clamp01$1(hsl.s);
return new TinyColor2(hsl);
};
TinyColor2.prototype.greyscale = function() {
return this.desaturate(100);
};
TinyColor2.prototype.spin = function(amount) {
var hsl = this.toHsl();
var hue = (hsl.h + amount) % 360;
hsl.h = hue < 0 ? 360 + hue : hue;
return new TinyColor2(hsl);
};
TinyColor2.prototype.mix = function(color2, amount) {
if (amount === void 0) {
amount = 50;
}
var rgb1 = this.toRgb();
var rgb2 = new TinyColor2(color2).toRgb();
var p2 = amount / 100;
var rgba = {
r: (rgb2.r - rgb1.r) * p2 + rgb1.r,
g: (rgb2.g - rgb1.g) * p2 + rgb1.g,
b: (rgb2.b - rgb1.b) * p2 + rgb1.b,
a: (rgb2.a - rgb1.a) * p2 + rgb1.a
};
return new TinyColor2(rgba);
};
TinyColor2.prototype.analogous = function(results, slices) {
if (results === void 0) {
results = 6;
}
if (slices === void 0) {
slices = 30;
}
var hsl = this.toHsl();
var part = 360 / slices;
var ret = [this];
for (hsl.h = (hsl.h - (part * results >> 1) + 720) % 360; --results; ) {
hsl.h = (hsl.h + part) % 360;
ret.push(new TinyColor2(hsl));
}
return ret;
};
TinyColor2.prototype.complement = function() {
var hsl = this.toHsl();
hsl.h = (hsl.h + 180) % 360;
return new TinyColor2(hsl);
};
TinyColor2.prototype.monochromatic = function(results) {
if (results === void 0) {
results = 6;
}
var hsv = this.toHsv();
var h2 = hsv.h;
var s = hsv.s;
var v4 = hsv.v;
var res = [];
var modification = 1 / results;
while (results--) {
res.push(new TinyColor2({ h: h2, s, v: v4 }));
v4 = (v4 + modification) % 1;
}
return res;
};
TinyColor2.prototype.splitcomplement = function() {
var hsl = this.toHsl();
var h2 = hsl.h;
return [
this,
new TinyColor2({ h: (h2 + 72) % 360, s: hsl.s, l: hsl.l }),
new TinyColor2({ h: (h2 + 216) % 360, s: hsl.s, l: hsl.l })
];
};
TinyColor2.prototype.onBackground = function(background) {
var fg2 = this.toRgb();
var bg2 = new TinyColor2(background).toRgb();
var alpha = fg2.a + bg2.a * (1 - fg2.a);
return new TinyColor2({
r: (fg2.r * fg2.a + bg2.r * bg2.a * (1 - fg2.a)) / alpha,
g: (fg2.g * fg2.a + bg2.g * bg2.a * (1 - fg2.a)) / alpha,
b: (fg2.b * fg2.a + bg2.b * bg2.a * (1 - fg2.a)) / alpha,
a: alpha
});
};
TinyColor2.prototype.triad = function() {
return this.polyad(3);
};
TinyColor2.prototype.tetrad = function() {
return this.polyad(4);
};
TinyColor2.prototype.polyad = function(n2) {
var hsl = this.toHsl();
var h2 = hsl.h;
var result = [this];
var increment = 360 / n2;
for (var i = 1; i < n2; i++) {
result.push(new TinyColor2({ h: (h2 + i * increment) % 360, s: hsl.s, l: hsl.l }));
}
return result;
};
TinyColor2.prototype.equals = function(color2) {
return this.toRgbString() === new TinyColor2(color2).toRgbString();
};
return TinyColor2;
}()
);
var hueStep = 2;
var saturationStep = 0.16;
var saturationStep2 = 0.05;
var brightnessStep1 = 0.05;
var brightnessStep2 = 0.15;
var lightColorCount = 5;
var darkColorCount = 4;
var darkColorMap = [{
index: 7,
opacity: 0.15
}, {
index: 6,
opacity: 0.25
}, {
index: 5,
opacity: 0.3
}, {
index: 5,
opacity: 0.45
}, {
index: 5,
opacity: 0.65
}, {
index: 5,
opacity: 0.85
}, {
index: 4,
opacity: 0.9
}, {
index: 3,
opacity: 0.95
}, {
index: 2,
opacity: 0.97
}, {
index: 1,
opacity: 0.98
}];
function toHsv(_ref) {
var r2 = _ref.r, g2 = _ref.g, b2 = _ref.b;
var hsv = rgbToHsv$1(r2, g2, b2);
return {
h: hsv.h * 360,
s: hsv.s,
v: hsv.v
};
}
function toHex$1(_ref2) {
var r2 = _ref2.r, g2 = _ref2.g, b2 = _ref2.b;
return "#".concat(rgbToHex$1(r2, g2, b2, false));
}
function mix(rgb1, rgb2, amount) {
var p2 = amount / 100;
var rgb = {
r: (rgb2.r - rgb1.r) * p2 + rgb1.r,
g: (rgb2.g - rgb1.g) * p2 + rgb1.g,
b: (rgb2.b - rgb1.b) * p2 + rgb1.b
};
return rgb;
}
function getHue(hsv, i, light) {
var hue;
if (Math.round(hsv.h) >= 60 && Math.round(hsv.h) <= 240) {
hue = light ? Math.round(hsv.h) - hueStep * i : Math.round(hsv.h) + hueStep * i;
} else {
hue = light ? Math.round(hsv.h) + hueStep * i : Math.round(hsv.h) - hueStep * i;
}
if (hue < 0) {
hue += 360;
} else if (hue >= 360) {
hue -= 360;
}
return hue;
}
function getSaturation(hsv, i, light) {
if (hsv.h === 0 && hsv.s === 0) {
return hsv.s;
}
var saturation;
if (light) {
saturation = hsv.s - saturationStep * i;
} else if (i === darkColorCount) {
saturation = hsv.s + saturationStep;
} else {
saturation = hsv.s + saturationStep2 * i;
}
if (saturation > 1) {
saturation = 1;
}
if (light && i === lightColorCount && saturation > 0.1) {
saturation = 0.1;
}
if (saturation < 0.06) {
saturation = 0.06;
}
return Number(saturation.toFixed(2));
}
function getValue$1(hsv, i, light) {
var value;
if (light) {
value = hsv.v + brightnessStep1 * i;
} else {
value = hsv.v - brightnessStep2 * i;
}
if (value > 1) {
value = 1;
}
return Number(value.toFixed(2));
}
function generate$1(color2) {
var opts = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
var patterns = [];
var pColor = inputToRGB$1(color2);
for (var i = lightColorCount; i > 0; i -= 1) {
var hsv = toHsv(pColor);
var colorString = toHex$1(inputToRGB$1({
h: getHue(hsv, i, true),
s: getSaturation(hsv, i, true),
v: getValue$1(hsv, i, true)
}));
patterns.push(colorString);
}
patterns.push(toHex$1(pColor));
for (var _i = 1; _i <= darkColorCount; _i += 1) {
var _hsv = toHsv(pColor);
var _colorString = toHex$1(inputToRGB$1({
h: getHue(_hsv, _i),
s: getSaturation(_hsv, _i),
v: getValue$1(_hsv, _i)
}));
patterns.push(_colorString);
}
if (opts.theme === "dark") {
return darkColorMap.map(function(_ref3) {
var index2 = _ref3.index, opacity = _ref3.opacity;
var darkColorString = toHex$1(mix(inputToRGB$1(opts.backgroundColor || "#141414"), inputToRGB$1(patterns[index2]), opacity * 100));
return darkColorString;
});
}
return patterns;
}
var presetPrimaryColors = {
"red": "#F5222D",
"volcano": "#FA541C",
"orange": "#FA8C16",
"gold": "#FAAD14",
"yellow": "#FADB14",
"lime": "#A0D911",
"green": "#52C41A",
"cyan": "#13C2C2",
"blue": "#1677FF",
"geekblue": "#2F54EB",
"purple": "#722ED1",
"magenta": "#EB2F96",
"grey": "#666666"
};
var red = ["#fff1f0", "#ffccc7", "#ffa39e", "#ff7875", "#ff4d4f", "#f5222d", "#cf1322", "#a8071a", "#820014", "#5c0011"];
red.primary = red[5];
var volcano = ["#fff2e8", "#ffd8bf", "#ffbb96", "#ff9c6e", "#ff7a45", "#fa541c", "#d4380d", "#ad2102", "#871400", "#610b00"];
volcano.primary = volcano[5];
var orange = ["#fff7e6", "#ffe7ba", "#ffd591", "#ffc069", "#ffa940", "#fa8c16", "#d46b08", "#ad4e00", "#873800", "#612500"];
orange.primary = orange[5];
var gold = ["#fffbe6", "#fff1b8", "#ffe58f", "#ffd666", "#ffc53d", "#faad14", "#d48806", "#ad6800", "#874d00", "#613400"];
gold.primary = gold[5];
var yellow = ["#feffe6", "#ffffb8", "#fffb8f", "#fff566", "#ffec3d", "#fadb14", "#d4b106", "#ad8b00", "#876800", "#614700"];
yellow.primary = yellow[5];
var lime = ["#fcffe6", "#f4ffb8", "#eaff8f", "#d3f261", "#bae637", "#a0d911", "#7cb305", "#5b8c00", "#3f6600", "#254000"];
lime.primary = lime[5];
var green = ["#f6ffed", "#d9f7be", "#b7eb8f", "#95de64", "#73d13d", "#52c41a", "#389e0d", "#237804", "#135200", "#092b00"];
green.primary = green[5];
var cyan = ["#e6fffb", "#b5f5ec", "#87e8de", "#5cdbd3", "#36cfc9", "#13c2c2", "#08979c", "#006d75", "#00474f", "#002329"];
cyan.primary = cyan[5];
var blue = ["#e6f4ff", "#bae0ff", "#91caff", "#69b1ff", "#4096ff", "#1677ff", "#0958d9", "#003eb3", "#002c8c", "#001d66"];
blue.primary = blue[5];
var geekblue = ["#f0f5ff", "#d6e4ff", "#adc6ff", "#85a5ff", "#597ef7", "#2f54eb", "#1d39c4", "#10239e", "#061178", "#030852"];
geekblue.primary = geekblue[5];
var purple = ["#f9f0ff", "#efdbff", "#d3adf7", "#b37feb", "#9254de", "#722ed1", "#531dab", "#391085", "#22075e", "#120338"];
purple.primary = purple[5];
var magenta = ["#fff0f6", "#ffd6e7", "#ffadd2", "#ff85c0", "#f759ab", "#eb2f96", "#c41d7f", "#9e1068", "#780650", "#520339"];
magenta.primary = magenta[5];
var grey = ["#a6a6a6", "#999999", "#8c8c8c", "#808080", "#737373", "#666666", "#404040", "#1a1a1a", "#000000", "#000000"];
grey.primary = grey[5];
var presetPalettes = {
red,
volcano,
orange,
gold,
yellow,
lime,
green,
cyan,
blue,
geekblue,
purple,
magenta,
grey
};
function ownKeys(e2, r2) {
var t2 = Object.keys(e2);
if (Object.getOwnPropertySymbols) {
var o = Object.getOwnPropertySymbols(e2);
r2 && (o = o.filter(function(r3) {
return Object.getOwnPropertyDescriptor(e2, r3).enumerable;
})), t2.push.apply(t2, o);
}
return t2;
}
function _objectSpread2$1(e2) {
for (var r2 = 1; r2 < arguments.length; r2++) {
var t2 = null != arguments[r2] ? arguments[r2] : {};
r2 % 2 ? ownKeys(Object(t2), true).forEach(function(r3) {
_defineProperty(e2, r3, t2[r3]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e2, Object.getOwnPropertyDescriptors(t2)) : ownKeys(Object(t2)).forEach(function(r3) {
Object.defineProperty(e2, r3, Object.getOwnPropertyDescriptor(t2, r3));
});
}
return e2;
}
function canUseDom() {
return !!(typeof window !== "undefined" && window.document && window.document.createElement);
}
function contains(root, n2) {
if (!root) {
return false;
}
if (root.contains) {
return root.contains(n2);
}
var node2 = n2;
while (node2) {
if (node2 === root) {
return true;
}
node2 = node2.parentNode;
}
return false;
}
var APPEND_ORDER = "data-rc-order";
var APPEND_PRIORITY = "data-rc-priority";
var MARK_KEY = "rc-util-key";
var containerCache = /* @__PURE__ */ new Map();
function getMark() {
var _ref = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, mark = _ref.mark;
if (mark) {
return mark.startsWith("data-") ? mark : "data-".concat(mark);
}
return MARK_KEY;
}
function getContainer(option) {
if (option.attachTo) {
return option.attachTo;
}
var head = document.querySelector("head");
return head || document.body;
}
function getOrder(prepend) {
if (prepend === "queue") {
return "prependQueue";
}
return prepend ? "prepend" : "append";
}
function findStyles(container) {
return Array.from((containerCache.get(container) || container).children).filter(function(node2) {
return node2.tagName === "STYLE";
});
}
function injectCSS(css) {
var option = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
if (!canUseDom()) {
return null;
}
var csp = option.csp, prepend = option.prepend, _option$priority = option.priority, priority = _option$priority === void 0 ? 0 : _option$priority;
var mergedOrder = getOrder(prepend);
var isPrependQueue = mergedOrder === "prependQueue";
var styleNode = document.createElement("style");
styleNode.setAttribute(APPEND_ORDER, mergedOrder);
if (isPrependQueue && priority) {
styleNode.setAttribute(APPEND_PRIORITY, "".concat(priority));
}
if (csp !== null && csp !== void 0 && csp.nonce) {
styleNode.nonce = csp === null || csp === void 0 ? void 0 : csp.nonce;
}
styleNode.innerHTML = css;
var container = getContainer(option);
var firstChild = container.firstChild;
if (prepend) {
if (isPrependQueue) {
var existStyle = (option.styles || findStyles(container)).filter(function(node2) {
if (!["prepend", "prependQueue"].includes(node2.getAttribute(APPEND_ORDER))) {
return false;
}
var nodePriority = Number(node2.getAttribute(APPEND_PRIORITY) || 0);
return priority >= nodePriority;
});
if (existStyle.length) {
container.insertBefore(styleNode, existStyle[existStyle.length - 1].nextSibling);
return styleNode;
}
}
container.insertBefore(styleNode, firstChild);
} else {
container.appendChild(styleNode);
}
return styleNode;
}
function findExistNode(key) {
var option = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
var container = getContainer(option);
return (option.styles || findStyles(container)).find(function(node2) {
return node2.getAttribute(getMark(option)) === key;
});
}
function removeCSS(key) {
var option = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
var existNode = findExistNode(key, option);
if (existNode) {
var container = getContainer(option);
container.removeChild(existNode);
}
}
function syncRealContainer(container, option) {
var cachedRealContainer = containerCache.get(container);
if (!cachedRealContainer || !contains(document, cachedRealContainer)) {
var placeholderStyle = injectCSS("", option);
var parentNode2 = placeholderStyle.parentNode;
containerCache.set(container, parentNode2);
container.removeChild(placeholderStyle);
}
}
function updateCSS(css, key) {
var originOption = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
var container = getContainer(originOption);
var styles2 = findStyles(container);
var option = _objectSpread2$1(_objectSpread2$1({}, originOption), {}, {
styles: styles2
});
syncRealContainer(container, option);
var existNode = findExistNode(key, option);
if (existNode) {
var _option$csp, _option$csp2;
if ((_option$csp = option.csp) !== null && _option$csp !== void 0 && _option$csp.nonce && existNode.nonce !== ((_option$csp2 = option.csp) === null || _option$csp2 === void 0 ? void 0 : _option$csp2.nonce)) {
var _option$csp3;
existNode.nonce = (_option$csp3 = option.csp) === null || _option$csp3 === void 0 ? void 0 : _option$csp3.nonce;
}
if (existNode.innerHTML !== css) {
existNode.innerHTML = css;
}
return existNode;
}
var newNode = injectCSS(css, option);
newNode.setAttribute(getMark(option), key);
return newNode;
}
function getRoot(ele) {
var _ele$getRootNode;
return ele === null || ele === void 0 || (_ele$getRootNode = ele.getRootNode) === null || _ele$getRootNode === void 0 ? void 0 : _ele$getRootNode.call(ele);
}
function inShadow(ele) {
return getRoot(ele) instanceof ShadowRoot;
}
function getShadowRoot(ele) {
return inShadow(ele) ? getRoot(ele) : null;
}
var warned = {};
var preMessage = function preMessage2(fn) {
};
function warning$2(valid, message2) {
}
function note(valid, message2) {
}
function resetWarned() {
warned = {};
}
function call(method4, valid, message2) {
if (!valid && !warned[message2]) {
method4(false, message2);
warned[message2] = true;
}
}
function warningOnce(valid, message2) {
call(warning$2, valid, message2);
}
function noteOnce(valid, message2) {
call(note, valid, message2);
}
warningOnce.preMessage = preMessage;
warningOnce.resetWarned = resetWarned;
warningOnce.noteOnce = noteOnce;
function camelCase(input) {
return input.replace(/-(.)/g, function(match2, g2) {
return g2.toUpperCase();
});
}
function warning$1(valid, message2) {
warningOnce(valid, "[@ant-design/icons] ".concat(message2));
}
function isIconDefinition(target) {
return _typeof$2(target) === "object" && typeof target.name === "string" && typeof target.theme === "string" && (_typeof$2(target.icon) === "object" || typeof target.icon === "function");
}
function normalizeAttrs() {
var attrs = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
return Object.keys(attrs).reduce(function(acc, key) {
var val = attrs[key];
switch (key) {
case "class":
acc.className = val;
delete acc.class;
break;
default:
delete acc[key];
acc[camelCase(key)] = val;
}
return acc;
}, {});
}
function generate(node2, key, rootProps) {
if (!rootProps) {
return /* @__PURE__ */ React.createElement(node2.tag, _objectSpread2$1({
key
}, normalizeAttrs(node2.attrs)), (node2.children || []).map(function(child, index2) {
return generate(child, "".concat(key, "-").concat(node2.tag, "-").concat(index2));
}));
}
return /* @__PURE__ */ React.createElement(node2.tag, _objectSpread2$1(_objectSpread2$1({
key
}, normalizeAttrs(node2.attrs)), rootProps), (node2.children || []).map(function(child, index2) {
return generate(child, "".concat(key, "-").concat(node2.tag, "-").concat(index2));
}));
}
function getSecondaryColor(primaryColor) {
return generate$1(primaryColor)[0];
}
function normalizeTwoToneColors(twoToneColor) {
if (!twoToneColor) {
return [];
}
return Array.isArray(twoToneColor) ? twoToneColor : [twoToneColor];
}
var svgBaseProps = {
width: "1em",
height: "1em",
fill: "currentColor",
"aria-hidden": "true",
focusable: "false"
};
var iconStyles = "\n.anticon {\n display: inline-flex;\n align-items: center;\n color: inherit;\n font-style: normal;\n line-height: 0;\n text-align: center;\n text-transform: none;\n vertical-align: -0.125em;\n text-rendering: optimizeLegibility;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.anticon > * {\n line-height: 1;\n}\n\n.anticon svg {\n display: inline-block;\n}\n\n.anticon::before {\n display: none;\n}\n\n.anticon .anticon-icon {\n display: block;\n}\n\n.anticon[tabindex] {\n cursor: pointer;\n}\n\n.anticon-spin::before,\n.anticon-spin {\n display: inline-block;\n -webkit-animation: loadingCircle 1s infinite linear;\n animation: loadingCircle 1s infinite linear;\n}\n\n@-webkit-keyframes loadingCircle {\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@keyframes loadingCircle {\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n";
var useInsertStyles = function useInsertStyles2(eleRef) {
var _useContext = reactExports.useContext(IconContext), csp = _useContext.csp, prefixCls = _useContext.prefixCls;
var mergedStyleStr = iconStyles;
if (prefixCls) {
mergedStyleStr = mergedStyleStr.replace(/anticon/g, prefixCls);
}
reactExports.useEffect(function() {
var ele = eleRef.current;
var shadowRoot = getShadowRoot(ele);
updateCSS(mergedStyleStr, "@ant-design-icons", {
prepend: true,
csp,
attachTo: shadowRoot
});
}, []);
};
var _excluded$M = ["icon", "className", "onClick", "style", "primaryColor", "secondaryColor"];
var twoToneColorPalette = {
primaryColor: "#333",
secondaryColor: "#E6E6E6",
calculated: false
};
function setTwoToneColors(_ref) {
var primaryColor = _ref.primaryColor, secondaryColor = _ref.secondaryColor;
twoToneColorPalette.primaryColor = primaryColor;
twoToneColorPalette.secondaryColor = secondaryColor || getSecondaryColor(primaryColor);
twoToneColorPalette.calculated = !!secondaryColor;
}
function getTwoToneColors() {
return _objectSpread2$1({}, twoToneColorPalette);
}
var IconBase = function IconBase2(props) {
var icon = props.icon, className = props.className, onClick = props.onClick, style2 = props.style, primaryColor = props.primaryColor, secondaryColor = props.secondaryColor, restProps = _objectWithoutProperties(props, _excluded$M);
var svgRef = reactExports.useRef();
var colors = twoToneColorPalette;
if (primaryColor) {
colors = {
primaryColor,
secondaryColor: secondaryColor || getSecondaryColor(primaryColor)
};
}
useInsertStyles(svgRef);
warning$1(isIconDefinition(icon), "icon should be icon definiton, but got ".concat(icon));
if (!isIconDefinition(icon)) {
return null;
}
var target = icon;
if (target && typeof target.icon === "function") {
target = _objectSpread2$1(_objectSpread2$1({}, target), {}, {
icon: target.icon(colors.primaryColor, colors.secondaryColor)
});
}
return generate(target.icon, "svg-".concat(target.name), _objectSpread2$1(_objectSpread2$1({
className,
onClick,
style: style2,
"data-icon": target.name,
width: "1em",
height: "1em",
fill: "currentColor",
"aria-hidden": "true"
}, restProps), {}, {
ref: svgRef
}));
};
IconBase.displayName = "IconReact";
IconBase.getTwoToneColors = getTwoToneColors;
IconBase.setTwoToneColors = setTwoToneColors;
function setTwoToneColor(twoToneColor) {
var _normalizeTwoToneColo = normalizeTwoToneColors(twoToneColor), _normalizeTwoToneColo2 = _slicedToArray(_normalizeTwoToneColo, 2), primaryColor = _normalizeTwoToneColo2[0], secondaryColor = _normalizeTwoToneColo2[1];
return IconBase.setTwoToneColors({
primaryColor,
secondaryColor
});
}
function getTwoToneColor() {
var colors = IconBase.getTwoToneColors();
if (!colors.calculated) {
return colors.primaryColor;
}
return [colors.primaryColor, colors.secondaryColor];
}
var _excluded$L = ["className", "icon", "spin", "rotate", "tabIndex", "onClick", "twoToneColor"];
setTwoToneColor(blue.primary);
var Icon$2 = /* @__PURE__ */ reactExports.forwardRef(function(props, ref) {
var className = props.className, icon = props.icon, spin2 = props.spin, rotate2 = props.rotate, tabIndex = props.tabIndex, onClick = props.onClick, twoToneColor = props.twoToneColor, restProps = _objectWithoutProperties(props, _excluded$L);
var _React$useContext = reactExports.useContext(IconContext), _React$useContext$pre = _React$useContext.prefixCls, prefixCls = _React$useContext$pre === void 0 ? "anticon" : _React$useContext$pre, rootClassName = _React$useContext.rootClassName;
var classString = cls(rootClassName, prefixCls, _defineProperty(_defineProperty({}, "".concat(prefixCls, "-").concat(icon.name), !!icon.name), "".concat(prefixCls, "-spin"), !!spin2 || icon.name === "loading"), className);
var iconTabIndex = tabIndex;
if (iconTabIndex === void 0 && onClick) {
iconTabIndex = -1;
}
var svgStyle = rotate2 ? {
msTransform: "rotate(".concat(rotate2, "deg)"),
transform: "rotate(".concat(rotate2, "deg)")
} : void 0;
var _normalizeTwoToneColo = normalizeTwoToneColors(twoToneColor), _normalizeTwoToneColo2 = _slicedToArray(_normalizeTwoToneColo, 2), primaryColor = _normalizeTwoToneColo2[0], secondaryColor = _normalizeTwoToneColo2[1];
return /* @__PURE__ */ reactExports.createElement("span", _extends$2({
role: "img",
"aria-label": icon.name
}, restProps, {
ref,
tabIndex: iconTabIndex,
onClick,
className: classString
}), /* @__PURE__ */ reactExports.createElement(IconBase, {
icon,
primaryColor,
secondaryColor,
style: svgStyle
}));
});
Icon$2.displayName = "AntdIcon";
Icon$2.getTwoToneColor = getTwoToneColor;
Icon$2.setTwoToneColor = setTwoToneColor;
var CaretDownFilled$1 = { "icon": { "tag": "svg", "attrs": { "viewBox": "0 0 1024 1024", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z" } }] }, "name": "caret-down", "theme": "filled" };
var CaretDownFilled = function CaretDownFilled2(props, ref) {
return /* @__PURE__ */ reactExports.createElement(Icon$2, _extends$2({}, props, {
ref,
icon: CaretDownFilled$1
}));
};
var RefIcon$q = /* @__PURE__ */ reactExports.forwardRef(CaretDownFilled);
var CaretDownOutlined$1 = { "icon": { "tag": "svg", "attrs": { "viewBox": "0 0 1024 1024", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z" } }] }, "name": "caret-down", "theme": "outlined" };
var CaretDownOutlined = function CaretDownOutlined2(props, ref) {
return /* @__PURE__ */ reactExports.createElement(Icon$2, _extends$2({}, props, {
ref,
icon: CaretDownOutlined$1
}));
};
var RefIcon$p = /* @__PURE__ */ reactExports.forwardRef(CaretDownOutlined);
var CaretUpOutlined$1 = { "icon": { "tag": "svg", "attrs": { "viewBox": "0 0 1024 1024", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M858.9 689L530.5 308.2c-9.4-10.9-27.5-10.9-37 0L165.1 689c-12.2 14.2-1.2 35 18.5 35h656.8c19.7 0 30.7-20.8 18.5-35z" } }] }, "name": "caret-up", "theme": "outlined" };
var CaretUpOutlined = function CaretUpOutlined2(props, ref) {
return /* @__PURE__ */ reactExports.createElement(Icon$2, _extends$2({}, props, {
ref,
icon: CaretUpOutlined$1
}));
};
var RefIcon$o = /* @__PURE__ */ reactExports.forwardRef(CaretUpOutlined);
var CheckCircleFilled$1 = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm193.5 301.7l-210.6 292a31.8 31.8 0 01-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.5 12.7z" } }] }, "name": "check-circle", "theme": "filled" };
var CheckCircleFilled = function CheckCircleFilled2(props, ref) {
return /* @__PURE__ */ reactExports.createElement(Icon$2, _extends$2({}, props, {
ref,
icon: CheckCircleFilled$1
}));
};
var RefIcon$n = /* @__PURE__ */ reactExports.forwardRef(CheckCircleFilled);
var CheckOutlined$1 = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z" } }] }, "name": "check", "theme": "outlined" };
var CheckOutlined = function CheckOutlined2(props, ref) {
return /* @__PURE__ */ reactExports.createElement(Icon$2, _extends$2({}, props, {
ref,
icon: CheckOutlined$1
}));
};
var RefIcon$m = /* @__PURE__ */ reactExports.forwardRef(CheckOutlined);
var CloseCircleFilled$1 = { "icon": { "tag": "svg", "attrs": { "fill-rule": "evenodd", "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M512 64c247.4 0 448 200.6 448 448S759.4 960 512 960 64 759.4 64 512 264.6 64 512 64zm127.98 274.82h-.04l-.08.06L512 466.75 384.14 338.88c-.04-.05-.06-.06-.08-.06a.12.12 0 00-.07 0c-.03 0-.05.01-.09.05l-45.02 45.02a.2.2 0 00-.05.09.12.12 0 000 .07v.02a.27.27 0 00.06.06L466.75 512 338.88 639.86c-.05.04-.06.06-.06.08a.12.12 0 000 .07c0 .03.01.05.05.09l45.02 45.02a.2.2 0 00.09.05.12.12 0 00.07 0c.02 0 .04-.01.08-.05L512 557.25l127.86 127.87c.04.04.06.05.08.05a.12.12 0 00.07 0c.03 0 .05-.01.09-.05l45.02-45.02a.2.2 0 00.05-.09.12.12 0 000-.07v-.02a.27.27 0 00-.05-.06L557.25 512l127.87-127.86c.04-.04.05-.06.05-.08a.12.12 0 000-.07c0-.03-.01-.05-.05-.09l-45.02-45.02a.2.2 0 00-.09-.05.12.12 0 00-.07 0z" } }] }, "name": "close-circle", "theme": "filled" };
var CloseCircleFilled = function CloseCircleFilled2(props, ref) {
return /* @__PURE__ */ reactExports.createElement(Icon$2, _extends$2({}, props, {
ref,
icon: CloseCircleFilled$1
}));
};
var RefIcon$l = /* @__PURE__ */ reactExports.forwardRef(CloseCircleFilled);
var CloseOutlined$1 = { "icon": { "tag": "svg", "attrs": { "fill-rule": "evenodd", "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M799.86 166.31c.02 0 .04.02.08.06l57.69 57.7c.04.03.05.05.06.08a.12.12 0 010 .06c0 .03-.02.05-.06.09L569.93 512l287.7 287.7c.04.04.05.06.06.09a.12.12 0 010 .07c0 .02-.02.04-.06.08l-57.7 57.69c-.03.04-.05.05-.07.06a.12.12 0 01-.07 0c-.03 0-.05-.02-.09-.06L512 569.93l-287.7 287.7c-.04.04-.06.05-.09.06a.12.12 0 01-.07 0c-.02 0-.04-.02-.08-.06l-57.69-57.7c-.04-.03-.05-.05-.06-.07a.12.12 0 010-.07c0-.03.02-.05.06-.09L454.07 512l-287.7-287.7c-.04-.04-.05-.06-.06-.09a.12.12 0 010-.07c0-.02.02-.04.06-.08l57.7-57.69c.03-.04.05-.05.07-.06a.12.12 0 01.07 0c.03 0 .05.02.09.06L512 454.07l287.7-287.7c.04-.04.06-.05.09-.06a.12.12 0 01.07 0z" } }] }, "name": "close", "theme": "outlined" };
var CloseOutlined = function CloseOutlined2(props, ref) {
return /* @__PURE__ */ reactExports.createElement(Icon$2, _extends$2({}, props, {
ref,
icon: CloseOutlined$1
}));
};
var RefIcon$k = /* @__PURE__ */ reactExports.forwardRef(CloseOutlined);
var CopyOutlined$1 = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM350 856.2L263.9 770H350v86.2zM664 888H414V746c0-22.1-17.9-40-40-40H232V264h432v624z" } }] }, "name": "copy", "theme": "outlined" };
var CopyOutlined = function CopyOutlined2(props, ref) {
return /* @__PURE__ */ reactExports.createElement(Icon$2, _extends$2({}, props, {
ref,
icon: CopyOutlined$1
}));
};
var RefIcon$j = /* @__PURE__ */ reactExports.forwardRef(CopyOutlined);
var DoubleLeftOutlined$1 = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M272.9 512l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L186.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H532c6.7 0 10.4-7.7 6.3-12.9L272.9 512zm304 0l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L490.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H836c6.7 0 10.4-7.7 6.3-12.9L576.9 512z" } }] }, "name": "double-left", "theme": "outlined" };
var DoubleLeftOutlined = function DoubleLeftOutlined2(props, ref) {
return /* @__PURE__ */ reactExports.createElement(Icon$2, _extends$2({}, props, {
ref,
icon: DoubleLeftOutlined$1
}));
};
var RefIcon$i = /* @__PURE__ */ reactExports.forwardRef(DoubleLeftOutlined);
var DoubleRightOutlined$1 = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M533.2 492.3L277.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H188c-6.7 0-10.4 7.7-6.3 12.9L447.1 512 181.7 851.1A7.98 7.98 0 00188 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5zm304 0L581.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H492c-6.7 0-10.4 7.7-6.3 12.9L751.1 512 485.7 851.1A7.98 7.98 0 00492 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5z" } }] }, "name": "double-right", "theme": "outlined" };
var DoubleRightOutlined = function DoubleRightOutlined2(props, ref) {
return /* @__PURE__ */ reactExports.createElement(Icon$2, _extends$2({}, props, {
ref,
icon: DoubleRightOutlined$1
}));
};
var RefIcon$h = /* @__PURE__ */ reactExports.forwardRef(DoubleRightOutlined);
var DownOutlined$1 = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z" } }] }, "name": "down", "theme": "outlined" };
var DownOutlined = function DownOutlined2(props, ref) {
return /* @__PURE__ */ reactExports.createElement(Icon$2, _extends$2({}, props, {
ref,
icon: DownOutlined$1
}));
};
var RefIcon$g = /* @__PURE__ */ reactExports.forwardRef(DownOutlined);
var EllipsisOutlined$1 = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z" } }] }, "name": "ellipsis", "theme": "outlined" };
var EllipsisOutlined = function EllipsisOutlined2(props, ref) {
return /* @__PURE__ */ reactExports.createElement(Icon$2, _extends$2({}, props, {
ref,
icon: EllipsisOutlined$1
}));
};
var RefIcon$f = /* @__PURE__ */ reactExports.forwardRef(EllipsisOutlined);
var ExclamationCircleFilled$1 = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-32 232c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V296zm32 440a48.01 48.01 0 010-96 48.01 48.01 0 010 96z" } }] }, "name": "exclamation-circle", "theme": "filled" };
var ExclamationCircleFilled = function ExclamationCircleFilled2(props, ref) {
return /* @__PURE__ */ reactExports.createElement(Icon$2, _extends$2({}, props, {
ref,
icon: ExclamationCircleFilled$1
}));
};
var RefIcon$e = /* @__PURE__ */ reactExports.forwardRef(ExclamationCircleFilled);
var EyeInvisibleOutlined$1 = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M942.2 486.2Q889.47 375.11 816.7 305l-50.88 50.88C807.31 395.53 843.45 447.4 874.7 512 791.5 684.2 673.4 766 512 766q-72.67 0-133.87-22.38L323 798.75Q408 838 512 838q288.3 0 430.2-300.3a60.29 60.29 0 000-51.5zm-63.57-320.64L836 122.88a8 8 0 00-11.32 0L715.31 232.2Q624.86 186 512 186q-288.3 0-430.2 300.3a60.3 60.3 0 000 51.5q56.69 119.4 136.5 191.41L112.48 835a8 8 0 000 11.31L155.17 889a8 8 0 0011.31 0l712.15-712.12a8 8 0 000-11.32zM149.3 512C232.6 339.8 350.7 258 512 258c54.54 0 104.13 9.36 149.12 28.39l-70.3 70.3a176 176 0 00-238.13 238.13l-83.42 83.42C223.1 637.49 183.3 582.28 149.3 512zm246.7 0a112.11 112.11 0 01146.2-106.69L401.31 546.2A112 112 0 01396 512z" } }, { "tag": "path", "attrs": { "d": "M508 624c-3.46 0-6.87-.16-10.25-.47l-52.82 52.82a176.09 176.09 0 00227.42-227.42l-52.82 52.82c.31 3.38.47 6.79.47 10.25a111.94 111.94 0 01-112 112z" } }] }, "name": "eye-invisible", "theme": "outlined" };
var EyeInvisibleOutlined = function EyeInvisibleOutlined2(props, ref) {
return /* @__PURE__ */ reactExports.createElement(Icon$2, _extends$2({}, props, {
ref,
icon: EyeInvisibleOutlined$1
}));
};
var RefIcon$d = /* @__PURE__ */ reactExports.forwardRef(EyeInvisibleOutlined);
var EyeOutlined$1 = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z" } }] }, "name": "eye", "theme": "outlined" };
var EyeOutlined = function EyeOutlined2(props, ref) {
return /* @__PURE__ */ reactExports.createElement(Icon$2, _extends$2({}, props, {
ref,
icon: EyeOutlined$1
}));
};
var RefIcon$c = /* @__PURE__ */ reactExports.forwardRef(EyeOutlined);
var FileOutlined$1 = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494z" } }] }, "name": "file", "theme": "outlined" };
var FileOutlined = function FileOutlined2(props, ref) {
return /* @__PURE__ */ reactExports.createElement(Icon$2, _extends$2({}, props, {
ref,
icon: FileOutlined$1
}));
};
var RefIcon$b = /* @__PURE__ */ reactExports.forwardRef(FileOutlined);
var FilterFilled$1 = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z" } }] }, "name": "filter", "theme": "filled" };
var FilterFilled = function FilterFilled2(props, ref) {
return /* @__PURE__ */ reactExports.createElement(Icon$2, _extends$2({}, props, {
ref,
icon: FilterFilled$1
}));
};
var RefIcon$a = /* @__PURE__ */ reactExports.forwardRef(FilterFilled);
var FolderOpenOutlined$1 = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M928 444H820V330.4c0-17.7-14.3-32-32-32H473L355.7 186.2a8.15 8.15 0 00-5.5-2.2H96c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h698c13 0 24.8-7.9 29.7-20l134-332c1.5-3.8 2.3-7.9 2.3-12 0-17.7-14.3-32-32-32zM136 256h188.5l119.6 114.4H748V444H238c-13 0-24.8 7.9-29.7 20L136 643.2V256zm635.3 512H159l103.3-256h612.4L771.3 768z" } }] }, "name": "folder-open", "theme": "outlined" };
var FolderOpenOutlined = function FolderOpenOutlined2(props, ref) {
return /* @__PURE__ */ reactExports.createElement(Icon$2, _extends$2({}, props, {
ref,
icon: FolderOpenOutlined$1
}));
};
var RefIcon$9 = /* @__PURE__ */ reactExports.forwardRef(FolderOpenOutlined);
var FolderOutlined$1 = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M880 298.4H521L403.7 186.2a8.15 8.15 0 00-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM840 768H184V256h188.5l119.6 114.4H840V768z" } }] }, "name": "folder", "theme": "outlined" };
var FolderOutlined = function FolderOutlined2(props, ref) {
return /* @__PURE__ */ reactExports.createElement(Icon$2, _extends$2({}, props, {
ref,
icon: FolderOutlined$1
}));
};
var RefIcon$8 = /* @__PURE__ */ reactExports.forwardRef(FolderOutlined);
var HolderOutlined$1 = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M300 276.5a56 56 0 1056-97 56 56 0 00-56 97zm0 284a56 56 0 1056-97 56 56 0 00-56 97zM640 228a56 56 0 10112 0 56 56 0 00-112 0zm0 284a56 56 0 10112 0 56 56 0 00-112 0zM300 844.5a56 56 0 1056-97 56 56 0 00-56 97zM640 796a56 56 0 10112 0 56 56 0 00-112 0z" } }] }, "name": "holder", "theme": "outlined" };
var HolderOutlined = function HolderOutlined2(props, ref) {
return /* @__PURE__ */ reactExports.createElement(Icon$2, _extends$2({}, props, {
ref,
icon: HolderOutlined$1
}));
};
var RefIcon$7 = /* @__PURE__ */ reactExports.forwardRef(HolderOutlined);
var InfoCircleFilled$1 = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm32 664c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V456c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272zm-32-344a48.01 48.01 0 010-96 48.01 48.01 0 010 96z" } }] }, "name": "info-circle", "theme": "filled" };
var InfoCircleFilled = function InfoCircleFilled2(props, ref) {
return /* @__PURE__ */ reactExports.createElement(Icon$2, _extends$2({}, props, {
ref,
icon: InfoCircleFilled$1
}));
};
var RefIcon$6 = /* @__PURE__ */ reactExports.forwardRef(InfoCircleFilled);
var LeftOutlined$1 = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z" } }] }, "name": "left", "theme": "outlined" };
var LeftOutlined = function LeftOutlined2(props, ref) {
return /* @__PURE__ */ reactExports.createElement(Icon$2, _extends$2({}, props, {
ref,
icon: LeftOutlined$1
}));
};
var RefIcon$5 = /* @__PURE__ */ reactExports.forwardRef(LeftOutlined);
var LoadingOutlined$1 = { "icon": { "tag": "svg", "attrs": { "viewBox": "0 0 1024 1024", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z" } }] }, "name": "loading", "theme": "outlined" };
var LoadingOutlined = function LoadingOutlined2(props, ref) {
return /* @__PURE__ */ reactExports.createElement(Icon$2, _extends$2({}, props, {
ref,
icon: LoadingOutlined$1
}));
};
var RefIcon$4 = /* @__PURE__ */ reactExports.forwardRef(LoadingOutlined);
var MinusSquareOutlined$1 = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M328 544h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z" } }, { "tag": "path", "attrs": { "d": "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z" } }] }, "name": "minus-square", "theme": "outlined" };
var MinusSquareOutlined = function MinusSquareOutlined2(props, ref) {
return /* @__PURE__ */ reactExports.createElement(Icon$2, _extends$2({}, props, {
ref,
icon: MinusSquareOutlined$1
}));
};
var RefIcon$3 = /* @__PURE__ */ reactExports.forwardRef(MinusSquareOutlined);
var PlusSquareOutlined$1 = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M328 544h152v152c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V544h152c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H544V328c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z" } }, { "tag": "path", "attrs": { "d": "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z" } }] }, "name": "plus-square", "theme": "outlined" };
var PlusSquareOutlined = function PlusSquareOutlined2(props, ref) {
return /* @__PURE__ */ reactExports.createElement(Icon$2, _extends$2({}, props, {
ref,
icon: PlusSquareOutlined$1
}));
};
var RefIcon$2 = /* @__PURE__ */ reactExports.forwardRef(PlusSquareOutlined);
var RightOutlined$1 = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z" } }] }, "name": "right", "theme": "outlined" };
var RightOutlined = function RightOutlined2(props, ref) {
return /* @__PURE__ */ reactExports.createElement(Icon$2, _extends$2({}, props, {
ref,
icon: RightOutlined$1
}));
};
var RefIcon$1 = /* @__PURE__ */ reactExports.forwardRef(RightOutlined);
var SearchOutlined$1 = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z" } }] }, "name": "search", "theme": "outlined" };
var SearchOutlined = function SearchOutlined2(props, ref) {
return /* @__PURE__ */ reactExports.createElement(Icon$2, _extends$2({}, props, {
ref,
icon: SearchOutlined$1
}));
};
var RefIcon = /* @__PURE__ */ reactExports.forwardRef(SearchOutlined);
var reactIs$2 = { exports: {} };
var reactIs_production_min$1 = {};
/**
* @license React
* react-is.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
var b$1 = Symbol.for("react.element"), c$1 = Symbol.for("react.portal"), d$1 = Symbol.for("react.fragment"), e$2 = Symbol.for("react.strict_mode"), f$1 = Symbol.for("react.profiler"), g$1 = Symbol.for("react.provider"), h$1 = Symbol.for("react.context"), k$2 = Symbol.for("react.server_context"), l$1 = Symbol.for("react.forward_ref"), m$2 = Symbol.for("react.suspense"), n$1 = Symbol.for("react.suspense_list"), p$1 = Symbol.for("react.memo"), q$1 = Symbol.for("react.lazy"), t$1 = Symbol.for("react.offscreen"), u;
u = Symbol.for("react.module.reference");
function v$1(a) {
if ("object" === typeof a && null !== a) {
var r2 = a.$$typeof;
switch (r2) {
case b$1:
switch (a = a.type, a) {
case d$1:
case f$1:
case e$2:
case m$2:
case n$1:
return a;
default:
switch (a = a && a.$$typeof, a) {
case k$2:
case h$1:
case l$1:
case q$1:
case p$1:
case g$1:
return a;
default:
return r2;
}
}
case c$1:
return r2;
}
}
}
reactIs_production_min$1.ContextConsumer = h$1;
reactIs_production_min$1.ContextProvider = g$1;
reactIs_production_min$1.Element = b$1;
reactIs_production_min$1.ForwardRef = l$1;
reactIs_production_min$1.Fragment = d$1;
reactIs_production_min$1.Lazy = q$1;
reactIs_production_min$1.Memo = p$1;
reactIs_production_min$1.Portal = c$1;
reactIs_production_min$1.Profiler = f$1;
reactIs_production_min$1.StrictMode = e$2;
reactIs_production_min$1.Suspense = m$2;
reactIs_production_min$1.SuspenseList = n$1;
reactIs_production_min$1.isAsyncMode = function() {
return false;
};
reactIs_production_min$1.isConcurrentMode = function() {
return false;
};
reactIs_production_min$1.isContextConsumer = function(a) {
return v$1(a) === h$1;
};
reactIs_production_min$1.isContextProvider = function(a) {
return v$1(a) === g$1;
};
reactIs_production_min$1.isElement = function(a) {
return "object" === typeof a && null !== a && a.$$typeof === b$1;
};
reactIs_production_min$1.isForwardRef = function(a) {
return v$1(a) === l$1;
};
reactIs_production_min$1.isFragment = function(a) {
return v$1(a) === d$1;
};
reactIs_production_min$1.isLazy = function(a) {
return v$1(a) === q$1;
};
reactIs_production_min$1.isMemo = function(a) {
return v$1(a) === p$1;
};
reactIs_production_min$1.isPortal = function(a) {
return v$1(a) === c$1;
};
reactIs_production_min$1.isProfiler = function(a) {
return v$1(a) === f$1;
};
reactIs_production_min$1.isStrictMode = function(a) {
return v$1(a) === e$2;
};
reactIs_production_min$1.isSuspense = function(a) {
return v$1(a) === m$2;
};
reactIs_production_min$1.isSuspenseList = function(a) {
return v$1(a) === n$1;
};
reactIs_production_min$1.isValidElementType = function(a) {
return "string" === typeof a || "function" === typeof a || a === d$1 || a === f$1 || a === e$2 || a === m$2 || a === n$1 || a === t$1 || "object" === typeof a && null !== a && (a.$$typeof === q$1 || a.$$typeof === p$1 || a.$$typeof === g$1 || a.$$typeof === h$1 || a.$$typeof === l$1 || a.$$typeof === u || void 0 !== a.getModuleId) ? true : false;
};
reactIs_production_min$1.typeOf = v$1;
{
reactIs$2.exports = reactIs_production_min$1;
}
var reactIsExports$1 = reactIs$2.exports;
function useMemo(getValue2, condition, shouldUpdate) {
var cacheRef = reactExports.useRef({});
if (!("value" in cacheRef.current) || shouldUpdate(cacheRef.current.condition, condition)) {
cacheRef.current.value = getValue2();
cacheRef.current.condition = condition;
}
return cacheRef.current.value;
}
var fillRef = function fillRef2(ref, node2) {
if (typeof ref === "function") {
ref(node2);
} else if (_typeof$2(ref) === "object" && ref && "current" in ref) {
ref.current = node2;
}
};
var composeRef = function composeRef2() {
for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {
refs[_key] = arguments[_key];
}
var refList = refs.filter(Boolean);
if (refList.length <= 1) {
return refList[0];
}
return function(node2) {
refs.forEach(function(ref) {
fillRef(ref, node2);
});
};
};
var useComposeRef = function useComposeRef2() {
for (var _len2 = arguments.length, refs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
refs[_key2] = arguments[_key2];
}
return useMemo(function() {
return composeRef.apply(void 0, refs);
}, refs, function(prev2, next2) {
return prev2.length !== next2.length || prev2.every(function(ref, i) {
return ref !== next2[i];
});
});
};
var supportRef = function supportRef2(nodeOrComponent) {
var _type$prototype, _nodeOrComponent$prot;
var type4 = reactIsExports$1.isMemo(nodeOrComponent) ? nodeOrComponent.type.type : nodeOrComponent.type;
if (typeof type4 === "function" && !((_type$prototype = type4.prototype) !== null && _type$prototype !== void 0 && _type$prototype.render) && type4.$$typeof !== reactIsExports$1.ForwardRef) {
return false;
}
if (typeof nodeOrComponent === "function" && !((_nodeOrComponent$prot = nodeOrComponent.prototype) !== null && _nodeOrComponent$prot !== void 0 && _nodeOrComponent$prot.render) && nodeOrComponent.$$typeof !== reactIsExports$1.ForwardRef) {
return false;
}
return true;
};
function isReactElement(node2) {
return /* @__PURE__ */ reactExports.isValidElement(node2) && !reactIsExports$1.isFragment(node2);
}
var supportNodeRef = function supportNodeRef2(node2) {
return isReactElement(node2) && supportRef(node2);
};
Number(reactExports.version.split(".")[0]) >= 19 ? (
// >= React 19
function(node2) {
if (isReactElement(node2)) {
return node2.props.ref;
}
return null;
}
) : (
// < React 19
function(node2) {
if (isReactElement(node2)) {
return node2.ref;
}
return null;
}
);
var _excluded$K = ["className", "component", "viewBox", "spin", "rotate", "tabIndex", "onClick", "children"];
var Icon$1 = /* @__PURE__ */ reactExports.forwardRef(function(props, ref) {
var className = props.className, Component = props.component, viewBox = props.viewBox, spin2 = props.spin, rotate2 = props.rotate, tabIndex = props.tabIndex, onClick = props.onClick, children = props.children, restProps = _objectWithoutProperties(props, _excluded$K);
var iconRef = reactExports.useRef();
var mergedRef = useComposeRef(iconRef, ref);
warning$1(Boolean(Component || children), "Should have `component` prop or `children`.");
useInsertStyles(iconRef);
var _React$useContext = reactExports.useContext(IconContext), _React$useContext$pre = _React$useContext.prefixCls, prefixCls = _React$useContext$pre === void 0 ? "anticon" : _React$useContext$pre, rootClassName = _React$useContext.rootClassName;
var classString = cls(rootClassName, prefixCls, _defineProperty({}, "".concat(prefixCls, "-spin"), !!spin2 && !!Component), className);
var svgClassString = cls(_defineProperty({}, "".concat(prefixCls, "-spin"), !!spin2));
var svgStyle = rotate2 ? {
msTransform: "rotate(".concat(rotate2, "deg)"),
transform: "rotate(".concat(rotate2, "deg)")
} : void 0;
var innerSvgProps = _objectSpread2$1(_objectSpread2$1({}, svgBaseProps), {}, {
className: svgClassString,
style: svgStyle,
viewBox
});
if (!viewBox) {
delete innerSvgProps.viewBox;
}
var renderInnerNode = function renderInnerNode2() {
if (Component) {
return /* @__PURE__ */ reactExports.createElement(Component, innerSvgProps, children);
}
if (children) {
warning$1(Boolean(viewBox) || reactExports.Children.count(children) === 1 && /* @__PURE__ */ reactExports.isValidElement(children) && reactExports.Children.only(children).type === "use", "Make sure that you provide correct `viewBox` prop (default `0 0 1024 1024`) to the icon.");
return /* @__PURE__ */ reactExports.createElement("svg", _extends$2({}, innerSvgProps, {
viewBox
}), children);
}
return null;
};
var iconTabIndex = tabIndex;
if (iconTabIndex === void 0 && onClick) {
iconTabIndex = -1;
}
return /* @__PURE__ */ reactExports.createElement("span", _extends$2({
role: "img"
}, restProps, {
ref: mergedRef,
tabIndex: iconTabIndex,
onClick,
className: classString
}), renderInnerNode());
});
Icon$1.displayName = "AntdIcon";
var _excluded$J = ["type", "children"];
var customCache = /* @__PURE__ */ new Set();
function isValidCustomScriptUrl(scriptUrl) {
return Boolean(typeof scriptUrl === "string" && scriptUrl.length && !customCache.has(scriptUrl));
}
function createScriptUrlElements(scriptUrls) {
var index2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
var currentScriptUrl = scriptUrls[index2];
if (isValidCustomScriptUrl(currentScriptUrl)) {
var script = document.createElement("script");
script.setAttribute("src", currentScriptUrl);
script.setAttribute("data-namespace", currentScriptUrl);
if (scriptUrls.length > index2 + 1) {
script.onload = function() {
createScriptUrlElements(scriptUrls, index2 + 1);
};
script.onerror = function() {
createScriptUrlElements(scriptUrls, index2 + 1);
};
}
customCache.add(currentScriptUrl);
document.body.appendChild(script);
}
}
function create$4() {
var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
var scriptUrl = options.scriptUrl, _options$extraCommonP = options.extraCommonProps, extraCommonProps = _options$extraCommonP === void 0 ? {} : _options$extraCommonP;
if (scriptUrl && typeof document !== "undefined" && typeof window !== "undefined" && typeof document.createElement === "function") {
if (Array.isArray(scriptUrl)) {
createScriptUrlElements(scriptUrl.reverse());
} else {
createScriptUrlElements([scriptUrl]);
}
}
var Iconfont = /* @__PURE__ */ reactExports.forwardRef(function(props, ref) {
var type4 = props.type, children = props.children, restProps = _objectWithoutProperties(props, _excluded$J);
var content = null;
if (props.type) {
content = /* @__PURE__ */ reactExports.createElement("use", {
xlinkHref: "#".concat(type4)
});
}
if (children) {
content = children;
}
return /* @__PURE__ */ reactExports.createElement(Icon$1, _extends$2({}, extraCommonProps, restProps, {
ref
}), content);
});
Iconfont.displayName = "Iconfont";
return Iconfont;
}
const IconFont = create$4({
scriptUrl: "src/assets/iconfont.js"
});
const logoSvg = "data:image/svg+xml,%3csvg%20width='32'%20height='32'%20viewBox='0%200%2032%2032'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20id='Frame%2030315'%3e%3cg%20id='Vector'%3e%3cpath%20d='M5.25548%203.41333C4.55359%203.41333%203.94026%203.88734%203.7633%204.56656L0.959961%2015.3264L2.52176%2011.6664L5.26338%205.69126C5.3368%205.53125%205.56286%205.52762%205.64138%205.68519L8.01511%2010.4487L9.82133%205.16517C9.87756%205.00068%2010.0981%204.97224%2010.1942%205.11709L13.1364%209.55093C14.0803%209.23318%2016.1324%209.11938%2017.7041%2010.7372C18.1831%2011.2302%2018.8852%2011.5053%2019.5342%2011.2789L25.8968%209.05913C26.2711%208.92852%2026.6689%209.17391%2026.6767%209.57032C26.7162%2011.5907%2026.0384%2015.2164%2022.9937%2018.0741C21.7094%2019.2794%2020.2144%2020.1333%2018.6958%2021.0006C15.8166%2022.645%2012.8525%2024.3378%2011.0785%2028.5671H18.516C23.8818%2028.5671%2028.6567%2025.1628%2030.4059%2020.0902C33.2221%2011.923%2027.1551%203.41333%2018.516%203.41333H5.25548Z'%20fill='url(%23paint0_linear_5285_1684)'/%3e%3cpath%20d='M30.3002%2020.3847C28.4704%2025.2941%2023.7773%2028.5671%2018.516%2028.5671H11.0785C12.8525%2024.3378%2015.8166%2022.645%2018.6958%2021.0006C20.2144%2020.1333%2021.7094%2019.2794%2022.9937%2018.0741C26.0384%2015.2164%2026.7162%2011.5907%2026.6767%209.57032C26.6747%209.47238%2026.649%209.38366%2026.6057%209.30755L26.6154%209.29218L30.3002%2020.3847Z'%20fill='url(%23paint1_linear_5285_1684)'/%3e%3cpath%20d='M18.3152%2011.6052L14.3758%2013.1977C14.5714%2013.5609%2015.2643%2014.2035%2016.4713%2013.8682C17.6782%2013.533%2018.2035%2012.2198%2018.3152%2011.6052Z'%20fill='%232B5FF5'/%3e%3c/g%3e%3c/g%3e%3cdefs%3e%3clinearGradient%20id='paint0_linear_5285_1684'%20x1='19.4837'%20y1='28.5671'%20x2='19.4837'%20y2='1.34128'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%232951F2'/%3e%3cstop%20offset='0.475'%20stop-color='%23309CFF'/%3e%3cstop%20offset='1'%20stop-color='%235136FF'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint1_linear_5285_1684'%20x1='13.8407'%20y1='15.0469'%20x2='20.8748'%20y2='25.8505'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%233E3AFD'/%3e%3cstop%20offset='1'%20stop-color='%233098FF'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e";
const sidebar = "index-module__sidebar___hRj7I";
const sidebarDrag = "index-module__sidebar-drag___F0TpL";
const styles$4 = {
sidebar,
sidebarDrag
};
const DEFAULT_SIDEBAR_WIDTH = 60;
var Language = /* @__PURE__ */ ((Language2) => {
Language2["ZH_CN"] = "zh-CN";
Language2["EN_US"] = "en-US";
return Language2;
})(Language || {});
const WEB_DATA_SOURCE = "dataSource";
const createStoreImpl = (createState) => {
let state;
const listeners = /* @__PURE__ */ new Set();
const setState = (partial, replace2) => {
const nextState = typeof partial === "function" ? partial(state) : partial;
if (!Object.is(nextState, state)) {
const previousState = state;
state = (replace2 != null ? replace2 : typeof nextState !== "object" || nextState === null) ? nextState : Object.assign({}, state, nextState);
listeners.forEach((listener) => listener(state, previousState));
}
};
const getState = () => state;
const getInitialState = () => initialState;
const subscribe = (listener) => {
listeners.add(listener);
return () => listeners.delete(listener);
};
const api = { setState, getState, getInitialState, subscribe };
const initialState = state = createState(setState, getState, api);
return api;
};
const createStore$1 = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;
const identity$1 = (arg) => arg;
function useStore(api, selector2 = identity$1) {
const slice2 = React.useSyncExternalStore(
api.subscribe,
() => selector2(api.getState()),
() => selector2(api.getInitialState())
);
React.useDebugValue(slice2);
return slice2;
}
const createImpl = (createState) => {
const api = createStore$1(createState);
const useBoundStore = (selector2) => useStore(api, selector2);
Object.assign(useBoundStore, api);
return useBoundStore;
};
const create$3 = (createState) => createState ? createImpl(createState) : createImpl;
const combine = (initialState, create3) => (...a) => Object.assign({}, initialState, create3(...a));
function createJSONStorage(getStorage, options) {
let storage2;
try {
storage2 = getStorage();
} catch (e2) {
return;
}
const persistStorage = {
getItem: (name) => {
var _a2;
const parse2 = (str2) => {
if (str2 === null) {
return null;
}
return JSON.parse(str2, void 0);
};
const str = (_a2 = storage2.getItem(name)) != null ? _a2 : null;
if (str instanceof Promise) {
return str.then(parse2);
}
return parse2(str);
},
setItem: (name, newValue) => storage2.setItem(
name,
JSON.stringify(newValue, void 0)
),
removeItem: (name) => storage2.removeItem(name)
};
return persistStorage;
}
const toThenable = (fn) => (input) => {
try {
const result = fn(input);
if (result instanceof Promise) {
return result;
}
return {
then(onFulfilled) {
return toThenable(onFulfilled)(result);
},
catch(_onRejected) {
return this;
}
};
} catch (e2) {
return {
then(_onFulfilled) {
return this;
},
catch(onRejected) {
return toThenable(onRejected)(e2);
}
};
}
};
const persistImpl = (config, baseOptions) => (set2, get2, api) => {
let options = {
storage: createJSONStorage(() => localStorage),
partialize: (state) => state,
version: 0,
merge: (persistedState, currentState) => ({
...currentState,
...persistedState
}),
...baseOptions
};
let hasHydrated = false;
const hydrationListeners = /* @__PURE__ */ new Set();
const finishHydrationListeners = /* @__PURE__ */ new Set();
let storage2 = options.storage;
if (!storage2) {
return config(
(...args) => {
console.warn(
`[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`
);
set2(...args);
},
get2,
api
);
}
const setItem = () => {
const state = options.partialize({ ...get2() });
return storage2.setItem(options.name, {
state,
version: options.version
});
};
const savedSetState = api.setState;
api.setState = (state, replace2) => {
savedSetState(state, replace2);
void setItem();
};
const configResult = config(
(...args) => {
set2(...args);
void setItem();
},
get2,
api
);
api.getInitialState = () => configResult;
let stateFromStorage;
const hydrate = () => {
var _a2, _b2;
if (!storage2) return;
hasHydrated = false;
hydrationListeners.forEach((cb2) => {
var _a22;
return cb2((_a22 = get2()) != null ? _a22 : configResult);
});
const postRehydrationCallback = ((_b2 = options.onRehydrateStorage) == null ? void 0 : _b2.call(options, (_a2 = get2()) != null ? _a2 : configResult)) || void 0;
return toThenable(storage2.getItem.bind(storage2))(options.name).then((deserializedStorageValue) => {
if (deserializedStorageValue) {
if (typeof deserializedStorageValue.version === "number" && deserializedStorageValue.version !== options.version) {
if (options.migrate) {
return [
true,
options.migrate(
deserializedStorageValue.state,
deserializedStorageValue.version
)
];
}
console.error(
`State loaded from storage couldn't be migrated since no migrate function was provided`
);
} else {
return [false, deserializedStorageValue.state];
}
}
return [false, void 0];
}).then((migrationResult) => {
var _a22;
const [migrated, migratedState] = migrationResult;
stateFromStorage = options.merge(
migratedState,
(_a22 = get2()) != null ? _a22 : configResult
);
set2(stateFromStorage, true);
if (migrated) {
return setItem();
}
}).then(() => {
postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);
stateFromStorage = get2();
hasHydrated = true;
finishHydrationListeners.forEach((cb2) => cb2(stateFromStorage));
}).catch((e2) => {
postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e2);
});
};
api.persist = {
setOptions: (newOptions) => {
options = {
...options,
...newOptions
};
if (newOptions.storage) {
storage2 = newOptions.storage;
}
},
clearStorage: () => {
storage2 == null ? void 0 : storage2.removeItem(options.name);
},
getOptions: () => options,
rehydrate: () => hydrate(),
hasHydrated: () => hasHydrated,
onHydrate: (cb2) => {
hydrationListeners.add(cb2);
return () => {
hydrationListeners.delete(cb2);
};
},
onFinishHydration: (cb2) => {
finishHydrationListeners.add(cb2);
return () => {
finishHydrationListeners.delete(cb2);
};
}
};
if (!options.skipHydration) {
hydrate();
}
return stateFromStorage || configResult;
};
const persist = persistImpl;
function deepClone(obj) {
return JSON.parse(JSON.stringify(obj));
}
function promisifyRequest(request) {
return new Promise((resolve, reject) => {
request.oncomplete = request.onsuccess = () => resolve(request.result);
request.onabort = request.onerror = () => reject(request.error);
});
}
function createStore(dbName, storeName) {
const request = indexedDB.open(dbName);
request.onupgradeneeded = () => request.result.createObjectStore(storeName);
const dbp = promisifyRequest(request);
return (txMode, callback) => dbp.then((db2) => callback(db2.transaction(storeName, txMode).objectStore(storeName)));
}
let defaultGetStoreFunc;
function defaultGetStore() {
if (!defaultGetStoreFunc) {
defaultGetStoreFunc = createStore("keyval-store", "keyval");
}
return defaultGetStoreFunc;
}
function get$2(key, customStore = defaultGetStore()) {
return customStore("readonly", (store) => promisifyRequest(store.get(key)));
}
function set$3(key, value, customStore = defaultGetStore()) {
return customStore("readwrite", (store) => {
store.put(value, key);
return promisifyRequest(store.transaction);
});
}
function del(key, customStore = defaultGetStore()) {
return customStore("readwrite", (store) => {
store.delete(key);
return promisifyRequest(store.transaction);
});
}
function clear$3(customStore = defaultGetStore()) {
return customStore("readwrite", (store) => {
store.clear();
return promisifyRequest(store.transaction);
});
}
class IndexedDBStorage {
async getItem(name) {
try {
return await get$2(name) || localStorage.getItem(name);
} catch (error) {
return localStorage.getItem(name);
}
}
async setItem(name, value) {
try {
await set$3(name, value);
} catch (error) {
localStorage.setItem(name, value);
}
}
async removeItem(name) {
try {
await del(name);
} catch (error) {
localStorage.removeItem(name);
}
}
async clear() {
try {
await clear$3();
} catch (error) {
localStorage.clear();
}
}
}
const indexedDBStorage = new IndexedDBStorage();
function createPersistStore(state, methods2, persistOptions) {
persistOptions.storage = createJSONStorage(() => indexedDBStorage);
return create$3(
persist(
combine(
{
...state,
lastUpdateTime: 0
},
(set2, get2) => {
return {
...methods2(set2, get2),
markUpdate() {
set2({ lastUpdateTime: Date.now() });
},
update(updater) {
const state2 = deepClone(get2());
updater(state2);
set2({
...state2,
lastUpdateTime: Date.now()
});
}
};
}
),
persistOptions
)
);
}
const DEFAULT_CONFIG = {
models: [],
lastUpdate: Date.now(),
// timestamp, to merge state
sidebarWidth: DEFAULT_SIDEBAR_WIDTH,
name: "config",
version: 3.9
// Initialize other properties
};
createPersistStore(
{ ...DEFAULT_CONFIG },
(set2, get2) => ({
reset() {
set2(() => ({ ...DEFAULT_CONFIG }));
},
mergeModels(newModels) {
},
allModels() {
}
}),
{
name: "config",
version: 3.9,
migrate(persistedState, version2) {
const state = persistedState;
if (version2 < 3.4) {
state.version = 3.4;
}
if (version2 < 3.5) {
state.version = 3.5;
}
return state;
}
}
);
const SideBarContainer = ({
className,
children
}) => {
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
"div",
{
className: cls(
className,
styles$4.sidebar,
`h-full bg-white shadow-lg transition-all px-4 bg-[#F4F5F9] duration-300`
),
children: [
children,
/* @__PURE__ */ jsxRuntimeExports.jsx(
"div",
{
className: styles$4.sidebarDrag,
children: /* @__PURE__ */ jsxRuntimeExports.jsx(IconFont, { type: "icon-resize" })
}
)
]
}
);
};
const SideListItem = [
{
name: "taskManager",
icon: "icon-task-tab",
title: "评测任务"
}
];
const SideBar = () => {
const [isExpanded, setIsExpanded] = reactExports.useState(false);
reactExports.useEffect(() => {
if (isExpanded) {
document.documentElement.style.setProperty(
"--sidebar-width",
"240px"
);
} else {
document.documentElement.style.setProperty(
"--sidebar-width",
"60px"
);
}
}, [isExpanded]);
return /* @__PURE__ */ jsxRuntimeExports.jsx(SideBarContainer, { className: styles$4.sidebar, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col h-full", children: [
/* @__PURE__ */ jsxRuntimeExports.jsxs(
"div",
{
className: cls(
"py-4 flex items-center text-gray",
!isExpanded && "justify-center"
),
children: [
/* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: logoSvg, alt: "" }),
/* @__PURE__ */ jsxRuntimeExports.jsx(
"span",
{
className: cls(
"ml-2 text-black-1 font-bold opacity-0 w-0 overflow-hidden",
isExpanded && "opacity-100 duration-3000 w-auto"
),
children: "dingo"
}
)
]
}
),
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "h-[1px] bg-[#EBECF0]" }),
/* @__PURE__ */ jsxRuntimeExports.jsx("hgroup", { className: "flex flex-grow", children: SideListItem.map((item) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
"div",
{
className: "flex items-center justify-center h-12",
children: [
/* @__PURE__ */ jsxRuntimeExports.jsx(
IconFont,
{
type: item.icon,
className: "text-[1.55rem] text-blue"
}
),
/* @__PURE__ */ jsxRuntimeExports.jsx(
"span",
{
className: cls(
"ml-2 text-blue font-bold hidden whitespace-nowrap",
isExpanded && "!block"
),
children: item.title
}
)
]
},
item.name
)) }),
/* @__PURE__ */ jsxRuntimeExports.jsxs(
"div",
{
className: cls(
"w-full flex justify-end items-center mb-6",
!isExpanded && "flex-col justify-center"
),
children: [
/* @__PURE__ */ jsxRuntimeExports.jsx(
IconFont,
{
onClick: () => window?.open("https://github.com/shijinpjlab/Dingo"),
className: cls(
"text-[1.25rem] text-gray-2 hover:text-blue ",
isExpanded && "mr-auto",
!isExpanded && "mb-2"
),
type: "icon-GithubFilled"
}
),
/* @__PURE__ */ jsxRuntimeExports.jsx(
IconFont,
{
onClick: () => setIsExpanded(!isExpanded),
type: isExpanded ? "icon-expand" : "icon-fold",
className: "text-[1.25rem] text-gray-2 hover:text-blue"
}
)
]
}
)
] }) });
};
function toArray$4(children) {
var option = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
var ret = [];
React.Children.forEach(children, function(child) {
if ((child === void 0 || child === null) && !option.keepEmpty) {
return;
}
if (Array.isArray(child)) {
ret = ret.concat(toArray$4(child));
} else if (reactIsExports$1.isFragment(child) && child.props) {
ret = ret.concat(toArray$4(child.props.children, option));
} else {
ret.push(child);
}
});
return ret;
}
function isDOM(node2) {
return node2 instanceof HTMLElement || node2 instanceof SVGElement;
}
function getDOM(node2) {
if (node2 && _typeof$2(node2) === "object" && isDOM(node2.nativeElement)) {
return node2.nativeElement;
}
if (isDOM(node2)) {
return node2;
}
return null;
}
function findDOMNode(node2) {
var domNode = getDOM(node2);
if (domNode) {
return domNode;
}
if (node2 instanceof React.Component) {
var _ReactDOM$findDOMNode;
return (_ReactDOM$findDOMNode = ReactDOM.findDOMNode) === null || _ReactDOM$findDOMNode === void 0 ? void 0 : _ReactDOM$findDOMNode.call(ReactDOM, node2);
}
return null;
}
var CollectionContext = /* @__PURE__ */ reactExports.createContext(null);
function Collection(_ref) {
var children = _ref.children, onBatchResize = _ref.onBatchResize;
var resizeIdRef = reactExports.useRef(0);
var resizeInfosRef = reactExports.useRef([]);
var onCollectionResize = reactExports.useContext(CollectionContext);
var onResize2 = reactExports.useCallback(function(size, element, data) {
resizeIdRef.current += 1;
var currentId = resizeIdRef.current;
resizeInfosRef.current.push({
size,
element,
data
});
Promise.resolve().then(function() {
if (currentId === resizeIdRef.current) {
onBatchResize === null || onBatchResize === void 0 || onBatchResize(resizeInfosRef.current);
resizeInfosRef.current = [];
}
});
onCollectionResize === null || onCollectionResize === void 0 || onCollectionResize(size, element, data);
}, [onBatchResize, onCollectionResize]);
return /* @__PURE__ */ reactExports.createElement(CollectionContext.Provider, {
value: onResize2
}, children);
}
var MapShim = function() {
if (typeof Map !== "undefined") {
return Map;
}
function getIndex(arr, key) {
var result = -1;
arr.some(function(entry, index2) {
if (entry[0] === key) {
result = index2;
return true;
}
return false;
});
return result;
}
return (
/** @class */
function() {
function class_1() {
this.__entries__ = [];
}
Object.defineProperty(class_1.prototype, "size", {
/**
* @returns {boolean}
*/
get: function() {
return this.__entries__.length;
},
enumerable: true,
configurable: true
});
class_1.prototype.get = function(key) {
var index2 = getIndex(this.__entries__, key);
var entry = this.__entries__[index2];
return entry && entry[1];
};
class_1.prototype.set = function(key, value) {
var index2 = getIndex(this.__entries__, key);
if (~index2) {
this.__entries__[index2][1] = value;
} else {
this.__entries__.push([key, value]);
}
};
class_1.prototype.delete = function(key) {
var entries = this.__entries__;
var index2 = getIndex(entries, key);
if (~index2) {
entries.splice(index2, 1);
}
};
class_1.prototype.has = function(key) {
return !!~getIndex(this.__entries__, key);
};
class_1.prototype.clear = function() {
this.__entries__.splice(0);
};
class_1.prototype.forEach = function(callback, ctx) {
if (ctx === void 0) {
ctx = null;
}
for (var _i = 0, _a2 = this.__entries__; _i < _a2.length; _i++) {
var entry = _a2[_i];
callback.call(ctx, entry[1], entry[0]);
}
};
return class_1;
}()
);
}();
var isBrowser$1 = typeof window !== "undefined" && typeof document !== "undefined" && window.document === document;
var global$1 = function() {
if (typeof global !== "undefined" && global.Math === Math) {
return global;
}
if (typeof self !== "undefined" && self.Math === Math) {
return self;
}
if (typeof window !== "undefined" && window.Math === Math) {
return window;
}
return Function("return this")();
}();
var requestAnimationFrame$1$1 = function() {
if (typeof requestAnimationFrame === "function") {
return requestAnimationFrame.bind(global$1);
}
return function(callback) {
return setTimeout(function() {
return callback(Date.now());
}, 1e3 / 60);
};
}();
var trailingTimeout = 2;
function throttle$2(callback, delay) {
var leadingCall = false, trailingCall = false, lastCallTime = 0;
function resolvePending() {
if (leadingCall) {
leadingCall = false;
callback();
}
if (trailingCall) {
proxy();
}
}
function timeoutCallback() {
requestAnimationFrame$1$1(resolvePending);
}
function proxy() {
var timeStamp = Date.now();
if (leadingCall) {
if (timeStamp - lastCallTime < trailingTimeout) {
return;
}
trailingCall = true;
} else {
leadingCall = true;
trailingCall = false;
setTimeout(timeoutCallback, delay);
}
lastCallTime = timeStamp;
}
return proxy;
}
var REFRESH_DELAY = 20;
var transitionKeys = ["top", "right", "bottom", "left", "width", "height", "size", "weight"];
var mutationObserverSupported = typeof MutationObserver !== "undefined";
var ResizeObserverController = (
/** @class */
function() {
function ResizeObserverController2() {
this.connected_ = false;
this.mutationEventsAdded_ = false;
this.mutationsObserver_ = null;
this.observers_ = [];
this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);
this.refresh = throttle$2(this.refresh.bind(this), REFRESH_DELAY);
}
ResizeObserverController2.prototype.addObserver = function(observer) {
if (!~this.observers_.indexOf(observer)) {
this.observers_.push(observer);
}
if (!this.connected_) {
this.connect_();
}
};
ResizeObserverController2.prototype.removeObserver = function(observer) {
var observers2 = this.observers_;
var index2 = observers2.indexOf(observer);
if (~index2) {
observers2.splice(index2, 1);
}
if (!observers2.length && this.connected_) {
this.disconnect_();
}
};
ResizeObserverController2.prototype.refresh = function() {
var changesDetected = this.updateObservers_();
if (changesDetected) {
this.refresh();
}
};
ResizeObserverController2.prototype.updateObservers_ = function() {
var activeObservers = this.observers_.filter(function(observer) {
return observer.gatherActive(), observer.hasActive();
});
activeObservers.forEach(function(observer) {
return observer.broadcastActive();
});
return activeObservers.length > 0;
};
ResizeObserverController2.prototype.connect_ = function() {
if (!isBrowser$1 || this.connected_) {
return;
}
document.addEventListener("transitionend", this.onTransitionEnd_);
window.addEventListener("resize", this.refresh);
if (mutationObserverSupported) {
this.mutationsObserver_ = new MutationObserver(this.refresh);
this.mutationsObserver_.observe(document, {
attributes: true,
childList: true,
characterData: true,
subtree: true
});
} else {
document.addEventListener("DOMSubtreeModified", this.refresh);
this.mutationEventsAdded_ = true;
}
this.connected_ = true;
};
ResizeObserverController2.prototype.disconnect_ = function() {
if (!isBrowser$1 || !this.connected_) {
return;
}
document.removeEventListener("transitionend", this.onTransitionEnd_);
window.removeEventListener("resize", this.refresh);
if (this.mutationsObserver_) {
this.mutationsObserver_.disconnect();
}
if (this.mutationEventsAdded_) {
document.removeEventListener("DOMSubtreeModified", this.refresh);
}
this.mutationsObserver_ = null;
this.mutationEventsAdded_ = false;
this.connected_ = false;
};
ResizeObserverController2.prototype.onTransitionEnd_ = function(_a2) {
var _b2 = _a2.propertyName, propertyName = _b2 === void 0 ? "" : _b2;
var isReflowProperty = transitionKeys.some(function(key) {
return !!~propertyName.indexOf(key);
});
if (isReflowProperty) {
this.refresh();
}
};
ResizeObserverController2.getInstance = function() {
if (!this.instance_) {
this.instance_ = new ResizeObserverController2();
}
return this.instance_;
};
ResizeObserverController2.instance_ = null;
return ResizeObserverController2;
}()
);
var defineConfigurable = function(target, props) {
for (var _i = 0, _a2 = Object.keys(props); _i < _a2.length; _i++) {
var key = _a2[_i];
Object.defineProperty(target, key, {
value: props[key],
enumerable: false,
writable: false,
configurable: true
});
}
return target;
};
var getWindowOf = function(target) {
var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;
return ownerGlobal || global$1;
};
var emptyRect = createRectInit(0, 0, 0, 0);
function toFloat(value) {
return parseFloat(value) || 0;
}
function getBordersSize(styles2) {
var positions = [];
for (var _i = 1; _i < arguments.length; _i++) {
positions[_i - 1] = arguments[_i];
}
return positions.reduce(function(size, position2) {
var value = styles2["border-" + position2 + "-width"];
return size + toFloat(value);
}, 0);
}
function getPaddings(styles2) {
var positions = ["top", "right", "bottom", "left"];
var paddings = {};
for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {
var position2 = positions_1[_i];
var value = styles2["padding-" + position2];
paddings[position2] = toFloat(value);
}
return paddings;
}
function getSVGContentRect(target) {
var bbox = target.getBBox();
return createRectInit(0, 0, bbox.width, bbox.height);
}
function getHTMLElementContentRect(target) {
var clientWidth = target.clientWidth, clientHeight = target.clientHeight;
if (!clientWidth && !clientHeight) {
return emptyRect;
}
var styles2 = getWindowOf(target).getComputedStyle(target);
var paddings = getPaddings(styles2);
var horizPad = paddings.left + paddings.right;
var vertPad = paddings.top + paddings.bottom;
var width = toFloat(styles2.width), height = toFloat(styles2.height);
if (styles2.boxSizing === "border-box") {
if (Math.round(width + horizPad) !== clientWidth) {
width -= getBordersSize(styles2, "left", "right") + horizPad;
}
if (Math.round(height + vertPad) !== clientHeight) {
height -= getBordersSize(styles2, "top", "bottom") + vertPad;
}
}
if (!isDocumentElement(target)) {
var vertScrollbar = Math.round(width + horizPad) - clientWidth;
var horizScrollbar = Math.round(height + vertPad) - clientHeight;
if (Math.abs(vertScrollbar) !== 1) {
width -= vertScrollbar;
}
if (Math.abs(horizScrollbar) !== 1) {
height -= horizScrollbar;
}
}
return createRectInit(paddings.left, paddings.top, width, height);
}
var isSVGGraphicsElement = function() {
if (typeof SVGGraphicsElement !== "undefined") {
return function(target) {
return target instanceof getWindowOf(target).SVGGraphicsElement;
};
}
return function(target) {
return target instanceof getWindowOf(target).SVGElement && typeof target.getBBox === "function";
};
}();
function isDocumentElement(target) {
return target === getWindowOf(target).document.documentElement;
}
function getContentRect(target) {
if (!isBrowser$1) {
return emptyRect;
}
if (isSVGGraphicsElement(target)) {
return getSVGContentRect(target);
}
return getHTMLElementContentRect(target);
}
function createReadOnlyRect(_a2) {
var x2 = _a2.x, y2 = _a2.y, width = _a2.width, height = _a2.height;
var Constr = typeof DOMRectReadOnly !== "undefined" ? DOMRectReadOnly : Object;
var rect = Object.create(Constr.prototype);
defineConfigurable(rect, {
x: x2,
y: y2,
width,
height,
top: y2,
right: x2 + width,
bottom: height + y2,
left: x2
});
return rect;
}
function createRectInit(x2, y2, width, height) {
return { x: x2, y: y2, width, height };
}
var ResizeObservation = (
/** @class */
function() {
function ResizeObservation2(target) {
this.broadcastWidth = 0;
this.broadcastHeight = 0;
this.contentRect_ = createRectInit(0, 0, 0, 0);
this.target = target;
}
ResizeObservation2.prototype.isActive = function() {
var rect = getContentRect(this.target);
this.contentRect_ = rect;
return rect.width !== this.broadcastWidth || rect.height !== this.broadcastHeight;
};
ResizeObservation2.prototype.broadcastRect = function() {
var rect = this.contentRect_;
this.broadcastWidth = rect.width;
this.broadcastHeight = rect.height;
return rect;
};
return ResizeObservation2;
}()
);
var ResizeObserverEntry = (
/** @class */
/* @__PURE__ */ function() {
function ResizeObserverEntry2(target, rectInit) {
var contentRect = createReadOnlyRect(rectInit);
defineConfigurable(this, { target, contentRect });
}
return ResizeObserverEntry2;
}()
);
var ResizeObserverSPI = (
/** @class */
function() {
function ResizeObserverSPI2(callback, controller, callbackCtx) {
this.activeObservations_ = [];
this.observations_ = new MapShim();
if (typeof callback !== "function") {
throw new TypeError("The callback provided as parameter 1 is not a function.");
}
this.callback_ = callback;
this.controller_ = controller;
this.callbackCtx_ = callbackCtx;
}
ResizeObserverSPI2.prototype.observe = function(target) {
if (!arguments.length) {
throw new TypeError("1 argument required, but only 0 present.");
}
if (typeof Element === "undefined" || !(Element instanceof Object)) {
return;
}
if (!(target instanceof getWindowOf(target).Element)) {
throw new TypeError('parameter 1 is not of type "Element".');
}
var observations = this.observations_;
if (observations.has(target)) {
return;
}
observations.set(target, new ResizeObservation(target));
this.controller_.addObserver(this);
this.controller_.refresh();
};
ResizeObserverSPI2.prototype.unobserve = function(target) {
if (!arguments.length) {
throw new TypeError("1 argument required, but only 0 present.");
}
if (typeof Element === "undefined" || !(Element instanceof Object)) {
return;
}
if (!(target instanceof getWindowOf(target).Element)) {
throw new TypeError('parameter 1 is not of type "Element".');
}
var observations = this.observations_;
if (!observations.has(target)) {
return;
}
observations.delete(target);
if (!observations.size) {
this.controller_.removeObserver(this);
}
};
ResizeObserverSPI2.prototype.disconnect = function() {
this.clearActive();
this.observations_.clear();
this.controller_.removeObserver(this);
};
ResizeObserverSPI2.prototype.gatherActive = function() {
var _this = this;
this.clearActive();
this.observations_.forEach(function(observation) {
if (observation.isActive()) {
_this.activeObservations_.push(observation);
}
});
};
ResizeObserverSPI2.prototype.broadcastActive = function() {
if (!this.hasActive()) {
return;
}
var ctx = this.callbackCtx_;
var entries = this.activeObservations_.map(function(observation) {
return new ResizeObserverEntry(observation.target, observation.broadcastRect());
});
this.callback_.call(ctx, entries, ctx);
this.clearActive();
};
ResizeObserverSPI2.prototype.clearActive = function() {
this.activeObservations_.splice(0);
};
ResizeObserverSPI2.prototype.hasActive = function() {
return this.activeObservations_.length > 0;
};
return ResizeObserverSPI2;
}()
);
var observers = typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : new MapShim();
var ResizeObserver$2 = (
/** @class */
/* @__PURE__ */ function() {
function ResizeObserver2(callback) {
if (!(this instanceof ResizeObserver2)) {
throw new TypeError("Cannot call a class as a function.");
}
if (!arguments.length) {
throw new TypeError("1 argument required, but only 0 present.");
}
var controller = ResizeObserverController.getInstance();
var observer = new ResizeObserverSPI(callback, controller, this);
observers.set(this, observer);
}
return ResizeObserver2;
}()
);
[
"observe",
"unobserve",
"disconnect"
].forEach(function(method4) {
ResizeObserver$2.prototype[method4] = function() {
var _a2;
return (_a2 = observers.get(this))[method4].apply(_a2, arguments);
};
});
var index = function() {
if (typeof global$1.ResizeObserver !== "undefined") {
return global$1.ResizeObserver;
}
return ResizeObserver$2;
}();
var elementListeners = /* @__PURE__ */ new Map();
function onResize(entities) {
entities.forEach(function(entity) {
var _elementListeners$get;
var target = entity.target;
(_elementListeners$get = elementListeners.get(target)) === null || _elementListeners$get === void 0 || _elementListeners$get.forEach(function(listener) {
return listener(target);
});
});
}
var resizeObserver$1 = new index(onResize);
function observe(element, callback) {
if (!elementListeners.has(element)) {
elementListeners.set(element, /* @__PURE__ */ new Set());
resizeObserver$1.observe(element);
}
elementListeners.get(element).add(callback);
}
function unobserve(element, callback) {
if (elementListeners.has(element)) {
elementListeners.get(element).delete(callback);
if (!elementListeners.get(element).size) {
resizeObserver$1.unobserve(element);
elementListeners.delete(element);
}
}
}
function _classCallCheck(a, n2) {
if (!(a instanceof n2)) throw new TypeError("Cannot call a class as a function");
}
function _defineProperties(e2, r2) {
for (var t2 = 0; t2 < r2.length; t2++) {
var o = r2[t2];
o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e2, toPropertyKey$1(o.key), o);
}
}
function _createClass(e2, r2, t2) {
return r2 && _defineProperties(e2.prototype, r2), t2 && _defineProperties(e2, t2), Object.defineProperty(e2, "prototype", {
writable: false
}), e2;
}
function _setPrototypeOf(t2, e2) {
return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t3, e3) {
return t3.__proto__ = e3, t3;
}, _setPrototypeOf(t2, e2);
}
function _inherits(t2, e2) {
if ("function" != typeof e2 && null !== e2) throw new TypeError("Super expression must either be null or a function");
t2.prototype = Object.create(e2 && e2.prototype, {
constructor: {
value: t2,
writable: true,
configurable: true
}
}), Object.defineProperty(t2, "prototype", {
writable: false
}), e2 && _setPrototypeOf(t2, e2);
}
function _getPrototypeOf(t2) {
return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t3) {
return t3.__proto__ || Object.getPrototypeOf(t3);
}, _getPrototypeOf(t2);
}
function _isNativeReflectConstruct() {
try {
var t2 = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
}));
} catch (t3) {
}
return (_isNativeReflectConstruct = function _isNativeReflectConstruct2() {
return !!t2;
})();
}
function _assertThisInitialized(e2) {
if (void 0 === e2) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
return e2;
}
function _possibleConstructorReturn(t2, e2) {
if (e2 && ("object" == _typeof$2(e2) || "function" == typeof e2)) return e2;
if (void 0 !== e2) throw new TypeError("Derived constructors may only return object or undefined");
return _assertThisInitialized(t2);
}
function _createSuper(t2) {
var r2 = _isNativeReflectConstruct();
return function() {
var e2, o = _getPrototypeOf(t2);
if (r2) {
var s = _getPrototypeOf(this).constructor;
e2 = Reflect.construct(o, arguments, s);
} else e2 = o.apply(this, arguments);
return _possibleConstructorReturn(this, e2);
};
}
var DomWrapper$1 = /* @__PURE__ */ function(_React$Component) {
_inherits(DomWrapper2, _React$Component);
var _super = _createSuper(DomWrapper2);
function DomWrapper2() {
_classCallCheck(this, DomWrapper2);
return _super.apply(this, arguments);
}
_createClass(DomWrapper2, [{
key: "render",
value: function render2() {
return this.props.children;
}
}]);
return DomWrapper2;
}(reactExports.Component);
function SingleObserver(props, ref) {
var children = props.children, disabled = props.disabled;
var elementRef = reactExports.useRef(null);
var wrapperRef = reactExports.useRef(null);
var onCollectionResize = reactExports.useContext(CollectionContext);
var isRenderProps = typeof children === "function";
var mergedChildren = isRenderProps ? children(elementRef) : children;
var sizeRef = reactExports.useRef({
width: -1,
height: -1,
offsetWidth: -1,
offsetHeight: -1
});
var canRef = !isRenderProps && /* @__PURE__ */ reactExports.isValidElement(mergedChildren) && supportRef(mergedChildren);
var originRef = canRef ? mergedChildren.ref : null;
var mergedRef = useComposeRef(originRef, elementRef);
var getDom = function getDom2() {
var _elementRef$current;
return findDOMNode(elementRef.current) || // Support `nativeElement` format
(elementRef.current && _typeof$2(elementRef.current) === "object" ? findDOMNode((_elementRef$current = elementRef.current) === null || _elementRef$current === void 0 ? void 0 : _elementRef$current.nativeElement) : null) || findDOMNode(wrapperRef.current);
};
reactExports.useImperativeHandle(ref, function() {
return getDom();
});
var propsRef = reactExports.useRef(props);
propsRef.current = props;
var onInternalResize = reactExports.useCallback(function(target) {
var _propsRef$current = propsRef.current, onResize2 = _propsRef$current.onResize, data = _propsRef$current.data;
var _target$getBoundingCl = target.getBoundingClientRect(), width = _target$getBoundingCl.width, height = _target$getBoundingCl.height;
var offsetWidth = target.offsetWidth, offsetHeight = target.offsetHeight;
var fixedWidth = Math.floor(width);
var fixedHeight = Math.floor(height);
if (sizeRef.current.width !== fixedWidth || sizeRef.current.height !== fixedHeight || sizeRef.current.offsetWidth !== offsetWidth || sizeRef.current.offsetHeight !== offsetHeight) {
var size = {
width: fixedWidth,
height: fixedHeight,
offsetWidth,
offsetHeight
};
sizeRef.current = size;
var mergedOffsetWidth = offsetWidth === Math.round(width) ? width : offsetWidth;
var mergedOffsetHeight = offsetHeight === Math.round(height) ? height : offsetHeight;
var sizeInfo = _objectSpread2$1(_objectSpread2$1({}, size), {}, {
offsetWidth: mergedOffsetWidth,
offsetHeight: mergedOffsetHeight
});
onCollectionResize === null || onCollectionResize === void 0 || onCollectionResize(sizeInfo, target, data);
if (onResize2) {
Promise.resolve().then(function() {
onResize2(sizeInfo, target);
});
}
}
}, []);
reactExports.useEffect(function() {
var currentElement = getDom();
if (currentElement && !disabled) {
observe(currentElement, onInternalResize);
}
return function() {
return unobserve(currentElement, onInternalResize);
};
}, [elementRef.current, disabled]);
return /* @__PURE__ */ reactExports.createElement(DomWrapper$1, {
ref: wrapperRef
}, canRef ? /* @__PURE__ */ reactExports.cloneElement(mergedChildren, {
ref: mergedRef
}) : mergedChildren);
}
var RefSingleObserver = /* @__PURE__ */ reactExports.forwardRef(SingleObserver);
var INTERNAL_PREFIX_KEY = "rc-observer-key";
function ResizeObserver$1(props, ref) {
var children = props.children;
var childNodes = typeof children === "function" ? [children] : toArray$4(children);
return childNodes.map(function(child, index2) {
var key = (child === null || child === void 0 ? void 0 : child.key) || "".concat(INTERNAL_PREFIX_KEY, "-").concat(index2);
return /* @__PURE__ */ reactExports.createElement(RefSingleObserver, _extends$2({}, props, {
key,
ref: index2 === 0 ? ref : void 0
}), child);
});
}
var RefResizeObserver = /* @__PURE__ */ reactExports.forwardRef(ResizeObserver$1);
RefResizeObserver.Collection = Collection;
function omit(obj, fields) {
var clone3 = Object.assign({}, obj);
if (Array.isArray(fields)) {
fields.forEach(function(key) {
delete clone3[key];
});
}
return clone3;
}
function _arrayWithoutHoles(r2) {
if (Array.isArray(r2)) return _arrayLikeToArray(r2);
}
function _iterableToArray(r2) {
if ("undefined" != typeof Symbol && null != r2[Symbol.iterator] || null != r2["@@iterator"]) return Array.from(r2);
}
function _nonIterableSpread() {
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function _toConsumableArray(r2) {
return _arrayWithoutHoles(r2) || _iterableToArray(r2) || _unsupportedIterableToArray(r2) || _nonIterableSpread();
}
var raf = function raf2(callback) {
return +setTimeout(callback, 16);
};
var caf = function caf2(num) {
return clearTimeout(num);
};
if (typeof window !== "undefined" && "requestAnimationFrame" in window) {
raf = function raf3(callback) {
return window.requestAnimationFrame(callback);
};
caf = function caf3(handle) {
return window.cancelAnimationFrame(handle);
};
}
var rafUUID = 0;
var rafIds = /* @__PURE__ */ new Map();
function cleanup(id2) {
rafIds.delete(id2);
}
var wrapperRaf = function wrapperRaf2(callback) {
var times = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1;
rafUUID += 1;
var id2 = rafUUID;
function callRef(leftTimes) {
if (leftTimes === 0) {
cleanup(id2);
callback();
} else {
var realId = raf(function() {
callRef(leftTimes - 1);
});
rafIds.set(id2, realId);
}
}
callRef(times);
return id2;
};
wrapperRaf.cancel = function(id2) {
var realId = rafIds.get(id2);
cleanup(id2);
return caf(realId);
};
function murmur2(str) {
var h2 = 0;
var k2, i = 0, len2 = str.length;
for (; len2 >= 4; ++i, len2 -= 4) {
k2 = str.charCodeAt(i) & 255 | (str.charCodeAt(++i) & 255) << 8 | (str.charCodeAt(++i) & 255) << 16 | (str.charCodeAt(++i) & 255) << 24;
k2 = /* Math.imul(k, m): */
(k2 & 65535) * 1540483477 + ((k2 >>> 16) * 59797 << 16);
k2 ^= /* k >>> r: */
k2 >>> 24;
h2 = /* Math.imul(k, m): */
(k2 & 65535) * 1540483477 + ((k2 >>> 16) * 59797 << 16) ^ /* Math.imul(h, m): */
(h2 & 65535) * 1540483477 + ((h2 >>> 16) * 59797 << 16);
}
switch (len2) {
case 3:
h2 ^= (str.charCodeAt(i + 2) & 255) << 16;
case 2:
h2 ^= (str.charCodeAt(i + 1) & 255) << 8;
case 1:
h2 ^= str.charCodeAt(i) & 255;
h2 = /* Math.imul(h, m): */
(h2 & 65535) * 1540483477 + ((h2 >>> 16) * 59797 << 16);
}
h2 ^= h2 >>> 13;
h2 = /* Math.imul(h, m): */
(h2 & 65535) * 1540483477 + ((h2 >>> 16) * 59797 << 16);
return ((h2 ^ h2 >>> 15) >>> 0).toString(36);
}
function isEqual$1(obj1, obj2) {
var shallow = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
var refSet = /* @__PURE__ */ new Set();
function deepEqual(a, b2) {
var level = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 1;
var circular = refSet.has(a);
warningOnce(!circular, "Warning: There may be circular references");
if (circular) {
return false;
}
if (a === b2) {
return true;
}
if (shallow && level > 1) {
return false;
}
refSet.add(a);
var newLevel = level + 1;
if (Array.isArray(a)) {
if (!Array.isArray(b2) || a.length !== b2.length) {
return false;
}
for (var i = 0; i < a.length; i++) {
if (!deepEqual(a[i], b2[i], newLevel)) {
return false;
}
}
return true;
}
if (a && b2 && _typeof$2(a) === "object" && _typeof$2(b2) === "object") {
var keys2 = Object.keys(a);
if (keys2.length !== Object.keys(b2).length) {
return false;
}
return keys2.every(function(key) {
return deepEqual(a[key], b2[key], newLevel);
});
}
return false;
}
return deepEqual(obj1, obj2);
}
var SPLIT$1 = "%";
function pathKey(keys2) {
return keys2.join(SPLIT$1);
}
var Entity = /* @__PURE__ */ function() {
function Entity2(instanceId) {
_classCallCheck(this, Entity2);
_defineProperty(this, "instanceId", void 0);
_defineProperty(this, "cache", /* @__PURE__ */ new Map());
this.instanceId = instanceId;
}
_createClass(Entity2, [{
key: "get",
value: function get2(keys2) {
return this.opGet(pathKey(keys2));
}
/** A fast get cache with `get` concat. */
}, {
key: "opGet",
value: function opGet(keyPathStr) {
return this.cache.get(keyPathStr) || null;
}
}, {
key: "update",
value: function update(keys2, valueFn) {
return this.opUpdate(pathKey(keys2), valueFn);
}
/** A fast get cache with `get` concat. */
}, {
key: "opUpdate",
value: function opUpdate(keyPathStr, valueFn) {
var prevValue = this.cache.get(keyPathStr);
var nextValue = valueFn(prevValue);
if (nextValue === null) {
this.cache.delete(keyPathStr);
} else {
this.cache.set(keyPathStr, nextValue);
}
}
}]);
return Entity2;
}();
var ATTR_TOKEN = "data-token-hash";
var ATTR_MARK = "data-css-hash";
var CSS_IN_JS_INSTANCE = "__cssinjs_instance__";
function createCache() {
var cssinjsInstanceId = Math.random().toString(12).slice(2);
if (typeof document !== "undefined" && document.head && document.body) {
var styles2 = document.body.querySelectorAll("style[".concat(ATTR_MARK, "]")) || [];
var firstChild = document.head.firstChild;
Array.from(styles2).forEach(function(style2) {
style2[CSS_IN_JS_INSTANCE] = style2[CSS_IN_JS_INSTANCE] || cssinjsInstanceId;
if (style2[CSS_IN_JS_INSTANCE] === cssinjsInstanceId) {
document.head.insertBefore(style2, firstChild);
}
});
var styleHash = {};
Array.from(document.querySelectorAll("style[".concat(ATTR_MARK, "]"))).forEach(function(style2) {
var hash = style2.getAttribute(ATTR_MARK);
if (styleHash[hash]) {
if (style2[CSS_IN_JS_INSTANCE] === cssinjsInstanceId) {
var _style$parentNode;
(_style$parentNode = style2.parentNode) === null || _style$parentNode === void 0 || _style$parentNode.removeChild(style2);
}
} else {
styleHash[hash] = true;
}
});
}
return new Entity(cssinjsInstanceId);
}
var StyleContext = /* @__PURE__ */ reactExports.createContext({
hashPriority: "low",
cache: createCache(),
defaultCache: true
});
function sameDerivativeOption(left, right) {
if (left.length !== right.length) {
return false;
}
for (var i = 0; i < left.length; i++) {
if (left[i] !== right[i]) {
return false;
}
}
return true;
}
var ThemeCache = /* @__PURE__ */ function() {
function ThemeCache2() {
_classCallCheck(this, ThemeCache2);
_defineProperty(this, "cache", void 0);
_defineProperty(this, "keys", void 0);
_defineProperty(this, "cacheCallTimes", void 0);
this.cache = /* @__PURE__ */ new Map();
this.keys = [];
this.cacheCallTimes = 0;
}
_createClass(ThemeCache2, [{
key: "size",
value: function size() {
return this.keys.length;
}
}, {
key: "internalGet",
value: function internalGet(derivativeOption) {
var _cache2, _cache3;
var updateCallTimes = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
var cache = {
map: this.cache
};
derivativeOption.forEach(function(derivative2) {
if (!cache) {
cache = void 0;
} else {
var _cache;
cache = (_cache = cache) === null || _cache === void 0 || (_cache = _cache.map) === null || _cache === void 0 ? void 0 : _cache.get(derivative2);
}
});
if ((_cache2 = cache) !== null && _cache2 !== void 0 && _cache2.value && updateCallTimes) {
cache.value[1] = this.cacheCallTimes++;
}
return (_cache3 = cache) === null || _cache3 === void 0 ? void 0 : _cache3.value;
}
}, {
key: "get",
value: function get2(derivativeOption) {
var _this$internalGet;
return (_this$internalGet = this.internalGet(derivativeOption, true)) === null || _this$internalGet === void 0 ? void 0 : _this$internalGet[0];
}
}, {
key: "has",
value: function has2(derivativeOption) {
return !!this.internalGet(derivativeOption);
}
}, {
key: "set",
value: function set2(derivativeOption, value) {
var _this = this;
if (!this.has(derivativeOption)) {
if (this.size() + 1 > ThemeCache2.MAX_CACHE_SIZE + ThemeCache2.MAX_CACHE_OFFSET) {
var _this$keys$reduce = this.keys.reduce(function(result, key) {
var _result = _slicedToArray(result, 2), callTimes = _result[1];
if (_this.internalGet(key)[1] < callTimes) {
return [key, _this.internalGet(key)[1]];
}
return result;
}, [this.keys[0], this.cacheCallTimes]), _this$keys$reduce2 = _slicedToArray(_this$keys$reduce, 1), targetKey = _this$keys$reduce2[0];
this.delete(targetKey);
}
this.keys.push(derivativeOption);
}
var cache = this.cache;
derivativeOption.forEach(function(derivative2, index2) {
if (index2 === derivativeOption.length - 1) {
cache.set(derivative2, {
value: [value, _this.cacheCallTimes++]
});
} else {
var cacheValue = cache.get(derivative2);
if (!cacheValue) {
cache.set(derivative2, {
map: /* @__PURE__ */ new Map()
});
} else if (!cacheValue.map) {
cacheValue.map = /* @__PURE__ */ new Map();
}
cache = cache.get(derivative2).map;
}
});
}
}, {
key: "deleteByPath",
value: function deleteByPath(currentCache, derivatives) {
var cache = currentCache.get(derivatives[0]);
if (derivatives.length === 1) {
var _cache$value;
if (!cache.map) {
currentCache.delete(derivatives[0]);
} else {
currentCache.set(derivatives[0], {
map: cache.map
});
}
return (_cache$value = cache.value) === null || _cache$value === void 0 ? void 0 : _cache$value[0];
}
var result = this.deleteByPath(cache.map, derivatives.slice(1));
if ((!cache.map || cache.map.size === 0) && !cache.value) {
currentCache.delete(derivatives[0]);
}
return result;
}
}, {
key: "delete",
value: function _delete(derivativeOption) {
if (this.has(derivativeOption)) {
this.keys = this.keys.filter(function(item) {
return !sameDerivativeOption(item, derivativeOption);
});
return this.deleteByPath(this.cache, derivativeOption);
}
return void 0;
}
}]);
return ThemeCache2;
}();
_defineProperty(ThemeCache, "MAX_CACHE_SIZE", 20);
_defineProperty(ThemeCache, "MAX_CACHE_OFFSET", 5);
var uuid$3 = 0;
var Theme = /* @__PURE__ */ function() {
function Theme2(derivatives) {
_classCallCheck(this, Theme2);
_defineProperty(this, "derivatives", void 0);
_defineProperty(this, "id", void 0);
this.derivatives = Array.isArray(derivatives) ? derivatives : [derivatives];
this.id = uuid$3;
if (derivatives.length === 0) {
warning$2(derivatives.length > 0);
}
uuid$3 += 1;
}
_createClass(Theme2, [{
key: "getDerivativeToken",
value: function getDerivativeToken(token2) {
return this.derivatives.reduce(function(result, derivative2) {
return derivative2(token2, result);
}, void 0);
}
}]);
return Theme2;
}();
var cacheThemes = new ThemeCache();
function createTheme(derivatives) {
var derivativeArr = Array.isArray(derivatives) ? derivatives : [derivatives];
if (!cacheThemes.has(derivativeArr)) {
cacheThemes.set(derivativeArr, new Theme(derivativeArr));
}
return cacheThemes.get(derivativeArr);
}
var resultCache = /* @__PURE__ */ new WeakMap();
var RESULT_VALUE = {};
function memoResult(callback, deps) {
var current = resultCache;
for (var i = 0; i < deps.length; i += 1) {
var dep = deps[i];
if (!current.has(dep)) {
current.set(dep, /* @__PURE__ */ new WeakMap());
}
current = current.get(dep);
}
if (!current.has(RESULT_VALUE)) {
current.set(RESULT_VALUE, callback());
}
return current.get(RESULT_VALUE);
}
var flattenTokenCache = /* @__PURE__ */ new WeakMap();
function flattenToken(token2) {
var hashed = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
var str = flattenTokenCache.get(token2) || "";
if (!str) {
Object.keys(token2).forEach(function(key) {
var value = token2[key];
str += key;
if (value instanceof Theme) {
str += value.id;
} else if (value && _typeof$2(value) === "object") {
str += flattenToken(value, hashed);
} else {
str += value;
}
});
if (hashed) {
str = murmur2(str);
}
flattenTokenCache.set(token2, str);
}
return str;
}
function token2key(token2, salt) {
return murmur2("".concat(salt, "_").concat(flattenToken(token2, true)));
}
var isClientSide = canUseDom();
function unit$1(num) {
if (typeof num === "number") {
return "".concat(num, "px");
}
return num;
}
function toStyleStr(style2, tokenKey, styleId) {
var customizeAttrs = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};
var plain = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : false;
if (plain) {
return style2;
}
var attrs = _objectSpread2$1(_objectSpread2$1({}, customizeAttrs), {}, _defineProperty(_defineProperty({}, ATTR_TOKEN, tokenKey), ATTR_MARK, styleId));
var attrStr = Object.keys(attrs).map(function(attr) {
var val = attrs[attr];
return val ? "".concat(attr, '="').concat(val, '"') : null;
}).filter(function(v4) {
return v4;
}).join(" ");
return "<style ".concat(attrStr, ">").concat(style2, "</style>");
}
var token2CSSVar = function token2CSSVar2(token2) {
var prefix = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "";
return "--".concat(prefix ? "".concat(prefix, "-") : "").concat(token2).replace(/([a-z0-9])([A-Z])/g, "$1-$2").replace(/([A-Z]+)([A-Z][a-z0-9]+)/g, "$1-$2").replace(/([a-z])([A-Z0-9])/g, "$1-$2").toLowerCase();
};
var serializeCSSVar = function serializeCSSVar2(cssVars, hashId, options) {
if (!Object.keys(cssVars).length) {
return "";
}
return ".".concat(hashId).concat(options !== null && options !== void 0 && options.scope ? ".".concat(options.scope) : "", "{").concat(Object.entries(cssVars).map(function(_ref) {
var _ref2 = _slicedToArray(_ref, 2), key = _ref2[0], value = _ref2[1];
return "".concat(key, ":").concat(value, ";");
}).join(""), "}");
};
var transformToken = function transformToken2(token2, themeKey, config) {
var cssVars = {};
var result = {};
Object.entries(token2).forEach(function(_ref3) {
var _config$preserve, _config$ignore;
var _ref4 = _slicedToArray(_ref3, 2), key = _ref4[0], value = _ref4[1];
if (config !== null && config !== void 0 && (_config$preserve = config.preserve) !== null && _config$preserve !== void 0 && _config$preserve[key]) {
result[key] = value;
} else if ((typeof value === "string" || typeof value === "number") && !(config !== null && config !== void 0 && (_config$ignore = config.ignore) !== null && _config$ignore !== void 0 && _config$ignore[key])) {
var _config$unitless;
var cssVar = token2CSSVar(key, config === null || config === void 0 ? void 0 : config.prefix);
cssVars[cssVar] = typeof value === "number" && !(config !== null && config !== void 0 && (_config$unitless = config.unitless) !== null && _config$unitless !== void 0 && _config$unitless[key]) ? "".concat(value, "px") : String(value);
result[key] = "var(".concat(cssVar, ")");
}
});
return [result, serializeCSSVar(cssVars, themeKey, {
scope: config === null || config === void 0 ? void 0 : config.scope
})];
};
var useInternalLayoutEffect = canUseDom() ? reactExports.useLayoutEffect : reactExports.useEffect;
var useLayoutEffect$1 = function useLayoutEffect2(callback, deps) {
var firstMountRef = reactExports.useRef(true);
useInternalLayoutEffect(function() {
return callback(firstMountRef.current);
}, deps);
useInternalLayoutEffect(function() {
firstMountRef.current = false;
return function() {
firstMountRef.current = true;
};
}, []);
};
var useLayoutUpdateEffect = function useLayoutUpdateEffect2(callback, deps) {
useLayoutEffect$1(function(firstMount) {
if (!firstMount) {
return callback();
}
}, deps);
};
var fullClone$3 = _objectSpread2$1({}, React$1);
var useInsertionEffect$1 = fullClone$3.useInsertionEffect;
var useInsertionEffectPolyfill = function useInsertionEffectPolyfill2(renderEffect, effect, deps) {
reactExports.useMemo(renderEffect, deps);
useLayoutEffect$1(function() {
return effect(true);
}, deps);
};
var useCompatibleInsertionEffect = useInsertionEffect$1 ? function(renderEffect, effect, deps) {
return useInsertionEffect$1(function() {
renderEffect();
return effect();
}, deps);
} : useInsertionEffectPolyfill;
var fullClone$2 = _objectSpread2$1({}, React$1);
var useInsertionEffect = fullClone$2.useInsertionEffect;
var useCleanupRegister = function useCleanupRegister2(deps) {
var effectCleanups = [];
var cleanupFlag = false;
function register3(fn) {
if (cleanupFlag) {
return;
}
effectCleanups.push(fn);
}
reactExports.useEffect(function() {
cleanupFlag = false;
return function() {
cleanupFlag = true;
if (effectCleanups.length) {
effectCleanups.forEach(function(fn) {
return fn();
});
}
};
}, deps);
return register3;
};
var useRun = function useRun2() {
return function(fn) {
fn();
};
};
var useEffectCleanupRegister = typeof useInsertionEffect !== "undefined" ? useCleanupRegister : useRun;
function useGlobalCache(prefix, keyPath, cacheFn, onCacheRemove, onCacheEffect) {
var _React$useContext = reactExports.useContext(StyleContext), globalCache = _React$useContext.cache;
var fullPath = [prefix].concat(_toConsumableArray(keyPath));
var fullPathStr = pathKey(fullPath);
var register3 = useEffectCleanupRegister([fullPathStr]);
var buildCache = function buildCache2(updater) {
globalCache.opUpdate(fullPathStr, function(prevCache) {
var _ref = prevCache || [void 0, void 0], _ref2 = _slicedToArray(_ref, 2), _ref2$ = _ref2[0], times = _ref2$ === void 0 ? 0 : _ref2$, cache = _ref2[1];
var tmpCache = cache;
var mergedCache = tmpCache || cacheFn();
var data = [times, mergedCache];
return updater ? updater(data) : data;
});
};
reactExports.useMemo(
function() {
buildCache();
},
/* eslint-disable react-hooks/exhaustive-deps */
[fullPathStr]
/* eslint-enable */
);
var cacheEntity = globalCache.opGet(fullPathStr);
var cacheContent = cacheEntity[1];
useCompatibleInsertionEffect(function() {
onCacheEffect === null || onCacheEffect === void 0 || onCacheEffect(cacheContent);
}, function(polyfill) {
buildCache(function(_ref3) {
var _ref4 = _slicedToArray(_ref3, 2), times = _ref4[0], cache = _ref4[1];
if (polyfill && times === 0) {
onCacheEffect === null || onCacheEffect === void 0 || onCacheEffect(cacheContent);
}
return [times + 1, cache];
});
return function() {
globalCache.opUpdate(fullPathStr, function(prevCache) {
var _ref5 = prevCache || [], _ref6 = _slicedToArray(_ref5, 2), _ref6$ = _ref6[0], times = _ref6$ === void 0 ? 0 : _ref6$, cache = _ref6[1];
var nextCount = times - 1;
if (nextCount === 0) {
register3(function() {
if (polyfill || !globalCache.opGet(fullPathStr)) {
onCacheRemove === null || onCacheRemove === void 0 || onCacheRemove(cache, false);
}
});
return null;
}
return [times - 1, cache];
});
};
}, [fullPathStr]);
return cacheContent;
}
var EMPTY_OVERRIDE = {};
var hashPrefix = "css";
var tokenKeys = /* @__PURE__ */ new Map();
function recordCleanToken(tokenKey) {
tokenKeys.set(tokenKey, (tokenKeys.get(tokenKey) || 0) + 1);
}
function removeStyleTags(key, instanceId) {
if (typeof document !== "undefined") {
var styles2 = document.querySelectorAll("style[".concat(ATTR_TOKEN, '="').concat(key, '"]'));
styles2.forEach(function(style2) {
if (style2[CSS_IN_JS_INSTANCE] === instanceId) {
var _style$parentNode;
(_style$parentNode = style2.parentNode) === null || _style$parentNode === void 0 || _style$parentNode.removeChild(style2);
}
});
}
}
var TOKEN_THRESHOLD = 0;
function cleanTokenStyle(tokenKey, instanceId) {
tokenKeys.set(tokenKey, (tokenKeys.get(tokenKey) || 0) - 1);
var tokenKeyList = Array.from(tokenKeys.keys());
var cleanableKeyList = tokenKeyList.filter(function(key) {
var count2 = tokenKeys.get(key) || 0;
return count2 <= 0;
});
if (tokenKeyList.length - cleanableKeyList.length > TOKEN_THRESHOLD) {
cleanableKeyList.forEach(function(key) {
removeStyleTags(key, instanceId);
tokenKeys.delete(key);
});
}
}
var getComputedToken$1 = function getComputedToken2(originToken, overrideToken, theme2, format2) {
var derivativeToken = theme2.getDerivativeToken(originToken);
var mergedDerivativeToken = _objectSpread2$1(_objectSpread2$1({}, derivativeToken), overrideToken);
if (format2) {
mergedDerivativeToken = format2(mergedDerivativeToken);
}
return mergedDerivativeToken;
};
var TOKEN_PREFIX = "token";
function useCacheToken(theme2, tokens) {
var option = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
var _useContext = reactExports.useContext(StyleContext), instanceId = _useContext.cache.instanceId, container = _useContext.container;
var _option$salt = option.salt, salt = _option$salt === void 0 ? "" : _option$salt, _option$override = option.override, override = _option$override === void 0 ? EMPTY_OVERRIDE : _option$override, formatToken2 = option.formatToken, compute = option.getComputedToken, cssVar = option.cssVar;
var mergedToken = memoResult(function() {
return Object.assign.apply(Object, [{}].concat(_toConsumableArray(tokens)));
}, tokens);
var tokenStr = flattenToken(mergedToken);
var overrideTokenStr = flattenToken(override);
var cssVarStr = cssVar ? flattenToken(cssVar) : "";
var cachedToken = useGlobalCache(TOKEN_PREFIX, [salt, theme2.id, tokenStr, overrideTokenStr, cssVarStr], function() {
var _cssVar$key;
var mergedDerivativeToken = compute ? compute(mergedToken, override, theme2) : getComputedToken$1(mergedToken, override, theme2, formatToken2);
var actualToken = _objectSpread2$1({}, mergedDerivativeToken);
var cssVarsStr = "";
if (!!cssVar) {
var _transformToken = transformToken(mergedDerivativeToken, cssVar.key, {
prefix: cssVar.prefix,
ignore: cssVar.ignore,
unitless: cssVar.unitless,
preserve: cssVar.preserve
});
var _transformToken2 = _slicedToArray(_transformToken, 2);
mergedDerivativeToken = _transformToken2[0];
cssVarsStr = _transformToken2[1];
}
var tokenKey = token2key(mergedDerivativeToken, salt);
mergedDerivativeToken._tokenKey = tokenKey;
actualToken._tokenKey = token2key(actualToken, salt);
var themeKey = (_cssVar$key = cssVar === null || cssVar === void 0 ? void 0 : cssVar.key) !== null && _cssVar$key !== void 0 ? _cssVar$key : tokenKey;
mergedDerivativeToken._themeKey = themeKey;
recordCleanToken(themeKey);
var hashId = "".concat(hashPrefix, "-").concat(murmur2(tokenKey));
mergedDerivativeToken._hashId = hashId;
return [mergedDerivativeToken, hashId, actualToken, cssVarsStr, (cssVar === null || cssVar === void 0 ? void 0 : cssVar.key) || ""];
}, function(cache) {
cleanTokenStyle(cache[0]._themeKey, instanceId);
}, function(_ref) {
var _ref2 = _slicedToArray(_ref, 4), token2 = _ref2[0], cssVarsStr = _ref2[3];
if (cssVar && cssVarsStr) {
var style2 = updateCSS(cssVarsStr, murmur2("css-variables-".concat(token2._themeKey)), {
mark: ATTR_MARK,
prepend: "queue",
attachTo: container,
priority: -999
});
style2[CSS_IN_JS_INSTANCE] = instanceId;
style2.setAttribute(ATTR_TOKEN, token2._themeKey);
}
});
return cachedToken;
}
var extract$2 = function extract2(cache, effectStyles, options) {
var _cache = _slicedToArray(cache, 5), realToken = _cache[2], styleStr = _cache[3], cssVarKey = _cache[4];
var _ref3 = options || {}, plain = _ref3.plain;
if (!styleStr) {
return null;
}
var styleId = realToken._tokenKey;
var order = -999;
var sharedAttrs = {
"data-rc-order": "prependQueue",
"data-rc-priority": "".concat(order)
};
var styleText = toStyleStr(styleStr, cssVarKey, styleId, sharedAttrs, plain);
return [order, styleId, styleText];
};
var unitlessKeys = {
animationIterationCount: 1,
borderImageOutset: 1,
borderImageSlice: 1,
borderImageWidth: 1,
boxFlex: 1,
boxFlexGroup: 1,
boxOrdinalGroup: 1,
columnCount: 1,
columns: 1,
flex: 1,
flexGrow: 1,
flexPositive: 1,
flexShrink: 1,
flexNegative: 1,
flexOrder: 1,
gridRow: 1,
gridRowEnd: 1,
gridRowSpan: 1,
gridRowStart: 1,
gridColumn: 1,
gridColumnEnd: 1,
gridColumnSpan: 1,
gridColumnStart: 1,
msGridRow: 1,
msGridRowSpan: 1,
msGridColumn: 1,
msGridColumnSpan: 1,
fontWeight: 1,
lineHeight: 1,
opacity: 1,
order: 1,
orphans: 1,
tabSize: 1,
widows: 1,
zIndex: 1,
zoom: 1,
WebkitLineClamp: 1,
// SVG-related properties
fillOpacity: 1,
floodOpacity: 1,
stopOpacity: 1,
strokeDasharray: 1,
strokeDashoffset: 1,
strokeMiterlimit: 1,
strokeOpacity: 1,
strokeWidth: 1
};
var COMMENT = "comm";
var RULESET = "rule";
var DECLARATION = "decl";
var IMPORT = "@import";
var KEYFRAMES = "@keyframes";
var LAYER = "@layer";
var abs$1 = Math.abs;
var from = String.fromCharCode;
function trim$2(value) {
return value.trim();
}
function replace(value, pattern4, replacement) {
return value.replace(pattern4, replacement);
}
function indexof(value, search, position2) {
return value.indexOf(search, position2);
}
function charat(value, index2) {
return value.charCodeAt(index2) | 0;
}
function substr(value, begin, end2) {
return value.slice(begin, end2);
}
function strlen(value) {
return value.length;
}
function sizeof(value) {
return value.length;
}
function append(value, array4) {
return array4.push(value), value;
}
var line = 1;
var column = 1;
var length$1 = 0;
var position$2 = 0;
var character = 0;
var characters = "";
function node(value, root, parent, type4, props, children, length2, siblings) {
return { value, root, parent, type: type4, props, children, line, column, length: length2, return: "", siblings };
}
function char() {
return character;
}
function prev() {
character = position$2 > 0 ? charat(characters, --position$2) : 0;
if (column--, character === 10)
column = 1, line--;
return character;
}
function next() {
character = position$2 < length$1 ? charat(characters, position$2++) : 0;
if (column++, character === 10)
column = 1, line++;
return character;
}
function peek() {
return charat(characters, position$2);
}
function caret() {
return position$2;
}
function slice$1(begin, end2) {
return substr(characters, begin, end2);
}
function token(type4) {
switch (type4) {
case 0:
case 9:
case 10:
case 13:
case 32:
return 5;
case 33:
case 43:
case 44:
case 47:
case 62:
case 64:
case 126:
case 59:
case 123:
case 125:
return 4;
case 58:
return 3;
case 34:
case 39:
case 40:
case 91:
return 2;
case 41:
case 93:
return 1;
}
return 0;
}
function alloc(value) {
return line = column = 1, length$1 = strlen(characters = value), position$2 = 0, [];
}
function dealloc(value) {
return characters = "", value;
}
function delimit(type4) {
return trim$2(slice$1(position$2 - 1, delimiter(type4 === 91 ? type4 + 2 : type4 === 40 ? type4 + 1 : type4)));
}
function whitespace$1(type4) {
while (character = peek())
if (character < 33)
next();
else
break;
return token(type4) > 2 || token(character) > 3 ? "" : " ";
}
function escaping(index2, count2) {
while (--count2 && next())
if (character < 48 || character > 102 || character > 57 && character < 65 || character > 70 && character < 97)
break;
return slice$1(index2, caret() + (count2 < 6 && peek() == 32 && next() == 32));
}
function delimiter(type4) {
while (next())
switch (character) {
case type4:
return position$2;
case 34:
case 39:
if (type4 !== 34 && type4 !== 39)
delimiter(character);
break;
case 40:
if (type4 === 41)
delimiter(type4);
break;
case 92:
next();
break;
}
return position$2;
}
function commenter(type4, index2) {
while (next())
if (type4 + character === 47 + 10)
break;
else if (type4 + character === 42 + 42 && peek() === 47)
break;
return "/*" + slice$1(index2, position$2 - 1) + "*" + from(type4 === 47 ? type4 : next());
}
function identifier(index2) {
while (!token(peek()))
next();
return slice$1(index2, position$2);
}
function compile(value) {
return dealloc(parse$2("", null, null, null, [""], value = alloc(value), 0, [0], value));
}
function parse$2(value, root, parent, rule, rules2, rulesets, pseudo, points2, declarations) {
var index2 = 0;
var offset2 = 0;
var length2 = pseudo;
var atrule = 0;
var property = 0;
var previous = 0;
var variable = 1;
var scanning = 1;
var ampersand = 1;
var character2 = 0;
var type4 = "";
var props = rules2;
var children = rulesets;
var reference = rule;
var characters2 = type4;
while (scanning)
switch (previous = character2, character2 = next()) {
case 40:
if (previous != 108 && charat(characters2, length2 - 1) == 58) {
if (indexof(characters2 += replace(delimit(character2), "&", "&\f"), "&\f", abs$1(index2 ? points2[index2 - 1] : 0)) != -1)
ampersand = -1;
break;
}
case 34:
case 39:
case 91:
characters2 += delimit(character2);
break;
case 9:
case 10:
case 13:
case 32:
characters2 += whitespace$1(previous);
break;
case 92:
characters2 += escaping(caret() - 1, 7);
continue;
case 47:
switch (peek()) {
case 42:
case 47:
append(comment(commenter(next(), caret()), root, parent, declarations), declarations);
if ((token(previous || 1) == 5 || token(peek() || 1) == 5) && strlen(characters2) && substr(characters2, -1, void 0) !== " ") characters2 += " ";
break;
default:
characters2 += "/";
}
break;
case 123 * variable:
points2[index2++] = strlen(characters2) * ampersand;
case 125 * variable:
case 59:
case 0:
switch (character2) {
case 0:
case 125:
scanning = 0;
case 59 + offset2:
if (ampersand == -1) characters2 = replace(characters2, /\f/g, "");
if (property > 0 && (strlen(characters2) - length2 || variable === 0 && previous === 47))
append(property > 32 ? declaration(characters2 + ";", rule, parent, length2 - 1, declarations) : declaration(replace(characters2, " ", "") + ";", rule, parent, length2 - 2, declarations), declarations);
break;
case 59:
characters2 += ";";
default:
append(reference = ruleset(characters2, root, parent, index2, offset2, rules2, points2, type4, props = [], children = [], length2, rulesets), rulesets);
if (character2 === 123)
if (offset2 === 0)
parse$2(characters2, root, reference, reference, props, rulesets, length2, points2, children);
else
switch (atrule === 99 && charat(characters2, 3) === 110 ? 100 : atrule) {
case 100:
case 108:
case 109:
case 115:
parse$2(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules2, points2, type4, rules2, props = [], length2, children), children), rules2, children, length2, points2, rule ? props : children);
break;
default:
parse$2(characters2, reference, reference, reference, [""], children, 0, points2, children);
}
}
index2 = offset2 = property = 0, variable = ampersand = 1, type4 = characters2 = "", length2 = pseudo;
break;
case 58:
length2 = 1 + strlen(characters2), property = previous;
default:
if (variable < 1) {
if (character2 == 123)
--variable;
else if (character2 == 125 && variable++ == 0 && prev() == 125)
continue;
}
switch (characters2 += from(character2), character2 * variable) {
case 38:
ampersand = offset2 > 0 ? 1 : (characters2 += "\f", -1);
break;
case 44:
points2[index2++] = (strlen(characters2) - 1) * ampersand, ampersand = 1;
break;
case 64:
if (peek() === 45)
characters2 += delimit(next());
atrule = peek(), offset2 = length2 = strlen(type4 = characters2 += identifier(caret())), character2++;
break;
case 45:
if (previous === 45 && strlen(characters2) == 2)
variable = 0;
}
}
return rulesets;
}
function ruleset(value, root, parent, index2, offset2, rules2, points2, type4, props, children, length2, siblings) {
var post = offset2 - 1;
var rule = offset2 === 0 ? rules2 : [""];
var size = sizeof(rule);
for (var i = 0, j = 0, k2 = 0; i < index2; ++i)
for (var x2 = 0, y2 = substr(value, post + 1, post = abs$1(j = points2[i])), z2 = value; x2 < size; ++x2)
if (z2 = trim$2(j > 0 ? rule[x2] + " " + y2 : replace(y2, /&\f/g, rule[x2])))
props[k2++] = z2;
return node(value, root, parent, offset2 === 0 ? RULESET : type4, props, children, length2, siblings);
}
function comment(value, root, parent, siblings) {
return node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0, siblings);
}
function declaration(value, root, parent, length2, siblings) {
return node(value, root, parent, DECLARATION, substr(value, 0, length2), substr(value, length2 + 1, -1), length2, siblings);
}
function serialize(children, callback) {
var output = "";
for (var i = 0; i < children.length; i++)
output += callback(children[i], i, children, callback) || "";
return output;
}
function stringify$2(element, index2, children, callback) {
switch (element.type) {
case LAYER:
if (element.children.length) break;
case IMPORT:
case DECLARATION:
return element.return = element.return || element.value;
case COMMENT:
return "";
case KEYFRAMES:
return element.return = element.value + "{" + serialize(element.children, callback) + "}";
case RULESET:
if (!strlen(element.value = element.props.join(","))) return "";
}
return strlen(children = serialize(element.children, callback)) ? element.return = element.value + "{" + children + "}" : "";
}
var ATTR_CACHE_MAP = "data-ant-cssinjs-cache-path";
var CSS_FILE_STYLE = "_FILE_STYLE__";
var cachePathMap;
var fromCSSFile = true;
function prepare$1() {
if (!cachePathMap) {
cachePathMap = {};
if (canUseDom()) {
var div2 = document.createElement("div");
div2.className = ATTR_CACHE_MAP;
div2.style.position = "fixed";
div2.style.visibility = "hidden";
div2.style.top = "-9999px";
document.body.appendChild(div2);
var content = getComputedStyle(div2).content || "";
content = content.replace(/^"/, "").replace(/"$/, "");
content.split(";").forEach(function(item) {
var _item$split = item.split(":"), _item$split2 = _slicedToArray(_item$split, 2), path = _item$split2[0], hash = _item$split2[1];
cachePathMap[path] = hash;
});
var inlineMapStyle = document.querySelector("style[".concat(ATTR_CACHE_MAP, "]"));
if (inlineMapStyle) {
var _inlineMapStyle$paren;
fromCSSFile = false;
(_inlineMapStyle$paren = inlineMapStyle.parentNode) === null || _inlineMapStyle$paren === void 0 || _inlineMapStyle$paren.removeChild(inlineMapStyle);
}
document.body.removeChild(div2);
}
}
}
function existPath(path) {
prepare$1();
return !!cachePathMap[path];
}
function getStyleAndHash(path) {
var hash = cachePathMap[path];
var styleStr = null;
if (hash && canUseDom()) {
if (fromCSSFile) {
styleStr = CSS_FILE_STYLE;
} else {
var _style = document.querySelector("style[".concat(ATTR_MARK, '="').concat(cachePathMap[path], '"]'));
if (_style) {
styleStr = _style.innerHTML;
} else {
delete cachePathMap[path];
}
}
}
return [styleStr, hash];
}
var SKIP_CHECK = "_skip_check_";
var MULTI_VALUE = "_multi_value_";
function normalizeStyle$1(styleStr) {
var serialized = serialize(compile(styleStr), stringify$2);
return serialized.replace(/\{%%%\:[^;];}/g, ";");
}
function isCompoundCSSProperty(value) {
return _typeof$2(value) === "object" && value && (SKIP_CHECK in value || MULTI_VALUE in value);
}
function injectSelectorHash(key, hashId, hashPriority) {
if (!hashId) {
return key;
}
var hashClassName = ".".concat(hashId);
var hashSelector = hashPriority === "low" ? ":where(".concat(hashClassName, ")") : hashClassName;
var keys2 = key.split(",").map(function(k2) {
var _firstPath$match;
var fullPath = k2.trim().split(/\s+/);
var firstPath = fullPath[0] || "";
var htmlElement = ((_firstPath$match = firstPath.match(/^\w+/)) === null || _firstPath$match === void 0 ? void 0 : _firstPath$match[0]) || "";
firstPath = "".concat(htmlElement).concat(hashSelector).concat(firstPath.slice(htmlElement.length));
return [firstPath].concat(_toConsumableArray(fullPath.slice(1))).join(" ");
});
return keys2.join(",");
}
var parseStyle = function parseStyle2(interpolation) {
var config = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
var _ref = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {
root: true,
parentSelectors: []
}, root = _ref.root, injectHash = _ref.injectHash, parentSelectors = _ref.parentSelectors;
var hashId = config.hashId, layer = config.layer;
config.path;
var hashPriority = config.hashPriority, _config$transformers = config.transformers, transformers = _config$transformers === void 0 ? [] : _config$transformers;
config.linters;
var styleStr = "";
var effectStyle = {};
function parseKeyframes(keyframes) {
var animationName = keyframes.getName(hashId);
if (!effectStyle[animationName]) {
var _parseStyle = parseStyle2(keyframes.style, config, {
root: false,
parentSelectors
}), _parseStyle2 = _slicedToArray(_parseStyle, 1), _parsedStr = _parseStyle2[0];
effectStyle[animationName] = "@keyframes ".concat(keyframes.getName(hashId)).concat(_parsedStr);
}
}
function flattenList(list) {
var fullList = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];
list.forEach(function(item) {
if (Array.isArray(item)) {
flattenList(item, fullList);
} else if (item) {
fullList.push(item);
}
});
return fullList;
}
var flattenStyleList = flattenList(Array.isArray(interpolation) ? interpolation : [interpolation]);
flattenStyleList.forEach(function(originStyle) {
var style2 = typeof originStyle === "string" && !root ? {} : originStyle;
if (typeof style2 === "string") {
styleStr += "".concat(style2, "\n");
} else if (style2._keyframe) {
parseKeyframes(style2);
} else {
var mergedStyle = transformers.reduce(function(prev2, trans) {
var _trans$visit;
return (trans === null || trans === void 0 || (_trans$visit = trans.visit) === null || _trans$visit === void 0 ? void 0 : _trans$visit.call(trans, prev2)) || prev2;
}, style2);
Object.keys(mergedStyle).forEach(function(key) {
var value = mergedStyle[key];
if (_typeof$2(value) === "object" && value && (key !== "animationName" || !value._keyframe) && !isCompoundCSSProperty(value)) {
var subInjectHash = false;
var mergedKey = key.trim();
var nextRoot = false;
if ((root || injectHash) && hashId) {
if (mergedKey.startsWith("@")) {
subInjectHash = true;
} else if (mergedKey === "&") {
mergedKey = injectSelectorHash("", hashId, hashPriority);
} else {
mergedKey = injectSelectorHash(key, hashId, hashPriority);
}
} else if (root && !hashId && (mergedKey === "&" || mergedKey === "")) {
mergedKey = "";
nextRoot = true;
}
var _parseStyle3 = parseStyle2(value, config, {
root: nextRoot,
injectHash: subInjectHash,
parentSelectors: [].concat(_toConsumableArray(parentSelectors), [mergedKey])
}), _parseStyle4 = _slicedToArray(_parseStyle3, 2), _parsedStr2 = _parseStyle4[0], childEffectStyle = _parseStyle4[1];
effectStyle = _objectSpread2$1(_objectSpread2$1({}, effectStyle), childEffectStyle);
styleStr += "".concat(mergedKey).concat(_parsedStr2);
} else {
let appendStyle = function(cssKey, cssValue) {
var styleName = cssKey.replace(/[A-Z]/g, function(match2) {
return "-".concat(match2.toLowerCase());
});
var formatValue = cssValue;
if (!unitlessKeys[cssKey] && typeof formatValue === "number" && formatValue !== 0) {
formatValue = "".concat(formatValue, "px");
}
if (cssKey === "animationName" && cssValue !== null && cssValue !== void 0 && cssValue._keyframe) {
parseKeyframes(cssValue);
formatValue = cssValue.getName(hashId);
}
styleStr += "".concat(styleName, ":").concat(formatValue, ";");
};
var _value;
var actualValue = (_value = value === null || value === void 0 ? void 0 : value.value) !== null && _value !== void 0 ? _value : value;
if (_typeof$2(value) === "object" && value !== null && value !== void 0 && value[MULTI_VALUE] && Array.isArray(actualValue)) {
actualValue.forEach(function(item) {
appendStyle(key, item);
});
} else {
appendStyle(key, actualValue);
}
}
});
}
});
if (!root) {
styleStr = "{".concat(styleStr, "}");
} else if (layer) {
styleStr = "@layer ".concat(layer.name, " {").concat(styleStr, "}");
if (layer.dependencies) {
effectStyle["@layer ".concat(layer.name)] = layer.dependencies.map(function(deps) {
return "@layer ".concat(deps, ", ").concat(layer.name, ";");
}).join("\n");
}
}
return [styleStr, effectStyle];
};
function uniqueHash(path, styleStr) {
return murmur2("".concat(path.join("%")).concat(styleStr));
}
function Empty$3() {
return null;
}
var STYLE_PREFIX = "style";
function useStyleRegister(info, styleFn) {
var token2 = info.token, path = info.path, hashId = info.hashId, layer = info.layer, nonce = info.nonce, clientOnly = info.clientOnly, _info$order = info.order, order = _info$order === void 0 ? 0 : _info$order;
var _React$useContext = reactExports.useContext(StyleContext), autoClear = _React$useContext.autoClear;
_React$useContext.mock;
var defaultCache = _React$useContext.defaultCache, hashPriority = _React$useContext.hashPriority, container = _React$useContext.container, ssrInline = _React$useContext.ssrInline, transformers = _React$useContext.transformers, linters = _React$useContext.linters, cache = _React$useContext.cache, enableLayer = _React$useContext.layer;
var tokenKey = token2._tokenKey;
var fullPath = [tokenKey];
if (enableLayer) {
fullPath.push("layer");
}
fullPath.push.apply(fullPath, _toConsumableArray(path));
var isMergedClientSide = isClientSide;
var _useGlobalCache = useGlobalCache(
STYLE_PREFIX,
fullPath,
// Create cache if needed
function() {
var cachePath = fullPath.join("|");
if (existPath(cachePath)) {
var _getStyleAndHash = getStyleAndHash(cachePath), _getStyleAndHash2 = _slicedToArray(_getStyleAndHash, 2), inlineCacheStyleStr = _getStyleAndHash2[0], styleHash = _getStyleAndHash2[1];
if (inlineCacheStyleStr) {
return [inlineCacheStyleStr, tokenKey, styleHash, {}, clientOnly, order];
}
}
var styleObj = styleFn();
var _parseStyle5 = parseStyle(styleObj, {
hashId,
hashPriority,
layer: enableLayer ? layer : void 0,
path: path.join("-"),
transformers,
linters
}), _parseStyle6 = _slicedToArray(_parseStyle5, 2), parsedStyle = _parseStyle6[0], effectStyle = _parseStyle6[1];
var styleStr = normalizeStyle$1(parsedStyle);
var styleId = uniqueHash(fullPath, styleStr);
return [styleStr, tokenKey, styleId, effectStyle, clientOnly, order];
},
// Remove cache if no need
function(_ref2, fromHMR) {
var _ref3 = _slicedToArray(_ref2, 3), styleId = _ref3[2];
if ((fromHMR || autoClear) && isClientSide) {
removeCSS(styleId, {
mark: ATTR_MARK
});
}
},
// Effect: Inject style here
function(_ref4) {
var _ref5 = _slicedToArray(_ref4, 4), styleStr = _ref5[0];
_ref5[1];
var styleId = _ref5[2], effectStyle = _ref5[3];
if (isMergedClientSide && styleStr !== CSS_FILE_STYLE) {
var mergedCSSConfig = {
mark: ATTR_MARK,
prepend: enableLayer ? false : "queue",
attachTo: container,
priority: order
};
var nonceStr = typeof nonce === "function" ? nonce() : nonce;
if (nonceStr) {
mergedCSSConfig.csp = {
nonce: nonceStr
};
}
var effectLayerKeys = [];
var effectRestKeys = [];
Object.keys(effectStyle).forEach(function(key) {
if (key.startsWith("@layer")) {
effectLayerKeys.push(key);
} else {
effectRestKeys.push(key);
}
});
effectLayerKeys.forEach(function(effectKey) {
updateCSS(normalizeStyle$1(effectStyle[effectKey]), "_layer-".concat(effectKey), _objectSpread2$1(_objectSpread2$1({}, mergedCSSConfig), {}, {
prepend: true
}));
});
var style2 = updateCSS(styleStr, styleId, mergedCSSConfig);
style2[CSS_IN_JS_INSTANCE] = cache.instanceId;
style2.setAttribute(ATTR_TOKEN, tokenKey);
effectRestKeys.forEach(function(effectKey) {
updateCSS(normalizeStyle$1(effectStyle[effectKey]), "_effect-".concat(effectKey), mergedCSSConfig);
});
}
}
), _useGlobalCache2 = _slicedToArray(_useGlobalCache, 3), cachedStyleStr = _useGlobalCache2[0], cachedTokenKey = _useGlobalCache2[1], cachedStyleId = _useGlobalCache2[2];
return function(node2) {
var styleNode;
if (!ssrInline || isMergedClientSide || !defaultCache) {
styleNode = /* @__PURE__ */ reactExports.createElement(Empty$3, null);
} else {
styleNode = /* @__PURE__ */ reactExports.createElement("style", _extends$2({}, _defineProperty(_defineProperty({}, ATTR_TOKEN, cachedTokenKey), ATTR_MARK, cachedStyleId), {
dangerouslySetInnerHTML: {
__html: cachedStyleStr
}
}));
}
return /* @__PURE__ */ reactExports.createElement(reactExports.Fragment, null, styleNode, node2);
};
}
var extract$1 = function extract22(cache, effectStyles, options) {
var _cache = _slicedToArray(cache, 6), styleStr = _cache[0], tokenKey = _cache[1], styleId = _cache[2], effectStyle = _cache[3], clientOnly = _cache[4], order = _cache[5];
var _ref7 = options || {}, plain = _ref7.plain;
if (clientOnly) {
return null;
}
var keyStyleText = styleStr;
var sharedAttrs = {
"data-rc-order": "prependQueue",
"data-rc-priority": "".concat(order)
};
keyStyleText = toStyleStr(styleStr, tokenKey, styleId, sharedAttrs, plain);
if (effectStyle) {
Object.keys(effectStyle).forEach(function(effectKey) {
if (!effectStyles[effectKey]) {
effectStyles[effectKey] = true;
var effectStyleStr = normalizeStyle$1(effectStyle[effectKey]);
var effectStyleHTML = toStyleStr(effectStyleStr, tokenKey, "_effect-".concat(effectKey), sharedAttrs, plain);
if (effectKey.startsWith("@layer")) {
keyStyleText = effectStyleHTML + keyStyleText;
} else {
keyStyleText += effectStyleHTML;
}
}
});
}
return [order, styleId, keyStyleText];
};
var CSS_VAR_PREFIX = "cssVar";
var useCSSVarRegister = function useCSSVarRegister2(config, fn) {
var key = config.key, prefix = config.prefix, unitless2 = config.unitless, ignore2 = config.ignore, token2 = config.token, _config$scope = config.scope, scope = _config$scope === void 0 ? "" : _config$scope;
var _useContext = reactExports.useContext(StyleContext), instanceId = _useContext.cache.instanceId, container = _useContext.container;
var tokenKey = token2._tokenKey;
var stylePath = [].concat(_toConsumableArray(config.path), [key, scope, tokenKey]);
var cache = useGlobalCache(CSS_VAR_PREFIX, stylePath, function() {
var originToken = fn();
var _transformToken = transformToken(originToken, key, {
prefix,
unitless: unitless2,
ignore: ignore2,
scope
}), _transformToken2 = _slicedToArray(_transformToken, 2), mergedToken = _transformToken2[0], cssVarsStr = _transformToken2[1];
var styleId = uniqueHash(stylePath, cssVarsStr);
return [mergedToken, cssVarsStr, styleId, key];
}, function(_ref) {
var _ref2 = _slicedToArray(_ref, 3), styleId = _ref2[2];
if (isClientSide) {
removeCSS(styleId, {
mark: ATTR_MARK
});
}
}, function(_ref3) {
var _ref4 = _slicedToArray(_ref3, 3), cssVarsStr = _ref4[1], styleId = _ref4[2];
if (!cssVarsStr) {
return;
}
var style2 = updateCSS(cssVarsStr, styleId, {
mark: ATTR_MARK,
prepend: "queue",
attachTo: container,
priority: -999
});
style2[CSS_IN_JS_INSTANCE] = instanceId;
style2.setAttribute(ATTR_TOKEN, key);
});
return cache;
};
var extract = function extract3(cache, effectStyles, options) {
var _cache = _slicedToArray(cache, 4), styleStr = _cache[1], styleId = _cache[2], cssVarKey = _cache[3];
var _ref5 = options || {}, plain = _ref5.plain;
if (!styleStr) {
return null;
}
var order = -999;
var sharedAttrs = {
"data-rc-order": "prependQueue",
"data-rc-priority": "".concat(order)
};
var styleText = toStyleStr(styleStr, cssVarKey, styleId, sharedAttrs, plain);
return [order, styleId, styleText];
};
_defineProperty(_defineProperty(_defineProperty({}, STYLE_PREFIX, extract$1), TOKEN_PREFIX, extract$2), CSS_VAR_PREFIX, extract);
var Keyframe = /* @__PURE__ */ function() {
function Keyframe2(name, style2) {
_classCallCheck(this, Keyframe2);
_defineProperty(this, "name", void 0);
_defineProperty(this, "style", void 0);
_defineProperty(this, "_keyframe", true);
this.name = name;
this.style = style2;
}
_createClass(Keyframe2, [{
key: "getName",
value: function getName2() {
var hashId = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "";
return hashId ? "".concat(hashId, "-").concat(this.name) : this.name;
}
}]);
return Keyframe2;
}();
function noSplit(list) {
list.notSplit = true;
return list;
}
({
// Inset
inset: ["top", "right", "bottom", "left"],
insetBlock: ["top", "bottom"],
insetBlockStart: ["top"],
insetBlockEnd: ["bottom"],
insetInline: ["left", "right"],
insetInlineStart: ["left"],
insetInlineEnd: ["right"],
// Margin
marginBlock: ["marginTop", "marginBottom"],
marginBlockStart: ["marginTop"],
marginBlockEnd: ["marginBottom"],
marginInline: ["marginLeft", "marginRight"],
marginInlineStart: ["marginLeft"],
marginInlineEnd: ["marginRight"],
// Padding
paddingBlock: ["paddingTop", "paddingBottom"],
paddingBlockStart: ["paddingTop"],
paddingBlockEnd: ["paddingBottom"],
paddingInline: ["paddingLeft", "paddingRight"],
paddingInlineStart: ["paddingLeft"],
paddingInlineEnd: ["paddingRight"],
// Border
borderBlock: noSplit(["borderTop", "borderBottom"]),
borderBlockStart: noSplit(["borderTop"]),
borderBlockEnd: noSplit(["borderBottom"]),
borderInline: noSplit(["borderLeft", "borderRight"]),
borderInlineStart: noSplit(["borderLeft"]),
borderInlineEnd: noSplit(["borderRight"]),
// Border width
borderBlockWidth: ["borderTopWidth", "borderBottomWidth"],
borderBlockStartWidth: ["borderTopWidth"],
borderBlockEndWidth: ["borderBottomWidth"],
borderInlineWidth: ["borderLeftWidth", "borderRightWidth"],
borderInlineStartWidth: ["borderLeftWidth"],
borderInlineEndWidth: ["borderRightWidth"],
// Border style
borderBlockStyle: ["borderTopStyle", "borderBottomStyle"],
borderBlockStartStyle: ["borderTopStyle"],
borderBlockEndStyle: ["borderBottomStyle"],
borderInlineStyle: ["borderLeftStyle", "borderRightStyle"],
borderInlineStartStyle: ["borderLeftStyle"],
borderInlineEndStyle: ["borderRightStyle"],
// Border color
borderBlockColor: ["borderTopColor", "borderBottomColor"],
borderBlockStartColor: ["borderTopColor"],
borderBlockEndColor: ["borderBottomColor"],
borderInlineColor: ["borderLeftColor", "borderRightColor"],
borderInlineStartColor: ["borderLeftColor"],
borderInlineEndColor: ["borderRightColor"],
// Border radius
borderStartStartRadius: ["borderTopLeftRadius"],
borderStartEndRadius: ["borderTopRightRadius"],
borderEndStartRadius: ["borderBottomLeftRadius"],
borderEndEndRadius: ["borderBottomRightRadius"]
});
function _toArray(r2) {
return _arrayWithHoles(r2) || _iterableToArray(r2) || _unsupportedIterableToArray(r2) || _nonIterableRest();
}
function get$1(entity, path) {
var current = entity;
for (var i = 0; i < path.length; i += 1) {
if (current === null || current === void 0) {
return void 0;
}
current = current[path[i]];
}
return current;
}
function internalSet(entity, paths, value, removeIfUndefined) {
if (!paths.length) {
return value;
}
var _paths = _toArray(paths), path = _paths[0], restPath = _paths.slice(1);
var clone3;
if (!entity && typeof path === "number") {
clone3 = [];
} else if (Array.isArray(entity)) {
clone3 = _toConsumableArray(entity);
} else {
clone3 = _objectSpread2$1({}, entity);
}
if (removeIfUndefined && value === void 0 && restPath.length === 1) {
delete clone3[path][restPath[0]];
} else {
clone3[path] = internalSet(clone3[path], restPath, value, removeIfUndefined);
}
return clone3;
}
function set$2(entity, paths, value) {
var removeIfUndefined = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : false;
if (paths.length && removeIfUndefined && value === void 0 && !get$1(entity, paths.slice(0, -1))) {
return entity;
}
return internalSet(entity, paths, value, removeIfUndefined);
}
function isObject$4(obj) {
return _typeof$2(obj) === "object" && obj !== null && Object.getPrototypeOf(obj) === Object.prototype;
}
function createEmpty(source) {
return Array.isArray(source) ? [] : {};
}
var keys$1 = typeof Reflect === "undefined" ? Object.keys : Reflect.ownKeys;
function merge$2() {
for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {
sources[_key] = arguments[_key];
}
var clone3 = createEmpty(sources[0]);
sources.forEach(function(src) {
function internalMerge(path, parentLoopSet) {
var loopSet = new Set(parentLoopSet);
var value = get$1(src, path);
var isArr = Array.isArray(value);
if (isArr || isObject$4(value)) {
if (!loopSet.has(value)) {
loopSet.add(value);
var originValue = get$1(clone3, path);
if (isArr) {
clone3 = set$2(clone3, path, []);
} else if (!originValue || _typeof$2(originValue) !== "object") {
clone3 = set$2(clone3, path, createEmpty(value));
}
keys$1(value).forEach(function(key) {
internalMerge([].concat(_toConsumableArray(path), [key]), loopSet);
});
}
} else {
clone3 = set$2(clone3, path, value);
}
}
internalMerge([]);
});
return clone3;
}
function noop$5() {
}
const WarningContext = /* @__PURE__ */ reactExports.createContext({});
const devUseWarning = () => {
const noopWarning = () => {
};
noopWarning.deprecated = noop$5;
return noopWarning;
};
const ValidateMessagesContext = /* @__PURE__ */ reactExports.createContext(void 0);
var locale$8 = {
// Options
items_per_page: "/ page",
jump_to: "Go to",
jump_to_confirm: "confirm",
page: "Page",
// Pagination
prev_page: "Previous Page",
next_page: "Next Page",
prev_5: "Previous 5 Pages",
next_5: "Next 5 Pages",
prev_3: "Previous 3 Pages",
next_3: "Next 3 Pages",
page_size: "Page Size"
};
var commonLocale = {
yearFormat: "YYYY",
dayFormat: "D",
cellMeridiemFormat: "A",
monthBeforeYear: true
};
var locale$7 = _objectSpread2$1(_objectSpread2$1({}, commonLocale), {}, {
locale: "en_US",
today: "Today",
now: "Now",
backToToday: "Back to today",
ok: "OK",
clear: "Clear",
month: "Month",
year: "Year",
timeSelect: "select time",
dateSelect: "select date",
weekSelect: "Choose a week",
monthSelect: "Choose a month",
yearSelect: "Choose a year",
decadeSelect: "Choose a decade",
dateFormat: "M/D/YYYY",
dateTimeFormat: "M/D/YYYY HH:mm:ss",
previousMonth: "Previous month (PageUp)",
nextMonth: "Next month (PageDown)",
previousYear: "Last year (Control + left)",
nextYear: "Next year (Control + right)",
previousDecade: "Last decade",
nextDecade: "Next decade",
previousCentury: "Last century",
nextCentury: "Next century"
});
const locale$6 = {
placeholder: "Select time",
rangePlaceholder: ["Start time", "End time"]
};
const locale$5 = {
lang: Object.assign({
placeholder: "Select date",
yearPlaceholder: "Select year",
quarterPlaceholder: "Select quarter",
monthPlaceholder: "Select month",
weekPlaceholder: "Select week",
rangePlaceholder: ["Start date", "End date"],
rangeYearPlaceholder: ["Start year", "End year"],
rangeQuarterPlaceholder: ["Start quarter", "End quarter"],
rangeMonthPlaceholder: ["Start month", "End month"],
rangeWeekPlaceholder: ["Start week", "End week"]
}, locale$7),
timePickerLocale: Object.assign({}, locale$6)
};
const typeTemplate$2 = "${label} is not a valid ${type}";
const localeValues$1 = {
locale: "en",
Pagination: locale$8,
DatePicker: locale$5,
TimePicker: locale$6,
Calendar: locale$5,
global: {
placeholder: "Please select"
},
Table: {
filterTitle: "Filter menu",
filterConfirm: "OK",
filterReset: "Reset",
filterEmptyText: "No filters",
filterCheckall: "Select all items",
filterSearchPlaceholder: "Search in filters",
emptyText: "No data",
selectAll: "Select current page",
selectInvert: "Invert current page",
selectNone: "Clear all data",
selectionAll: "Select all data",
sortTitle: "Sort",
expand: "Expand row",
collapse: "Collapse row",
triggerDesc: "Click to sort descending",
triggerAsc: "Click to sort ascending",
cancelSort: "Click to cancel sorting"
},
Tour: {
Next: "Next",
Previous: "Previous",
Finish: "Finish"
},
Modal: {
okText: "OK",
cancelText: "Cancel",
justOkText: "OK"
},
Popconfirm: {
okText: "OK",
cancelText: "Cancel"
},
Transfer: {
titles: ["", ""],
searchPlaceholder: "Search here",
itemUnit: "item",
itemsUnit: "items",
remove: "Remove",
selectCurrent: "Select current page",
removeCurrent: "Remove current page",
selectAll: "Select all data",
deselectAll: "Deselect all data",
removeAll: "Remove all data",
selectInvert: "Invert current page"
},
Upload: {
uploading: "Uploading...",
removeFile: "Remove file",
uploadError: "Upload error",
previewFile: "Preview file",
downloadFile: "Download file"
},
Empty: {
description: "No data"
},
Icon: {
icon: "icon"
},
Text: {
edit: "Edit",
copy: "Copy",
copied: "Copied",
expand: "Expand",
collapse: "Collapse"
},
Form: {
optional: "(optional)",
defaultValidateMessages: {
default: "Field validation error for ${label}",
required: "Please enter ${label}",
enum: "${label} must be one of [${enum}]",
whitespace: "${label} cannot be a blank character",
date: {
format: "${label} date format is invalid",
parse: "${label} cannot be converted to a date",
invalid: "${label} is an invalid date"
},
types: {
string: typeTemplate$2,
method: typeTemplate$2,
array: typeTemplate$2,
object: typeTemplate$2,
number: typeTemplate$2,
date: typeTemplate$2,
boolean: typeTemplate$2,
integer: typeTemplate$2,
float: typeTemplate$2,
regexp: typeTemplate$2,
email: typeTemplate$2,
url: typeTemplate$2,
hex: typeTemplate$2
},
string: {
len: "${label} must be ${len} characters",
min: "${label} must be at least ${min} characters",
max: "${label} must be up to ${max} characters",
range: "${label} must be between ${min}-${max} characters"
},
number: {
len: "${label} must be equal to ${len}",
min: "${label} must be minimum ${min}",
max: "${label} must be maximum ${max}",
range: "${label} must be between ${min}-${max}"
},
array: {
len: "Must be ${len} ${label}",
min: "At least ${min} ${label}",
max: "At most ${max} ${label}",
range: "The amount of ${label} must be between ${min}-${max}"
},
pattern: {
mismatch: "${label} does not match the pattern ${pattern}"
}
}
},
Image: {
preview: "Preview"
},
QRCode: {
expired: "QR code expired",
refresh: "Refresh",
scanned: "Scanned"
},
ColorPicker: {
presetEmpty: "Empty",
transparent: "Transparent",
singleColor: "Single",
gradientColor: "Gradient"
}
};
Object.assign({}, localeValues$1.Modal);
let localeList = [];
const generateLocale = () => localeList.reduce((merged, locale2) => Object.assign(Object.assign({}, merged), locale2), localeValues$1.Modal);
function changeConfirmLocale(newLocale) {
if (newLocale) {
const cloneLocale = Object.assign({}, newLocale);
localeList.push(cloneLocale);
generateLocale();
return () => {
localeList = localeList.filter((locale2) => locale2 !== cloneLocale);
generateLocale();
};
}
Object.assign({}, localeValues$1.Modal);
}
const LocaleContext = /* @__PURE__ */ reactExports.createContext(void 0);
const useLocale = (componentName, defaultLocale) => {
const fullLocale = reactExports.useContext(LocaleContext);
const getLocale = reactExports.useMemo(() => {
var _a2;
const locale2 = defaultLocale || localeValues$1[componentName];
const localeFromContext = (_a2 = fullLocale === null || fullLocale === void 0 ? void 0 : fullLocale[componentName]) !== null && _a2 !== void 0 ? _a2 : {};
return Object.assign(Object.assign({}, typeof locale2 === "function" ? locale2() : locale2), localeFromContext || {});
}, [componentName, defaultLocale, fullLocale]);
const getLocaleCode = reactExports.useMemo(() => {
const localeCode = fullLocale === null || fullLocale === void 0 ? void 0 : fullLocale.locale;
if ((fullLocale === null || fullLocale === void 0 ? void 0 : fullLocale.exist) && !localeCode) {
return localeValues$1.locale;
}
return localeCode;
}, [fullLocale]);
return [getLocale, getLocaleCode];
};
const ANT_MARK = "internalMark";
const LocaleProvider = (props) => {
const {
locale: locale2 = {},
children,
_ANT_MARK__
} = props;
reactExports.useEffect(() => {
const clearLocale = changeConfirmLocale(locale2 === null || locale2 === void 0 ? void 0 : locale2.Modal);
return clearLocale;
}, [locale2]);
const getMemoizedContextValue = reactExports.useMemo(() => Object.assign(Object.assign({}, locale2), {
exist: true
}), [locale2]);
return /* @__PURE__ */ reactExports.createElement(LocaleContext.Provider, {
value: getMemoizedContextValue
}, children);
};
const defaultPresetColors = {
blue: "#1677FF",
purple: "#722ED1",
cyan: "#13C2C2",
green: "#52C41A",
magenta: "#EB2F96",
/**
* @deprecated Use magenta instead
*/
pink: "#EB2F96",
red: "#F5222D",
orange: "#FA8C16",
yellow: "#FADB14",
volcano: "#FA541C",
geekblue: "#2F54EB",
gold: "#FAAD14",
lime: "#A0D911"
};
const seedToken = Object.assign(Object.assign({}, defaultPresetColors), {
// Color
colorPrimary: "#1677ff",
colorSuccess: "#52c41a",
colorWarning: "#faad14",
colorError: "#ff4d4f",
colorInfo: "#1677ff",
colorLink: "",
colorTextBase: "",
colorBgBase: "",
// Font
fontFamily: `-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial,
'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',
'Noto Color Emoji'`,
fontFamilyCode: `'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace`,
fontSize: 14,
// Line
lineWidth: 1,
lineType: "solid",
// Motion
motionUnit: 0.1,
motionBase: 0,
motionEaseOutCirc: "cubic-bezier(0.08, 0.82, 0.17, 1)",
motionEaseInOutCirc: "cubic-bezier(0.78, 0.14, 0.15, 0.86)",
motionEaseOut: "cubic-bezier(0.215, 0.61, 0.355, 1)",
motionEaseInOut: "cubic-bezier(0.645, 0.045, 0.355, 1)",
motionEaseOutBack: "cubic-bezier(0.12, 0.4, 0.29, 1.46)",
motionEaseInBack: "cubic-bezier(0.71, -0.46, 0.88, 0.6)",
motionEaseInQuint: "cubic-bezier(0.755, 0.05, 0.855, 0.06)",
motionEaseOutQuint: "cubic-bezier(0.23, 1, 0.32, 1)",
// Radius
borderRadius: 6,
// Size
sizeUnit: 4,
sizeStep: 4,
sizePopupArrow: 16,
// Control Base
controlHeight: 32,
// zIndex
zIndexBase: 0,
zIndexPopupBase: 1e3,
// Image
opacityImage: 1,
// Wireframe
wireframe: false,
// Motion
motion: true
});
function genColorMapToken(seed, _ref) {
let {
generateColorPalettes: generateColorPalettes2,
generateNeutralColorPalettes: generateNeutralColorPalettes2
} = _ref;
const {
colorSuccess: colorSuccessBase,
colorWarning: colorWarningBase,
colorError: colorErrorBase,
colorInfo: colorInfoBase,
colorPrimary: colorPrimaryBase,
colorBgBase,
colorTextBase
} = seed;
const primaryColors = generateColorPalettes2(colorPrimaryBase);
const successColors = generateColorPalettes2(colorSuccessBase);
const warningColors = generateColorPalettes2(colorWarningBase);
const errorColors = generateColorPalettes2(colorErrorBase);
const infoColors = generateColorPalettes2(colorInfoBase);
const neutralColors = generateNeutralColorPalettes2(colorBgBase, colorTextBase);
const colorLink = seed.colorLink || seed.colorInfo;
const linkColors = generateColorPalettes2(colorLink);
const colorErrorBgFilledHover = new TinyColor(errorColors[1]).mix(new TinyColor(errorColors[3]), 50).toHexString();
return Object.assign(Object.assign({}, neutralColors), {
colorPrimaryBg: primaryColors[1],
colorPrimaryBgHover: primaryColors[2],
colorPrimaryBorder: primaryColors[3],
colorPrimaryBorderHover: primaryColors[4],
colorPrimaryHover: primaryColors[5],
colorPrimary: primaryColors[6],
colorPrimaryActive: primaryColors[7],
colorPrimaryTextHover: primaryColors[8],
colorPrimaryText: primaryColors[9],
colorPrimaryTextActive: primaryColors[10],
colorSuccessBg: successColors[1],
colorSuccessBgHover: successColors[2],
colorSuccessBorder: successColors[3],
colorSuccessBorderHover: successColors[4],
colorSuccessHover: successColors[4],
colorSuccess: successColors[6],
colorSuccessActive: successColors[7],
colorSuccessTextHover: successColors[8],
colorSuccessText: successColors[9],
colorSuccessTextActive: successColors[10],
colorErrorBg: errorColors[1],
colorErrorBgHover: errorColors[2],
colorErrorBgFilledHover,
colorErrorBgActive: errorColors[3],
colorErrorBorder: errorColors[3],
colorErrorBorderHover: errorColors[4],
colorErrorHover: errorColors[5],
colorError: errorColors[6],
colorErrorActive: errorColors[7],
colorErrorTextHover: errorColors[8],
colorErrorText: errorColors[9],
colorErrorTextActive: errorColors[10],
colorWarningBg: warningColors[1],
colorWarningBgHover: warningColors[2],
colorWarningBorder: warningColors[3],
colorWarningBorderHover: warningColors[4],
colorWarningHover: warningColors[4],
colorWarning: warningColors[6],
colorWarningActive: warningColors[7],
colorWarningTextHover: warningColors[8],
colorWarningText: warningColors[9],
colorWarningTextActive: warningColors[10],
colorInfoBg: infoColors[1],
colorInfoBgHover: infoColors[2],
colorInfoBorder: infoColors[3],
colorInfoBorderHover: infoColors[4],
colorInfoHover: infoColors[4],
colorInfo: infoColors[6],
colorInfoActive: infoColors[7],
colorInfoTextHover: infoColors[8],
colorInfoText: infoColors[9],
colorInfoTextActive: infoColors[10],
colorLinkHover: linkColors[4],
colorLink: linkColors[6],
colorLinkActive: linkColors[7],
colorBgMask: new TinyColor("#000").setAlpha(0.45).toRgbString(),
colorWhite: "#fff"
});
}
const genRadius = (radiusBase) => {
let radiusLG = radiusBase;
let radiusSM = radiusBase;
let radiusXS = radiusBase;
let radiusOuter = radiusBase;
if (radiusBase < 6 && radiusBase >= 5) {
radiusLG = radiusBase + 1;
} else if (radiusBase < 16 && radiusBase >= 6) {
radiusLG = radiusBase + 2;
} else if (radiusBase >= 16) {
radiusLG = 16;
}
if (radiusBase < 7 && radiusBase >= 5) {
radiusSM = 4;
} else if (radiusBase < 8 && radiusBase >= 7) {
radiusSM = 5;
} else if (radiusBase < 14 && radiusBase >= 8) {
radiusSM = 6;
} else if (radiusBase < 16 && radiusBase >= 14) {
radiusSM = 7;
} else if (radiusBase >= 16) {
radiusSM = 8;
}
if (radiusBase < 6 && radiusBase >= 2) {
radiusXS = 1;
} else if (radiusBase >= 6) {
radiusXS = 2;
}
if (radiusBase > 4 && radiusBase < 8) {
radiusOuter = 4;
} else if (radiusBase >= 8) {
radiusOuter = 6;
}
return {
borderRadius: radiusBase,
borderRadiusXS: radiusXS,
borderRadiusSM: radiusSM,
borderRadiusLG: radiusLG,
borderRadiusOuter: radiusOuter
};
};
function genCommonMapToken(token2) {
const {
motionUnit,
motionBase,
borderRadius,
lineWidth
} = token2;
return Object.assign({
// motion
motionDurationFast: `${(motionBase + motionUnit).toFixed(1)}s`,
motionDurationMid: `${(motionBase + motionUnit * 2).toFixed(1)}s`,
motionDurationSlow: `${(motionBase + motionUnit * 3).toFixed(1)}s`,
// line
lineWidthBold: lineWidth + 1
}, genRadius(borderRadius));
}
const genControlHeight = (token2) => {
const {
controlHeight
} = token2;
return {
controlHeightSM: controlHeight * 0.75,
controlHeightXS: controlHeight * 0.5,
controlHeightLG: controlHeight * 1.25
};
};
function getLineHeight$1(fontSize) {
return (fontSize + 8) / fontSize;
}
function getFontSizes(base2) {
const fontSizes = new Array(10).fill(null).map((_, index2) => {
const i = index2 - 1;
const baseSize = base2 * Math.pow(Math.E, i / 5);
const intSize = index2 > 1 ? Math.floor(baseSize) : Math.ceil(baseSize);
return Math.floor(intSize / 2) * 2;
});
fontSizes[1] = base2;
return fontSizes.map((size) => ({
size,
lineHeight: getLineHeight$1(size)
}));
}
const genFontMapToken = (fontSize) => {
const fontSizePairs = getFontSizes(fontSize);
const fontSizes = fontSizePairs.map((pair) => pair.size);
const lineHeights = fontSizePairs.map((pair) => pair.lineHeight);
const fontSizeMD = fontSizes[1];
const fontSizeSM = fontSizes[0];
const fontSizeLG = fontSizes[2];
const lineHeight = lineHeights[1];
const lineHeightSM = lineHeights[0];
const lineHeightLG = lineHeights[2];
return {
fontSizeSM,
fontSize: fontSizeMD,
fontSizeLG,
fontSizeXL: fontSizes[3],
fontSizeHeading1: fontSizes[6],
fontSizeHeading2: fontSizes[5],
fontSizeHeading3: fontSizes[4],
fontSizeHeading4: fontSizes[3],
fontSizeHeading5: fontSizes[2],
lineHeight,
lineHeightLG,
lineHeightSM,
fontHeight: Math.round(lineHeight * fontSizeMD),
fontHeightLG: Math.round(lineHeightLG * fontSizeLG),
fontHeightSM: Math.round(lineHeightSM * fontSizeSM),
lineHeightHeading1: lineHeights[6],
lineHeightHeading2: lineHeights[5],
lineHeightHeading3: lineHeights[4],
lineHeightHeading4: lineHeights[3],
lineHeightHeading5: lineHeights[2]
};
};
function genSizeMapToken(token2) {
const {
sizeUnit,
sizeStep
} = token2;
return {
sizeXXL: sizeUnit * (sizeStep + 8),
// 48
sizeXL: sizeUnit * (sizeStep + 4),
// 32
sizeLG: sizeUnit * (sizeStep + 2),
// 24
sizeMD: sizeUnit * (sizeStep + 1),
// 20
sizeMS: sizeUnit * sizeStep,
// 16
size: sizeUnit * sizeStep,
// 16
sizeSM: sizeUnit * (sizeStep - 1),
// 12
sizeXS: sizeUnit * (sizeStep - 2),
// 8
sizeXXS: sizeUnit * (sizeStep - 3)
// 4
};
}
const getAlphaColor$1 = (baseColor, alpha) => new TinyColor(baseColor).setAlpha(alpha).toRgbString();
const getSolidColor = (baseColor, brightness) => {
const instance = new TinyColor(baseColor);
return instance.darken(brightness).toHexString();
};
const generateColorPalettes = (baseColor) => {
const colors = generate$1(baseColor);
return {
1: colors[0],
2: colors[1],
3: colors[2],
4: colors[3],
5: colors[4],
6: colors[5],
7: colors[6],
8: colors[4],
9: colors[5],
10: colors[6]
// 8: colors[7],
// 9: colors[8],
// 10: colors[9],
};
};
const generateNeutralColorPalettes = (bgBaseColor, textBaseColor) => {
const colorBgBase = bgBaseColor || "#fff";
const colorTextBase = textBaseColor || "#000";
return {
colorBgBase,
colorTextBase,
colorText: getAlphaColor$1(colorTextBase, 0.88),
colorTextSecondary: getAlphaColor$1(colorTextBase, 0.65),
colorTextTertiary: getAlphaColor$1(colorTextBase, 0.45),
colorTextQuaternary: getAlphaColor$1(colorTextBase, 0.25),
colorFill: getAlphaColor$1(colorTextBase, 0.15),
colorFillSecondary: getAlphaColor$1(colorTextBase, 0.06),
colorFillTertiary: getAlphaColor$1(colorTextBase, 0.04),
colorFillQuaternary: getAlphaColor$1(colorTextBase, 0.02),
colorBgSolid: getAlphaColor$1(colorTextBase, 1),
colorBgSolidHover: getAlphaColor$1(colorTextBase, 0.75),
colorBgSolidActive: getAlphaColor$1(colorTextBase, 0.95),
colorBgLayout: getSolidColor(colorBgBase, 4),
colorBgContainer: getSolidColor(colorBgBase, 0),
colorBgElevated: getSolidColor(colorBgBase, 0),
colorBgSpotlight: getAlphaColor$1(colorTextBase, 0.85),
colorBgBlur: "transparent",
colorBorder: getSolidColor(colorBgBase, 15),
colorBorderSecondary: getSolidColor(colorBgBase, 6)
};
};
function derivative(token2) {
presetPrimaryColors.pink = presetPrimaryColors.magenta;
presetPalettes.pink = presetPalettes.magenta;
const colorPalettes = Object.keys(defaultPresetColors).map((colorKey) => {
const colors = token2[colorKey] === presetPrimaryColors[colorKey] ? presetPalettes[colorKey] : generate$1(token2[colorKey]);
return new Array(10).fill(1).reduce((prev2, _, i) => {
prev2[`${colorKey}-${i + 1}`] = colors[i];
prev2[`${colorKey}${i + 1}`] = colors[i];
return prev2;
}, {});
}).reduce((prev2, cur) => {
prev2 = Object.assign(Object.assign({}, prev2), cur);
return prev2;
}, {});
return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, token2), colorPalettes), genColorMapToken(token2, {
generateColorPalettes,
generateNeutralColorPalettes
})), genFontMapToken(token2.fontSize)), genSizeMapToken(token2)), genControlHeight(token2)), genCommonMapToken(token2));
}
const defaultTheme = createTheme(derivative);
const defaultConfig = {
token: seedToken,
override: {
override: seedToken
},
hashed: true
};
const DesignTokenContext = /* @__PURE__ */ React.createContext(defaultConfig);
const defaultPrefixCls = "ant";
const defaultIconPrefixCls = "anticon";
const Variants = ["outlined", "borderless", "filled"];
const defaultGetPrefixCls = (suffixCls, customizePrefixCls) => {
if (customizePrefixCls) {
return customizePrefixCls;
}
return suffixCls ? `${defaultPrefixCls}-${suffixCls}` : defaultPrefixCls;
};
const ConfigContext = /* @__PURE__ */ reactExports.createContext({
// We provide a default function for Context without provider
getPrefixCls: defaultGetPrefixCls,
iconPrefixCls: defaultIconPrefixCls
});
const dynamicStyleMark = `-ant-${Date.now()}-${Math.random()}`;
function getStyle$2(globalPrefixCls2, theme2) {
const variables = {};
const formatColor = (color2, updater) => {
let clone3 = color2.clone();
clone3 = (updater === null || updater === void 0 ? void 0 : updater(clone3)) || clone3;
return clone3.toRgbString();
};
const fillColor = (colorVal, type4) => {
const baseColor = new TinyColor(colorVal);
const colorPalettes = generate$1(baseColor.toRgbString());
variables[`${type4}-color`] = formatColor(baseColor);
variables[`${type4}-color-disabled`] = colorPalettes[1];
variables[`${type4}-color-hover`] = colorPalettes[4];
variables[`${type4}-color-active`] = colorPalettes[6];
variables[`${type4}-color-outline`] = baseColor.clone().setAlpha(0.2).toRgbString();
variables[`${type4}-color-deprecated-bg`] = colorPalettes[0];
variables[`${type4}-color-deprecated-border`] = colorPalettes[2];
};
if (theme2.primaryColor) {
fillColor(theme2.primaryColor, "primary");
const primaryColor = new TinyColor(theme2.primaryColor);
const primaryColors = generate$1(primaryColor.toRgbString());
primaryColors.forEach((color2, index2) => {
variables[`primary-${index2 + 1}`] = color2;
});
variables["primary-color-deprecated-l-35"] = formatColor(primaryColor, (c2) => c2.lighten(35));
variables["primary-color-deprecated-l-20"] = formatColor(primaryColor, (c2) => c2.lighten(20));
variables["primary-color-deprecated-t-20"] = formatColor(primaryColor, (c2) => c2.tint(20));
variables["primary-color-deprecated-t-50"] = formatColor(primaryColor, (c2) => c2.tint(50));
variables["primary-color-deprecated-f-12"] = formatColor(primaryColor, (c2) => c2.setAlpha(c2.getAlpha() * 0.12));
const primaryActiveColor = new TinyColor(primaryColors[0]);
variables["primary-color-active-deprecated-f-30"] = formatColor(primaryActiveColor, (c2) => c2.setAlpha(c2.getAlpha() * 0.3));
variables["primary-color-active-deprecated-d-02"] = formatColor(primaryActiveColor, (c2) => c2.darken(2));
}
if (theme2.successColor) {
fillColor(theme2.successColor, "success");
}
if (theme2.warningColor) {
fillColor(theme2.warningColor, "warning");
}
if (theme2.errorColor) {
fillColor(theme2.errorColor, "error");
}
if (theme2.infoColor) {
fillColor(theme2.infoColor, "info");
}
const cssList = Object.keys(variables).map((key) => `--${globalPrefixCls2}-${key}: ${variables[key]};`);
return `
:root {
${cssList.join("\n")}
}
`.trim();
}
function registerTheme$1(globalPrefixCls2, theme2) {
const style2 = getStyle$2(globalPrefixCls2, theme2);
if (canUseDom()) {
updateCSS(style2, `${dynamicStyleMark}-dynamic-theme`);
}
}
const DisabledContext = /* @__PURE__ */ reactExports.createContext(false);
const DisabledContextProvider = (_ref) => {
let {
children,
disabled
} = _ref;
const originDisabled = reactExports.useContext(DisabledContext);
return /* @__PURE__ */ reactExports.createElement(DisabledContext.Provider, {
value: disabled !== null && disabled !== void 0 ? disabled : originDisabled
}, children);
};
const SizeContext = /* @__PURE__ */ reactExports.createContext(void 0);
const SizeContextProvider = (_ref) => {
let {
children,
size
} = _ref;
const originSize = reactExports.useContext(SizeContext);
return /* @__PURE__ */ reactExports.createElement(SizeContext.Provider, {
value: size || originSize
}, children);
};
function useConfig() {
const componentDisabled = reactExports.useContext(DisabledContext);
const componentSize = reactExports.useContext(SizeContext);
return {
componentDisabled,
componentSize
};
}
var AbstractCalculator = /* @__PURE__ */ _createClass(function AbstractCalculator2() {
_classCallCheck(this, AbstractCalculator2);
});
var CALC_UNIT = "CALC_UNIT";
var regexp$2 = new RegExp(CALC_UNIT, "g");
function unit(value) {
if (typeof value === "number") {
return "".concat(value).concat(CALC_UNIT);
}
return value;
}
var CSSCalculator = /* @__PURE__ */ function(_AbstractCalculator) {
_inherits(CSSCalculator2, _AbstractCalculator);
var _super = _createSuper(CSSCalculator2);
function CSSCalculator2(num, unitlessCssVar) {
var _this;
_classCallCheck(this, CSSCalculator2);
_this = _super.call(this);
_defineProperty(_assertThisInitialized(_this), "result", "");
_defineProperty(_assertThisInitialized(_this), "unitlessCssVar", void 0);
_defineProperty(_assertThisInitialized(_this), "lowPriority", void 0);
var numType = _typeof$2(num);
_this.unitlessCssVar = unitlessCssVar;
if (num instanceof CSSCalculator2) {
_this.result = "(".concat(num.result, ")");
} else if (numType === "number") {
_this.result = unit(num);
} else if (numType === "string") {
_this.result = num;
}
return _this;
}
_createClass(CSSCalculator2, [{
key: "add",
value: function add2(num) {
if (num instanceof CSSCalculator2) {
this.result = "".concat(this.result, " + ").concat(num.getResult());
} else if (typeof num === "number" || typeof num === "string") {
this.result = "".concat(this.result, " + ").concat(unit(num));
}
this.lowPriority = true;
return this;
}
}, {
key: "sub",
value: function sub2(num) {
if (num instanceof CSSCalculator2) {
this.result = "".concat(this.result, " - ").concat(num.getResult());
} else if (typeof num === "number" || typeof num === "string") {
this.result = "".concat(this.result, " - ").concat(unit(num));
}
this.lowPriority = true;
return this;
}
}, {
key: "mul",
value: function mul2(num) {
if (this.lowPriority) {
this.result = "(".concat(this.result, ")");
}
if (num instanceof CSSCalculator2) {
this.result = "".concat(this.result, " * ").concat(num.getResult(true));
} else if (typeof num === "number" || typeof num === "string") {
this.result = "".concat(this.result, " * ").concat(num);
}
this.lowPriority = false;
return this;
}
}, {
key: "div",
value: function div2(num) {
if (this.lowPriority) {
this.result = "(".concat(this.result, ")");
}
if (num instanceof CSSCalculator2) {
this.result = "".concat(this.result, " / ").concat(num.getResult(true));
} else if (typeof num === "number" || typeof num === "string") {
this.result = "".concat(this.result, " / ").concat(num);
}
this.lowPriority = false;
return this;
}
}, {
key: "getResult",
value: function getResult(force) {
return this.lowPriority || force ? "(".concat(this.result, ")") : this.result;
}
}, {
key: "equal",
value: function equal2(options) {
var _this2 = this;
var _ref = options || {}, cssUnit = _ref.unit;
var mergedUnit = true;
if (typeof cssUnit === "boolean") {
mergedUnit = cssUnit;
} else if (Array.from(this.unitlessCssVar).some(function(cssVar) {
return _this2.result.includes(cssVar);
})) {
mergedUnit = false;
}
this.result = this.result.replace(regexp$2, mergedUnit ? "px" : "");
if (typeof this.lowPriority !== "undefined") {
return "calc(".concat(this.result, ")");
}
return this.result;
}
}]);
return CSSCalculator2;
}(AbstractCalculator);
var NumCalculator = /* @__PURE__ */ function(_AbstractCalculator) {
_inherits(NumCalculator2, _AbstractCalculator);
var _super = _createSuper(NumCalculator2);
function NumCalculator2(num) {
var _this;
_classCallCheck(this, NumCalculator2);
_this = _super.call(this);
_defineProperty(_assertThisInitialized(_this), "result", 0);
if (num instanceof NumCalculator2) {
_this.result = num.result;
} else if (typeof num === "number") {
_this.result = num;
}
return _this;
}
_createClass(NumCalculator2, [{
key: "add",
value: function add2(num) {
if (num instanceof NumCalculator2) {
this.result += num.result;
} else if (typeof num === "number") {
this.result += num;
}
return this;
}
}, {
key: "sub",
value: function sub2(num) {
if (num instanceof NumCalculator2) {
this.result -= num.result;
} else if (typeof num === "number") {
this.result -= num;
}
return this;
}
}, {
key: "mul",
value: function mul2(num) {
if (num instanceof NumCalculator2) {
this.result *= num.result;
} else if (typeof num === "number") {
this.result *= num;
}
return this;
}
}, {
key: "div",
value: function div2(num) {
if (num instanceof NumCalculator2) {
this.result /= num.result;
} else if (typeof num === "number") {
this.result /= num;
}
return this;
}
}, {
key: "equal",
value: function equal2() {
return this.result;
}
}]);
return NumCalculator2;
}(AbstractCalculator);
var genCalc = function genCalc2(type4, unitlessCssVar) {
var Calculator = type4 === "css" ? CSSCalculator : NumCalculator;
return function(num) {
return new Calculator(num, unitlessCssVar);
};
};
var getCompVarPrefix = function getCompVarPrefix2(component, prefix) {
return "".concat([prefix, component.replace(/([A-Z]+)([A-Z][a-z]+)/g, "$1-$2").replace(/([a-z])([A-Z])/g, "$1-$2")].filter(Boolean).join("-"));
};
function useEvent(callback) {
var fnRef = reactExports.useRef();
fnRef.current = callback;
var memoFn = reactExports.useCallback(function() {
var _fnRef$current;
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return (_fnRef$current = fnRef.current) === null || _fnRef$current === void 0 ? void 0 : _fnRef$current.call.apply(_fnRef$current, [fnRef].concat(args));
}, []);
return memoFn;
}
function useSafeState(defaultValue) {
var destroyRef = reactExports.useRef(false);
var _React$useState = reactExports.useState(defaultValue), _React$useState2 = _slicedToArray(_React$useState, 2), value = _React$useState2[0], setValue = _React$useState2[1];
reactExports.useEffect(function() {
destroyRef.current = false;
return function() {
destroyRef.current = true;
};
}, []);
function safeSetState(updater, ignoreDestroy) {
if (ignoreDestroy && destroyRef.current) {
return;
}
setValue(updater);
}
return [value, safeSetState];
}
function hasValue$1(value) {
return value !== void 0;
}
function useMergedState(defaultStateValue, option) {
var _ref = option || {}, defaultValue = _ref.defaultValue, value = _ref.value, onChange = _ref.onChange, postState = _ref.postState;
var _useState = useSafeState(function() {
if (hasValue$1(value)) {
return value;
} else if (hasValue$1(defaultValue)) {
return typeof defaultValue === "function" ? defaultValue() : defaultValue;
} else {
return typeof defaultStateValue === "function" ? defaultStateValue() : defaultStateValue;
}
}), _useState2 = _slicedToArray(_useState, 2), innerValue = _useState2[0], setInnerValue = _useState2[1];
var mergedValue = value !== void 0 ? value : innerValue;
var postMergedValue = postState ? postState(mergedValue) : mergedValue;
var onChangeFn = useEvent(onChange);
var _useState3 = useSafeState([mergedValue]), _useState4 = _slicedToArray(_useState3, 2), prevValue = _useState4[0], setPrevValue = _useState4[1];
useLayoutUpdateEffect(function() {
var prev2 = prevValue[0];
if (innerValue !== prev2) {
onChangeFn(innerValue, prev2);
}
}, [prevValue]);
useLayoutUpdateEffect(function() {
if (!hasValue$1(value)) {
setInnerValue(value);
}
}, [value]);
var triggerChange = useEvent(function(updater, ignoreDestroy) {
setInnerValue(updater, ignoreDestroy);
setPrevValue([mergedValue], ignoreDestroy);
});
return [postMergedValue, triggerChange];
}
function getComponentToken(component, token2, defaultToken, options) {
var customToken = _objectSpread2$1({}, token2[component]);
if (options !== null && options !== void 0 && options.deprecatedTokens) {
var deprecatedTokens = options.deprecatedTokens;
deprecatedTokens.forEach(function(_ref) {
var _ref2 = _slicedToArray(_ref, 2), oldTokenKey = _ref2[0], newTokenKey = _ref2[1];
if (customToken !== null && customToken !== void 0 && customToken[oldTokenKey] || customToken !== null && customToken !== void 0 && customToken[newTokenKey]) {
var _customToken$newToken;
(_customToken$newToken = customToken[newTokenKey]) !== null && _customToken$newToken !== void 0 ? _customToken$newToken : customToken[newTokenKey] = customToken === null || customToken === void 0 ? void 0 : customToken[oldTokenKey];
}
});
}
var mergedToken = _objectSpread2$1(_objectSpread2$1({}, defaultToken), customToken);
Object.keys(mergedToken).forEach(function(key) {
if (mergedToken[key] === token2[key]) {
delete mergedToken[key];
}
});
return mergedToken;
}
var enableStatistic = typeof CSSINJS_STATISTIC !== "undefined";
var recording = true;
function merge$1() {
for (var _len = arguments.length, objs = new Array(_len), _key = 0; _key < _len; _key++) {
objs[_key] = arguments[_key];
}
if (!enableStatistic) {
return Object.assign.apply(Object, [{}].concat(objs));
}
recording = false;
var ret = {};
objs.forEach(function(obj) {
if (_typeof$2(obj) !== "object") {
return;
}
var keys2 = Object.keys(obj);
keys2.forEach(function(key) {
Object.defineProperty(ret, key, {
configurable: true,
enumerable: true,
get: function get2() {
return obj[key];
}
});
});
});
recording = true;
return ret;
}
var statistic$1 = {};
function noop$4() {
}
var statisticToken = function statisticToken2(token2) {
var tokenKeys2;
var proxy = token2;
var flush = noop$4;
if (enableStatistic && typeof Proxy !== "undefined") {
tokenKeys2 = /* @__PURE__ */ new Set();
proxy = new Proxy(token2, {
get: function get2(obj, prop) {
if (recording) {
var _tokenKeys;
(_tokenKeys = tokenKeys2) === null || _tokenKeys === void 0 || _tokenKeys.add(prop);
}
return obj[prop];
}
});
flush = function flush2(componentName, componentToken) {
var _statistic$componentN;
statistic$1[componentName] = {
global: Array.from(tokenKeys2),
component: _objectSpread2$1(_objectSpread2$1({}, (_statistic$componentN = statistic$1[componentName]) === null || _statistic$componentN === void 0 ? void 0 : _statistic$componentN.component), componentToken)
};
};
}
return {
token: proxy,
keys: tokenKeys2,
flush
};
};
function getDefaultComponentToken(component, token2, getDefaultToken) {
if (typeof getDefaultToken === "function") {
var _token$component;
return getDefaultToken(merge$1(token2, (_token$component = token2[component]) !== null && _token$component !== void 0 ? _token$component : {}));
}
return getDefaultToken !== null && getDefaultToken !== void 0 ? getDefaultToken : {};
}
function genMaxMin(type4) {
if (type4 === "js") {
return {
max: Math.max,
min: Math.min
};
}
return {
max: function max3() {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return "max(".concat(args.map(function(value) {
return unit$1(value);
}).join(","), ")");
},
min: function min3() {
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
}
return "min(".concat(args.map(function(value) {
return unit$1(value);
}).join(","), ")");
}
};
}
var BEAT_LIMIT = 1e3 * 60 * 10;
var ArrayKeyMap = /* @__PURE__ */ function() {
function ArrayKeyMap2() {
_classCallCheck(this, ArrayKeyMap2);
_defineProperty(this, "map", /* @__PURE__ */ new Map());
_defineProperty(this, "objectIDMap", /* @__PURE__ */ new WeakMap());
_defineProperty(this, "nextID", 0);
_defineProperty(this, "lastAccessBeat", /* @__PURE__ */ new Map());
_defineProperty(this, "accessBeat", 0);
}
_createClass(ArrayKeyMap2, [{
key: "set",
value: function set2(keys2, value) {
this.clear();
var compositeKey = this.getCompositeKey(keys2);
this.map.set(compositeKey, value);
this.lastAccessBeat.set(compositeKey, Date.now());
}
}, {
key: "get",
value: function get2(keys2) {
var compositeKey = this.getCompositeKey(keys2);
var cache = this.map.get(compositeKey);
this.lastAccessBeat.set(compositeKey, Date.now());
this.accessBeat += 1;
return cache;
}
}, {
key: "getCompositeKey",
value: function getCompositeKey(keys2) {
var _this = this;
var ids = keys2.map(function(key) {
if (key && _typeof$2(key) === "object") {
return "obj_".concat(_this.getObjectID(key));
}
return "".concat(_typeof$2(key), "_").concat(key);
});
return ids.join("|");
}
}, {
key: "getObjectID",
value: function getObjectID(obj) {
if (this.objectIDMap.has(obj)) {
return this.objectIDMap.get(obj);
}
var id2 = this.nextID;
this.objectIDMap.set(obj, id2);
this.nextID += 1;
return id2;
}
}, {
key: "clear",
value: function clear3() {
var _this2 = this;
if (this.accessBeat > 1e4) {
var now2 = Date.now();
this.lastAccessBeat.forEach(function(beat, key) {
if (now2 - beat > BEAT_LIMIT) {
_this2.map.delete(key);
_this2.lastAccessBeat.delete(key);
}
});
this.accessBeat = 0;
}
}
}]);
return ArrayKeyMap2;
}();
var uniqueMap = new ArrayKeyMap();
function useUniqueMemo(memoFn, deps) {
return React.useMemo(function() {
var cachedValue = uniqueMap.get(deps);
if (cachedValue) {
return cachedValue;
}
var newValue = memoFn();
uniqueMap.set(deps, newValue);
return newValue;
}, deps);
}
var useDefaultCSP = function useDefaultCSP2() {
return {};
};
function genStyleUtils(config) {
var _config$useCSP = config.useCSP, useCSP = _config$useCSP === void 0 ? useDefaultCSP : _config$useCSP, useToken2 = config.useToken, usePrefix = config.usePrefix, getResetStyles = config.getResetStyles, getCommonStyle = config.getCommonStyle, getCompUnitless = config.getCompUnitless;
function genStyleHooks2(component, styleFn, getDefaultToken, options) {
var componentName = Array.isArray(component) ? component[0] : component;
function prefixToken(key) {
return "".concat(String(componentName)).concat(key.slice(0, 1).toUpperCase()).concat(key.slice(1));
}
var originUnitless = (options === null || options === void 0 ? void 0 : options.unitless) || {};
var originCompUnitless = typeof getCompUnitless === "function" ? getCompUnitless(component) : {};
var compUnitless = _objectSpread2$1(_objectSpread2$1({}, originCompUnitless), {}, _defineProperty({}, prefixToken("zIndexPopup"), true));
Object.keys(originUnitless).forEach(function(key) {
compUnitless[prefixToken(key)] = originUnitless[key];
});
var mergedOptions = _objectSpread2$1(_objectSpread2$1({}, options), {}, {
unitless: compUnitless,
prefixToken
});
var useStyle2 = genComponentStyleHook2(component, styleFn, getDefaultToken, mergedOptions);
var useCSSVar = genCSSVarRegister(componentName, getDefaultToken, mergedOptions);
return function(prefixCls) {
var rootCls = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : prefixCls;
var _useStyle = useStyle2(prefixCls, rootCls), _useStyle2 = _slicedToArray(_useStyle, 2), hashId = _useStyle2[1];
var _useCSSVar = useCSSVar(rootCls), _useCSSVar2 = _slicedToArray(_useCSSVar, 2), wrapCSSVar = _useCSSVar2[0], cssVarCls = _useCSSVar2[1];
return [wrapCSSVar, hashId, cssVarCls];
};
}
function genCSSVarRegister(component, getDefaultToken, options) {
var compUnitless = options.unitless, _options$injectStyle = options.injectStyle, injectStyle = _options$injectStyle === void 0 ? true : _options$injectStyle, prefixToken = options.prefixToken, ignore2 = options.ignore;
var CSSVarRegister = function CSSVarRegister2(_ref) {
var rootCls = _ref.rootCls, _ref$cssVar = _ref.cssVar, cssVar = _ref$cssVar === void 0 ? {} : _ref$cssVar;
var _useToken = useToken2(), realToken = _useToken.realToken;
useCSSVarRegister({
path: [component],
prefix: cssVar.prefix,
key: cssVar.key,
unitless: compUnitless,
ignore: ignore2,
token: realToken,
scope: rootCls
}, function() {
var defaultToken = getDefaultComponentToken(component, realToken, getDefaultToken);
var componentToken = getComponentToken(component, realToken, defaultToken, {
deprecatedTokens: options === null || options === void 0 ? void 0 : options.deprecatedTokens
});
Object.keys(defaultToken).forEach(function(key) {
componentToken[prefixToken(key)] = componentToken[key];
delete componentToken[key];
});
return componentToken;
});
return null;
};
var useCSSVar = function useCSSVar2(rootCls) {
var _useToken2 = useToken2(), cssVar = _useToken2.cssVar;
return [function(node2) {
return injectStyle && cssVar ? /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(CSSVarRegister, {
rootCls,
cssVar,
component
}), node2) : node2;
}, cssVar === null || cssVar === void 0 ? void 0 : cssVar.key];
};
return useCSSVar;
}
function genComponentStyleHook2(componentName, styleFn, getDefaultToken) {
var options = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};
var cells = Array.isArray(componentName) ? componentName : [componentName, componentName];
var _cells = _slicedToArray(cells, 1), component = _cells[0];
var concatComponent = cells.join("-");
var mergedLayer = config.layer || {
name: "antd"
};
return function(prefixCls) {
var rootCls = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : prefixCls;
var _useToken3 = useToken2(), theme2 = _useToken3.theme, realToken = _useToken3.realToken, hashId = _useToken3.hashId, token2 = _useToken3.token, cssVar = _useToken3.cssVar;
var _usePrefix = usePrefix(), rootPrefixCls = _usePrefix.rootPrefixCls, iconPrefixCls = _usePrefix.iconPrefixCls;
var csp = useCSP();
var type4 = cssVar ? "css" : "js";
var calc = useUniqueMemo(function() {
var unitlessCssVar = /* @__PURE__ */ new Set();
if (cssVar) {
Object.keys(options.unitless || {}).forEach(function(key) {
unitlessCssVar.add(token2CSSVar(key, cssVar.prefix));
unitlessCssVar.add(token2CSSVar(key, getCompVarPrefix(component, cssVar.prefix)));
});
}
return genCalc(type4, unitlessCssVar);
}, [type4, component, cssVar === null || cssVar === void 0 ? void 0 : cssVar.prefix]);
var _genMaxMin = genMaxMin(type4), max3 = _genMaxMin.max, min3 = _genMaxMin.min;
var sharedConfig = {
theme: theme2,
token: token2,
hashId,
nonce: function nonce() {
return csp.nonce;
},
clientOnly: options.clientOnly,
layer: mergedLayer,
// antd is always at top of styles
order: options.order || -999
};
useStyleRegister(_objectSpread2$1(_objectSpread2$1({}, sharedConfig), {}, {
clientOnly: false,
path: ["Shared", rootPrefixCls]
}), function() {
return typeof getResetStyles === "function" ? getResetStyles(token2) : [];
});
var wrapSSR = useStyleRegister(_objectSpread2$1(_objectSpread2$1({}, sharedConfig), {}, {
path: [concatComponent, prefixCls, iconPrefixCls]
}), function() {
if (options.injectStyle === false) {
return [];
}
var _statisticToken = statisticToken(token2), proxyToken = _statisticToken.token, flush = _statisticToken.flush;
var defaultComponentToken = getDefaultComponentToken(component, realToken, getDefaultToken);
var componentCls = ".".concat(prefixCls);
var componentToken = getComponentToken(component, realToken, defaultComponentToken, {
deprecatedTokens: options.deprecatedTokens
});
if (cssVar && defaultComponentToken && _typeof$2(defaultComponentToken) === "object") {
Object.keys(defaultComponentToken).forEach(function(key) {
defaultComponentToken[key] = "var(".concat(token2CSSVar(key, getCompVarPrefix(component, cssVar.prefix)), ")");
});
}
var mergedToken = merge$1(proxyToken, {
componentCls,
prefixCls,
iconCls: ".".concat(iconPrefixCls),
antCls: ".".concat(rootPrefixCls),
calc,
// @ts-ignore
max: max3,
// @ts-ignore
min: min3
}, cssVar ? defaultComponentToken : componentToken);
var styleInterpolation = styleFn(mergedToken, {
hashId,
prefixCls,
rootPrefixCls,
iconPrefixCls
});
flush(component, componentToken);
var commonStyle = typeof getCommonStyle === "function" ? getCommonStyle(mergedToken, prefixCls, rootCls, options.resetFont) : null;
return [options.resetStyle === false ? null : commonStyle, styleInterpolation];
});
return [wrapSSR, hashId];
};
}
function genSubStyleComponent2(componentName, styleFn, getDefaultToken) {
var options = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};
var useStyle2 = genComponentStyleHook2(componentName, styleFn, getDefaultToken, _objectSpread2$1({
resetStyle: false,
// Sub Style should default after root one
order: -998
}, options));
var StyledComponent = function StyledComponent2(_ref2) {
var prefixCls = _ref2.prefixCls, _ref2$rootCls = _ref2.rootCls, rootCls = _ref2$rootCls === void 0 ? prefixCls : _ref2$rootCls;
useStyle2(prefixCls, rootCls);
return null;
};
return StyledComponent;
}
return {
genStyleHooks: genStyleHooks2,
genSubStyleComponent: genSubStyleComponent2,
genComponentStyleHook: genComponentStyleHook2
};
}
const PresetColors = ["blue", "purple", "cyan", "green", "magenta", "pink", "red", "orange", "yellow", "volcano", "geekblue", "lime", "gold"];
const version$3 = "5.21.3";
function isStableColor(color2) {
return color2 >= 0 && color2 <= 255;
}
function getAlphaColor(frontColor, backgroundColor2) {
const {
r: fR,
g: fG,
b: fB,
a: originAlpha
} = new TinyColor(frontColor).toRgb();
if (originAlpha < 1) {
return frontColor;
}
const {
r: bR,
g: bG,
b: bB
} = new TinyColor(backgroundColor2).toRgb();
for (let fA = 0.01; fA <= 1; fA += 0.01) {
const r2 = Math.round((fR - bR * (1 - fA)) / fA);
const g2 = Math.round((fG - bG * (1 - fA)) / fA);
const b2 = Math.round((fB - bB * (1 - fA)) / fA);
if (isStableColor(r2) && isStableColor(g2) && isStableColor(b2)) {
return new TinyColor({
r: r2,
g: g2,
b: b2,
a: Math.round(fA * 100) / 100
}).toRgbString();
}
}
return new TinyColor({
r: fR,
g: fG,
b: fB,
a: 1
}).toRgbString();
}
var __rest$y = function(s, e2) {
var t2 = {};
for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0) t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i])) t2[p2[i]] = s[p2[i]];
}
return t2;
};
function formatToken(derivativeToken) {
const {
override
} = derivativeToken, restToken = __rest$y(derivativeToken, ["override"]);
const overrideTokens = Object.assign({}, override);
Object.keys(seedToken).forEach((token2) => {
delete overrideTokens[token2];
});
const mergedToken = Object.assign(Object.assign({}, restToken), overrideTokens);
const screenXS = 480;
const screenSM = 576;
const screenMD = 768;
const screenLG = 992;
const screenXL = 1200;
const screenXXL = 1600;
if (mergedToken.motion === false) {
const fastDuration = "0s";
mergedToken.motionDurationFast = fastDuration;
mergedToken.motionDurationMid = fastDuration;
mergedToken.motionDurationSlow = fastDuration;
}
const aliasToken = Object.assign(Object.assign(Object.assign({}, mergedToken), {
// ============== Background ============== //
colorFillContent: mergedToken.colorFillSecondary,
colorFillContentHover: mergedToken.colorFill,
colorFillAlter: mergedToken.colorFillQuaternary,
colorBgContainerDisabled: mergedToken.colorFillTertiary,
// ============== Split ============== //
colorBorderBg: mergedToken.colorBgContainer,
colorSplit: getAlphaColor(mergedToken.colorBorderSecondary, mergedToken.colorBgContainer),
// ============== Text ============== //
colorTextPlaceholder: mergedToken.colorTextQuaternary,
colorTextDisabled: mergedToken.colorTextQuaternary,
colorTextHeading: mergedToken.colorText,
colorTextLabel: mergedToken.colorTextSecondary,
colorTextDescription: mergedToken.colorTextTertiary,
colorTextLightSolid: mergedToken.colorWhite,
colorHighlight: mergedToken.colorError,
colorBgTextHover: mergedToken.colorFillSecondary,
colorBgTextActive: mergedToken.colorFill,
colorIcon: mergedToken.colorTextTertiary,
colorIconHover: mergedToken.colorText,
colorErrorOutline: getAlphaColor(mergedToken.colorErrorBg, mergedToken.colorBgContainer),
colorWarningOutline: getAlphaColor(mergedToken.colorWarningBg, mergedToken.colorBgContainer),
// Font
fontSizeIcon: mergedToken.fontSizeSM,
// Line
lineWidthFocus: mergedToken.lineWidth * 3,
// Control
lineWidth: mergedToken.lineWidth,
controlOutlineWidth: mergedToken.lineWidth * 2,
// Checkbox size and expand icon size
controlInteractiveSize: mergedToken.controlHeight / 2,
controlItemBgHover: mergedToken.colorFillTertiary,
controlItemBgActive: mergedToken.colorPrimaryBg,
controlItemBgActiveHover: mergedToken.colorPrimaryBgHover,
controlItemBgActiveDisabled: mergedToken.colorFill,
controlTmpOutline: mergedToken.colorFillQuaternary,
controlOutline: getAlphaColor(mergedToken.colorPrimaryBg, mergedToken.colorBgContainer),
lineType: mergedToken.lineType,
borderRadius: mergedToken.borderRadius,
borderRadiusXS: mergedToken.borderRadiusXS,
borderRadiusSM: mergedToken.borderRadiusSM,
borderRadiusLG: mergedToken.borderRadiusLG,
fontWeightStrong: 600,
opacityLoading: 0.65,
linkDecoration: "none",
linkHoverDecoration: "none",
linkFocusDecoration: "none",
controlPaddingHorizontal: 12,
controlPaddingHorizontalSM: 8,
paddingXXS: mergedToken.sizeXXS,
paddingXS: mergedToken.sizeXS,
paddingSM: mergedToken.sizeSM,
padding: mergedToken.size,
paddingMD: mergedToken.sizeMD,
paddingLG: mergedToken.sizeLG,
paddingXL: mergedToken.sizeXL,
paddingContentHorizontalLG: mergedToken.sizeLG,
paddingContentVerticalLG: mergedToken.sizeMS,
paddingContentHorizontal: mergedToken.sizeMS,
paddingContentVertical: mergedToken.sizeSM,
paddingContentHorizontalSM: mergedToken.size,
paddingContentVerticalSM: mergedToken.sizeXS,
marginXXS: mergedToken.sizeXXS,
marginXS: mergedToken.sizeXS,
marginSM: mergedToken.sizeSM,
margin: mergedToken.size,
marginMD: mergedToken.sizeMD,
marginLG: mergedToken.sizeLG,
marginXL: mergedToken.sizeXL,
marginXXL: mergedToken.sizeXXL,
boxShadow: `
0 6px 16px 0 rgba(0, 0, 0, 0.08),
0 3px 6px -4px rgba(0, 0, 0, 0.12),
0 9px 28px 8px rgba(0, 0, 0, 0.05)
`,
boxShadowSecondary: `
0 6px 16px 0 rgba(0, 0, 0, 0.08),
0 3px 6px -4px rgba(0, 0, 0, 0.12),
0 9px 28px 8px rgba(0, 0, 0, 0.05)
`,
boxShadowTertiary: `
0 1px 2px 0 rgba(0, 0, 0, 0.03),
0 1px 6px -1px rgba(0, 0, 0, 0.02),
0 2px 4px 0 rgba(0, 0, 0, 0.02)
`,
screenXS,
screenXSMin: screenXS,
screenXSMax: screenSM - 1,
screenSM,
screenSMMin: screenSM,
screenSMMax: screenMD - 1,
screenMD,
screenMDMin: screenMD,
screenMDMax: screenLG - 1,
screenLG,
screenLGMin: screenLG,
screenLGMax: screenXL - 1,
screenXL,
screenXLMin: screenXL,
screenXLMax: screenXXL - 1,
screenXXL,
screenXXLMin: screenXXL,
boxShadowPopoverArrow: "2px 2px 5px rgba(0, 0, 0, 0.05)",
boxShadowCard: `
0 1px 2px -2px ${new TinyColor("rgba(0, 0, 0, 0.16)").toRgbString()},
0 3px 6px 0 ${new TinyColor("rgba(0, 0, 0, 0.12)").toRgbString()},
0 5px 12px 4px ${new TinyColor("rgba(0, 0, 0, 0.09)").toRgbString()}
`,
boxShadowDrawerRight: `
-6px 0 16px 0 rgba(0, 0, 0, 0.08),
-3px 0 6px -4px rgba(0, 0, 0, 0.12),
-9px 0 28px 8px rgba(0, 0, 0, 0.05)
`,
boxShadowDrawerLeft: `
6px 0 16px 0 rgba(0, 0, 0, 0.08),
3px 0 6px -4px rgba(0, 0, 0, 0.12),
9px 0 28px 8px rgba(0, 0, 0, 0.05)
`,
boxShadowDrawerUp: `
0 6px 16px 0 rgba(0, 0, 0, 0.08),
0 3px 6px -4px rgba(0, 0, 0, 0.12),
0 9px 28px 8px rgba(0, 0, 0, 0.05)
`,
boxShadowDrawerDown: `
0 -6px 16px 0 rgba(0, 0, 0, 0.08),
0 -3px 6px -4px rgba(0, 0, 0, 0.12),
0 -9px 28px 8px rgba(0, 0, 0, 0.05)
`,
boxShadowTabsOverflowLeft: "inset 10px 0 8px -8px rgba(0, 0, 0, 0.08)",
boxShadowTabsOverflowRight: "inset -10px 0 8px -8px rgba(0, 0, 0, 0.08)",
boxShadowTabsOverflowTop: "inset 0 10px 8px -8px rgba(0, 0, 0, 0.08)",
boxShadowTabsOverflowBottom: "inset 0 -10px 8px -8px rgba(0, 0, 0, 0.08)"
}), overrideTokens);
return aliasToken;
}
var __rest$x = function(s, e2) {
var t2 = {};
for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0) t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i])) t2[p2[i]] = s[p2[i]];
}
return t2;
};
const unitless = {
lineHeight: true,
lineHeightSM: true,
lineHeightLG: true,
lineHeightHeading1: true,
lineHeightHeading2: true,
lineHeightHeading3: true,
lineHeightHeading4: true,
lineHeightHeading5: true,
opacityLoading: true,
fontWeightStrong: true,
zIndexPopupBase: true,
zIndexBase: true,
opacityImage: true
};
const ignore = {
size: true,
sizeSM: true,
sizeLG: true,
sizeMD: true,
sizeXS: true,
sizeXXS: true,
sizeMS: true,
sizeXL: true,
sizeXXL: true,
sizeUnit: true,
sizeStep: true,
motionBase: true,
motionUnit: true
};
const preserve = {
screenXS: true,
screenXSMin: true,
screenXSMax: true,
screenSM: true,
screenSMMin: true,
screenSMMax: true,
screenMD: true,
screenMDMin: true,
screenMDMax: true,
screenLG: true,
screenLGMin: true,
screenLGMax: true,
screenXL: true,
screenXLMin: true,
screenXLMax: true,
screenXXL: true,
screenXXLMin: true
};
const getComputedToken = (originToken, overrideToken, theme2) => {
const derivativeToken = theme2.getDerivativeToken(originToken);
const {
override
} = overrideToken, components = __rest$x(overrideToken, ["override"]);
let mergedDerivativeToken = Object.assign(Object.assign({}, derivativeToken), {
override
});
mergedDerivativeToken = formatToken(mergedDerivativeToken);
if (components) {
Object.entries(components).forEach((_ref) => {
let [key, value] = _ref;
const {
theme: componentTheme
} = value, componentTokens = __rest$x(value, ["theme"]);
let mergedComponentToken = componentTokens;
if (componentTheme) {
mergedComponentToken = getComputedToken(Object.assign(Object.assign({}, mergedDerivativeToken), componentTokens), {
override: componentTokens
}, componentTheme);
}
mergedDerivativeToken[key] = mergedComponentToken;
});
}
return mergedDerivativeToken;
};
function useToken() {
const {
token: rootDesignToken,
hashed,
theme: theme2,
override,
cssVar
} = React.useContext(DesignTokenContext);
const salt = `${version$3}-${hashed || ""}`;
const mergedTheme = theme2 || defaultTheme;
const [token2, hashId, realToken] = useCacheToken(mergedTheme, [seedToken, rootDesignToken], {
salt,
override,
getComputedToken,
// formatToken will not be consumed after 1.15.0 with getComputedToken.
// But token will break if @ant-design/cssinjs is under 1.15.0 without it
formatToken,
cssVar: cssVar && {
prefix: cssVar.prefix,
key: cssVar.key,
unitless,
ignore,
preserve
}
});
return [mergedTheme, realToken, hashed ? hashId : "", token2, cssVar];
}
const textEllipsis = {
overflow: "hidden",
whiteSpace: "nowrap",
textOverflow: "ellipsis"
};
const resetComponent = function(token2) {
let needInheritFontFamily = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
return {
boxSizing: "border-box",
margin: 0,
padding: 0,
color: token2.colorText,
fontSize: token2.fontSize,
// font-variant: @font-variant-base;
lineHeight: token2.lineHeight,
listStyle: "none",
// font-feature-settings: @font-feature-settings-base;
fontFamily: needInheritFontFamily ? "inherit" : token2.fontFamily
};
};
const resetIcon = () => ({
display: "inline-flex",
alignItems: "center",
color: "inherit",
fontStyle: "normal",
lineHeight: 0,
textAlign: "center",
textTransform: "none",
// for SVG icon, see https://blog.prototypr.io/align-svg-icons-to-text-and-say-goodbye-to-font-icons-d44b3d7b26b4
verticalAlign: "-0.125em",
textRendering: "optimizeLegibility",
"-webkit-font-smoothing": "antialiased",
"-moz-osx-font-smoothing": "grayscale",
"> *": {
lineHeight: 1
},
svg: {
display: "inline-block"
}
});
const clearFix = () => ({
// https://github.com/ant-design/ant-design/issues/21301#issuecomment-583955229
"&::before": {
display: "table",
content: '""'
},
"&::after": {
// https://github.com/ant-design/ant-design/issues/21864
display: "table",
clear: "both",
content: '""'
}
});
const genLinkStyle = (token2) => ({
a: {
color: token2.colorLink,
textDecoration: token2.linkDecoration,
backgroundColor: "transparent",
// remove the gray background on active links in IE 10.
outline: "none",
cursor: "pointer",
transition: `color ${token2.motionDurationSlow}`,
"-webkit-text-decoration-skip": "objects",
// remove gaps in links underline in iOS 8+ and Safari 8+.
"&:hover": {
color: token2.colorLinkHover
},
"&:active": {
color: token2.colorLinkActive
},
"&:active, &:hover": {
textDecoration: token2.linkHoverDecoration,
outline: 0
},
// https://github.com/ant-design/ant-design/issues/22503
"&:focus": {
textDecoration: token2.linkFocusDecoration,
outline: 0
},
"&[disabled]": {
color: token2.colorTextDisabled,
cursor: "not-allowed"
}
}
});
const genCommonStyle = (token2, componentPrefixCls, rootCls, resetFont) => {
const prefixSelector = `[class^="${componentPrefixCls}"], [class*=" ${componentPrefixCls}"]`;
const rootPrefixSelector = rootCls ? `.${rootCls}` : prefixSelector;
const resetStyle = {
boxSizing: "border-box",
"&::before, &::after": {
boxSizing: "border-box"
}
};
let resetFontStyle = {};
if (resetFont !== false) {
resetFontStyle = {
fontFamily: token2.fontFamily,
fontSize: token2.fontSize
};
}
return {
[rootPrefixSelector]: Object.assign(Object.assign(Object.assign({}, resetFontStyle), resetStyle), {
[prefixSelector]: resetStyle
})
};
};
const genFocusOutline = (token2) => ({
outline: `${unit$1(token2.lineWidthFocus)} solid ${token2.colorPrimaryBorder}`,
outlineOffset: 1,
transition: "outline-offset 0s, outline 0s"
});
const genFocusStyle = (token2) => ({
"&:focus-visible": Object.assign({}, genFocusOutline(token2))
});
const operationUnit = (token2) => Object.assign(Object.assign({
// FIXME: This use link but is a operation unit. Seems should be a colorPrimary.
// And Typography use this to generate link style which should not do this.
color: token2.colorLink,
textDecoration: token2.linkDecoration,
outline: "none",
cursor: "pointer",
transition: `all ${token2.motionDurationSlow}`,
border: 0,
padding: 0,
background: "none",
userSelect: "none"
}, genFocusStyle(token2)), {
"&:focus, &:hover": {
color: token2.colorLinkHover
},
"&:active": {
color: token2.colorLinkActive
}
});
const useResetIconStyle = (iconPrefixCls, csp) => {
const [theme2, token2] = useToken();
return useStyleRegister({
theme: theme2,
token: token2,
hashId: "",
path: ["ant-design-icons", iconPrefixCls],
nonce: () => csp === null || csp === void 0 ? void 0 : csp.nonce,
layer: {
name: "antd"
}
}, () => [{
[`.${iconPrefixCls}`]: Object.assign(Object.assign({}, resetIcon()), {
[`.${iconPrefixCls} .${iconPrefixCls}-icon`]: {
display: "block"
}
})
}]);
};
const {
genStyleHooks,
genComponentStyleHook,
genSubStyleComponent
} = genStyleUtils({
usePrefix: () => {
const {
getPrefixCls,
iconPrefixCls
} = reactExports.useContext(ConfigContext);
const rootPrefixCls = getPrefixCls();
return {
rootPrefixCls,
iconPrefixCls
};
},
useToken: () => {
const [theme2, realToken, hashId, token2, cssVar] = useToken();
return {
theme: theme2,
realToken,
hashId,
token: token2,
cssVar
};
},
useCSP: () => {
const {
csp,
iconPrefixCls
} = reactExports.useContext(ConfigContext);
useResetIconStyle(iconPrefixCls, csp);
return csp !== null && csp !== void 0 ? csp : {};
},
getResetStyles: (token2) => [{
"&": genLinkStyle(token2)
}],
getCommonStyle: genCommonStyle,
getCompUnitless: () => unitless
});
function genPresetColor(token2, genCss) {
return PresetColors.reduce((prev2, colorKey) => {
const lightColor = token2[`${colorKey}1`];
const lightBorderColor = token2[`${colorKey}3`];
const darkColor = token2[`${colorKey}6`];
const textColor = token2[`${colorKey}7`];
return Object.assign(Object.assign({}, prev2), genCss(colorKey, {
lightColor,
lightBorderColor,
darkColor,
textColor
}));
}, {});
}
const fullClone$1 = Object.assign({}, React$1);
const {
useId: useId$2
} = fullClone$1;
const useEmptyId = () => "";
const useThemeKey = typeof useId$2 === "undefined" ? useEmptyId : useId$2;
function useTheme(theme2, parentTheme, config) {
var _a2;
devUseWarning();
const themeConfig = theme2 || {};
const parentThemeConfig = themeConfig.inherit === false || !parentTheme ? Object.assign(Object.assign({}, defaultConfig), {
hashed: (_a2 = parentTheme === null || parentTheme === void 0 ? void 0 : parentTheme.hashed) !== null && _a2 !== void 0 ? _a2 : defaultConfig.hashed,
cssVar: parentTheme === null || parentTheme === void 0 ? void 0 : parentTheme.cssVar
}) : parentTheme;
const themeKey = useThemeKey();
return useMemo(() => {
var _a22, _b2;
if (!theme2) {
return parentTheme;
}
const mergedComponents = Object.assign({}, parentThemeConfig.components);
Object.keys(theme2.components || {}).forEach((componentName) => {
mergedComponents[componentName] = Object.assign(Object.assign({}, mergedComponents[componentName]), theme2.components[componentName]);
});
const cssVarKey = `css-var-${themeKey.replace(/:/g, "")}`;
const mergedCssVar = ((_a22 = themeConfig.cssVar) !== null && _a22 !== void 0 ? _a22 : parentThemeConfig.cssVar) && Object.assign(Object.assign(Object.assign({
prefix: config === null || config === void 0 ? void 0 : config.prefixCls
}, typeof parentThemeConfig.cssVar === "object" ? parentThemeConfig.cssVar : {}), typeof themeConfig.cssVar === "object" ? themeConfig.cssVar : {}), {
key: typeof themeConfig.cssVar === "object" && ((_b2 = themeConfig.cssVar) === null || _b2 === void 0 ? void 0 : _b2.key) || cssVarKey
});
return Object.assign(Object.assign(Object.assign({}, parentThemeConfig), themeConfig), {
token: Object.assign(Object.assign({}, parentThemeConfig.token), themeConfig.token),
components: mergedComponents,
cssVar: mergedCssVar
});
}, [themeConfig, parentThemeConfig], (prev2, next2) => prev2.some((prevTheme, index2) => {
const nextTheme = next2[index2];
return !isEqual$1(prevTheme, nextTheme, true);
}));
}
var _excluded$I = ["children"];
var Context$2 = /* @__PURE__ */ reactExports.createContext({});
function MotionProvider(_ref) {
var children = _ref.children, props = _objectWithoutProperties(_ref, _excluded$I);
return /* @__PURE__ */ reactExports.createElement(Context$2.Provider, {
value: props
}, children);
}
var DomWrapper = /* @__PURE__ */ function(_React$Component) {
_inherits(DomWrapper2, _React$Component);
var _super = _createSuper(DomWrapper2);
function DomWrapper2() {
_classCallCheck(this, DomWrapper2);
return _super.apply(this, arguments);
}
_createClass(DomWrapper2, [{
key: "render",
value: function render2() {
return this.props.children;
}
}]);
return DomWrapper2;
}(reactExports.Component);
function useSyncState$1(defaultValue) {
var _React$useReducer = reactExports.useReducer(function(x2) {
return x2 + 1;
}, 0), _React$useReducer2 = _slicedToArray(_React$useReducer, 2), forceUpdate = _React$useReducer2[1];
var currentValueRef = reactExports.useRef(defaultValue);
var getValue2 = useEvent(function() {
return currentValueRef.current;
});
var setValue = useEvent(function(updater) {
currentValueRef.current = typeof updater === "function" ? updater(currentValueRef.current) : updater;
forceUpdate();
});
return [getValue2, setValue];
}
var STATUS_NONE = "none";
var STATUS_APPEAR = "appear";
var STATUS_ENTER = "enter";
var STATUS_LEAVE = "leave";
var STEP_NONE = "none";
var STEP_PREPARE = "prepare";
var STEP_START = "start";
var STEP_ACTIVE = "active";
var STEP_ACTIVATED = "end";
var STEP_PREPARED = "prepared";
function makePrefixMap(styleProp, eventName) {
var prefixes = {};
prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();
prefixes["Webkit".concat(styleProp)] = "webkit".concat(eventName);
prefixes["Moz".concat(styleProp)] = "moz".concat(eventName);
prefixes["ms".concat(styleProp)] = "MS".concat(eventName);
prefixes["O".concat(styleProp)] = "o".concat(eventName.toLowerCase());
return prefixes;
}
function getVendorPrefixes(domSupport, win) {
var prefixes = {
animationend: makePrefixMap("Animation", "AnimationEnd"),
transitionend: makePrefixMap("Transition", "TransitionEnd")
};
if (domSupport) {
if (!("AnimationEvent" in win)) {
delete prefixes.animationend.animation;
}
if (!("TransitionEvent" in win)) {
delete prefixes.transitionend.transition;
}
}
return prefixes;
}
var vendorPrefixes = getVendorPrefixes(canUseDom(), typeof window !== "undefined" ? window : {});
var style = {};
if (canUseDom()) {
var _document$createEleme = document.createElement("div");
style = _document$createEleme.style;
}
var prefixedEventNames = {};
function getVendorPrefixedEventName(eventName) {
if (prefixedEventNames[eventName]) {
return prefixedEventNames[eventName];
}
var prefixMap = vendorPrefixes[eventName];
if (prefixMap) {
var stylePropList = Object.keys(prefixMap);
var len2 = stylePropList.length;
for (var i = 0; i < len2; i += 1) {
var styleProp = stylePropList[i];
if (Object.prototype.hasOwnProperty.call(prefixMap, styleProp) && styleProp in style) {
prefixedEventNames[eventName] = prefixMap[styleProp];
return prefixedEventNames[eventName];
}
}
}
return "";
}
var internalAnimationEndName = getVendorPrefixedEventName("animationend");
var internalTransitionEndName = getVendorPrefixedEventName("transitionend");
var supportTransition = !!(internalAnimationEndName && internalTransitionEndName);
var animationEndName = internalAnimationEndName || "animationend";
var transitionEndName = internalTransitionEndName || "transitionend";
function getTransitionName$1(transitionName, transitionType) {
if (!transitionName) return null;
if (_typeof$2(transitionName) === "object") {
var type4 = transitionType.replace(/-\w/g, function(match2) {
return match2[1].toUpperCase();
});
return transitionName[type4];
}
return "".concat(transitionName, "-").concat(transitionType);
}
const useDomMotionEvents = function(onInternalMotionEnd) {
var cacheElementRef = reactExports.useRef();
function removeMotionEvents(element) {
if (element) {
element.removeEventListener(transitionEndName, onInternalMotionEnd);
element.removeEventListener(animationEndName, onInternalMotionEnd);
}
}
function patchMotionEvents(element) {
if (cacheElementRef.current && cacheElementRef.current !== element) {
removeMotionEvents(cacheElementRef.current);
}
if (element && element !== cacheElementRef.current) {
element.addEventListener(transitionEndName, onInternalMotionEnd);
element.addEventListener(animationEndName, onInternalMotionEnd);
cacheElementRef.current = element;
}
}
reactExports.useEffect(function() {
return function() {
removeMotionEvents(cacheElementRef.current);
};
}, []);
return [patchMotionEvents, removeMotionEvents];
};
var useIsomorphicLayoutEffect$1 = canUseDom() ? reactExports.useLayoutEffect : reactExports.useEffect;
const useNextFrame = function() {
var nextFrameRef = reactExports.useRef(null);
function cancelNextFrame() {
wrapperRaf.cancel(nextFrameRef.current);
}
function nextFrame(callback) {
var delay = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 2;
cancelNextFrame();
var nextFrameId = wrapperRaf(function() {
if (delay <= 1) {
callback({
isCanceled: function isCanceled() {
return nextFrameId !== nextFrameRef.current;
}
});
} else {
nextFrame(callback, delay - 1);
}
});
nextFrameRef.current = nextFrameId;
}
reactExports.useEffect(function() {
return function() {
cancelNextFrame();
};
}, []);
return [nextFrame, cancelNextFrame];
};
var FULL_STEP_QUEUE = [STEP_PREPARE, STEP_START, STEP_ACTIVE, STEP_ACTIVATED];
var SIMPLE_STEP_QUEUE = [STEP_PREPARE, STEP_PREPARED];
var SkipStep = false;
var DoStep = true;
function isActive(step) {
return step === STEP_ACTIVE || step === STEP_ACTIVATED;
}
const useStepQueue = function(status, prepareOnly, callback) {
var _useState = useSafeState(STEP_NONE), _useState2 = _slicedToArray(_useState, 2), step = _useState2[0], setStep = _useState2[1];
var _useNextFrame = useNextFrame(), _useNextFrame2 = _slicedToArray(_useNextFrame, 2), nextFrame = _useNextFrame2[0], cancelNextFrame = _useNextFrame2[1];
function startQueue() {
setStep(STEP_PREPARE, true);
}
var STEP_QUEUE = prepareOnly ? SIMPLE_STEP_QUEUE : FULL_STEP_QUEUE;
useIsomorphicLayoutEffect$1(function() {
if (step !== STEP_NONE && step !== STEP_ACTIVATED) {
var index2 = STEP_QUEUE.indexOf(step);
var nextStep = STEP_QUEUE[index2 + 1];
var result = callback(step);
if (result === SkipStep) {
setStep(nextStep, true);
} else if (nextStep) {
nextFrame(function(info) {
function doNext() {
if (info.isCanceled()) return;
setStep(nextStep, true);
}
if (result === true) {
doNext();
} else {
Promise.resolve(result).then(doNext);
}
});
}
}
}, [status, step]);
reactExports.useEffect(function() {
return function() {
cancelNextFrame();
};
}, []);
return [startQueue, step];
};
function useStatus(supportMotion, visible, getElement, _ref) {
var _ref$motionEnter = _ref.motionEnter, motionEnter = _ref$motionEnter === void 0 ? true : _ref$motionEnter, _ref$motionAppear = _ref.motionAppear, motionAppear = _ref$motionAppear === void 0 ? true : _ref$motionAppear, _ref$motionLeave = _ref.motionLeave, motionLeave = _ref$motionLeave === void 0 ? true : _ref$motionLeave, motionDeadline = _ref.motionDeadline, motionLeaveImmediately = _ref.motionLeaveImmediately, onAppearPrepare = _ref.onAppearPrepare, onEnterPrepare = _ref.onEnterPrepare, onLeavePrepare = _ref.onLeavePrepare, onAppearStart = _ref.onAppearStart, onEnterStart = _ref.onEnterStart, onLeaveStart = _ref.onLeaveStart, onAppearActive = _ref.onAppearActive, onEnterActive = _ref.onEnterActive, onLeaveActive = _ref.onLeaveActive, onAppearEnd = _ref.onAppearEnd, onEnterEnd = _ref.onEnterEnd, onLeaveEnd = _ref.onLeaveEnd, onVisibleChanged = _ref.onVisibleChanged;
var _useState = useSafeState(), _useState2 = _slicedToArray(_useState, 2), asyncVisible = _useState2[0], setAsyncVisible = _useState2[1];
var _useSyncState = useSyncState$1(STATUS_NONE), _useSyncState2 = _slicedToArray(_useSyncState, 2), getStatus = _useSyncState2[0], setStatus = _useSyncState2[1];
var _useState3 = useSafeState(null), _useState4 = _slicedToArray(_useState3, 2), style2 = _useState4[0], setStyle = _useState4[1];
var currentStatus = getStatus();
var mountedRef = reactExports.useRef(false);
var deadlineRef = reactExports.useRef(null);
function getDomElement() {
return getElement();
}
var activeRef = reactExports.useRef(false);
function updateMotionEndStatus() {
setStatus(STATUS_NONE);
setStyle(null, true);
}
var onInternalMotionEnd = useEvent(function(event) {
var status = getStatus();
if (status === STATUS_NONE) {
return;
}
var element = getDomElement();
if (event && !event.deadline && event.target !== element) {
return;
}
var currentActive = activeRef.current;
var canEnd;
if (status === STATUS_APPEAR && currentActive) {
canEnd = onAppearEnd === null || onAppearEnd === void 0 ? void 0 : onAppearEnd(element, event);
} else if (status === STATUS_ENTER && currentActive) {
canEnd = onEnterEnd === null || onEnterEnd === void 0 ? void 0 : onEnterEnd(element, event);
} else if (status === STATUS_LEAVE && currentActive) {
canEnd = onLeaveEnd === null || onLeaveEnd === void 0 ? void 0 : onLeaveEnd(element, event);
}
if (currentActive && canEnd !== false) {
updateMotionEndStatus();
}
});
var _useDomMotionEvents = useDomMotionEvents(onInternalMotionEnd), _useDomMotionEvents2 = _slicedToArray(_useDomMotionEvents, 1), patchMotionEvents = _useDomMotionEvents2[0];
var getEventHandlers = function getEventHandlers2(targetStatus) {
switch (targetStatus) {
case STATUS_APPEAR:
return _defineProperty(_defineProperty(_defineProperty({}, STEP_PREPARE, onAppearPrepare), STEP_START, onAppearStart), STEP_ACTIVE, onAppearActive);
case STATUS_ENTER:
return _defineProperty(_defineProperty(_defineProperty({}, STEP_PREPARE, onEnterPrepare), STEP_START, onEnterStart), STEP_ACTIVE, onEnterActive);
case STATUS_LEAVE:
return _defineProperty(_defineProperty(_defineProperty({}, STEP_PREPARE, onLeavePrepare), STEP_START, onLeaveStart), STEP_ACTIVE, onLeaveActive);
default:
return {};
}
};
var eventHandlers = reactExports.useMemo(function() {
return getEventHandlers(currentStatus);
}, [currentStatus]);
var _useStepQueue = useStepQueue(currentStatus, !supportMotion, function(newStep) {
if (newStep === STEP_PREPARE) {
var onPrepare = eventHandlers[STEP_PREPARE];
if (!onPrepare) {
return SkipStep;
}
return onPrepare(getDomElement());
}
if (step in eventHandlers) {
var _eventHandlers$step;
setStyle(((_eventHandlers$step = eventHandlers[step]) === null || _eventHandlers$step === void 0 ? void 0 : _eventHandlers$step.call(eventHandlers, getDomElement(), null)) || null);
}
if (step === STEP_ACTIVE && currentStatus !== STATUS_NONE) {
patchMotionEvents(getDomElement());
if (motionDeadline > 0) {
clearTimeout(deadlineRef.current);
deadlineRef.current = setTimeout(function() {
onInternalMotionEnd({
deadline: true
});
}, motionDeadline);
}
}
if (step === STEP_PREPARED) {
updateMotionEndStatus();
}
return DoStep;
}), _useStepQueue2 = _slicedToArray(_useStepQueue, 2), startStep = _useStepQueue2[0], step = _useStepQueue2[1];
var active = isActive(step);
activeRef.current = active;
useIsomorphicLayoutEffect$1(function() {
setAsyncVisible(visible);
var isMounted = mountedRef.current;
mountedRef.current = true;
var nextStatus;
if (!isMounted && visible && motionAppear) {
nextStatus = STATUS_APPEAR;
}
if (isMounted && visible && motionEnter) {
nextStatus = STATUS_ENTER;
}
if (isMounted && !visible && motionLeave || !isMounted && motionLeaveImmediately && !visible && motionLeave) {
nextStatus = STATUS_LEAVE;
}
var nextEventHandlers = getEventHandlers(nextStatus);
if (nextStatus && (supportMotion || nextEventHandlers[STEP_PREPARE])) {
setStatus(nextStatus);
startStep();
} else {
setStatus(STATUS_NONE);
}
}, [visible]);
reactExports.useEffect(function() {
if (
// Cancel appear
currentStatus === STATUS_APPEAR && !motionAppear || // Cancel enter
currentStatus === STATUS_ENTER && !motionEnter || // Cancel leave
currentStatus === STATUS_LEAVE && !motionLeave
) {
setStatus(STATUS_NONE);
}
}, [motionAppear, motionEnter, motionLeave]);
reactExports.useEffect(function() {
return function() {
mountedRef.current = false;
clearTimeout(deadlineRef.current);
};
}, []);
var firstMountChangeRef = reactExports.useRef(false);
reactExports.useEffect(function() {
if (asyncVisible) {
firstMountChangeRef.current = true;
}
if (asyncVisible !== void 0 && currentStatus === STATUS_NONE) {
if (firstMountChangeRef.current || asyncVisible) {
onVisibleChanged === null || onVisibleChanged === void 0 || onVisibleChanged(asyncVisible);
}
firstMountChangeRef.current = true;
}
}, [asyncVisible, currentStatus]);
var mergedStyle = style2;
if (eventHandlers[STEP_PREPARE] && step === STEP_START) {
mergedStyle = _objectSpread2$1({
transition: "none"
}, mergedStyle);
}
return [currentStatus, step, mergedStyle, asyncVisible !== null && asyncVisible !== void 0 ? asyncVisible : visible];
}
function genCSSMotion(config) {
var transitionSupport = config;
if (_typeof$2(config) === "object") {
transitionSupport = config.transitionSupport;
}
function isSupportTransition(props, contextMotion) {
return !!(props.motionName && transitionSupport && contextMotion !== false);
}
var CSSMotion2 = /* @__PURE__ */ reactExports.forwardRef(function(props, ref) {
var _props$visible = props.visible, visible = _props$visible === void 0 ? true : _props$visible, _props$removeOnLeave = props.removeOnLeave, removeOnLeave = _props$removeOnLeave === void 0 ? true : _props$removeOnLeave, forceRender = props.forceRender, children = props.children, motionName = props.motionName, leavedClassName = props.leavedClassName, eventProps = props.eventProps;
var _React$useContext = reactExports.useContext(Context$2), contextMotion = _React$useContext.motion;
var supportMotion = isSupportTransition(props, contextMotion);
var nodeRef = reactExports.useRef();
var wrapperNodeRef = reactExports.useRef();
function getDomElement() {
try {
return nodeRef.current instanceof HTMLElement ? nodeRef.current : findDOMNode(wrapperNodeRef.current);
} catch (e2) {
return null;
}
}
var _useStatus = useStatus(supportMotion, visible, getDomElement, props), _useStatus2 = _slicedToArray(_useStatus, 4), status = _useStatus2[0], statusStep = _useStatus2[1], statusStyle = _useStatus2[2], mergedVisible = _useStatus2[3];
var renderedRef = reactExports.useRef(mergedVisible);
if (mergedVisible) {
renderedRef.current = true;
}
var setNodeRef = reactExports.useCallback(function(node2) {
nodeRef.current = node2;
fillRef(ref, node2);
}, [ref]);
var motionChildren;
var mergedProps = _objectSpread2$1(_objectSpread2$1({}, eventProps), {}, {
visible
});
if (!children) {
motionChildren = null;
} else if (status === STATUS_NONE) {
if (mergedVisible) {
motionChildren = children(_objectSpread2$1({}, mergedProps), setNodeRef);
} else if (!removeOnLeave && renderedRef.current && leavedClassName) {
motionChildren = children(_objectSpread2$1(_objectSpread2$1({}, mergedProps), {}, {
className: leavedClassName
}), setNodeRef);
} else if (forceRender || !removeOnLeave && !leavedClassName) {
motionChildren = children(_objectSpread2$1(_objectSpread2$1({}, mergedProps), {}, {
style: {
display: "none"
}
}), setNodeRef);
} else {
motionChildren = null;
}
} else {
var statusSuffix;
if (statusStep === STEP_PREPARE) {
statusSuffix = "prepare";
} else if (isActive(statusStep)) {
statusSuffix = "active";
} else if (statusStep === STEP_START) {
statusSuffix = "start";
}
var motionCls = getTransitionName$1(motionName, "".concat(status, "-").concat(statusSuffix));
motionChildren = children(_objectSpread2$1(_objectSpread2$1({}, mergedProps), {}, {
className: cls(getTransitionName$1(motionName, status), _defineProperty(_defineProperty({}, motionCls, motionCls && statusSuffix), motionName, typeof motionName === "string")),
style: statusStyle
}), setNodeRef);
}
if (/* @__PURE__ */ reactExports.isValidElement(motionChildren) && supportRef(motionChildren)) {
var _ref = motionChildren, originNodeRef = _ref.ref;
if (!originNodeRef) {
motionChildren = /* @__PURE__ */ reactExports.cloneElement(motionChildren, {
ref: setNodeRef
});
}
}
return /* @__PURE__ */ reactExports.createElement(DomWrapper, {
ref: wrapperNodeRef
}, motionChildren);
});
CSSMotion2.displayName = "CSSMotion";
return CSSMotion2;
}
const CSSMotion = genCSSMotion(supportTransition);
var STATUS_ADD = "add";
var STATUS_KEEP = "keep";
var STATUS_REMOVE = "remove";
var STATUS_REMOVED = "removed";
function wrapKeyToObject(key) {
var keyObj;
if (key && _typeof$2(key) === "object" && "key" in key) {
keyObj = key;
} else {
keyObj = {
key
};
}
return _objectSpread2$1(_objectSpread2$1({}, keyObj), {}, {
key: String(keyObj.key)
});
}
function parseKeys() {
var keys2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
return keys2.map(wrapKeyToObject);
}
function diffKeys() {
var prevKeys = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
var currentKeys = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];
var list = [];
var currentIndex = 0;
var currentLen = currentKeys.length;
var prevKeyObjects = parseKeys(prevKeys);
var currentKeyObjects = parseKeys(currentKeys);
prevKeyObjects.forEach(function(keyObj) {
var hit = false;
for (var i = currentIndex; i < currentLen; i += 1) {
var currentKeyObj = currentKeyObjects[i];
if (currentKeyObj.key === keyObj.key) {
if (currentIndex < i) {
list = list.concat(currentKeyObjects.slice(currentIndex, i).map(function(obj) {
return _objectSpread2$1(_objectSpread2$1({}, obj), {}, {
status: STATUS_ADD
});
}));
currentIndex = i;
}
list.push(_objectSpread2$1(_objectSpread2$1({}, currentKeyObj), {}, {
status: STATUS_KEEP
}));
currentIndex += 1;
hit = true;
break;
}
}
if (!hit) {
list.push(_objectSpread2$1(_objectSpread2$1({}, keyObj), {}, {
status: STATUS_REMOVE
}));
}
});
if (currentIndex < currentLen) {
list = list.concat(currentKeyObjects.slice(currentIndex).map(function(obj) {
return _objectSpread2$1(_objectSpread2$1({}, obj), {}, {
status: STATUS_ADD
});
}));
}
var keys2 = {};
list.forEach(function(_ref) {
var key = _ref.key;
keys2[key] = (keys2[key] || 0) + 1;
});
var duplicatedKeys = Object.keys(keys2).filter(function(key) {
return keys2[key] > 1;
});
duplicatedKeys.forEach(function(matchKey) {
list = list.filter(function(_ref2) {
var key = _ref2.key, status = _ref2.status;
return key !== matchKey || status !== STATUS_REMOVE;
});
list.forEach(function(node2) {
if (node2.key === matchKey) {
node2.status = STATUS_KEEP;
}
});
});
return list;
}
var _excluded$H = ["component", "children", "onVisibleChanged", "onAllRemoved"], _excluded2$6 = ["status"];
var MOTION_PROP_NAMES = ["eventProps", "visible", "children", "motionName", "motionAppear", "motionEnter", "motionLeave", "motionLeaveImmediately", "motionDeadline", "removeOnLeave", "leavedClassName", "onAppearPrepare", "onAppearStart", "onAppearActive", "onAppearEnd", "onEnterStart", "onEnterActive", "onEnterEnd", "onLeaveStart", "onLeaveActive", "onLeaveEnd"];
function genCSSMotionList(transitionSupport) {
var CSSMotion$1 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : CSSMotion;
var CSSMotionList2 = /* @__PURE__ */ function(_React$Component) {
_inherits(CSSMotionList3, _React$Component);
var _super = _createSuper(CSSMotionList3);
function CSSMotionList3() {
var _this;
_classCallCheck(this, CSSMotionList3);
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = _super.call.apply(_super, [this].concat(args));
_defineProperty(_assertThisInitialized(_this), "state", {
keyEntities: []
});
_defineProperty(_assertThisInitialized(_this), "removeKey", function(removeKey) {
_this.setState(function(prevState) {
var nextKeyEntities = prevState.keyEntities.map(function(entity) {
if (entity.key !== removeKey) return entity;
return _objectSpread2$1(_objectSpread2$1({}, entity), {}, {
status: STATUS_REMOVED
});
});
return {
keyEntities: nextKeyEntities
};
}, function() {
var keyEntities = _this.state.keyEntities;
var restKeysCount = keyEntities.filter(function(_ref) {
var status = _ref.status;
return status !== STATUS_REMOVED;
}).length;
if (restKeysCount === 0 && _this.props.onAllRemoved) {
_this.props.onAllRemoved();
}
});
});
return _this;
}
_createClass(CSSMotionList3, [{
key: "render",
value: function render2() {
var _this2 = this;
var keyEntities = this.state.keyEntities;
var _this$props = this.props, component = _this$props.component, children = _this$props.children, _onVisibleChanged = _this$props.onVisibleChanged;
_this$props.onAllRemoved;
var restProps = _objectWithoutProperties(_this$props, _excluded$H);
var Component = component || reactExports.Fragment;
var motionProps = {};
MOTION_PROP_NAMES.forEach(function(prop) {
motionProps[prop] = restProps[prop];
delete restProps[prop];
});
delete restProps.keys;
return /* @__PURE__ */ reactExports.createElement(Component, restProps, keyEntities.map(function(_ref2, index2) {
var status = _ref2.status, eventProps = _objectWithoutProperties(_ref2, _excluded2$6);
var visible = status === STATUS_ADD || status === STATUS_KEEP;
return /* @__PURE__ */ reactExports.createElement(CSSMotion$1, _extends$2({}, motionProps, {
key: eventProps.key,
visible,
eventProps,
onVisibleChanged: function onVisibleChanged(changedVisible) {
_onVisibleChanged === null || _onVisibleChanged === void 0 || _onVisibleChanged(changedVisible, {
key: eventProps.key
});
if (!changedVisible) {
_this2.removeKey(eventProps.key);
}
}
}), function(props, ref) {
return children(_objectSpread2$1(_objectSpread2$1({}, props), {}, {
index: index2
}), ref);
});
}));
}
}], [{
key: "getDerivedStateFromProps",
value: function getDerivedStateFromProps(_ref3, _ref4) {
var keys2 = _ref3.keys;
var keyEntities = _ref4.keyEntities;
var parsedKeyObjects = parseKeys(keys2);
var mixedKeyEntities = diffKeys(keyEntities, parsedKeyObjects);
return {
keyEntities: mixedKeyEntities.filter(function(entity) {
var prevEntity = keyEntities.find(function(_ref5) {
var key = _ref5.key;
return entity.key === key;
});
if (prevEntity && prevEntity.status === STATUS_REMOVED && entity.status === STATUS_REMOVE) {
return false;
}
return true;
})
};
}
}]);
return CSSMotionList3;
}(reactExports.Component);
_defineProperty(CSSMotionList2, "defaultProps", {
component: "div"
});
return CSSMotionList2;
}
const CSSMotionList = genCSSMotionList(supportTransition);
function MotionWrapper(props) {
const {
children
} = props;
const [, token2] = useToken();
const {
motion
} = token2;
const needWrapMotionProviderRef = reactExports.useRef(false);
needWrapMotionProviderRef.current = needWrapMotionProviderRef.current || motion === false;
if (needWrapMotionProviderRef.current) {
return /* @__PURE__ */ reactExports.createElement(MotionProvider, {
motion
}, children);
}
return children;
}
const PropWarning = () => null;
var __rest$w = function(s, e2) {
var t2 = {};
for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0) t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i])) t2[p2[i]] = s[p2[i]];
}
return t2;
};
const PASSED_PROPS = ["getTargetContainer", "getPopupContainer", "renderEmpty", "input", "pagination", "form", "select", "button"];
let globalPrefixCls;
let globalIconPrefixCls;
let globalTheme;
let globalHolderRender;
function getGlobalPrefixCls() {
return globalPrefixCls || defaultPrefixCls;
}
function getGlobalIconPrefixCls() {
return globalIconPrefixCls || defaultIconPrefixCls;
}
function isLegacyTheme(theme2) {
return Object.keys(theme2).some((key) => key.endsWith("Color"));
}
const setGlobalConfig = (props) => {
const {
prefixCls,
iconPrefixCls,
theme: theme2,
holderRender
} = props;
if (prefixCls !== void 0) {
globalPrefixCls = prefixCls;
}
if (iconPrefixCls !== void 0) {
globalIconPrefixCls = iconPrefixCls;
}
if ("holderRender" in props) {
globalHolderRender = holderRender;
}
if (theme2) {
if (isLegacyTheme(theme2)) {
registerTheme$1(getGlobalPrefixCls(), theme2);
} else {
globalTheme = theme2;
}
}
};
const globalConfig = () => ({
getPrefixCls: (suffixCls, customizePrefixCls) => {
if (customizePrefixCls) {
return customizePrefixCls;
}
return suffixCls ? `${getGlobalPrefixCls()}-${suffixCls}` : getGlobalPrefixCls();
},
getIconPrefixCls: getGlobalIconPrefixCls,
getRootPrefixCls: () => {
if (globalPrefixCls) {
return globalPrefixCls;
}
return getGlobalPrefixCls();
},
getTheme: () => globalTheme,
holderRender: globalHolderRender
});
const ProviderChildren = (props) => {
const {
children,
csp: customCsp,
autoInsertSpaceInButton,
alert,
anchor,
form,
locale: locale2,
componentSize,
direction,
space,
splitter,
virtual,
dropdownMatchSelectWidth,
popupMatchSelectWidth,
popupOverflow,
legacyLocale,
parentContext,
iconPrefixCls: customIconPrefixCls,
theme: theme2,
componentDisabled,
segmented,
statistic: statistic2,
spin: spin2,
calendar,
carousel,
cascader,
collapse,
typography,
checkbox,
descriptions,
divider,
drawer,
skeleton,
steps,
image,
layout: layout2,
list,
mentions,
modal,
progress,
result,
slider,
breadcrumb,
menu,
pagination,
input,
textArea,
empty,
badge,
radio,
rate,
switch: SWITCH,
transfer,
avatar,
message: message2,
tag,
table,
card,
tabs,
timeline,
timePicker,
upload,
notification,
tree,
colorPicker,
datePicker,
rangePicker,
flex,
wave,
dropdown,
warning: warningConfig,
tour,
floatButtonGroup,
variant,
inputNumber,
treeSelect
} = props;
const getPrefixCls = reactExports.useCallback((suffixCls, customizePrefixCls) => {
const {
prefixCls
} = props;
if (customizePrefixCls) {
return customizePrefixCls;
}
const mergedPrefixCls = prefixCls || parentContext.getPrefixCls("");
return suffixCls ? `${mergedPrefixCls}-${suffixCls}` : mergedPrefixCls;
}, [parentContext.getPrefixCls, props.prefixCls]);
const iconPrefixCls = customIconPrefixCls || parentContext.iconPrefixCls || defaultIconPrefixCls;
const csp = customCsp || parentContext.csp;
useResetIconStyle(iconPrefixCls, csp);
const mergedTheme = useTheme(theme2, parentContext.theme, {
prefixCls: getPrefixCls("")
});
const baseConfig = {
csp,
autoInsertSpaceInButton,
alert,
anchor,
locale: locale2 || legacyLocale,
direction,
space,
splitter,
virtual,
popupMatchSelectWidth: popupMatchSelectWidth !== null && popupMatchSelectWidth !== void 0 ? popupMatchSelectWidth : dropdownMatchSelectWidth,
popupOverflow,
getPrefixCls,
iconPrefixCls,
theme: mergedTheme,
segmented,
statistic: statistic2,
spin: spin2,
calendar,
carousel,
cascader,
collapse,
typography,
checkbox,
descriptions,
divider,
drawer,
skeleton,
steps,
image,
input,
textArea,
layout: layout2,
list,
mentions,
modal,
progress,
result,
slider,
breadcrumb,
menu,
pagination,
empty,
badge,
radio,
rate,
switch: SWITCH,
transfer,
avatar,
message: message2,
tag,
table,
card,
tabs,
timeline,
timePicker,
upload,
notification,
tree,
colorPicker,
datePicker,
rangePicker,
flex,
wave,
dropdown,
warning: warningConfig,
tour,
floatButtonGroup,
variant,
inputNumber,
treeSelect
};
const config = Object.assign({}, parentContext);
Object.keys(baseConfig).forEach((key) => {
if (baseConfig[key] !== void 0) {
config[key] = baseConfig[key];
}
});
PASSED_PROPS.forEach((propName) => {
const propValue = props[propName];
if (propValue) {
config[propName] = propValue;
}
});
if (typeof autoInsertSpaceInButton !== "undefined") {
config.button = Object.assign({
autoInsertSpace: autoInsertSpaceInButton
}, config.button);
}
const memoedConfig = useMemo(() => config, config, (prevConfig, currentConfig) => {
const prevKeys = Object.keys(prevConfig);
const currentKeys = Object.keys(currentConfig);
return prevKeys.length !== currentKeys.length || prevKeys.some((key) => prevConfig[key] !== currentConfig[key]);
});
const memoIconContextValue = reactExports.useMemo(() => ({
prefixCls: iconPrefixCls,
csp
}), [iconPrefixCls, csp]);
let childNode = /* @__PURE__ */ reactExports.createElement(reactExports.Fragment, null, /* @__PURE__ */ reactExports.createElement(PropWarning, {
dropdownMatchSelectWidth
}), children);
const validateMessages = reactExports.useMemo(() => {
var _a2, _b2, _c2, _d;
return merge$2(((_a2 = localeValues$1.Form) === null || _a2 === void 0 ? void 0 : _a2.defaultValidateMessages) || {}, ((_c2 = (_b2 = memoedConfig.locale) === null || _b2 === void 0 ? void 0 : _b2.Form) === null || _c2 === void 0 ? void 0 : _c2.defaultValidateMessages) || {}, ((_d = memoedConfig.form) === null || _d === void 0 ? void 0 : _d.validateMessages) || {}, (form === null || form === void 0 ? void 0 : form.validateMessages) || {});
}, [memoedConfig, form === null || form === void 0 ? void 0 : form.validateMessages]);
if (Object.keys(validateMessages).length > 0) {
childNode = /* @__PURE__ */ reactExports.createElement(ValidateMessagesContext.Provider, {
value: validateMessages
}, childNode);
}
if (locale2) {
childNode = /* @__PURE__ */ reactExports.createElement(LocaleProvider, {
locale: locale2,
_ANT_MARK__: ANT_MARK
}, childNode);
}
if (iconPrefixCls || csp) {
childNode = /* @__PURE__ */ reactExports.createElement(IconContext.Provider, {
value: memoIconContextValue
}, childNode);
}
if (componentSize) {
childNode = /* @__PURE__ */ reactExports.createElement(SizeContextProvider, {
size: componentSize
}, childNode);
}
childNode = /* @__PURE__ */ reactExports.createElement(MotionWrapper, null, childNode);
const memoTheme = reactExports.useMemo(() => {
const _a2 = mergedTheme || {}, {
algorithm,
token: token2,
components,
cssVar
} = _a2, rest = __rest$w(_a2, ["algorithm", "token", "components", "cssVar"]);
const themeObj = algorithm && (!Array.isArray(algorithm) || algorithm.length > 0) ? createTheme(algorithm) : defaultTheme;
const parsedComponents = {};
Object.entries(components || {}).forEach((_ref) => {
let [componentName, componentToken] = _ref;
const parsedToken = Object.assign({}, componentToken);
if ("algorithm" in parsedToken) {
if (parsedToken.algorithm === true) {
parsedToken.theme = themeObj;
} else if (Array.isArray(parsedToken.algorithm) || typeof parsedToken.algorithm === "function") {
parsedToken.theme = createTheme(parsedToken.algorithm);
}
delete parsedToken.algorithm;
}
parsedComponents[componentName] = parsedToken;
});
const mergedToken = Object.assign(Object.assign({}, seedToken), token2);
return Object.assign(Object.assign({}, rest), {
theme: themeObj,
token: mergedToken,
components: parsedComponents,
override: Object.assign({
override: mergedToken
}, parsedComponents),
cssVar
});
}, [mergedTheme]);
if (theme2) {
childNode = /* @__PURE__ */ reactExports.createElement(DesignTokenContext.Provider, {
value: memoTheme
}, childNode);
}
if (memoedConfig.warning) {
childNode = /* @__PURE__ */ reactExports.createElement(WarningContext.Provider, {
value: memoedConfig.warning
}, childNode);
}
if (componentDisabled !== void 0) {
childNode = /* @__PURE__ */ reactExports.createElement(DisabledContextProvider, {
disabled: componentDisabled
}, childNode);
}
return /* @__PURE__ */ reactExports.createElement(ConfigContext.Provider, {
value: memoedConfig
}, childNode);
};
const ConfigProvider = (props) => {
const context = reactExports.useContext(ConfigContext);
const antLocale = reactExports.useContext(LocaleContext);
return /* @__PURE__ */ reactExports.createElement(ProviderChildren, Object.assign({
parentContext: context,
legacyLocale: antLocale
}, props));
};
ConfigProvider.ConfigContext = ConfigContext;
ConfigProvider.SizeContext = SizeContext;
ConfigProvider.config = setGlobalConfig;
ConfigProvider.useConfig = useConfig;
Object.defineProperty(ConfigProvider, "SizeContext", {
get: () => {
return SizeContext;
}
});
var attributes = "accept acceptCharset accessKey action allowFullScreen allowTransparency\n alt async autoComplete autoFocus autoPlay capture cellPadding cellSpacing challenge\n charSet checked classID className colSpan cols content contentEditable contextMenu\n controls coords crossOrigin data dateTime default defer dir disabled download draggable\n encType form formAction formEncType formMethod formNoValidate formTarget frameBorder\n headers height hidden high href hrefLang htmlFor httpEquiv icon id inputMode integrity\n is keyParams keyType kind label lang list loop low manifest marginHeight marginWidth max maxLength media\n mediaGroup method min minLength multiple muted name noValidate nonce open\n optimum pattern placeholder poster preload radioGroup readOnly rel required\n reversed role rowSpan rows sandbox scope scoped scrolling seamless selected\n shape size sizes span spellCheck src srcDoc srcLang srcSet start step style\n summary tabIndex target title type useMap value width wmode wrap";
var eventsName = "onCopy onCut onPaste onCompositionEnd onCompositionStart onCompositionUpdate onKeyDown\n onKeyPress onKeyUp onFocus onBlur onChange onInput onSubmit onClick onContextMenu onDoubleClick\n onDrag onDragEnd onDragEnter onDragExit onDragLeave onDragOver onDragStart onDrop onMouseDown\n onMouseEnter onMouseLeave onMouseMove onMouseOut onMouseOver onMouseUp onSelect onTouchCancel\n onTouchEnd onTouchMove onTouchStart onScroll onWheel onAbort onCanPlay onCanPlayThrough\n onDurationChange onEmptied onEncrypted onEnded onError onLoadedData onLoadedMetadata\n onLoadStart onPause onPlay onPlaying onProgress onRateChange onSeeked onSeeking onStalled onSuspend onTimeUpdate onVolumeChange onWaiting onLoad onError";
var propList = "".concat(attributes, " ").concat(eventsName).split(/[\s\n]+/);
var ariaPrefix = "aria-";
var dataPrefix = "data-";
function match(key, prefix) {
return key.indexOf(prefix) === 0;
}
function pickAttrs(props) {
var ariaOnly = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
var mergedConfig;
if (ariaOnly === false) {
mergedConfig = {
aria: true,
data: true,
attr: true
};
} else if (ariaOnly === true) {
mergedConfig = {
aria: true
};
} else {
mergedConfig = _objectSpread2$1({}, ariaOnly);
}
var attrs = {};
Object.keys(props).forEach(function(key) {
if (
// Aria
mergedConfig.aria && (key === "role" || match(key, ariaPrefix)) || // Data
mergedConfig.data && match(key, dataPrefix) || // Attr
mergedConfig.attr && propList.includes(key)
) {
attrs[key] = props[key];
}
});
return attrs;
}
function isFragment(child) {
return child && /* @__PURE__ */ React.isValidElement(child) && child.type === React.Fragment;
}
const replaceElement = (element, replacement, props) => {
if (!/* @__PURE__ */ React.isValidElement(element)) {
return replacement;
}
return /* @__PURE__ */ React.cloneElement(element, typeof props === "function" ? props(element.props || {}) : props);
};
function cloneElement(element, props) {
return replaceElement(element, element, props);
}
function isWindow(obj) {
return obj !== null && obj !== void 0 && obj === obj.window;
}
const getScroll = (target) => {
var _a2, _b2;
if (typeof window === "undefined") {
return 0;
}
let result = 0;
if (isWindow(target)) {
result = target.pageYOffset;
} else if (target instanceof Document) {
result = target.documentElement.scrollTop;
} else if (target instanceof HTMLElement) {
result = target.scrollTop;
} else if (target) {
result = target["scrollTop"];
}
if (target && !isWindow(target) && typeof result !== "number") {
result = (_b2 = ((_a2 = target.ownerDocument) !== null && _a2 !== void 0 ? _a2 : target).documentElement) === null || _b2 === void 0 ? void 0 : _b2.scrollTop;
}
return result;
};
function easeInOutCubic(t2, b2, c2, d2) {
const cc2 = c2 - b2;
t2 /= d2 / 2;
if (t2 < 1) {
return cc2 / 2 * t2 * t2 * t2 + b2;
}
return cc2 / 2 * ((t2 -= 2) * t2 * t2 + 2) + b2;
}
function scrollTo(y2) {
let options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
const {
getContainer: getContainer2 = () => window,
callback,
duration = 450
} = options;
const container = getContainer2();
const scrollTop = getScroll(container);
const startTime = Date.now();
const frameFunc = () => {
const timestamp = Date.now();
const time2 = timestamp - startTime;
const nextScrollTop = easeInOutCubic(time2 > duration ? duration : time2, scrollTop, y2, duration);
if (isWindow(container)) {
container.scrollTo(window.pageXOffset, nextScrollTop);
} else if (container instanceof Document || container.constructor.name === "HTMLDocument") {
container.documentElement.scrollTop = nextScrollTop;
} else {
container.scrollTop = nextScrollTop;
}
if (time2 < duration) {
wrapperRaf(frameFunc);
} else if (typeof callback === "function") {
callback();
}
};
wrapperRaf(frameFunc);
}
const useCSSVarCls = (prefixCls) => {
const [, , , , cssVar] = useToken();
return cssVar ? `${prefixCls}-css-var` : "";
};
var KeyCode = {
/**
* MAC_ENTER
*/
MAC_ENTER: 3,
/**
* BACKSPACE
*/
BACKSPACE: 8,
/**
* TAB
*/
TAB: 9,
/**
* NUMLOCK on FF/Safari Mac
*/
NUM_CENTER: 12,
// NUMLOCK on FF/Safari Mac
/**
* ENTER
*/
ENTER: 13,
/**
* SHIFT
*/
SHIFT: 16,
/**
* CTRL
*/
CTRL: 17,
/**
* ALT
*/
ALT: 18,
/**
* PAUSE
*/
PAUSE: 19,
/**
* CAPS_LOCK
*/
CAPS_LOCK: 20,
/**
* ESC
*/
ESC: 27,
/**
* SPACE
*/
SPACE: 32,
/**
* PAGE_UP
*/
PAGE_UP: 33,
// also NUM_NORTH_EAST
/**
* PAGE_DOWN
*/
PAGE_DOWN: 34,
// also NUM_SOUTH_EAST
/**
* END
*/
END: 35,
// also NUM_SOUTH_WEST
/**
* HOME
*/
HOME: 36,
// also NUM_NORTH_WEST
/**
* LEFT
*/
LEFT: 37,
// also NUM_WEST
/**
* UP
*/
UP: 38,
// also NUM_NORTH
/**
* RIGHT
*/
RIGHT: 39,
// also NUM_EAST
/**
* DOWN
*/
DOWN: 40,
// also NUM_SOUTH
/**
* PRINT_SCREEN
*/
PRINT_SCREEN: 44,
/**
* INSERT
*/
INSERT: 45,
// also NUM_INSERT
/**
* DELETE
*/
DELETE: 46,
// also NUM_DELETE
/**
* ZERO
*/
ZERO: 48,
/**
* ONE
*/
ONE: 49,
/**
* TWO
*/
TWO: 50,
/**
* THREE
*/
THREE: 51,
/**
* FOUR
*/
FOUR: 52,
/**
* FIVE
*/
FIVE: 53,
/**
* SIX
*/
SIX: 54,
/**
* SEVEN
*/
SEVEN: 55,
/**
* EIGHT
*/
EIGHT: 56,
/**
* NINE
*/
NINE: 57,
/**
* QUESTION_MARK
*/
QUESTION_MARK: 63,
// needs localization
/**
* A
*/
A: 65,
/**
* B
*/
B: 66,
/**
* C
*/
C: 67,
/**
* D
*/
D: 68,
/**
* E
*/
E: 69,
/**
* F
*/
F: 70,
/**
* G
*/
G: 71,
/**
* H
*/
H: 72,
/**
* I
*/
I: 73,
/**
* J
*/
J: 74,
/**
* K
*/
K: 75,
/**
* L
*/
L: 76,
/**
* M
*/
M: 77,
/**
* N
*/
N: 78,
/**
* O
*/
O: 79,
/**
* P
*/
P: 80,
/**
* Q
*/
Q: 81,
/**
* R
*/
R: 82,
/**
* S
*/
S: 83,
/**
* T
*/
T: 84,
/**
* U
*/
U: 85,
/**
* V
*/
V: 86,
/**
* W
*/
W: 87,
/**
* X
*/
X: 88,
/**
* Y
*/
Y: 89,
/**
* Z
*/
Z: 90,
/**
* META
*/
META: 91,
// WIN_KEY_LEFT
/**
* WIN_KEY_RIGHT
*/
WIN_KEY_RIGHT: 92,
/**
* CONTEXT_MENU
*/
CONTEXT_MENU: 93,
/**
* NUM_ZERO
*/
NUM_ZERO: 96,
/**
* NUM_ONE
*/
NUM_ONE: 97,
/**
* NUM_TWO
*/
NUM_TWO: 98,
/**
* NUM_THREE
*/
NUM_THREE: 99,
/**
* NUM_FOUR
*/
NUM_FOUR: 100,
/**
* NUM_FIVE
*/
NUM_FIVE: 101,
/**
* NUM_SIX
*/
NUM_SIX: 102,
/**
* NUM_SEVEN
*/
NUM_SEVEN: 103,
/**
* NUM_EIGHT
*/
NUM_EIGHT: 104,
/**
* NUM_NINE
*/
NUM_NINE: 105,
/**
* NUM_MULTIPLY
*/
NUM_MULTIPLY: 106,
/**
* NUM_PLUS
*/
NUM_PLUS: 107,
/**
* NUM_MINUS
*/
NUM_MINUS: 109,
/**
* NUM_PERIOD
*/
NUM_PERIOD: 110,
/**
* NUM_DIVISION
*/
NUM_DIVISION: 111,
/**
* F1
*/
F1: 112,
/**
* F2
*/
F2: 113,
/**
* F3
*/
F3: 114,
/**
* F4
*/
F4: 115,
/**
* F5
*/
F5: 116,
/**
* F6
*/
F6: 117,
/**
* F7
*/
F7: 118,
/**
* F8
*/
F8: 119,
/**
* F9
*/
F9: 120,
/**
* F10
*/
F10: 121,
/**
* F11
*/
F11: 122,
/**
* F12
*/
F12: 123,
/**
* NUMLOCK
*/
NUMLOCK: 144,
/**
* SEMICOLON
*/
SEMICOLON: 186,
// needs localization
/**
* DASH
*/
DASH: 189,
// needs localization
/**
* EQUALS
*/
EQUALS: 187,
// needs localization
/**
* COMMA
*/
COMMA: 188,
// needs localization
/**
* PERIOD
*/
PERIOD: 190,
// needs localization
/**
* SLASH
*/
SLASH: 191,
// needs localization
/**
* APOSTROPHE
*/
APOSTROPHE: 192,
// needs localization
/**
* SINGLE_QUOTE
*/
SINGLE_QUOTE: 222,
// needs localization
/**
* OPEN_SQUARE_BRACKET
*/
OPEN_SQUARE_BRACKET: 219,
// needs localization
/**
* BACKSLASH
*/
BACKSLASH: 220,
// needs localization
/**
* CLOSE_SQUARE_BRACKET
*/
CLOSE_SQUARE_BRACKET: 221,
// needs localization
/**
* WIN_KEY
*/
WIN_KEY: 224,
/**
* MAC_FF_META
*/
MAC_FF_META: 224,
// Firefox (Gecko) fires this for the meta key instead of 91
/**
* WIN_IME
*/
WIN_IME: 229,
// ======================== Function ========================
/**
* whether text and modified key is entered at the same time.
*/
isTextModifyingKeyEvent: function isTextModifyingKeyEvent(e2) {
var keyCode = e2.keyCode;
if (e2.altKey && !e2.ctrlKey || e2.metaKey || // Function keys don't generate text
keyCode >= KeyCode.F1 && keyCode <= KeyCode.F12) {
return false;
}
switch (keyCode) {
case KeyCode.ALT:
case KeyCode.CAPS_LOCK:
case KeyCode.CONTEXT_MENU:
case KeyCode.CTRL:
case KeyCode.DOWN:
case KeyCode.END:
case KeyCode.ESC:
case KeyCode.HOME:
case KeyCode.INSERT:
case KeyCode.LEFT:
case KeyCode.MAC_FF_META:
case KeyCode.META:
case KeyCode.NUMLOCK:
case KeyCode.NUM_CENTER:
case KeyCode.PAGE_DOWN:
case KeyCode.PAGE_UP:
case KeyCode.PAUSE:
case KeyCode.PRINT_SCREEN:
case KeyCode.RIGHT:
case KeyCode.SHIFT:
case KeyCode.UP:
case KeyCode.WIN_KEY:
case KeyCode.WIN_KEY_RIGHT:
return false;
default:
return true;
}
},
/**
* whether character is entered.
*/
isCharacterKey: function isCharacterKey(keyCode) {
if (keyCode >= KeyCode.ZERO && keyCode <= KeyCode.NINE) {
return true;
}
if (keyCode >= KeyCode.NUM_ZERO && keyCode <= KeyCode.NUM_MULTIPLY) {
return true;
}
if (keyCode >= KeyCode.A && keyCode <= KeyCode.Z) {
return true;
}
if (window.navigator.userAgent.indexOf("WebKit") !== -1 && keyCode === 0) {
return true;
}
switch (keyCode) {
case KeyCode.SPACE:
case KeyCode.QUESTION_MARK:
case KeyCode.NUM_PLUS:
case KeyCode.NUM_MINUS:
case KeyCode.NUM_PERIOD:
case KeyCode.NUM_DIVISION:
case KeyCode.SEMICOLON:
case KeyCode.DASH:
case KeyCode.EQUALS:
case KeyCode.COMMA:
case KeyCode.PERIOD:
case KeyCode.SLASH:
case KeyCode.APOSTROPHE:
case KeyCode.SINGLE_QUOTE:
case KeyCode.OPEN_SQUARE_BRACKET:
case KeyCode.BACKSLASH:
case KeyCode.CLOSE_SQUARE_BRACKET:
return true;
default:
return false;
}
}
};
var Notify = /* @__PURE__ */ reactExports.forwardRef(function(props, ref) {
var prefixCls = props.prefixCls, style2 = props.style, className = props.className, _props$duration = props.duration, duration = _props$duration === void 0 ? 4.5 : _props$duration, showProgress = props.showProgress, _props$pauseOnHover = props.pauseOnHover, pauseOnHover = _props$pauseOnHover === void 0 ? true : _props$pauseOnHover, eventKey = props.eventKey, content = props.content, closable = props.closable, _props$closeIcon = props.closeIcon, closeIcon = _props$closeIcon === void 0 ? "x" : _props$closeIcon, divProps = props.props, onClick = props.onClick, onNoticeClose = props.onNoticeClose, times = props.times, forcedHovering = props.hovering;
var _React$useState = reactExports.useState(false), _React$useState2 = _slicedToArray(_React$useState, 2), hovering = _React$useState2[0], setHovering = _React$useState2[1];
var _React$useState3 = reactExports.useState(0), _React$useState4 = _slicedToArray(_React$useState3, 2), percent = _React$useState4[0], setPercent = _React$useState4[1];
var _React$useState5 = reactExports.useState(0), _React$useState6 = _slicedToArray(_React$useState5, 2), spentTime = _React$useState6[0], setSpentTime = _React$useState6[1];
var mergedHovering = forcedHovering || hovering;
var mergedShowProgress = duration > 0 && showProgress;
var onInternalClose = function onInternalClose2() {
onNoticeClose(eventKey);
};
var onCloseKeyDown = function onCloseKeyDown2(e2) {
if (e2.key === "Enter" || e2.code === "Enter" || e2.keyCode === KeyCode.ENTER) {
onInternalClose();
}
};
reactExports.useEffect(function() {
if (!mergedHovering && duration > 0) {
var start2 = Date.now() - spentTime;
var timeout = setTimeout(function() {
onInternalClose();
}, duration * 1e3 - spentTime);
return function() {
if (pauseOnHover) {
clearTimeout(timeout);
}
setSpentTime(Date.now() - start2);
};
}
}, [duration, mergedHovering, times]);
reactExports.useEffect(function() {
if (!mergedHovering && mergedShowProgress && (pauseOnHover || spentTime === 0)) {
var start2 = performance.now();
var animationFrame;
var calculate = function calculate2() {
cancelAnimationFrame(animationFrame);
animationFrame = requestAnimationFrame(function(timestamp) {
var runtime = timestamp + spentTime - start2;
var progress = Math.min(runtime / (duration * 1e3), 1);
setPercent(progress * 100);
if (progress < 1) {
calculate2();
}
});
};
calculate();
return function() {
if (pauseOnHover) {
cancelAnimationFrame(animationFrame);
}
};
}
}, [duration, spentTime, mergedHovering, mergedShowProgress, times]);
var closableObj = reactExports.useMemo(function() {
if (_typeof$2(closable) === "object" && closable !== null) {
return closable;
}
if (closable) {
return {
closeIcon
};
}
return {};
}, [closable, closeIcon]);
var ariaProps = pickAttrs(closableObj, true);
var validPercent = 100 - (!percent || percent < 0 ? 0 : percent > 100 ? 100 : percent);
var noticePrefixCls = "".concat(prefixCls, "-notice");
return /* @__PURE__ */ reactExports.createElement("div", _extends$2({}, divProps, {
ref,
className: cls(noticePrefixCls, className, _defineProperty({}, "".concat(noticePrefixCls, "-closable"), closable)),
style: style2,
onMouseEnter: function onMouseEnter(e2) {
var _divProps$onMouseEnte;
setHovering(true);
divProps === null || divProps === void 0 || (_divProps$onMouseEnte = divProps.onMouseEnter) === null || _divProps$onMouseEnte === void 0 || _divProps$onMouseEnte.call(divProps, e2);
},
onMouseLeave: function onMouseLeave(e2) {
var _divProps$onMouseLeav;
setHovering(false);
divProps === null || divProps === void 0 || (_divProps$onMouseLeav = divProps.onMouseLeave) === null || _divProps$onMouseLeav === void 0 || _divProps$onMouseLeav.call(divProps, e2);
},
onClick
}), /* @__PURE__ */ reactExports.createElement("div", {
className: "".concat(noticePrefixCls, "-content")
}, content), closable && /* @__PURE__ */ reactExports.createElement("a", _extends$2({
tabIndex: 0,
className: "".concat(noticePrefixCls, "-close"),
onKeyDown: onCloseKeyDown,
"aria-label": "Close"
}, ariaProps, {
onClick: function onClick2(e2) {
e2.preventDefault();
e2.stopPropagation();
onInternalClose();
}
}), closableObj.closeIcon), mergedShowProgress && /* @__PURE__ */ reactExports.createElement("progress", {
className: "".concat(noticePrefixCls, "-progress"),
max: "100",
value: validPercent
}, validPercent + "%"));
});
var NotificationContext = /* @__PURE__ */ React.createContext({});
var NotificationProvider = function NotificationProvider2(_ref) {
var children = _ref.children, classNames = _ref.classNames;
return /* @__PURE__ */ React.createElement(NotificationContext.Provider, {
value: {
classNames
}
}, children);
};
var DEFAULT_OFFSET$1 = 8;
var DEFAULT_THRESHOLD = 3;
var DEFAULT_GAP = 16;
var useStack = function useStack2(config) {
var result = {
offset: DEFAULT_OFFSET$1,
threshold: DEFAULT_THRESHOLD,
gap: DEFAULT_GAP
};
if (config && _typeof$2(config) === "object") {
var _config$offset, _config$threshold, _config$gap;
result.offset = (_config$offset = config.offset) !== null && _config$offset !== void 0 ? _config$offset : DEFAULT_OFFSET$1;
result.threshold = (_config$threshold = config.threshold) !== null && _config$threshold !== void 0 ? _config$threshold : DEFAULT_THRESHOLD;
result.gap = (_config$gap = config.gap) !== null && _config$gap !== void 0 ? _config$gap : DEFAULT_GAP;
}
return [!!config, result];
};
var _excluded$G = ["className", "style", "classNames", "styles"];
var NoticeList = function NoticeList2(props) {
var configList = props.configList, placement = props.placement, prefixCls = props.prefixCls, className = props.className, style2 = props.style, motion = props.motion, onAllNoticeRemoved = props.onAllNoticeRemoved, onNoticeClose = props.onNoticeClose, stackConfig = props.stack;
var _useContext = reactExports.useContext(NotificationContext), ctxCls = _useContext.classNames;
var dictRef = reactExports.useRef({});
var _useState = reactExports.useState(null), _useState2 = _slicedToArray(_useState, 2), latestNotice = _useState2[0], setLatestNotice = _useState2[1];
var _useState3 = reactExports.useState([]), _useState4 = _slicedToArray(_useState3, 2), hoverKeys = _useState4[0], setHoverKeys = _useState4[1];
var keys2 = configList.map(function(config) {
return {
config,
key: String(config.key)
};
});
var _useStack = useStack(stackConfig), _useStack2 = _slicedToArray(_useStack, 2), stack = _useStack2[0], _useStack2$ = _useStack2[1], offset2 = _useStack2$.offset, threshold = _useStack2$.threshold, gap = _useStack2$.gap;
var expanded = stack && (hoverKeys.length > 0 || keys2.length <= threshold);
var placementMotion = typeof motion === "function" ? motion(placement) : motion;
reactExports.useEffect(function() {
if (stack && hoverKeys.length > 1) {
setHoverKeys(function(prev2) {
return prev2.filter(function(key) {
return keys2.some(function(_ref) {
var dataKey = _ref.key;
return key === dataKey;
});
});
});
}
}, [hoverKeys, keys2, stack]);
reactExports.useEffect(function() {
var _keys;
if (stack && dictRef.current[(_keys = keys2[keys2.length - 1]) === null || _keys === void 0 ? void 0 : _keys.key]) {
var _keys2;
setLatestNotice(dictRef.current[(_keys2 = keys2[keys2.length - 1]) === null || _keys2 === void 0 ? void 0 : _keys2.key]);
}
}, [keys2, stack]);
return /* @__PURE__ */ React.createElement(CSSMotionList, _extends$2({
key: placement,
className: cls(prefixCls, "".concat(prefixCls, "-").concat(placement), ctxCls === null || ctxCls === void 0 ? void 0 : ctxCls.list, className, _defineProperty(_defineProperty({}, "".concat(prefixCls, "-stack"), !!stack), "".concat(prefixCls, "-stack-expanded"), expanded)),
style: style2,
keys: keys2,
motionAppear: true
}, placementMotion, {
onAllRemoved: function onAllRemoved() {
onAllNoticeRemoved(placement);
}
}), function(_ref2, nodeRef) {
var config = _ref2.config, motionClassName = _ref2.className, motionStyle = _ref2.style, motionIndex = _ref2.index;
var _ref3 = config, key = _ref3.key, times = _ref3.times;
var strKey = String(key);
var _ref4 = config, configClassName = _ref4.className, configStyle = _ref4.style, configClassNames = _ref4.classNames, configStyles = _ref4.styles, restConfig = _objectWithoutProperties(_ref4, _excluded$G);
var dataIndex = keys2.findIndex(function(item) {
return item.key === strKey;
});
var stackStyle = {};
if (stack) {
var index2 = keys2.length - 1 - (dataIndex > -1 ? dataIndex : motionIndex - 1);
var transformX = placement === "top" || placement === "bottom" ? "-50%" : "0";
if (index2 > 0) {
var _dictRef$current$strK, _dictRef$current$strK2, _dictRef$current$strK3;
stackStyle.height = expanded ? (_dictRef$current$strK = dictRef.current[strKey]) === null || _dictRef$current$strK === void 0 ? void 0 : _dictRef$current$strK.offsetHeight : latestNotice === null || latestNotice === void 0 ? void 0 : latestNotice.offsetHeight;
var verticalOffset = 0;
for (var i = 0; i < index2; i++) {
var _dictRef$current$keys;
verticalOffset += ((_dictRef$current$keys = dictRef.current[keys2[keys2.length - 1 - i].key]) === null || _dictRef$current$keys === void 0 ? void 0 : _dictRef$current$keys.offsetHeight) + gap;
}
var transformY = (expanded ? verticalOffset : index2 * offset2) * (placement.startsWith("top") ? 1 : -1);
var scaleX = !expanded && latestNotice !== null && latestNotice !== void 0 && latestNotice.offsetWidth && (_dictRef$current$strK2 = dictRef.current[strKey]) !== null && _dictRef$current$strK2 !== void 0 && _dictRef$current$strK2.offsetWidth ? ((latestNotice === null || latestNotice === void 0 ? void 0 : latestNotice.offsetWidth) - offset2 * 2 * (index2 < 3 ? index2 : 3)) / ((_dictRef$current$strK3 = dictRef.current[strKey]) === null || _dictRef$current$strK3 === void 0 ? void 0 : _dictRef$current$strK3.offsetWidth) : 1;
stackStyle.transform = "translate3d(".concat(transformX, ", ").concat(transformY, "px, 0) scaleX(").concat(scaleX, ")");
} else {
stackStyle.transform = "translate3d(".concat(transformX, ", 0, 0)");
}
}
return /* @__PURE__ */ React.createElement("div", {
ref: nodeRef,
className: cls("".concat(prefixCls, "-notice-wrapper"), motionClassName, configClassNames === null || configClassNames === void 0 ? void 0 : configClassNames.wrapper),
style: _objectSpread2$1(_objectSpread2$1(_objectSpread2$1({}, motionStyle), stackStyle), configStyles === null || configStyles === void 0 ? void 0 : configStyles.wrapper),
onMouseEnter: function onMouseEnter() {
return setHoverKeys(function(prev2) {
return prev2.includes(strKey) ? prev2 : [].concat(_toConsumableArray(prev2), [strKey]);
});
},
onMouseLeave: function onMouseLeave() {
return setHoverKeys(function(prev2) {
return prev2.filter(function(k2) {
return k2 !== strKey;
});
});
}
}, /* @__PURE__ */ React.createElement(Notify, _extends$2({}, restConfig, {
ref: function ref(node2) {
if (dataIndex > -1) {
dictRef.current[strKey] = node2;
} else {
delete dictRef.current[strKey];
}
},
prefixCls,
classNames: configClassNames,
styles: configStyles,
className: cls(configClassName, ctxCls === null || ctxCls === void 0 ? void 0 : ctxCls.notice),
style: configStyle,
times,
key,
eventKey: key,
onNoticeClose,
hovering: stack && hoverKeys.length > 0
})));
});
};
var Notifications = /* @__PURE__ */ reactExports.forwardRef(function(props, ref) {
var _props$prefixCls = props.prefixCls, prefixCls = _props$prefixCls === void 0 ? "rc-notification" : _props$prefixCls, container = props.container, motion = props.motion, maxCount = props.maxCount, className = props.className, style2 = props.style, onAllRemoved = props.onAllRemoved, stack = props.stack, renderNotifications2 = props.renderNotifications;
var _React$useState = reactExports.useState([]), _React$useState2 = _slicedToArray(_React$useState, 2), configList = _React$useState2[0], setConfigList = _React$useState2[1];
var onNoticeClose = function onNoticeClose2(key) {
var _config$onClose;
var config = configList.find(function(item) {
return item.key === key;
});
config === null || config === void 0 || (_config$onClose = config.onClose) === null || _config$onClose === void 0 || _config$onClose.call(config);
setConfigList(function(list) {
return list.filter(function(item) {
return item.key !== key;
});
});
};
reactExports.useImperativeHandle(ref, function() {
return {
open: function open2(config) {
setConfigList(function(list) {
var clone3 = _toConsumableArray(list);
var index2 = clone3.findIndex(function(item) {
return item.key === config.key;
});
var innerConfig = _objectSpread2$1({}, config);
if (index2 >= 0) {
var _list$index;
innerConfig.times = (((_list$index = list[index2]) === null || _list$index === void 0 ? void 0 : _list$index.times) || 0) + 1;
clone3[index2] = innerConfig;
} else {
innerConfig.times = 0;
clone3.push(innerConfig);
}
if (maxCount > 0 && clone3.length > maxCount) {
clone3 = clone3.slice(-maxCount);
}
return clone3;
});
},
close: function close(key) {
onNoticeClose(key);
},
destroy: function destroy2() {
setConfigList([]);
}
};
});
var _React$useState3 = reactExports.useState({}), _React$useState4 = _slicedToArray(_React$useState3, 2), placements2 = _React$useState4[0], setPlacements = _React$useState4[1];
reactExports.useEffect(function() {
var nextPlacements = {};
configList.forEach(function(config) {
var _config$placement = config.placement, placement = _config$placement === void 0 ? "topRight" : _config$placement;
if (placement) {
nextPlacements[placement] = nextPlacements[placement] || [];
nextPlacements[placement].push(config);
}
});
Object.keys(placements2).forEach(function(placement) {
nextPlacements[placement] = nextPlacements[placement] || [];
});
setPlacements(nextPlacements);
}, [configList]);
var onAllNoticeRemoved = function onAllNoticeRemoved2(placement) {
setPlacements(function(originPlacements) {
var clone3 = _objectSpread2$1({}, originPlacements);
var list = clone3[placement] || [];
if (!list.length) {
delete clone3[placement];
}
return clone3;
});
};
var emptyRef = reactExports.useRef(false);
reactExports.useEffect(function() {
if (Object.keys(placements2).length > 0) {
emptyRef.current = true;
} else if (emptyRef.current) {
onAllRemoved === null || onAllRemoved === void 0 || onAllRemoved();
emptyRef.current = false;
}
}, [placements2]);
if (!container) {
return null;
}
var placementList = Object.keys(placements2);
return /* @__PURE__ */ reactDomExports.createPortal(/* @__PURE__ */ reactExports.createElement(reactExports.Fragment, null, placementList.map(function(placement) {
var placementConfigList = placements2[placement];
var list = /* @__PURE__ */ reactExports.createElement(NoticeList, {
key: placement,
configList: placementConfigList,
placement,
prefixCls,
className: className === null || className === void 0 ? void 0 : className(placement),
style: style2 === null || style2 === void 0 ? void 0 : style2(placement),
motion,
onNoticeClose,
onAllNoticeRemoved,
stack
});
return renderNotifications2 ? renderNotifications2(list, {
prefixCls,
key: placement
}) : list;
})), container);
});
var _excluded$F = ["getContainer", "motion", "prefixCls", "maxCount", "className", "style", "onAllRemoved", "stack", "renderNotifications"];
var defaultGetContainer = function defaultGetContainer2() {
return document.body;
};
var uniqueKey = 0;
function mergeConfig$1() {
var clone3 = {};
for (var _len = arguments.length, objList = new Array(_len), _key = 0; _key < _len; _key++) {
objList[_key] = arguments[_key];
}
objList.forEach(function(obj) {
if (obj) {
Object.keys(obj).forEach(function(key) {
var val = obj[key];
if (val !== void 0) {
clone3[key] = val;
}
});
}
});
return clone3;
}
function useNotification() {
var rootConfig = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
var _rootConfig$getContai = rootConfig.getContainer, getContainer2 = _rootConfig$getContai === void 0 ? defaultGetContainer : _rootConfig$getContai, motion = rootConfig.motion, prefixCls = rootConfig.prefixCls, maxCount = rootConfig.maxCount, className = rootConfig.className, style2 = rootConfig.style, onAllRemoved = rootConfig.onAllRemoved, stack = rootConfig.stack, renderNotifications2 = rootConfig.renderNotifications, shareConfig = _objectWithoutProperties(rootConfig, _excluded$F);
var _React$useState = reactExports.useState(), _React$useState2 = _slicedToArray(_React$useState, 2), container = _React$useState2[0], setContainer = _React$useState2[1];
var notificationsRef = reactExports.useRef();
var contextHolder = /* @__PURE__ */ reactExports.createElement(Notifications, {
container,
ref: notificationsRef,
prefixCls,
motion,
maxCount,
className,
style: style2,
onAllRemoved,
stack,
renderNotifications: renderNotifications2
});
var _React$useState3 = reactExports.useState([]), _React$useState4 = _slicedToArray(_React$useState3, 2), taskQueue2 = _React$useState4[0], setTaskQueue = _React$useState4[1];
var api = reactExports.useMemo(function() {
return {
open: function open2(config) {
var mergedConfig = mergeConfig$1(shareConfig, config);
if (mergedConfig.key === null || mergedConfig.key === void 0) {
mergedConfig.key = "rc-notification-".concat(uniqueKey);
uniqueKey += 1;
}
setTaskQueue(function(queue) {
return [].concat(_toConsumableArray(queue), [{
type: "open",
config: mergedConfig
}]);
});
},
close: function close(key) {
setTaskQueue(function(queue) {
return [].concat(_toConsumableArray(queue), [{
type: "close",
key
}]);
});
},
destroy: function destroy2() {
setTaskQueue(function(queue) {
return [].concat(_toConsumableArray(queue), [{
type: "destroy"
}]);
});
}
};
}, []);
reactExports.useEffect(function() {
setContainer(getContainer2());
});
reactExports.useEffect(function() {
if (notificationsRef.current && taskQueue2.length) {
taskQueue2.forEach(function(task) {
switch (task.type) {
case "open":
notificationsRef.current.open(task.config);
break;
case "close":
notificationsRef.current.close(task.key);
break;
case "destroy":
notificationsRef.current.destroy();
break;
}
});
setTaskQueue(function(oriQueue) {
return oriQueue.filter(function(task) {
return !taskQueue2.includes(task);
});
});
}
}, [taskQueue2]);
return [api, contextHolder];
}
const zIndexContext = /* @__PURE__ */ React.createContext(void 0);
const CONTAINER_OFFSET = 100;
const CONTAINER_OFFSET_MAX_COUNT = 10;
const CONTAINER_MAX_OFFSET = CONTAINER_OFFSET * CONTAINER_OFFSET_MAX_COUNT;
const containerBaseZIndexOffset = {
Modal: CONTAINER_OFFSET,
Drawer: CONTAINER_OFFSET,
Popover: CONTAINER_OFFSET,
Popconfirm: CONTAINER_OFFSET,
Tooltip: CONTAINER_OFFSET,
Tour: CONTAINER_OFFSET,
FloatButton: CONTAINER_OFFSET
};
const consumerBaseZIndexOffset = {
SelectLike: 50,
Dropdown: 50,
DatePicker: 50,
Menu: 50,
ImagePreview: 1
};
function isContainerType(type4) {
return type4 in containerBaseZIndexOffset;
}
const useZIndex = (componentType, customZIndex) => {
const [, token2] = useToken();
const parentZIndex = React.useContext(zIndexContext);
const isContainer = isContainerType(componentType);
let result;
if (customZIndex !== void 0) {
result = [customZIndex, customZIndex];
} else {
let zIndex = parentZIndex !== null && parentZIndex !== void 0 ? parentZIndex : 0;
if (isContainer) {
zIndex += // Use preset token zIndex by default but not stack when has parent container
(parentZIndex ? 0 : token2.zIndexPopupBase) + // Container offset
containerBaseZIndexOffset[componentType];
} else {
zIndex += consumerBaseZIndexOffset[componentType];
}
result = [parentZIndex === void 0 ? customZIndex : zIndex, zIndex];
}
return result;
};
const genMessageStyle = (token2) => {
const {
componentCls,
iconCls,
boxShadow,
colorText,
colorSuccess,
colorError,
colorWarning,
colorInfo,
fontSizeLG,
motionEaseInOutCirc,
motionDurationSlow,
marginXS,
paddingXS,
borderRadiusLG,
zIndexPopup,
// Custom token
contentPadding,
contentBg
} = token2;
const noticeCls = `${componentCls}-notice`;
const messageMoveIn = new Keyframe("MessageMoveIn", {
"0%": {
padding: 0,
transform: "translateY(-100%)",
opacity: 0
},
"100%": {
padding: paddingXS,
transform: "translateY(0)",
opacity: 1
}
});
const messageMoveOut = new Keyframe("MessageMoveOut", {
"0%": {
maxHeight: token2.height,
padding: paddingXS,
opacity: 1
},
"100%": {
maxHeight: 0,
padding: 0,
opacity: 0
}
});
const noticeStyle = {
padding: paddingXS,
textAlign: "center",
[`${componentCls}-custom-content`]: {
display: "flex",
alignItems: "center"
},
[`${componentCls}-custom-content > ${iconCls}`]: {
marginInlineEnd: marginXS,
// affected by ltr or rtl
fontSize: fontSizeLG
},
[`${noticeCls}-content`]: {
display: "inline-block",
padding: contentPadding,
background: contentBg,
borderRadius: borderRadiusLG,
boxShadow,
pointerEvents: "all"
},
[`${componentCls}-success > ${iconCls}`]: {
color: colorSuccess
},
[`${componentCls}-error > ${iconCls}`]: {
color: colorError
},
[`${componentCls}-warning > ${iconCls}`]: {
color: colorWarning
},
[`${componentCls}-info > ${iconCls},
${componentCls}-loading > ${iconCls}`]: {
color: colorInfo
}
};
return [
// ============================ Holder ============================
{
[componentCls]: Object.assign(Object.assign({}, resetComponent(token2)), {
color: colorText,
position: "fixed",
top: marginXS,
width: "100%",
pointerEvents: "none",
zIndex: zIndexPopup,
[`${componentCls}-move-up`]: {
animationFillMode: "forwards"
},
[`
${componentCls}-move-up-appear,
${componentCls}-move-up-enter
`]: {
animationName: messageMoveIn,
animationDuration: motionDurationSlow,
animationPlayState: "paused",
animationTimingFunction: motionEaseInOutCirc
},
[`
${componentCls}-move-up-appear${componentCls}-move-up-appear-active,
${componentCls}-move-up-enter${componentCls}-move-up-enter-active
`]: {
animationPlayState: "running"
},
[`${componentCls}-move-up-leave`]: {
animationName: messageMoveOut,
animationDuration: motionDurationSlow,
animationPlayState: "paused",
animationTimingFunction: motionEaseInOutCirc
},
[`${componentCls}-move-up-leave${componentCls}-move-up-leave-active`]: {
animationPlayState: "running"
},
"&-rtl": {
direction: "rtl",
span: {
direction: "rtl"
}
}
})
},
// ============================ Notice ============================
{
[componentCls]: {
[`${noticeCls}-wrapper`]: Object.assign({}, noticeStyle)
}
},
// ============================= Pure =============================
{
[`${componentCls}-notice-pure-panel`]: Object.assign(Object.assign({}, noticeStyle), {
padding: 0,
textAlign: "start"
})
}
];
};
const prepareComponentToken$d = (token2) => ({
zIndexPopup: token2.zIndexPopupBase + CONTAINER_MAX_OFFSET + 10,
contentBg: token2.colorBgElevated,
contentPadding: `${(token2.controlHeightLG - token2.fontSize * token2.lineHeight) / 2}px ${token2.paddingSM}px`
});
const useStyle$i = genStyleHooks("Message", (token2) => {
const combinedToken = merge$1(token2, {
height: 150
});
return [genMessageStyle(combinedToken)];
}, prepareComponentToken$d);
var __rest$v = function(s, e2) {
var t2 = {};
for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0) t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i])) t2[p2[i]] = s[p2[i]];
}
return t2;
};
const TypeIcon = {
info: /* @__PURE__ */ reactExports.createElement(RefIcon$6, null),
success: /* @__PURE__ */ reactExports.createElement(RefIcon$n, null),
error: /* @__PURE__ */ reactExports.createElement(RefIcon$l, null),
warning: /* @__PURE__ */ reactExports.createElement(RefIcon$e, null),
loading: /* @__PURE__ */ reactExports.createElement(RefIcon$4, null)
};
const PureContent = (_ref) => {
let {
prefixCls,
type: type4,
icon,
children
} = _ref;
return /* @__PURE__ */ reactExports.createElement("div", {
className: cls(`${prefixCls}-custom-content`, `${prefixCls}-${type4}`)
}, icon || TypeIcon[type4], /* @__PURE__ */ reactExports.createElement("span", null, children));
};
const PurePanel$5 = (props) => {
const {
prefixCls: staticPrefixCls,
className,
type: type4,
icon,
content
} = props, restProps = __rest$v(props, ["prefixCls", "className", "type", "icon", "content"]);
const {
getPrefixCls
} = reactExports.useContext(ConfigContext);
const prefixCls = staticPrefixCls || getPrefixCls("message");
const rootCls = useCSSVarCls(prefixCls);
const [wrapCSSVar, hashId, cssVarCls] = useStyle$i(prefixCls, rootCls);
return wrapCSSVar(/* @__PURE__ */ reactExports.createElement(Notify, Object.assign({}, restProps, {
prefixCls,
className: cls(className, hashId, `${prefixCls}-notice-pure-panel`, cssVarCls, rootCls),
eventKey: "pure",
duration: null,
content: /* @__PURE__ */ reactExports.createElement(PureContent, {
prefixCls,
type: type4,
icon
}, content)
})));
};
function getMotion$2(prefixCls, transitionName) {
return {
motionName: transitionName !== null && transitionName !== void 0 ? transitionName : `${prefixCls}-move-up`
};
}
function wrapPromiseFn(openFn) {
let closeFn;
const closePromise = new Promise((resolve) => {
closeFn = openFn(() => {
resolve(true);
});
});
const result = () => {
closeFn === null || closeFn === void 0 ? void 0 : closeFn();
};
result.then = (filled, rejected) => closePromise.then(filled, rejected);
result.promise = closePromise;
return result;
}
var __rest$u = function(s, e2) {
var t2 = {};
for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0) t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i])) t2[p2[i]] = s[p2[i]];
}
return t2;
};
const DEFAULT_OFFSET = 8;
const DEFAULT_DURATION = 3;
const Wrapper = (_ref) => {
let {
children,
prefixCls
} = _ref;
const rootCls = useCSSVarCls(prefixCls);
const [wrapCSSVar, hashId, cssVarCls] = useStyle$i(prefixCls, rootCls);
return wrapCSSVar(/* @__PURE__ */ reactExports.createElement(NotificationProvider, {
classNames: {
list: cls(hashId, cssVarCls, rootCls)
}
}, children));
};
const renderNotifications = (node2, _ref2) => {
let {
prefixCls,
key
} = _ref2;
return /* @__PURE__ */ reactExports.createElement(Wrapper, {
prefixCls,
key
}, node2);
};
const Holder = /* @__PURE__ */ reactExports.forwardRef((props, ref) => {
const {
top,
prefixCls: staticPrefixCls,
getContainer: staticGetContainer,
maxCount,
duration = DEFAULT_DURATION,
rtl,
transitionName,
onAllRemoved
} = props;
const {
getPrefixCls,
getPopupContainer,
message: message2,
direction
} = reactExports.useContext(ConfigContext);
const prefixCls = staticPrefixCls || getPrefixCls("message");
const getStyle2 = () => ({
left: "50%",
transform: "translateX(-50%)",
top: top !== null && top !== void 0 ? top : DEFAULT_OFFSET
});
const getClassName = () => cls({
[`${prefixCls}-rtl`]: rtl !== null && rtl !== void 0 ? rtl : direction === "rtl"
});
const getNotificationMotion = () => getMotion$2(prefixCls, transitionName);
const mergedCloseIcon = /* @__PURE__ */ reactExports.createElement("span", {
className: `${prefixCls}-close-x`
}, /* @__PURE__ */ reactExports.createElement(RefIcon$k, {
className: `${prefixCls}-close-icon`
}));
const [api, holder] = useNotification({
prefixCls,
style: getStyle2,
className: getClassName,
motion: getNotificationMotion,
closable: false,
closeIcon: mergedCloseIcon,
duration,
getContainer: () => (staticGetContainer === null || staticGetContainer === void 0 ? void 0 : staticGetContainer()) || (getPopupContainer === null || getPopupContainer === void 0 ? void 0 : getPopupContainer()) || document.body,
maxCount,
onAllRemoved,
renderNotifications
});
reactExports.useImperativeHandle(ref, () => Object.assign(Object.assign({}, api), {
prefixCls,
message: message2
}));
return holder;
});
let keyIndex = 0;
function useInternalMessage(messageConfig) {
const holderRef = reactExports.useRef(null);
devUseWarning();
const wrapAPI = reactExports.useMemo(() => {
const close = (key) => {
var _a2;
(_a2 = holderRef.current) === null || _a2 === void 0 ? void 0 : _a2.close(key);
};
const open2 = (config) => {
if (!holderRef.current) {
const fakeResult = () => {
};
fakeResult.then = () => {
};
return fakeResult;
}
const {
open: originOpen,
prefixCls,
message: message2
} = holderRef.current;
const noticePrefixCls = `${prefixCls}-notice`;
const {
content,
icon,
type: type4,
key,
className,
style: style2,
onClose
} = config, restConfig = __rest$u(config, ["content", "icon", "type", "key", "className", "style", "onClose"]);
let mergedKey = key;
if (mergedKey === void 0 || mergedKey === null) {
keyIndex += 1;
mergedKey = `antd-message-${keyIndex}`;
}
return wrapPromiseFn((resolve) => {
originOpen(Object.assign(Object.assign({}, restConfig), {
key: mergedKey,
content: /* @__PURE__ */ reactExports.createElement(PureContent, {
prefixCls,
type: type4,
icon
}, content),
placement: "top",
className: cls(type4 && `${noticePrefixCls}-${type4}`, className, message2 === null || message2 === void 0 ? void 0 : message2.className),
style: Object.assign(Object.assign({}, message2 === null || message2 === void 0 ? void 0 : message2.style), style2),
onClose: () => {
onClose === null || onClose === void 0 ? void 0 : onClose();
resolve();
}
}));
return () => {
close(mergedKey);
};
});
};
const destroy2 = (key) => {
var _a2;
if (key !== void 0) {
close(key);
} else {
(_a2 = holderRef.current) === null || _a2 === void 0 ? void 0 : _a2.destroy();
}
};
const clone3 = {
open: open2,
destroy: destroy2
};
const keys2 = ["info", "success", "warning", "error", "loading"];
keys2.forEach((type4) => {
const typeOpen2 = (jointContent, duration, onClose) => {
let config;
if (jointContent && typeof jointContent === "object" && "content" in jointContent) {
config = jointContent;
} else {
config = {
content: jointContent
};
}
let mergedDuration;
let mergedOnClose;
if (typeof duration === "function") {
mergedOnClose = duration;
} else {
mergedDuration = duration;
mergedOnClose = onClose;
}
const mergedConfig = Object.assign(Object.assign({
onClose: mergedOnClose,
duration: mergedDuration
}, config), {
type: type4
});
return open2(mergedConfig);
};
clone3[type4] = typeOpen2;
});
return clone3;
}, []);
return [wrapAPI, /* @__PURE__ */ reactExports.createElement(Holder, Object.assign({
key: "message-holder"
}, messageConfig, {
ref: holderRef
}))];
}
function useMessage(messageConfig) {
return useInternalMessage(messageConfig);
}
function _regeneratorRuntime() {
_regeneratorRuntime = function _regeneratorRuntime2() {
return e2;
};
var t2, e2 = {}, r2 = Object.prototype, n2 = r2.hasOwnProperty, o = Object.defineProperty || function(t3, e3, r3) {
t3[e3] = r3.value;
}, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c2 = i.asyncIterator || "@@asyncIterator", u2 = i.toStringTag || "@@toStringTag";
function define(t3, e3, r3) {
return Object.defineProperty(t3, e3, {
value: r3,
enumerable: true,
configurable: true,
writable: true
}), t3[e3];
}
try {
define({}, "");
} catch (t3) {
define = function define2(t4, e3, r3) {
return t4[e3] = r3;
};
}
function wrap(t3, e3, r3, n3) {
var i2 = e3 && e3.prototype instanceof Generator ? e3 : Generator, a2 = Object.create(i2.prototype), c3 = new Context2(n3 || []);
return o(a2, "_invoke", {
value: makeInvokeMethod(t3, r3, c3)
}), a2;
}
function tryCatch(t3, e3, r3) {
try {
return {
type: "normal",
arg: t3.call(e3, r3)
};
} catch (t4) {
return {
type: "throw",
arg: t4
};
}
}
e2.wrap = wrap;
var h2 = "suspendedStart", l2 = "suspendedYield", f2 = "executing", s = "completed", y2 = {};
function Generator() {
}
function GeneratorFunction() {
}
function GeneratorFunctionPrototype() {
}
var p2 = {};
define(p2, a, function() {
return this;
});
var d2 = Object.getPrototypeOf, v4 = d2 && d2(d2(values([])));
v4 && v4 !== r2 && n2.call(v4, a) && (p2 = v4);
var g2 = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p2);
function defineIteratorMethods(t3) {
["next", "throw", "return"].forEach(function(e3) {
define(t3, e3, function(t4) {
return this._invoke(e3, t4);
});
});
}
function AsyncIterator(t3, e3) {
function invoke(r4, o2, i2, a2) {
var c3 = tryCatch(t3[r4], t3, o2);
if ("throw" !== c3.type) {
var u3 = c3.arg, h3 = u3.value;
return h3 && "object" == _typeof$2(h3) && n2.call(h3, "__await") ? e3.resolve(h3.__await).then(function(t4) {
invoke("next", t4, i2, a2);
}, function(t4) {
invoke("throw", t4, i2, a2);
}) : e3.resolve(h3).then(function(t4) {
u3.value = t4, i2(u3);
}, function(t4) {
return invoke("throw", t4, i2, a2);
});
}
a2(c3.arg);
}
var r3;
o(this, "_invoke", {
value: function value(t4, n3) {
function callInvokeWithMethodAndArg() {
return new e3(function(e4, r4) {
invoke(t4, n3, e4, r4);
});
}
return r3 = r3 ? r3.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
}
});
}
function makeInvokeMethod(e3, r3, n3) {
var o2 = h2;
return function(i2, a2) {
if (o2 === f2) throw Error("Generator is already running");
if (o2 === s) {
if ("throw" === i2) throw a2;
return {
value: t2,
done: true
};
}
for (n3.method = i2, n3.arg = a2; ; ) {
var c3 = n3.delegate;
if (c3) {
var u3 = maybeInvokeDelegate(c3, n3);
if (u3) {
if (u3 === y2) continue;
return u3;
}
}
if ("next" === n3.method) n3.sent = n3._sent = n3.arg;
else if ("throw" === n3.method) {
if (o2 === h2) throw o2 = s, n3.arg;
n3.dispatchException(n3.arg);
} else "return" === n3.method && n3.abrupt("return", n3.arg);
o2 = f2;
var p3 = tryCatch(e3, r3, n3);
if ("normal" === p3.type) {
if (o2 = n3.done ? s : l2, p3.arg === y2) continue;
return {
value: p3.arg,
done: n3.done
};
}
"throw" === p3.type && (o2 = s, n3.method = "throw", n3.arg = p3.arg);
}
};
}
function maybeInvokeDelegate(e3, r3) {
var n3 = r3.method, o2 = e3.iterator[n3];
if (o2 === t2) return r3.delegate = null, "throw" === n3 && e3.iterator["return"] && (r3.method = "return", r3.arg = t2, maybeInvokeDelegate(e3, r3), "throw" === r3.method) || "return" !== n3 && (r3.method = "throw", r3.arg = new TypeError("The iterator does not provide a '" + n3 + "' method")), y2;
var i2 = tryCatch(o2, e3.iterator, r3.arg);
if ("throw" === i2.type) return r3.method = "throw", r3.arg = i2.arg, r3.delegate = null, y2;
var a2 = i2.arg;
return a2 ? a2.done ? (r3[e3.resultName] = a2.value, r3.next = e3.nextLoc, "return" !== r3.method && (r3.method = "next", r3.arg = t2), r3.delegate = null, y2) : a2 : (r3.method = "throw", r3.arg = new TypeError("iterator result is not an object"), r3.delegate = null, y2);
}
function pushTryEntry(t3) {
var e3 = {
tryLoc: t3[0]
};
1 in t3 && (e3.catchLoc = t3[1]), 2 in t3 && (e3.finallyLoc = t3[2], e3.afterLoc = t3[3]), this.tryEntries.push(e3);
}
function resetTryEntry(t3) {
var e3 = t3.completion || {};
e3.type = "normal", delete e3.arg, t3.completion = e3;
}
function Context2(t3) {
this.tryEntries = [{
tryLoc: "root"
}], t3.forEach(pushTryEntry, this), this.reset(true);
}
function values(e3) {
if (e3 || "" === e3) {
var r3 = e3[a];
if (r3) return r3.call(e3);
if ("function" == typeof e3.next) return e3;
if (!isNaN(e3.length)) {
var o2 = -1, i2 = function next2() {
for (; ++o2 < e3.length; ) if (n2.call(e3, o2)) return next2.value = e3[o2], next2.done = false, next2;
return next2.value = t2, next2.done = true, next2;
};
return i2.next = i2;
}
}
throw new TypeError(_typeof$2(e3) + " is not iterable");
}
return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g2, "constructor", {
value: GeneratorFunctionPrototype,
configurable: true
}), o(GeneratorFunctionPrototype, "constructor", {
value: GeneratorFunction,
configurable: true
}), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u2, "GeneratorFunction"), e2.isGeneratorFunction = function(t3) {
var e3 = "function" == typeof t3 && t3.constructor;
return !!e3 && (e3 === GeneratorFunction || "GeneratorFunction" === (e3.displayName || e3.name));
}, e2.mark = function(t3) {
return Object.setPrototypeOf ? Object.setPrototypeOf(t3, GeneratorFunctionPrototype) : (t3.__proto__ = GeneratorFunctionPrototype, define(t3, u2, "GeneratorFunction")), t3.prototype = Object.create(g2), t3;
}, e2.awrap = function(t3) {
return {
__await: t3
};
}, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c2, function() {
return this;
}), e2.AsyncIterator = AsyncIterator, e2.async = function(t3, r3, n3, o2, i2) {
void 0 === i2 && (i2 = Promise);
var a2 = new AsyncIterator(wrap(t3, r3, n3, o2), i2);
return e2.isGeneratorFunction(r3) ? a2 : a2.next().then(function(t4) {
return t4.done ? t4.value : a2.next();
});
}, defineIteratorMethods(g2), define(g2, u2, "Generator"), define(g2, a, function() {
return this;
}), define(g2, "toString", function() {
return "[object Generator]";
}), e2.keys = function(t3) {
var e3 = Object(t3), r3 = [];
for (var n3 in e3) r3.push(n3);
return r3.reverse(), function next2() {
for (; r3.length; ) {
var t4 = r3.pop();
if (t4 in e3) return next2.value = t4, next2.done = false, next2;
}
return next2.done = true, next2;
};
}, e2.values = values, Context2.prototype = {
constructor: Context2,
reset: function reset(e3) {
if (this.prev = 0, this.next = 0, this.sent = this._sent = t2, this.done = false, this.delegate = null, this.method = "next", this.arg = t2, this.tryEntries.forEach(resetTryEntry), !e3) for (var r3 in this) "t" === r3.charAt(0) && n2.call(this, r3) && !isNaN(+r3.slice(1)) && (this[r3] = t2);
},
stop: function stop2() {
this.done = true;
var t3 = this.tryEntries[0].completion;
if ("throw" === t3.type) throw t3.arg;
return this.rval;
},
dispatchException: function dispatchException(e3) {
if (this.done) throw e3;
var r3 = this;
function handle(n3, o3) {
return a2.type = "throw", a2.arg = e3, r3.next = n3, o3 && (r3.method = "next", r3.arg = t2), !!o3;
}
for (var o2 = this.tryEntries.length - 1; o2 >= 0; --o2) {
var i2 = this.tryEntries[o2], a2 = i2.completion;
if ("root" === i2.tryLoc) return handle("end");
if (i2.tryLoc <= this.prev) {
var c3 = n2.call(i2, "catchLoc"), u3 = n2.call(i2, "finallyLoc");
if (c3 && u3) {
if (this.prev < i2.catchLoc) return handle(i2.catchLoc, true);
if (this.prev < i2.finallyLoc) return handle(i2.finallyLoc);
} else if (c3) {
if (this.prev < i2.catchLoc) return handle(i2.catchLoc, true);
} else {
if (!u3) throw Error("try statement without catch or finally");
if (this.prev < i2.finallyLoc) return handle(i2.finallyLoc);
}
}
}
},
abrupt: function abrupt(t3, e3) {
for (var r3 = this.tryEntries.length - 1; r3 >= 0; --r3) {
var o2 = this.tryEntries[r3];
if (o2.tryLoc <= this.prev && n2.call(o2, "finallyLoc") && this.prev < o2.finallyLoc) {
var i2 = o2;
break;
}
}
i2 && ("break" === t3 || "continue" === t3) && i2.tryLoc <= e3 && e3 <= i2.finallyLoc && (i2 = null);
var a2 = i2 ? i2.completion : {};
return a2.type = t3, a2.arg = e3, i2 ? (this.method = "next", this.next = i2.finallyLoc, y2) : this.complete(a2);
},
complete: function complete(t3, e3) {
if ("throw" === t3.type) throw t3.arg;
return "break" === t3.type || "continue" === t3.type ? this.next = t3.arg : "return" === t3.type ? (this.rval = this.arg = t3.arg, this.method = "return", this.next = "end") : "normal" === t3.type && e3 && (this.next = e3), y2;
},
finish: function finish(t3) {
for (var e3 = this.tryEntries.length - 1; e3 >= 0; --e3) {
var r3 = this.tryEntries[e3];
if (r3.finallyLoc === t3) return this.complete(r3.completion, r3.afterLoc), resetTryEntry(r3), y2;
}
},
"catch": function _catch(t3) {
for (var e3 = this.tryEntries.length - 1; e3 >= 0; --e3) {
var r3 = this.tryEntries[e3];
if (r3.tryLoc === t3) {
var n3 = r3.completion;
if ("throw" === n3.type) {
var o2 = n3.arg;
resetTryEntry(r3);
}
return o2;
}
}
throw Error("illegal catch attempt");
},
delegateYield: function delegateYield(e3, r3, n3) {
return this.delegate = {
iterator: values(e3),
resultName: r3,
nextLoc: n3
}, "next" === this.method && (this.arg = t2), y2;
}
}, e2;
}
function asyncGeneratorStep(n2, t2, e2, r2, o, a, c2) {
try {
var i = n2[a](c2), u2 = i.value;
} catch (n3) {
return void e2(n3);
}
i.done ? t2(u2) : Promise.resolve(u2).then(r2, o);
}
function _asyncToGenerator(n2) {
return function() {
var t2 = this, e2 = arguments;
return new Promise(function(r2, o) {
var a = n2.apply(t2, e2);
function _next(n3) {
asyncGeneratorStep(a, r2, o, _next, _throw, "next", n3);
}
function _throw(n3) {
asyncGeneratorStep(a, r2, o, _next, _throw, "throw", n3);
}
_next(void 0);
});
};
}
var fullClone = _objectSpread2$1({}, ReactDOM$1);
var version$2 = fullClone.version, reactRender = fullClone.render, unmountComponentAtNode = fullClone.unmountComponentAtNode;
var createRoot$1;
try {
var mainVersion = Number((version$2 || "").split(".")[0]);
if (mainVersion >= 18) {
createRoot$1 = fullClone.createRoot;
}
} catch (e2) {
}
function toggleWarning(skip) {
var __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = fullClone.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
if (__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED && _typeof$2(__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED) === "object") {
__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.usingClientEntryPoint = skip;
}
}
var MARK = "__rc_react_root__";
function modernRender(node2, container) {
toggleWarning(true);
var root = container[MARK] || createRoot$1(container);
toggleWarning(false);
root.render(node2);
container[MARK] = root;
}
function legacyRender(node2, container) {
reactRender(node2, container);
}
function render$1(node2, container) {
if (createRoot$1) {
modernRender(node2, container);
return;
}
legacyRender(node2, container);
}
function modernUnmount(_x) {
return _modernUnmount.apply(this, arguments);
}
function _modernUnmount() {
_modernUnmount = _asyncToGenerator(/* @__PURE__ */ _regeneratorRuntime().mark(function _callee(container) {
return _regeneratorRuntime().wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
return _context.abrupt("return", Promise.resolve().then(function() {
var _container$MARK;
(_container$MARK = container[MARK]) === null || _container$MARK === void 0 || _container$MARK.unmount();
delete container[MARK];
}));
case 1:
case "end":
return _context.stop();
}
}, _callee);
}));
return _modernUnmount.apply(this, arguments);
}
function legacyUnmount(container) {
unmountComponentAtNode(container);
}
function unmount(_x2) {
return _unmount.apply(this, arguments);
}
function _unmount() {
_unmount = _asyncToGenerator(/* @__PURE__ */ _regeneratorRuntime().mark(function _callee2(container) {
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
while (1) switch (_context2.prev = _context2.next) {
case 0:
if (!(createRoot$1 !== void 0)) {
_context2.next = 2;
break;
}
return _context2.abrupt("return", modernUnmount(container));
case 2:
legacyUnmount(container);
case 3:
case "end":
return _context2.stop();
}
}, _callee2);
}));
return _unmount.apply(this, arguments);
}
const getCollapsedHeight = () => ({
height: 0,
opacity: 0
});
const getRealHeight = (node2) => {
const {
scrollHeight
} = node2;
return {
height: scrollHeight,
opacity: 1
};
};
const getCurrentHeight = (node2) => ({
height: node2 ? node2.offsetHeight : 0
});
const skipOpacityTransition = (_, event) => (event === null || event === void 0 ? void 0 : event.deadline) === true || event.propertyName === "height";
const initCollapseMotion = function() {
let rootCls = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : defaultPrefixCls;
return {
motionName: `${rootCls}-motion-collapse`,
onAppearStart: getCollapsedHeight,
onEnterStart: getCollapsedHeight,
onAppearActive: getRealHeight,
onEnterActive: getRealHeight,
onLeaveStart: getCurrentHeight,
onLeaveActive: getCollapsedHeight,
onAppearEnd: skipOpacityTransition,
onEnterEnd: skipOpacityTransition,
onLeaveEnd: skipOpacityTransition,
motionDeadline: 500
};
};
const getTransitionName = (rootPrefixCls, motion, transitionName) => {
if (transitionName !== void 0) {
return transitionName;
}
return `${rootPrefixCls}-${motion}`;
};
const isVisible = function(element) {
if (!element) {
return false;
}
if (element instanceof Element) {
if (element.offsetParent) {
return true;
}
if (element.getBBox) {
var _getBBox = element.getBBox(), width = _getBBox.width, height = _getBBox.height;
if (width || height) {
return true;
}
}
if (element.getBoundingClientRect) {
var _element$getBoundingC = element.getBoundingClientRect(), _width = _element$getBoundingC.width, _height = _element$getBoundingC.height;
if (_width || _height) {
return true;
}
}
}
return false;
};
const genWaveStyle = (token2) => {
const {
componentCls,
colorPrimary
} = token2;
return {
[componentCls]: {
position: "absolute",
background: "transparent",
pointerEvents: "none",
boxSizing: "border-box",
color: `var(--wave-color, ${colorPrimary})`,
boxShadow: `0 0 0 0 currentcolor`,
opacity: 0.2,
// =================== Motion ===================
"&.wave-motion-appear": {
transition: [`box-shadow 0.4s ${token2.motionEaseOutCirc}`, `opacity 2s ${token2.motionEaseOutCirc}`].join(","),
"&-active": {
boxShadow: `0 0 0 6px currentcolor`,
opacity: 0
},
"&.wave-quick": {
transition: [`box-shadow ${token2.motionDurationSlow} ${token2.motionEaseInOut}`, `opacity ${token2.motionDurationSlow} ${token2.motionEaseInOut}`].join(",")
}
}
}
};
};
const useStyle$h = genComponentStyleHook("Wave", (token2) => [genWaveStyle(token2)]);
const TARGET_CLS = `${defaultPrefixCls}-wave-target`;
function isValidWaveColor(color2) {
return color2 && color2 !== "#fff" && color2 !== "#ffffff" && color2 !== "rgb(255, 255, 255)" && color2 !== "rgba(255, 255, 255, 1)" && !/rgba\((?:\d*, ){3}0\)/.test(color2) && // any transparent rgba color
color2 !== "transparent";
}
function getTargetWaveColor(node2) {
const {
borderTopColor,
borderColor,
backgroundColor: backgroundColor2
} = getComputedStyle(node2);
if (isValidWaveColor(borderTopColor)) {
return borderTopColor;
}
if (isValidWaveColor(borderColor)) {
return borderColor;
}
if (isValidWaveColor(backgroundColor2)) {
return backgroundColor2;
}
return null;
}
function validateNum(value) {
return Number.isNaN(value) ? 0 : value;
}
const WaveEffect = (props) => {
const {
className,
target,
component
} = props;
const divRef = reactExports.useRef(null);
const [color2, setWaveColor] = reactExports.useState(null);
const [borderRadius, setBorderRadius] = reactExports.useState([]);
const [left, setLeft] = reactExports.useState(0);
const [top, setTop] = reactExports.useState(0);
const [width, setWidth] = reactExports.useState(0);
const [height, setHeight] = reactExports.useState(0);
const [enabled, setEnabled] = reactExports.useState(false);
const waveStyle = {
left,
top,
width,
height,
borderRadius: borderRadius.map((radius2) => `${radius2}px`).join(" ")
};
if (color2) {
waveStyle["--wave-color"] = color2;
}
function syncPos() {
const nodeStyle = getComputedStyle(target);
setWaveColor(getTargetWaveColor(target));
const isStatic = nodeStyle.position === "static";
const {
borderLeftWidth,
borderTopWidth
} = nodeStyle;
setLeft(isStatic ? target.offsetLeft : validateNum(-parseFloat(borderLeftWidth)));
setTop(isStatic ? target.offsetTop : validateNum(-parseFloat(borderTopWidth)));
setWidth(target.offsetWidth);
setHeight(target.offsetHeight);
const {
borderTopLeftRadius,
borderTopRightRadius,
borderBottomLeftRadius,
borderBottomRightRadius
} = nodeStyle;
setBorderRadius([borderTopLeftRadius, borderTopRightRadius, borderBottomRightRadius, borderBottomLeftRadius].map((radius2) => validateNum(parseFloat(radius2))));
}
reactExports.useEffect(() => {
if (target) {
const id2 = wrapperRaf(() => {
syncPos();
setEnabled(true);
});
let resizeObserver2;
if (typeof ResizeObserver !== "undefined") {
resizeObserver2 = new ResizeObserver(syncPos);
resizeObserver2.observe(target);
}
return () => {
wrapperRaf.cancel(id2);
resizeObserver2 === null || resizeObserver2 === void 0 ? void 0 : resizeObserver2.disconnect();
};
}
}, []);
if (!enabled) {
return null;
}
const isSmallComponent = (component === "Checkbox" || component === "Radio") && (target === null || target === void 0 ? void 0 : target.classList.contains(TARGET_CLS));
return /* @__PURE__ */ reactExports.createElement(CSSMotion, {
visible: true,
motionAppear: true,
motionName: "wave-motion",
motionDeadline: 5e3,
onAppearEnd: (_, event) => {
var _a2;
if (event.deadline || event.propertyName === "opacity") {
const holder = (_a2 = divRef.current) === null || _a2 === void 0 ? void 0 : _a2.parentElement;
unmount(holder).then(() => {
holder === null || holder === void 0 ? void 0 : holder.remove();
});
}
return false;
}
}, (_ref, ref) => {
let {
className: motionClassName
} = _ref;
return /* @__PURE__ */ reactExports.createElement("div", {
ref: composeRef(divRef, ref),
className: cls(className, motionClassName, {
"wave-quick": isSmallComponent
}),
style: waveStyle
});
});
};
const showWaveEffect = (target, info) => {
var _a2;
const {
component
} = info;
if (component === "Checkbox" && !((_a2 = target.querySelector("input")) === null || _a2 === void 0 ? void 0 : _a2.checked)) {
return;
}
const holder = document.createElement("div");
holder.style.position = "absolute";
holder.style.left = "0px";
holder.style.top = "0px";
target === null || target === void 0 ? void 0 : target.insertBefore(holder, target === null || target === void 0 ? void 0 : target.firstChild);
render$1(/* @__PURE__ */ reactExports.createElement(WaveEffect, Object.assign({}, info, {
target
})), holder);
};
const useWave = (nodeRef, className, component) => {
const {
wave
} = reactExports.useContext(ConfigContext);
const [, token2, hashId] = useToken();
const showWave = useEvent((event) => {
const node2 = nodeRef.current;
if ((wave === null || wave === void 0 ? void 0 : wave.disabled) || !node2) {
return;
}
const targetNode = node2.querySelector(`.${TARGET_CLS}`) || node2;
const {
showEffect
} = wave || {};
(showEffect || showWaveEffect)(targetNode, {
className,
token: token2,
component,
event,
hashId
});
});
const rafId = reactExports.useRef();
const showDebounceWave = (event) => {
wrapperRaf.cancel(rafId.current);
rafId.current = wrapperRaf(() => {
showWave(event);
});
};
return showDebounceWave;
};
const Wave = (props) => {
const {
children,
disabled,
component
} = props;
const {
getPrefixCls
} = reactExports.useContext(ConfigContext);
const containerRef = reactExports.useRef(null);
const prefixCls = getPrefixCls("wave");
const [, hashId] = useStyle$h(prefixCls);
const showWave = useWave(containerRef, cls(prefixCls, hashId), component);
React.useEffect(() => {
const node2 = containerRef.current;
if (!node2 || node2.nodeType !== 1 || disabled) {
return;
}
const onClick = (e2) => {
if (!isVisible(e2.target) || // No need wave
!node2.getAttribute || node2.getAttribute("disabled") || node2.disabled || node2.className.includes("disabled") || node2.className.includes("-leave")) {
return;
}
showWave(e2);
};
node2.addEventListener("click", onClick, true);
return () => {
node2.removeEventListener("click", onClick, true);
};
}, [disabled]);
if (!/* @__PURE__ */ React.isValidElement(children)) {
return children !== null && children !== void 0 ? children : null;
}
const ref = supportRef(children) ? composeRef(children.ref, containerRef) : containerRef;
return cloneElement(children, {
ref
});
};
const useSize = (customSize) => {
const size = React.useContext(SizeContext);
const mergedSize = React.useMemo(() => {
if (!customSize) {
return size;
}
if (typeof customSize === "string") {
return customSize !== null && customSize !== void 0 ? customSize : size;
}
if (customSize instanceof Function) {
return customSize(size);
}
return size;
}, [customSize, size]);
return mergedSize;
};
const genSpaceCompactStyle = (token2) => {
const {
componentCls
} = token2;
return {
[componentCls]: {
"&-block": {
display: "flex",
width: "100%"
},
"&-vertical": {
flexDirection: "column"
}
}
};
};
const genSpaceStyle = (token2) => {
const {
componentCls,
antCls
} = token2;
return {
[componentCls]: {
display: "inline-flex",
"&-rtl": {
direction: "rtl"
},
"&-vertical": {
flexDirection: "column"
},
"&-align": {
flexDirection: "column",
"&-center": {
alignItems: "center"
},
"&-start": {
alignItems: "flex-start"
},
"&-end": {
alignItems: "flex-end"
},
"&-baseline": {
alignItems: "baseline"
}
},
[`${componentCls}-item:empty`]: {
display: "none"
},
// https://github.com/ant-design/ant-design/issues/47875
[`${componentCls}-item > ${antCls}-badge-not-a-wrapper:only-child`]: {
display: "block"
}
}
};
};
const genSpaceGapStyle = (token2) => {
const {
componentCls
} = token2;
return {
[componentCls]: {
"&-gap-row-small": {
rowGap: token2.spaceGapSmallSize
},
"&-gap-row-middle": {
rowGap: token2.spaceGapMiddleSize
},
"&-gap-row-large": {
rowGap: token2.spaceGapLargeSize
},
"&-gap-col-small": {
columnGap: token2.spaceGapSmallSize
},
"&-gap-col-middle": {
columnGap: token2.spaceGapMiddleSize
},
"&-gap-col-large": {
columnGap: token2.spaceGapLargeSize
}
}
};
};
const useStyle$g = genStyleHooks("Space", (token2) => {
const spaceToken = merge$1(token2, {
spaceGapSmallSize: token2.paddingXS,
spaceGapMiddleSize: token2.padding,
spaceGapLargeSize: token2.paddingLG
});
return [genSpaceStyle(spaceToken), genSpaceGapStyle(spaceToken), genSpaceCompactStyle(spaceToken)];
}, () => ({}), {
// Space component don't apply extra font style
// https://github.com/ant-design/ant-design/issues/40315
resetStyle: false
});
var __rest$t = function(s, e2) {
var t2 = {};
for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0) t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i])) t2[p2[i]] = s[p2[i]];
}
return t2;
};
const SpaceCompactItemContext = /* @__PURE__ */ reactExports.createContext(null);
const useCompactItemContext = (prefixCls, direction) => {
const compactItemContext = reactExports.useContext(SpaceCompactItemContext);
const compactItemClassnames = reactExports.useMemo(() => {
if (!compactItemContext) {
return "";
}
const {
compactDirection,
isFirstItem,
isLastItem
} = compactItemContext;
const separator = compactDirection === "vertical" ? "-vertical-" : "-";
return cls(`${prefixCls}-compact${separator}item`, {
[`${prefixCls}-compact${separator}first-item`]: isFirstItem,
[`${prefixCls}-compact${separator}last-item`]: isLastItem,
[`${prefixCls}-compact${separator}item-rtl`]: direction === "rtl"
});
}, [prefixCls, direction, compactItemContext]);
return {
compactSize: compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.compactSize,
compactDirection: compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.compactDirection,
compactItemClassnames
};
};
const NoCompactStyle = (_ref) => {
let {
children
} = _ref;
return /* @__PURE__ */ reactExports.createElement(SpaceCompactItemContext.Provider, {
value: null
}, children);
};
const CompactItem = (_a2) => {
var {
children
} = _a2, otherProps = __rest$t(_a2, ["children"]);
return /* @__PURE__ */ reactExports.createElement(SpaceCompactItemContext.Provider, {
value: otherProps
}, children);
};
const Compact = (props) => {
const {
getPrefixCls,
direction: directionConfig
} = reactExports.useContext(ConfigContext);
const {
size,
direction,
block,
prefixCls: customizePrefixCls,
className,
rootClassName,
children
} = props, restProps = __rest$t(props, ["size", "direction", "block", "prefixCls", "className", "rootClassName", "children"]);
const mergedSize = useSize((ctx) => size !== null && size !== void 0 ? size : ctx);
const prefixCls = getPrefixCls("space-compact", customizePrefixCls);
const [wrapCSSVar, hashId] = useStyle$g(prefixCls);
const clx = cls(prefixCls, hashId, {
[`${prefixCls}-rtl`]: directionConfig === "rtl",
[`${prefixCls}-block`]: block,
[`${prefixCls}-vertical`]: direction === "vertical"
}, className, rootClassName);
const compactItemContext = reactExports.useContext(SpaceCompactItemContext);
const childNodes = toArray$4(children);
const nodes = reactExports.useMemo(() => childNodes.map((child, i) => {
const key = (child === null || child === void 0 ? void 0 : child.key) || `${prefixCls}-item-${i}`;
return /* @__PURE__ */ reactExports.createElement(CompactItem, {
key,
compactSize: mergedSize,
compactDirection: direction,
isFirstItem: i === 0 && (!compactItemContext || (compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.isFirstItem)),
isLastItem: i === childNodes.length - 1 && (!compactItemContext || (compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.isLastItem))
}, child);
}), [size, childNodes, compactItemContext]);
if (childNodes.length === 0) {
return null;
}
return wrapCSSVar(/* @__PURE__ */ reactExports.createElement("div", Object.assign({
className: clx
}, restProps), nodes));
};
var __rest$s = function(s, e2) {
var t2 = {};
for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0) t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i])) t2[p2[i]] = s[p2[i]];
}
return t2;
};
const GroupSizeContext = /* @__PURE__ */ reactExports.createContext(void 0);
const ButtonGroup = (props) => {
const {
getPrefixCls,
direction
} = reactExports.useContext(ConfigContext);
const {
prefixCls: customizePrefixCls,
size,
className
} = props, others = __rest$s(props, ["prefixCls", "size", "className"]);
const prefixCls = getPrefixCls("btn-group", customizePrefixCls);
const [, , hashId] = useToken();
let sizeCls = "";
switch (size) {
case "large":
sizeCls = "lg";
break;
case "small":
sizeCls = "sm";
break;
}
const classes = cls(prefixCls, {
[`${prefixCls}-${sizeCls}`]: sizeCls,
[`${prefixCls}-rtl`]: direction === "rtl"
}, className, hashId);
return /* @__PURE__ */ reactExports.createElement(GroupSizeContext.Provider, {
value: size
}, /* @__PURE__ */ reactExports.createElement("div", Object.assign({}, others, {
className: classes
})));
};
const rxTwoCNChar = /^[\u4E00-\u9FA5]{2}$/;
const isTwoCNChar = rxTwoCNChar.test.bind(rxTwoCNChar);
function isString$2(str) {
return typeof str === "string";
}
function isUnBorderedButtonVariant(type4) {
return type4 === "text" || type4 === "link";
}
function splitCNCharsBySpace(child, needInserted) {
if (child === null || child === void 0) {
return;
}
const SPACE = needInserted ? " " : "";
if (typeof child !== "string" && typeof child !== "number" && isString$2(child.type) && isTwoCNChar(child.props.children)) {
return cloneElement(child, {
children: child.props.children.split("").join(SPACE)
});
}
if (isString$2(child)) {
return isTwoCNChar(child) ? /* @__PURE__ */ React.createElement("span", null, child.split("").join(SPACE)) : /* @__PURE__ */ React.createElement("span", null, child);
}
if (isFragment(child)) {
return /* @__PURE__ */ React.createElement("span", null, child);
}
return child;
}
function spaceChildren(children, needInserted) {
let isPrevChildPure = false;
const childList = [];
React.Children.forEach(children, (child) => {
const type4 = typeof child;
const isCurrentChildPure = type4 === "string" || type4 === "number";
if (isPrevChildPure && isCurrentChildPure) {
const lastIndex = childList.length - 1;
const lastChild = childList[lastIndex];
childList[lastIndex] = `${lastChild}${child}`;
} else {
childList.push(child);
}
isPrevChildPure = isCurrentChildPure;
});
return React.Children.map(childList, (child) => splitCNCharsBySpace(child, needInserted));
}
const IconWrapper = /* @__PURE__ */ reactExports.forwardRef((props, ref) => {
const {
className,
style: style2,
children,
prefixCls
} = props;
const iconWrapperCls = cls(`${prefixCls}-icon`, className);
return /* @__PURE__ */ React.createElement("span", {
ref,
className: iconWrapperCls,
style: style2
}, children);
});
const InnerLoadingIcon = /* @__PURE__ */ reactExports.forwardRef((props, ref) => {
const {
prefixCls,
className,
style: style2,
iconClassName
} = props;
const mergedIconCls = cls(`${prefixCls}-loading-icon`, className);
return /* @__PURE__ */ React.createElement(IconWrapper, {
prefixCls,
className: mergedIconCls,
style: style2,
ref
}, /* @__PURE__ */ React.createElement(RefIcon$4, {
className: iconClassName
}));
});
const getCollapsedWidth = () => ({
width: 0,
opacity: 0,
transform: "scale(0)"
});
const getRealWidth = (node2) => ({
width: node2.scrollWidth,
opacity: 1,
transform: "scale(1)"
});
const LoadingIcon = (props) => {
const {
prefixCls,
loading,
existIcon,
className,
style: style2
} = props;
const visible = !!loading;
if (existIcon) {
return /* @__PURE__ */ React.createElement(InnerLoadingIcon, {
prefixCls,
className,
style: style2
});
}
return /* @__PURE__ */ React.createElement(CSSMotion, {
visible,
// We do not really use this motionName
motionName: `${prefixCls}-loading-icon-motion`,
motionLeave: visible,
removeOnLeave: true,
onAppearStart: getCollapsedWidth,
onAppearActive: getRealWidth,
onEnterStart: getCollapsedWidth,
onEnterActive: getRealWidth,
onLeaveStart: getRealWidth,
onLeaveActive: getCollapsedWidth
}, (_ref, ref) => {
let {
className: motionCls,
style: motionStyle
} = _ref;
return /* @__PURE__ */ React.createElement(InnerLoadingIcon, {
prefixCls,
className,
style: Object.assign(Object.assign({}, style2), motionStyle),
ref,
iconClassName: motionCls
});
});
};
const genButtonBorderStyle = (buttonTypeCls, borderColor) => ({
// Border
[`> span, > ${buttonTypeCls}`]: {
"&:not(:last-child)": {
[`&, & > ${buttonTypeCls}`]: {
"&:not(:disabled)": {
borderInlineEndColor: borderColor
}
}
},
"&:not(:first-child)": {
[`&, & > ${buttonTypeCls}`]: {
"&:not(:disabled)": {
borderInlineStartColor: borderColor
}
}
}
}
});
const genGroupStyle$1 = (token2) => {
const {
componentCls,
fontSize,
lineWidth,
groupBorderColor,
colorErrorHover
} = token2;
return {
[`${componentCls}-group`]: [
{
position: "relative",
display: "inline-flex",
// Border
[`> span, > ${componentCls}`]: {
"&:not(:last-child)": {
[`&, & > ${componentCls}`]: {
borderStartEndRadius: 0,
borderEndEndRadius: 0
}
},
"&:not(:first-child)": {
marginInlineStart: token2.calc(lineWidth).mul(-1).equal(),
[`&, & > ${componentCls}`]: {
borderStartStartRadius: 0,
borderEndStartRadius: 0
}
}
},
[componentCls]: {
position: "relative",
zIndex: 1,
"&:hover, &:focus, &:active": {
zIndex: 2
},
"&[disabled]": {
zIndex: 0
}
},
[`${componentCls}-icon-only`]: {
fontSize
}
},
// Border Color
genButtonBorderStyle(`${componentCls}-primary`, groupBorderColor),
genButtonBorderStyle(`${componentCls}-danger`, colorErrorHover)
]
};
};
const round$4 = Math.round;
function splitColorStr(str, parseNum) {
const match2 = str.replace(/^[^(]*\((.*)/, "$1").replace(/\).*/, "").match(/\d*\.?\d+%?/g) || [];
const numList = match2.map((item) => parseFloat(item));
for (let i = 0; i < 3; i += 1) {
numList[i] = parseNum(numList[i] || 0, match2[i] || "", i);
}
if (match2[3]) {
numList[3] = match2[3].includes("%") ? numList[3] / 100 : numList[3];
} else {
numList[3] = 1;
}
return numList;
}
const parseHSVorHSL = (num, _, index2) => index2 === 0 ? num : num / 100;
function limitRange(value, max3) {
const mergedMax = max3 || 255;
if (value > mergedMax) {
return mergedMax;
}
if (value < 0) {
return 0;
}
return value;
}
class FastColor {
constructor(input) {
_defineProperty(this, "isValid", true);
_defineProperty(this, "r", 0);
_defineProperty(this, "g", 0);
_defineProperty(this, "b", 0);
_defineProperty(this, "a", 1);
_defineProperty(this, "_h", void 0);
_defineProperty(this, "_s", void 0);
_defineProperty(this, "_l", void 0);
_defineProperty(this, "_v", void 0);
_defineProperty(this, "_max", void 0);
_defineProperty(this, "_min", void 0);
_defineProperty(this, "_brightness", void 0);
function matchFormat(str) {
return str[0] in input && str[1] in input && str[2] in input;
}
if (!input) ;
else if (typeof input === "string") {
let matchPrefix2 = function(prefix) {
return trimStr.startsWith(prefix);
};
var matchPrefix = matchPrefix2;
const trimStr = input.trim();
if (/^#?[A-F\d]{3,8}$/i.test(trimStr)) {
this.fromHexString(trimStr);
} else if (matchPrefix2("rgb")) {
this.fromRgbString(trimStr);
} else if (matchPrefix2("hsl")) {
this.fromHslString(trimStr);
} else if (matchPrefix2("hsv") || matchPrefix2("hsb")) {
this.fromHsvString(trimStr);
}
} else if (input instanceof FastColor) {
this.r = input.r;
this.g = input.g;
this.b = input.b;
this.a = input.a;
this._h = input._h;
this._s = input._s;
this._l = input._l;
this._v = input._v;
} else if (matchFormat("rgb")) {
this.r = limitRange(input.r);
this.g = limitRange(input.g);
this.b = limitRange(input.b);
this.a = typeof input.a === "number" ? limitRange(input.a, 1) : 1;
} else if (matchFormat("hsl")) {
this.fromHsl(input);
} else if (matchFormat("hsv")) {
this.fromHsv(input);
} else {
throw new Error("@ant-design/fast-color: unsupported input " + JSON.stringify(input));
}
}
// ======================= Setter =======================
setR(value) {
return this._sc("r", value);
}
setG(value) {
return this._sc("g", value);
}
setB(value) {
return this._sc("b", value);
}
setA(value) {
return this._sc("a", value, 1);
}
setHue(value) {
const hsv = this.toHsv();
hsv.h = value;
return this._c(hsv);
}
// ======================= Getter =======================
/**
* Returns the perceived luminance of a color, from 0-1.
* @see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef
*/
getLuminance() {
function adjustGamma(raw) {
const val = raw / 255;
return val <= 0.03928 ? val / 12.92 : Math.pow((val + 0.055) / 1.055, 2.4);
}
const R2 = adjustGamma(this.r);
const G2 = adjustGamma(this.g);
const B2 = adjustGamma(this.b);
return 0.2126 * R2 + 0.7152 * G2 + 0.0722 * B2;
}
getHue() {
if (typeof this._h === "undefined") {
const delta = this.getMax() - this.getMin();
if (delta === 0) {
this._h = 0;
} else {
this._h = round$4(60 * (this.r === this.getMax() ? (this.g - this.b) / delta + (this.g < this.b ? 6 : 0) : this.g === this.getMax() ? (this.b - this.r) / delta + 2 : (this.r - this.g) / delta + 4));
}
}
return this._h;
}
getSaturation() {
if (typeof this._s === "undefined") {
const delta = this.getMax() - this.getMin();
if (delta === 0) {
this._s = 0;
} else {
this._s = delta / this.getMax();
}
}
return this._s;
}
getLightness() {
if (typeof this._l === "undefined") {
this._l = (this.getMax() + this.getMin()) / 510;
}
return this._l;
}
getValue() {
if (typeof this._v === "undefined") {
this._v = this.getMax() / 255;
}
return this._v;
}
/**
* Returns the perceived brightness of the color, from 0-255.
* Note: this is not the b of HSB
* @see http://www.w3.org/TR/AERT#color-contrast
*/
getBrightness() {
if (typeof this._brightness === "undefined") {
this._brightness = (this.r * 299 + this.g * 587 + this.b * 114) / 1e3;
}
return this._brightness;
}
// ======================== Func ========================
darken(amount = 10) {
const h2 = this.getHue();
const s = this.getSaturation();
let l2 = this.getLightness() - amount / 100;
if (l2 < 0) {
l2 = 0;
}
return this._c({
h: h2,
s,
l: l2,
a: this.a
});
}
lighten(amount = 10) {
const h2 = this.getHue();
const s = this.getSaturation();
let l2 = this.getLightness() + amount / 100;
if (l2 > 1) {
l2 = 1;
}
return this._c({
h: h2,
s,
l: l2,
a: this.a
});
}
/**
* Mix the current color a given amount with another color, from 0 to 100.
* 0 means no mixing (return current color).
*/
mix(input, amount = 50) {
const color2 = this._c(input);
const p2 = amount / 100;
const calc = (key) => (color2[key] - this[key]) * p2 + this[key];
const rgba = {
r: round$4(calc("r")),
g: round$4(calc("g")),
b: round$4(calc("b")),
a: round$4(calc("a") * 100) / 100
};
return this._c(rgba);
}
/**
* Mix the color with pure white, from 0 to 100.
* Providing 0 will do nothing, providing 100 will always return white.
*/
tint(amount = 10) {
return this.mix({
r: 255,
g: 255,
b: 255,
a: 1
}, amount);
}
/**
* Mix the color with pure black, from 0 to 100.
* Providing 0 will do nothing, providing 100 will always return black.
*/
shade(amount = 10) {
return this.mix({
r: 0,
g: 0,
b: 0,
a: 1
}, amount);
}
onBackground(background) {
const bg2 = this._c(background);
const alpha = this.a + bg2.a * (1 - this.a);
const calc = (key) => {
return round$4((this[key] * this.a + bg2[key] * bg2.a * (1 - this.a)) / alpha);
};
return this._c({
r: calc("r"),
g: calc("g"),
b: calc("b"),
a: alpha
});
}
// ======================= Status =======================
isDark() {
return this.getBrightness() < 128;
}
isLight() {
return this.getBrightness() >= 128;
}
// ======================== MISC ========================
equals(other) {
return this.r === other.r && this.g === other.g && this.b === other.b && this.a === other.a;
}
clone() {
return this._c(this);
}
// ======================= Format =======================
toHexString() {
let hex2 = "#";
const rHex = (this.r || 0).toString(16);
hex2 += rHex.length === 2 ? rHex : "0" + rHex;
const gHex = (this.g || 0).toString(16);
hex2 += gHex.length === 2 ? gHex : "0" + gHex;
const bHex = (this.b || 0).toString(16);
hex2 += bHex.length === 2 ? bHex : "0" + bHex;
if (typeof this.a === "number" && this.a >= 0 && this.a < 1) {
const aHex = round$4(this.a * 255).toString(16);
hex2 += aHex.length === 2 ? aHex : "0" + aHex;
}
return hex2;
}
/** CSS support color pattern */
toHsl() {
return {
h: this.getHue(),
s: this.getSaturation(),
l: this.getLightness(),
a: this.a
};
}
/** CSS support color pattern */
toHslString() {
const h2 = this.getHue();
const s = round$4(this.getSaturation() * 100);
const l2 = round$4(this.getLightness() * 100);
return this.a !== 1 ? `hsla(${h2},${s}%,${l2}%,${this.a})` : `hsl(${h2},${s}%,${l2}%)`;
}
/** Same as toHsb */
toHsv() {
return {
h: this.getHue(),
s: this.getSaturation(),
v: this.getValue(),
a: this.a
};
}
toRgb() {
return {
r: this.r,
g: this.g,
b: this.b,
a: this.a
};
}
toRgbString() {
return this.a !== 1 ? `rgba(${this.r},${this.g},${this.b},${this.a})` : `rgb(${this.r},${this.g},${this.b})`;
}
toString() {
return this.toRgbString();
}
// ====================== Privates ======================
/** Return a new FastColor object with one channel changed */
_sc(rgb, value, max3) {
const clone3 = this.clone();
clone3[rgb] = limitRange(value, max3);
return clone3;
}
_c(input) {
return new this.constructor(input);
}
getMax() {
if (typeof this._max === "undefined") {
this._max = Math.max(this.r, this.g, this.b);
}
return this._max;
}
getMin() {
if (typeof this._min === "undefined") {
this._min = Math.min(this.r, this.g, this.b);
}
return this._min;
}
fromHexString(trimStr) {
const withoutPrefix = trimStr.replace("#", "");
function connectNum(index1, index2) {
return parseInt(withoutPrefix[index1] + withoutPrefix[index2 || index1], 16);
}
if (withoutPrefix.length < 6) {
this.r = connectNum(0);
this.g = connectNum(1);
this.b = connectNum(2);
this.a = withoutPrefix[3] ? connectNum(3) / 255 : 1;
} else {
this.r = connectNum(0, 1);
this.g = connectNum(2, 3);
this.b = connectNum(4, 5);
this.a = withoutPrefix[6] ? connectNum(6, 7) / 255 : 1;
}
}
fromHsl({
h: h2,
s,
l: l2,
a
}) {
this._h = h2 % 360;
this._s = s;
this._l = l2;
this.a = typeof a === "number" ? a : 1;
if (s <= 0) {
const rgb = round$4(l2 * 255);
this.r = rgb;
this.g = rgb;
this.b = rgb;
}
let r2 = 0, g2 = 0, b2 = 0;
const huePrime = h2 / 60;
const chroma = (1 - Math.abs(2 * l2 - 1)) * s;
const secondComponent = chroma * (1 - Math.abs(huePrime % 2 - 1));
if (huePrime >= 0 && huePrime < 1) {
r2 = chroma;
g2 = secondComponent;
} else if (huePrime >= 1 && huePrime < 2) {
r2 = secondComponent;
g2 = chroma;
} else if (huePrime >= 2 && huePrime < 3) {
g2 = chroma;
b2 = secondComponent;
} else if (huePrime >= 3 && huePrime < 4) {
g2 = secondComponent;
b2 = chroma;
} else if (huePrime >= 4 && huePrime < 5) {
r2 = secondComponent;
b2 = chroma;
} else if (huePrime >= 5 && huePrime < 6) {
r2 = chroma;
b2 = secondComponent;
}
const lightnessModification = l2 - chroma / 2;
this.r = round$4((r2 + lightnessModification) * 255);
this.g = round$4((g2 + lightnessModification) * 255);
this.b = round$4((b2 + lightnessModification) * 255);
}
fromHsv({
h: h2,
s,
v: v4,
a
}) {
this._h = h2 % 360;
this._s = s;
this._v = v4;
this.a = typeof a === "number" ? a : 1;
const vv = round$4(v4 * 255);
this.r = vv;
this.g = vv;
this.b = vv;
if (s <= 0) {
return;
}
const hh2 = h2 / 60;
const i = Math.floor(hh2);
const ff2 = hh2 - i;
const p2 = round$4(v4 * (1 - s) * 255);
const q2 = round$4(v4 * (1 - s * ff2) * 255);
const t2 = round$4(v4 * (1 - s * (1 - ff2)) * 255);
switch (i) {
case 0:
this.g = t2;
this.b = p2;
break;
case 1:
this.r = q2;
this.b = p2;
break;
case 2:
this.r = p2;
this.b = t2;
break;
case 3:
this.r = p2;
this.g = q2;
break;
case 4:
this.r = t2;
this.g = p2;
break;
case 5:
default:
this.g = p2;
this.b = q2;
break;
}
}
fromHsvString(trimStr) {
const cells = splitColorStr(trimStr, parseHSVorHSL);
this.fromHsv({
h: cells[0],
s: cells[1],
v: cells[2],
a: cells[3]
});
}
fromHslString(trimStr) {
const cells = splitColorStr(trimStr, parseHSVorHSL);
this.fromHsl({
h: cells[0],
s: cells[1],
l: cells[2],
a: cells[3]
});
}
fromRgbString(trimStr) {
const cells = splitColorStr(trimStr, (num, txt) => (
// Convert percentage to number. e.g. 50% -> 128
txt.includes("%") ? round$4(num / 100 * 255) : num
));
this.r = cells[0];
this.g = cells[1];
this.b = cells[2];
this.a = cells[3];
}
}
var _excluded$E = ["b"], _excluded2$5 = ["v"];
var getRoundNumber = function getRoundNumber2(value) {
return Math.round(Number(value || 0));
};
var convertHsb2Hsv = function convertHsb2Hsv2(color2) {
if (color2 instanceof FastColor) {
return color2;
}
if (color2 && _typeof$2(color2) === "object" && "h" in color2 && "b" in color2) {
var _ref = color2, b2 = _ref.b, resets = _objectWithoutProperties(_ref, _excluded$E);
return _objectSpread2$1(_objectSpread2$1({}, resets), {}, {
v: b2
});
}
if (typeof color2 === "string" && /hsb/.test(color2)) {
return color2.replace(/hsb/, "hsv");
}
return color2;
};
var Color = /* @__PURE__ */ function(_FastColor) {
_inherits(Color2, _FastColor);
var _super = _createSuper(Color2);
function Color2(color2) {
_classCallCheck(this, Color2);
return _super.call(this, convertHsb2Hsv(color2));
}
_createClass(Color2, [{
key: "toHsbString",
value: function toHsbString() {
var hsb = this.toHsb();
var saturation = getRoundNumber(hsb.s * 100);
var lightness = getRoundNumber(hsb.b * 100);
var hue = getRoundNumber(hsb.h);
var alpha = hsb.a;
var hsbString = "hsb(".concat(hue, ", ").concat(saturation, "%, ").concat(lightness, "%)");
var hsbaString = "hsba(".concat(hue, ", ").concat(saturation, "%, ").concat(lightness, "%, ").concat(alpha.toFixed(alpha === 0 ? 0 : 2), ")");
return alpha === 1 ? hsbString : hsbaString;
}
}, {
key: "toHsb",
value: function toHsb() {
var _this$toHsv = this.toHsv(), v4 = _this$toHsv.v, resets = _objectWithoutProperties(_this$toHsv, _excluded2$5);
return _objectSpread2$1(_objectSpread2$1({}, resets), {}, {
b: v4,
a: this.a
});
}
}]);
return Color2;
}(FastColor);
var generateColor = function generateColor2(color2) {
if (color2 instanceof Color) {
return color2;
}
return new Color(color2);
};
generateColor("#1677ff");
const toHexFormat = (value, alpha) => (value === null || value === void 0 ? void 0 : value.replace(/[^\w/]/g, "").slice(0, alpha ? 8 : 6)) || "";
const getHex = (value, alpha) => value ? toHexFormat(value, alpha) : "";
let AggregationColor = /* @__PURE__ */ function() {
function AggregationColor2(color2) {
_classCallCheck(this, AggregationColor2);
var _a2;
this.cleared = false;
if (color2 instanceof AggregationColor2) {
this.metaColor = color2.metaColor.clone();
this.colors = (_a2 = color2.colors) === null || _a2 === void 0 ? void 0 : _a2.map((info) => ({
color: new AggregationColor2(info.color),
percent: info.percent
}));
this.cleared = color2.cleared;
return;
}
const isArray2 = Array.isArray(color2);
if (isArray2 && color2.length) {
this.colors = color2.map((_ref) => {
let {
color: c2,
percent
} = _ref;
return {
color: new AggregationColor2(c2),
percent
};
});
this.metaColor = new Color(this.colors[0].color.metaColor);
} else {
this.metaColor = new Color(isArray2 ? "" : color2);
}
if (!color2 || isArray2 && !this.colors) {
this.metaColor = this.metaColor.setA(0);
this.cleared = true;
}
}
return _createClass(AggregationColor2, [{
key: "toHsb",
value: function toHsb() {
return this.metaColor.toHsb();
}
}, {
key: "toHsbString",
value: function toHsbString() {
return this.metaColor.toHsbString();
}
}, {
key: "toHex",
value: function toHex3() {
return getHex(this.toHexString(), this.metaColor.a < 1);
}
}, {
key: "toHexString",
value: function toHexString2() {
return this.metaColor.toHexString();
}
}, {
key: "toRgb",
value: function toRgb2() {
return this.metaColor.toRgb();
}
}, {
key: "toRgbString",
value: function toRgbString2() {
return this.metaColor.toRgbString();
}
}, {
key: "isGradient",
value: function isGradient2() {
return !!this.colors && !this.cleared;
}
}, {
key: "getColors",
value: function getColors() {
return this.colors || [{
color: this,
percent: 0
}];
}
}, {
key: "toCssString",
value: function toCssString() {
const {
colors
} = this;
if (colors) {
const colorsStr = colors.map((c2) => `${c2.color.toRgbString()} ${c2.percent}%`).join(", ");
return `linear-gradient(90deg, ${colorsStr})`;
}
return this.metaColor.toRgbString();
}
}, {
key: "equals",
value: function equals(color2) {
if (!color2 || this.isGradient() !== color2.isGradient()) {
return false;
}
if (!this.isGradient()) {
return this.toHexString() === color2.toHexString();
}
return this.colors.length === color2.colors.length && this.colors.every((c2, i) => {
const target = color2.colors[i];
return c2.percent === target.percent && c2.color.equals(target.color);
});
}
}]);
}();
const genCollapseMotion = (token2) => ({
[token2.componentCls]: {
// For common/openAnimation
[`${token2.antCls}-motion-collapse-legacy`]: {
overflow: "hidden",
"&-active": {
transition: `height ${token2.motionDurationMid} ${token2.motionEaseInOut},
opacity ${token2.motionDurationMid} ${token2.motionEaseInOut} !important`
}
},
[`${token2.antCls}-motion-collapse`]: {
overflow: "hidden",
transition: `height ${token2.motionDurationMid} ${token2.motionEaseInOut},
opacity ${token2.motionDurationMid} ${token2.motionEaseInOut} !important`
}
}
});
const initMotionCommon = (duration) => ({
animationDuration: duration,
animationFillMode: "both"
});
const initMotionCommonLeave = (duration) => ({
animationDuration: duration,
animationFillMode: "both"
});
const initMotion = function(motionCls, inKeyframes, outKeyframes, duration) {
let sameLevel = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : false;
const sameLevelPrefix = sameLevel ? "&" : "";
return {
[`
${sameLevelPrefix}${motionCls}-enter,
${sameLevelPrefix}${motionCls}-appear
`]: Object.assign(Object.assign({}, initMotionCommon(duration)), {
animationPlayState: "paused"
}),
[`${sameLevelPrefix}${motionCls}-leave`]: Object.assign(Object.assign({}, initMotionCommonLeave(duration)), {
animationPlayState: "paused"
}),
[`
${sameLevelPrefix}${motionCls}-enter${motionCls}-enter-active,
${sameLevelPrefix}${motionCls}-appear${motionCls}-appear-active
`]: {
animationName: inKeyframes,
animationPlayState: "running"
},
[`${sameLevelPrefix}${motionCls}-leave${motionCls}-leave-active`]: {
animationName: outKeyframes,
animationPlayState: "running",
pointerEvents: "none"
}
};
};
const moveDownIn = new Keyframe("antMoveDownIn", {
"0%": {
transform: "translate3d(0, 100%, 0)",
transformOrigin: "0 0",
opacity: 0
},
"100%": {
transform: "translate3d(0, 0, 0)",
transformOrigin: "0 0",
opacity: 1
}
});
const moveDownOut = new Keyframe("antMoveDownOut", {
"0%": {
transform: "translate3d(0, 0, 0)",
transformOrigin: "0 0",
opacity: 1
},
"100%": {
transform: "translate3d(0, 100%, 0)",
transformOrigin: "0 0",
opacity: 0
}
});
const moveLeftIn = new Keyframe("antMoveLeftIn", {
"0%": {
transform: "translate3d(-100%, 0, 0)",
transformOrigin: "0 0",
opacity: 0
},
"100%": {
transform: "translate3d(0, 0, 0)",
transformOrigin: "0 0",
opacity: 1
}
});
const moveLeftOut = new Keyframe("antMoveLeftOut", {
"0%": {
transform: "translate3d(0, 0, 0)",
transformOrigin: "0 0",
opacity: 1
},
"100%": {
transform: "translate3d(-100%, 0, 0)",
transformOrigin: "0 0",
opacity: 0
}
});
const moveRightIn = new Keyframe("antMoveRightIn", {
"0%": {
transform: "translate3d(100%, 0, 0)",
transformOrigin: "0 0",
opacity: 0
},
"100%": {
transform: "translate3d(0, 0, 0)",
transformOrigin: "0 0",
opacity: 1
}
});
const moveRightOut = new Keyframe("antMoveRightOut", {
"0%": {
transform: "translate3d(0, 0, 0)",
transformOrigin: "0 0",
opacity: 1
},
"100%": {
transform: "translate3d(100%, 0, 0)",
transformOrigin: "0 0",
opacity: 0
}
});
const moveUpIn = new Keyframe("antMoveUpIn", {
"0%": {
transform: "translate3d(0, -100%, 0)",
transformOrigin: "0 0",
opacity: 0
},
"100%": {
transform: "translate3d(0, 0, 0)",
transformOrigin: "0 0",
opacity: 1
}
});
const moveUpOut = new Keyframe("antMoveUpOut", {
"0%": {
transform: "translate3d(0, 0, 0)",
transformOrigin: "0 0",
opacity: 1
},
"100%": {
transform: "translate3d(0, -100%, 0)",
transformOrigin: "0 0",
opacity: 0
}
});
const moveMotion = {
"move-up": {
inKeyframes: moveUpIn,
outKeyframes: moveUpOut
},
"move-down": {
inKeyframes: moveDownIn,
outKeyframes: moveDownOut
},
"move-left": {
inKeyframes: moveLeftIn,
outKeyframes: moveLeftOut
},
"move-right": {
inKeyframes: moveRightIn,
outKeyframes: moveRightOut
}
};
const initMoveMotion = (token2, motionName) => {
const {
antCls
} = token2;
const motionCls = `${antCls}-${motionName}`;
const {
inKeyframes,
outKeyframes
} = moveMotion[motionName];
return [initMotion(motionCls, inKeyframes, outKeyframes, token2.motionDurationMid), {
[`
${motionCls}-enter,
${motionCls}-appear
`]: {
opacity: 0,
animationTimingFunction: token2.motionEaseOutCirc
},
[`${motionCls}-leave`]: {
animationTimingFunction: token2.motionEaseInOutCirc
}
}];
};
const slideUpIn = new Keyframe("antSlideUpIn", {
"0%": {
transform: "scaleY(0.8)",
transformOrigin: "0% 0%",
opacity: 0
},
"100%": {
transform: "scaleY(1)",
transformOrigin: "0% 0%",
opacity: 1
}
});
const slideUpOut = new Keyframe("antSlideUpOut", {
"0%": {
transform: "scaleY(1)",
transformOrigin: "0% 0%",
opacity: 1
},
"100%": {
transform: "scaleY(0.8)",
transformOrigin: "0% 0%",
opacity: 0
}
});
const slideDownIn = new Keyframe("antSlideDownIn", {
"0%": {
transform: "scaleY(0.8)",
transformOrigin: "100% 100%",
opacity: 0
},
"100%": {
transform: "scaleY(1)",
transformOrigin: "100% 100%",
opacity: 1
}
});
const slideDownOut = new Keyframe("antSlideDownOut", {
"0%": {
transform: "scaleY(1)",
transformOrigin: "100% 100%",
opacity: 1
},
"100%": {
transform: "scaleY(0.8)",
transformOrigin: "100% 100%",
opacity: 0
}
});
const slideLeftIn = new Keyframe("antSlideLeftIn", {
"0%": {
transform: "scaleX(0.8)",
transformOrigin: "0% 0%",
opacity: 0
},
"100%": {
transform: "scaleX(1)",
transformOrigin: "0% 0%",
opacity: 1
}
});
const slideLeftOut = new Keyframe("antSlideLeftOut", {
"0%": {
transform: "scaleX(1)",
transformOrigin: "0% 0%",
opacity: 1
},
"100%": {
transform: "scaleX(0.8)",
transformOrigin: "0% 0%",
opacity: 0
}
});
const slideRightIn = new Keyframe("antSlideRightIn", {
"0%": {
transform: "scaleX(0.8)",
transformOrigin: "100% 0%",
opacity: 0
},
"100%": {
transform: "scaleX(1)",
transformOrigin: "100% 0%",
opacity: 1
}
});
const slideRightOut = new Keyframe("antSlideRightOut", {
"0%": {
transform: "scaleX(1)",
transformOrigin: "100% 0%",
opacity: 1
},
"100%": {
transform: "scaleX(0.8)",
transformOrigin: "100% 0%",
opacity: 0
}
});
const slideMotion = {
"slide-up": {
inKeyframes: slideUpIn,
outKeyframes: slideUpOut
},
"slide-down": {
inKeyframes: slideDownIn,
outKeyframes: slideDownOut
},
"slide-left": {
inKeyframes: slideLeftIn,
outKeyframes: slideLeftOut
},
"slide-right": {
inKeyframes: slideRightIn,
outKeyframes: slideRightOut
}
};
const initSlideMotion = (token2, motionName) => {
const {
antCls
} = token2;
const motionCls = `${antCls}-${motionName}`;
const {
inKeyframes,
outKeyframes
} = slideMotion[motionName];
return [initMotion(motionCls, inKeyframes, outKeyframes, token2.motionDurationMid), {
[`
${motionCls}-enter,
${motionCls}-appear
`]: {
transform: "scale(0)",
transformOrigin: "0% 0%",
opacity: 0,
animationTimingFunction: token2.motionEaseOutQuint,
"&-prepare": {
transform: "scale(1)"
}
},
[`${motionCls}-leave`]: {
animationTimingFunction: token2.motionEaseInQuint
}
}];
};
const zoomIn = new Keyframe("antZoomIn", {
"0%": {
transform: "scale(0.2)",
opacity: 0
},
"100%": {
transform: "scale(1)",
opacity: 1
}
});
const zoomOut = new Keyframe("antZoomOut", {
"0%": {
transform: "scale(1)"
},
"100%": {
transform: "scale(0.2)",
opacity: 0
}
});
const zoomBigIn = new Keyframe("antZoomBigIn", {
"0%": {
transform: "scale(0.8)",
opacity: 0
},
"100%": {
transform: "scale(1)",
opacity: 1
}
});
const zoomBigOut = new Keyframe("antZoomBigOut", {
"0%": {
transform: "scale(1)"
},
"100%": {
transform: "scale(0.8)",
opacity: 0
}
});
const zoomUpIn = new Keyframe("antZoomUpIn", {
"0%": {
transform: "scale(0.8)",
transformOrigin: "50% 0%",
opacity: 0
},
"100%": {
transform: "scale(1)",
transformOrigin: "50% 0%"
}
});
const zoomUpOut = new Keyframe("antZoomUpOut", {
"0%": {
transform: "scale(1)",
transformOrigin: "50% 0%"
},
"100%": {
transform: "scale(0.8)",
transformOrigin: "50% 0%",
opacity: 0
}
});
const zoomLeftIn = new Keyframe("antZoomLeftIn", {
"0%": {
transform: "scale(0.8)",
transformOrigin: "0% 50%",
opacity: 0
},
"100%": {
transform: "scale(1)",
transformOrigin: "0% 50%"
}
});
const zoomLeftOut = new Keyframe("antZoomLeftOut", {
"0%": {
transform: "scale(1)",
transformOrigin: "0% 50%"
},
"100%": {
transform: "scale(0.8)",
transformOrigin: "0% 50%",
opacity: 0
}
});
const zoomRightIn = new Keyframe("antZoomRightIn", {
"0%": {
transform: "scale(0.8)",
transformOrigin: "100% 50%",
opacity: 0
},
"100%": {
transform: "scale(1)",
transformOrigin: "100% 50%"
}
});
const zoomRightOut = new Keyframe("antZoomRightOut", {
"0%": {
transform: "scale(1)",
transformOrigin: "100% 50%"
},
"100%": {
transform: "scale(0.8)",
transformOrigin: "100% 50%",
opacity: 0
}
});
const zoomDownIn = new Keyframe("antZoomDownIn", {
"0%": {
transform: "scale(0.8)",
transformOrigin: "50% 100%",
opacity: 0
},
"100%": {
transform: "scale(1)",
transformOrigin: "50% 100%"
}
});
const zoomDownOut = new Keyframe("antZoomDownOut", {
"0%": {
transform: "scale(1)",
transformOrigin: "50% 100%"
},
"100%": {
transform: "scale(0.8)",
transformOrigin: "50% 100%",
opacity: 0
}
});
const zoomMotion = {
zoom: {
inKeyframes: zoomIn,
outKeyframes: zoomOut
},
"zoom-big": {
inKeyframes: zoomBigIn,
outKeyframes: zoomBigOut
},
"zoom-big-fast": {
inKeyframes: zoomBigIn,
outKeyframes: zoomBigOut
},
"zoom-left": {
inKeyframes: zoomLeftIn,
outKeyframes: zoomLeftOut
},
"zoom-right": {
inKeyframes: zoomRightIn,
outKeyframes: zoomRightOut
},
"zoom-up": {
inKeyframes: zoomUpIn,
outKeyframes: zoomUpOut
},
"zoom-down": {
inKeyframes: zoomDownIn,
outKeyframes: zoomDownOut
}
};
const initZoomMotion = (token2, motionName) => {
const {
antCls
} = token2;
const motionCls = `${antCls}-${motionName}`;
const {
inKeyframes,
outKeyframes
} = zoomMotion[motionName];
return [initMotion(motionCls, inKeyframes, outKeyframes, motionName === "zoom-big-fast" ? token2.motionDurationFast : token2.motionDurationMid), {
[`
${motionCls}-enter,
${motionCls}-appear
`]: {
transform: "scale(0)",
opacity: 0,
animationTimingFunction: token2.motionEaseOutCirc,
"&-prepare": {
transform: "none"
}
},
[`${motionCls}-leave`]: {
animationTimingFunction: token2.motionEaseInOutCirc
}
}];
};
const isBright = (value, bgColorToken) => {
const {
r: r2,
g: g2,
b: b2,
a
} = value.toRgb();
const hsv = new Color(value.toRgbString()).onBackground(bgColorToken).toHsv();
if (a <= 0.5) {
return hsv.v > 0.5;
}
return r2 * 0.299 + g2 * 0.587 + b2 * 0.114 > 192;
};
const prepareToken$1 = (token2) => {
const {
paddingInline,
onlyIconSize,
paddingBlock
} = token2;
const buttonToken = merge$1(token2, {
buttonPaddingHorizontal: paddingInline,
buttonPaddingVertical: paddingBlock,
buttonIconOnlyFontSize: onlyIconSize
});
return buttonToken;
};
const prepareComponentToken$c = (token2) => {
var _a2, _b2, _c2, _d, _e, _f;
const contentFontSize = (_a2 = token2.contentFontSize) !== null && _a2 !== void 0 ? _a2 : token2.fontSize;
const contentFontSizeSM = (_b2 = token2.contentFontSizeSM) !== null && _b2 !== void 0 ? _b2 : token2.fontSize;
const contentFontSizeLG = (_c2 = token2.contentFontSizeLG) !== null && _c2 !== void 0 ? _c2 : token2.fontSizeLG;
const contentLineHeight = (_d = token2.contentLineHeight) !== null && _d !== void 0 ? _d : getLineHeight$1(contentFontSize);
const contentLineHeightSM = (_e = token2.contentLineHeightSM) !== null && _e !== void 0 ? _e : getLineHeight$1(contentFontSizeSM);
const contentLineHeightLG = (_f = token2.contentLineHeightLG) !== null && _f !== void 0 ? _f : getLineHeight$1(contentFontSizeLG);
const solidTextColor = isBright(new AggregationColor(token2.colorBgSolid), "#fff") ? "#000" : "#fff";
return {
fontWeight: 400,
defaultShadow: `0 ${token2.controlOutlineWidth}px 0 ${token2.controlTmpOutline}`,
primaryShadow: `0 ${token2.controlOutlineWidth}px 0 ${token2.controlOutline}`,
dangerShadow: `0 ${token2.controlOutlineWidth}px 0 ${token2.colorErrorOutline}`,
primaryColor: token2.colorTextLightSolid,
dangerColor: token2.colorTextLightSolid,
borderColorDisabled: token2.colorBorder,
defaultGhostColor: token2.colorBgContainer,
ghostBg: "transparent",
defaultGhostBorderColor: token2.colorBgContainer,
paddingInline: token2.paddingContentHorizontal - token2.lineWidth,
paddingInlineLG: token2.paddingContentHorizontal - token2.lineWidth,
paddingInlineSM: 8 - token2.lineWidth,
onlyIconSize: token2.fontSizeLG,
onlyIconSizeSM: token2.fontSizeLG - 2,
onlyIconSizeLG: token2.fontSizeLG + 2,
groupBorderColor: token2.colorPrimaryHover,
linkHoverBg: "transparent",
textTextColor: token2.colorText,
textTextHoverColor: token2.colorText,
textTextActiveColor: token2.colorText,
textHoverBg: token2.colorBgTextHover,
defaultColor: token2.colorText,
defaultBg: token2.colorBgContainer,
defaultBorderColor: token2.colorBorder,
defaultBorderColorDisabled: token2.colorBorder,
defaultHoverBg: token2.colorBgContainer,
defaultHoverColor: token2.colorPrimaryHover,
defaultHoverBorderColor: token2.colorPrimaryHover,
defaultActiveBg: token2.colorBgContainer,
defaultActiveColor: token2.colorPrimaryActive,
defaultActiveBorderColor: token2.colorPrimaryActive,
solidTextColor,
contentFontSize,
contentFontSizeSM,
contentFontSizeLG,
contentLineHeight,
contentLineHeightSM,
contentLineHeightLG,
paddingBlock: Math.max((token2.controlHeight - contentFontSize * contentLineHeight) / 2 - token2.lineWidth, 0),
paddingBlockSM: Math.max((token2.controlHeightSM - contentFontSizeSM * contentLineHeightSM) / 2 - token2.lineWidth, 0),
paddingBlockLG: Math.max((token2.controlHeightLG - contentFontSizeLG * contentLineHeightLG) / 2 - token2.lineWidth, 0)
};
};
const genSharedButtonStyle = (token2) => {
const {
componentCls,
iconCls,
fontWeight
} = token2;
return {
[componentCls]: {
outline: "none",
position: "relative",
display: "inline-flex",
gap: token2.marginXS,
alignItems: "center",
justifyContent: "center",
fontWeight,
whiteSpace: "nowrap",
textAlign: "center",
backgroundImage: "none",
background: "transparent",
border: `${unit$1(token2.lineWidth)} ${token2.lineType} transparent`,
cursor: "pointer",
transition: `all ${token2.motionDurationMid} ${token2.motionEaseInOut}`,
userSelect: "none",
touchAction: "manipulation",
color: token2.colorText,
"&:disabled > *": {
pointerEvents: "none"
},
"> span": {
display: "inline-block"
},
[`${componentCls}-icon`]: {
lineHeight: 1
},
"> a": {
color: "currentColor"
},
"&:not(:disabled)": Object.assign({}, genFocusStyle(token2)),
[`&${componentCls}-two-chinese-chars::first-letter`]: {
letterSpacing: "0.34em"
},
[`&${componentCls}-two-chinese-chars > *:not(${iconCls})`]: {
marginInlineEnd: "-0.34em",
letterSpacing: "0.34em"
},
// iconPosition="end"
"&-icon-end": {
flexDirection: "row-reverse"
}
}
};
};
const genHoverActiveButtonStyle = (btnCls, hoverStyle, activeStyle) => ({
[`&:not(:disabled):not(${btnCls}-disabled)`]: {
"&:hover": hoverStyle,
"&:active": activeStyle
}
});
const genCircleButtonStyle = (token2) => ({
minWidth: token2.controlHeight,
paddingInlineStart: 0,
paddingInlineEnd: 0,
borderRadius: "50%"
});
const genRoundButtonStyle = (token2) => ({
borderRadius: token2.controlHeight,
paddingInlineStart: token2.calc(token2.controlHeight).div(2).equal(),
paddingInlineEnd: token2.calc(token2.controlHeight).div(2).equal()
});
const genDisabledStyle$1 = (token2) => ({
cursor: "not-allowed",
borderColor: token2.borderColorDisabled,
color: token2.colorTextDisabled,
background: token2.colorBgContainerDisabled,
boxShadow: "none"
});
const genGhostButtonStyle = (btnCls, background, textColor, borderColor, textColorDisabled, borderColorDisabled, hoverStyle, activeStyle) => ({
[`&${btnCls}-background-ghost`]: Object.assign(Object.assign({
color: textColor || void 0,
background,
borderColor: borderColor || void 0,
boxShadow: "none"
}, genHoverActiveButtonStyle(btnCls, Object.assign({
background
}, hoverStyle), Object.assign({
background
}, activeStyle))), {
"&:disabled": {
cursor: "not-allowed",
color: textColorDisabled || void 0,
borderColor: borderColorDisabled || void 0
}
})
});
const genSolidDisabledButtonStyle = (token2) => ({
[`&:disabled, &${token2.componentCls}-disabled`]: Object.assign({}, genDisabledStyle$1(token2))
});
const genPureDisabledButtonStyle = (token2) => ({
[`&:disabled, &${token2.componentCls}-disabled`]: {
cursor: "not-allowed",
color: token2.colorTextDisabled
}
});
const genVariantButtonStyle = (token2, hoverStyle, activeStyle, variant) => {
const isPureDisabled = variant && ["link", "text"].includes(variant);
const genDisabledButtonStyle = isPureDisabled ? genPureDisabledButtonStyle : genSolidDisabledButtonStyle;
return Object.assign(Object.assign({}, genDisabledButtonStyle(token2)), genHoverActiveButtonStyle(token2.componentCls, hoverStyle, activeStyle));
};
const genSolidButtonStyle = (token2, textColor, background, hoverStyle, activeStyle) => ({
[`&${token2.componentCls}-variant-solid`]: Object.assign({
color: textColor,
background
}, genVariantButtonStyle(token2, hoverStyle, activeStyle))
});
const genOutlinedDashedButtonStyle = (token2, borderColor, background, hoverStyle, activeStyle) => ({
[`&${token2.componentCls}-variant-outlined, &${token2.componentCls}-variant-dashed`]: Object.assign({
borderColor,
background
}, genVariantButtonStyle(token2, hoverStyle, activeStyle))
});
const genDashedButtonStyle = (token2) => ({
[`&${token2.componentCls}-variant-dashed`]: {
borderStyle: "dashed"
}
});
const genFilledButtonStyle = (token2, background, hoverStyle, activeStyle) => ({
[`&${token2.componentCls}-variant-filled`]: Object.assign({
boxShadow: "none",
background
}, genVariantButtonStyle(token2, hoverStyle, activeStyle))
});
const genTextLinkButtonStyle = (token2, textColor, variant, hoverStyle, activeStyle) => ({
[`&${token2.componentCls}-variant-${variant}`]: Object.assign({
color: textColor,
boxShadow: "none"
}, genVariantButtonStyle(token2, hoverStyle, activeStyle, variant))
});
const genDefaultButtonStyle = (token2) => Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({
color: token2.defaultColor,
boxShadow: token2.defaultShadow
}, genSolidButtonStyle(token2, token2.solidTextColor, token2.colorBgSolid, {
background: token2.colorBgSolidHover
}, {
background: token2.colorBgSolidActive
})), genDashedButtonStyle(token2)), genFilledButtonStyle(token2, token2.colorFillTertiary, {
background: token2.colorFillSecondary
}, {
background: token2.colorFill
})), genTextLinkButtonStyle(token2, token2.textTextColor, "link", {
color: token2.colorLinkHover,
background: token2.linkHoverBg
}, {
color: token2.colorLinkActive
})), genGhostButtonStyle(token2.componentCls, token2.ghostBg, token2.defaultGhostColor, token2.defaultGhostBorderColor, token2.colorTextDisabled, token2.colorBorder));
const genPrimaryButtonStyle = (token2) => Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({
color: token2.colorPrimary,
boxShadow: token2.primaryShadow
}, genOutlinedDashedButtonStyle(token2, token2.colorPrimary, token2.colorBgContainer, {
color: token2.colorPrimaryTextHover,
borderColor: token2.colorPrimaryHover,
background: token2.colorBgContainer
}, {
color: token2.colorPrimaryTextActive,
borderColor: token2.colorPrimaryActive,
background: token2.colorBgContainer
})), genDashedButtonStyle(token2)), genFilledButtonStyle(token2, token2.colorPrimaryBg, {
background: token2.colorPrimaryBgHover
}, {
background: token2.colorPrimaryBorder
})), genTextLinkButtonStyle(token2, token2.colorLink, "text", {
color: token2.colorPrimaryTextHover,
background: token2.colorPrimaryBg
}, {
color: token2.colorPrimaryTextActive,
background: token2.colorPrimaryBorder
})), genGhostButtonStyle(token2.componentCls, token2.ghostBg, token2.colorPrimary, token2.colorPrimary, token2.colorTextDisabled, token2.colorBorder, {
color: token2.colorPrimaryHover,
borderColor: token2.colorPrimaryHover
}, {
color: token2.colorPrimaryActive,
borderColor: token2.colorPrimaryActive
}));
const genDangerousStyle = (token2) => Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({
color: token2.colorError,
boxShadow: token2.dangerShadow
}, genSolidButtonStyle(token2, token2.dangerColor, token2.colorError, {
background: token2.colorErrorHover
}, {
background: token2.colorErrorActive
})), genOutlinedDashedButtonStyle(token2, token2.colorError, token2.colorBgContainer, {
color: token2.colorErrorHover,
borderColor: token2.colorErrorBorderHover
}, {
color: token2.colorErrorActive,
borderColor: token2.colorErrorActive
})), genDashedButtonStyle(token2)), genFilledButtonStyle(token2, token2.colorErrorBg, {
background: token2.colorErrorBgFilledHover
}, {
background: token2.colorErrorBgActive
})), genTextLinkButtonStyle(token2, token2.colorError, "text", {
color: token2.colorErrorHover,
background: token2.colorErrorBg
}, {
color: token2.colorErrorHover,
background: token2.colorErrorBgActive
})), genTextLinkButtonStyle(token2, token2.colorError, "link", {
color: token2.colorErrorHover
}, {
color: token2.colorErrorActive
})), genGhostButtonStyle(token2.componentCls, token2.ghostBg, token2.colorError, token2.colorError, token2.colorTextDisabled, token2.colorBorder, {
color: token2.colorErrorHover,
borderColor: token2.colorErrorHover
}, {
color: token2.colorErrorActive,
borderColor: token2.colorErrorActive
}));
const genColorButtonStyle = (token2) => {
const {
componentCls
} = token2;
return {
[`${componentCls}-color-default`]: genDefaultButtonStyle(token2),
[`${componentCls}-color-primary`]: genPrimaryButtonStyle(token2),
[`${componentCls}-color-dangerous`]: genDangerousStyle(token2)
};
};
const genCompatibleButtonStyle = (token2) => Object.assign(Object.assign(Object.assign(Object.assign({}, genOutlinedDashedButtonStyle(token2, token2.defaultBorderColor, token2.defaultBg, {
color: token2.defaultHoverColor,
borderColor: token2.defaultHoverBorderColor,
background: token2.defaultHoverBg
}, {
color: token2.defaultActiveColor,
borderColor: token2.defaultActiveBorderColor,
background: token2.defaultActiveBg
})), genTextLinkButtonStyle(token2, token2.textTextColor, "text", {
color: token2.textTextHoverColor,
background: token2.textHoverBg
}, {
color: token2.textTextActiveColor,
background: token2.colorBgTextActive
})), genSolidButtonStyle(token2, token2.primaryColor, token2.colorPrimary, {
background: token2.colorPrimaryHover,
color: token2.primaryColor
}, {
background: token2.colorPrimaryActive,
color: token2.primaryColor
})), genTextLinkButtonStyle(token2, token2.colorLink, "link", {
color: token2.colorLinkHover,
background: token2.linkHoverBg
}, {
color: token2.colorLinkActive
}));
const genButtonStyle = function(token2) {
let prefixCls = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "";
const {
componentCls,
controlHeight,
fontSize,
lineHeight,
borderRadius,
buttonPaddingHorizontal,
iconCls,
buttonPaddingVertical
} = token2;
const iconOnlyCls = `${componentCls}-icon-only`;
return [
{
[prefixCls]: {
fontSize,
lineHeight,
height: controlHeight,
padding: `${unit$1(buttonPaddingVertical)} ${unit$1(buttonPaddingHorizontal)}`,
borderRadius,
[`&${iconOnlyCls}`]: {
width: controlHeight,
paddingInline: 0,
// make `btn-icon-only` not too narrow
[`&${componentCls}-compact-item`]: {
flex: "none"
},
[`&${componentCls}-round`]: {
width: "auto"
},
[iconCls]: {
fontSize: token2.buttonIconOnlyFontSize
}
},
// Loading
[`&${componentCls}-loading`]: {
opacity: token2.opacityLoading,
cursor: "default"
},
[`${componentCls}-loading-icon`]: {
transition: `width ${token2.motionDurationSlow} ${token2.motionEaseInOut}, opacity ${token2.motionDurationSlow} ${token2.motionEaseInOut}`
}
}
},
// Shape - patch prefixCls again to override solid border radius style
{
[`${componentCls}${componentCls}-circle${prefixCls}`]: genCircleButtonStyle(token2)
},
{
[`${componentCls}${componentCls}-round${prefixCls}`]: genRoundButtonStyle(token2)
}
];
};
const genSizeBaseButtonStyle = (token2) => {
const baseToken = merge$1(token2, {
fontSize: token2.contentFontSize,
lineHeight: token2.contentLineHeight
});
return genButtonStyle(baseToken, token2.componentCls);
};
const genSizeSmallButtonStyle = (token2) => {
const smallToken = merge$1(token2, {
controlHeight: token2.controlHeightSM,
fontSize: token2.contentFontSizeSM,
lineHeight: token2.contentLineHeightSM,
padding: token2.paddingXS,
buttonPaddingHorizontal: token2.paddingInlineSM,
buttonPaddingVertical: token2.paddingBlockSM,
borderRadius: token2.borderRadiusSM,
buttonIconOnlyFontSize: token2.onlyIconSizeSM
});
return genButtonStyle(smallToken, `${token2.componentCls}-sm`);
};
const genSizeLargeButtonStyle = (token2) => {
const largeToken = merge$1(token2, {
controlHeight: token2.controlHeightLG,
fontSize: token2.contentFontSizeLG,
lineHeight: token2.contentLineHeightLG,
buttonPaddingHorizontal: token2.paddingInlineLG,
buttonPaddingVertical: token2.paddingBlockLG,
borderRadius: token2.borderRadiusLG,
buttonIconOnlyFontSize: token2.onlyIconSizeLG
});
return genButtonStyle(largeToken, `${token2.componentCls}-lg`);
};
const genBlockButtonStyle = (token2) => {
const {
componentCls
} = token2;
return {
[componentCls]: {
[`&${componentCls}-block`]: {
width: "100%"
}
}
};
};
const useStyle$f = genStyleHooks("Button", (token2) => {
const buttonToken = prepareToken$1(token2);
return [
// Shared
genSharedButtonStyle(buttonToken),
// Size
genSizeBaseButtonStyle(buttonToken),
genSizeSmallButtonStyle(buttonToken),
genSizeLargeButtonStyle(buttonToken),
// Block
genBlockButtonStyle(buttonToken),
// Color
genColorButtonStyle(buttonToken),
// https://github.com/ant-design/ant-design/issues/50969
genCompatibleButtonStyle(buttonToken),
// Button Group
genGroupStyle$1(buttonToken)
];
}, prepareComponentToken$c, {
unitless: {
fontWeight: true,
contentLineHeight: true,
contentLineHeightSM: true,
contentLineHeightLG: true
}
});
function compactItemBorder(token2, parentCls, options) {
const {
focusElCls,
focus,
borderElCls
} = options;
const childCombinator = borderElCls ? "> *" : "";
const hoverEffects = ["hover", focus ? "focus" : null, "active"].filter(Boolean).map((n2) => `&:${n2} ${childCombinator}`).join(",");
return {
[`&-item:not(${parentCls}-last-item)`]: {
marginInlineEnd: token2.calc(token2.lineWidth).mul(-1).equal()
},
"&-item": Object.assign(Object.assign({
[hoverEffects]: {
zIndex: 2
}
}, focusElCls ? {
[`&${focusElCls}`]: {
zIndex: 2
}
} : {}), {
[`&[disabled] ${childCombinator}`]: {
zIndex: 0
}
})
};
}
function compactItemBorderRadius(prefixCls, parentCls, options) {
const {
borderElCls
} = options;
const childCombinator = borderElCls ? `> ${borderElCls}` : "";
return {
[`&-item:not(${parentCls}-first-item):not(${parentCls}-last-item) ${childCombinator}`]: {
borderRadius: 0
},
[`&-item:not(${parentCls}-last-item)${parentCls}-first-item`]: {
[`& ${childCombinator}, &${prefixCls}-sm ${childCombinator}, &${prefixCls}-lg ${childCombinator}`]: {
borderStartEndRadius: 0,
borderEndEndRadius: 0
}
},
[`&-item:not(${parentCls}-first-item)${parentCls}-last-item`]: {
[`& ${childCombinator}, &${prefixCls}-sm ${childCombinator}, &${prefixCls}-lg ${childCombinator}`]: {
borderStartStartRadius: 0,
borderEndStartRadius: 0
}
}
};
}
function genCompactItemStyle(token2) {
let options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {
focus: true
};
const {
componentCls
} = token2;
const compactCls = `${componentCls}-compact`;
return {
[compactCls]: Object.assign(Object.assign({}, compactItemBorder(token2, compactCls, options)), compactItemBorderRadius(componentCls, compactCls, options))
};
}
function compactItemVerticalBorder(token2, parentCls) {
return {
// border collapse
[`&-item:not(${parentCls}-last-item)`]: {
marginBottom: token2.calc(token2.lineWidth).mul(-1).equal()
},
"&-item": {
"&:hover,&:focus,&:active": {
zIndex: 2
},
"&[disabled]": {
zIndex: 0
}
}
};
}
function compactItemBorderVerticalRadius(prefixCls, parentCls) {
return {
[`&-item:not(${parentCls}-first-item):not(${parentCls}-last-item)`]: {
borderRadius: 0
},
[`&-item${parentCls}-first-item:not(${parentCls}-last-item)`]: {
[`&, &${prefixCls}-sm, &${prefixCls}-lg`]: {
borderEndEndRadius: 0,
borderEndStartRadius: 0
}
},
[`&-item${parentCls}-last-item:not(${parentCls}-first-item)`]: {
[`&, &${prefixCls}-sm, &${prefixCls}-lg`]: {
borderStartStartRadius: 0,
borderStartEndRadius: 0
}
}
};
}
function genCompactItemVerticalStyle(token2) {
const compactCls = `${token2.componentCls}-compact-vertical`;
return {
[compactCls]: Object.assign(Object.assign({}, compactItemVerticalBorder(token2, compactCls)), compactItemBorderVerticalRadius(token2.componentCls, compactCls))
};
}
const genButtonCompactStyle = (token2) => {
const {
componentCls,
calc
} = token2;
return {
[componentCls]: {
// Special styles for Primary Button
[`&-compact-item${componentCls}-primary`]: {
[`&:not([disabled]) + ${componentCls}-compact-item${componentCls}-primary:not([disabled])`]: {
position: "relative",
"&:before": {
position: "absolute",
top: calc(token2.lineWidth).mul(-1).equal(),
insetInlineStart: calc(token2.lineWidth).mul(-1).equal(),
display: "inline-block",
width: token2.lineWidth,
height: `calc(100% + ${unit$1(token2.lineWidth)} * 2)`,
backgroundColor: token2.colorPrimaryHover,
content: '""'
}
}
},
// Special styles for Primary Button
"&-compact-vertical-item": {
[`&${componentCls}-primary`]: {
[`&:not([disabled]) + ${componentCls}-compact-vertical-item${componentCls}-primary:not([disabled])`]: {
position: "relative",
"&:before": {
position: "absolute",
top: calc(token2.lineWidth).mul(-1).equal(),
insetInlineStart: calc(token2.lineWidth).mul(-1).equal(),
display: "inline-block",
width: `calc(100% + ${unit$1(token2.lineWidth)} * 2)`,
height: token2.lineWidth,
backgroundColor: token2.colorPrimaryHover,
content: '""'
}
}
}
}
}
};
};
const CompactCmp = genSubStyleComponent(["Button", "compact"], (token2) => {
const buttonToken = prepareToken$1(token2);
return [
// Space Compact
genCompactItemStyle(buttonToken),
genCompactItemVerticalStyle(buttonToken),
genButtonCompactStyle(buttonToken)
];
}, prepareComponentToken$c);
var __rest$r = function(s, e2) {
var t2 = {};
for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0) t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i])) t2[p2[i]] = s[p2[i]];
}
return t2;
};
function getLoadingConfig(loading) {
if (typeof loading === "object" && loading) {
let delay = loading === null || loading === void 0 ? void 0 : loading.delay;
delay = !Number.isNaN(delay) && typeof delay === "number" ? delay : 0;
return {
loading: delay <= 0,
delay
};
}
return {
loading: !!loading,
delay: 0
};
}
const ButtonTypeMap = {
default: ["default", "outlined"],
primary: ["primary", "solid"],
dashed: ["default", "dashed"],
link: ["primary", "link"],
text: ["default", "text"]
};
const InternalCompoundedButton = /* @__PURE__ */ React.forwardRef((props, ref) => {
var _a2, _b2, _c2;
const {
loading = false,
prefixCls: customizePrefixCls,
color: color2,
variant,
type: type4,
danger = false,
shape = "default",
size: customizeSize,
styles: styles2,
disabled: customDisabled,
className,
rootClassName,
children,
icon,
iconPosition = "start",
ghost = false,
block = false,
// React does not recognize the `htmlType` prop on a DOM element. Here we pick it out of `rest`.
htmlType = "button",
classNames: customClassNames,
style: customStyle = {},
autoInsertSpace
} = props, rest = __rest$r(props, ["loading", "prefixCls", "color", "variant", "type", "danger", "shape", "size", "styles", "disabled", "className", "rootClassName", "children", "icon", "iconPosition", "ghost", "block", "htmlType", "classNames", "style", "autoInsertSpace"]);
const mergedType = type4 || "default";
const [mergedColor, mergedVariant] = reactExports.useMemo(() => {
if (color2 && variant) {
return [color2, variant];
}
const colorVariantPair = ButtonTypeMap[mergedType] || [];
if (danger) {
return ["danger", colorVariantPair[1]];
}
return colorVariantPair;
}, [type4, color2, variant, danger]);
const isDanger = mergedColor === "danger";
const mergedColorText = isDanger ? "dangerous" : mergedColor;
const {
getPrefixCls,
direction,
button
} = reactExports.useContext(ConfigContext);
const mergedInsertSpace = (_a2 = autoInsertSpace !== null && autoInsertSpace !== void 0 ? autoInsertSpace : button === null || button === void 0 ? void 0 : button.autoInsertSpace) !== null && _a2 !== void 0 ? _a2 : true;
const prefixCls = getPrefixCls("btn", customizePrefixCls);
const [wrapCSSVar, hashId, cssVarCls] = useStyle$f(prefixCls);
const disabled = reactExports.useContext(DisabledContext);
const mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;
const groupSize = reactExports.useContext(GroupSizeContext);
const loadingOrDelay = reactExports.useMemo(() => getLoadingConfig(loading), [loading]);
const [innerLoading, setLoading] = reactExports.useState(loadingOrDelay.loading);
const [hasTwoCNChar, setHasTwoCNChar] = reactExports.useState(false);
const internalRef = /* @__PURE__ */ reactExports.createRef();
const buttonRef = composeRef(ref, internalRef);
const needInserted = reactExports.Children.count(children) === 1 && !icon && !isUnBorderedButtonVariant(mergedVariant);
reactExports.useEffect(() => {
let delayTimer = null;
if (loadingOrDelay.delay > 0) {
delayTimer = setTimeout(() => {
delayTimer = null;
setLoading(true);
}, loadingOrDelay.delay);
} else {
setLoading(loadingOrDelay.loading);
}
function cleanupTimer() {
if (delayTimer) {
clearTimeout(delayTimer);
delayTimer = null;
}
}
return cleanupTimer;
}, [loadingOrDelay]);
reactExports.useEffect(() => {
if (!buttonRef || !buttonRef.current || !mergedInsertSpace) {
return;
}
const buttonText = buttonRef.current.textContent;
if (needInserted && isTwoCNChar(buttonText)) {
if (!hasTwoCNChar) {
setHasTwoCNChar(true);
}
} else if (hasTwoCNChar) {
setHasTwoCNChar(false);
}
}, [buttonRef]);
const handleClick = (e2) => {
const {
onClick
} = props;
if (innerLoading || mergedDisabled) {
e2.preventDefault();
return;
}
onClick === null || onClick === void 0 ? void 0 : onClick(e2);
};
const {
compactSize,
compactItemClassnames
} = useCompactItemContext(prefixCls, direction);
const sizeClassNameMap = {
large: "lg",
small: "sm",
middle: void 0
};
const sizeFullName = useSize((ctxSize) => {
var _a22, _b22;
return (_b22 = (_a22 = customizeSize !== null && customizeSize !== void 0 ? customizeSize : compactSize) !== null && _a22 !== void 0 ? _a22 : groupSize) !== null && _b22 !== void 0 ? _b22 : ctxSize;
});
const sizeCls = sizeFullName ? sizeClassNameMap[sizeFullName] || "" : "";
const iconType = innerLoading ? "loading" : icon;
const linkButtonRestProps = omit(rest, ["navigate"]);
const classes = cls(prefixCls, hashId, cssVarCls, {
[`${prefixCls}-${shape}`]: shape !== "default" && shape,
// line(253 - 254): Compatible with versions earlier than 5.21.0
[`${prefixCls}-${mergedType}`]: mergedType,
[`${prefixCls}-dangerous`]: danger,
[`${prefixCls}-color-${mergedColorText}`]: mergedColorText,
[`${prefixCls}-variant-${mergedVariant}`]: mergedVariant,
[`${prefixCls}-${sizeCls}`]: sizeCls,
[`${prefixCls}-icon-only`]: !children && children !== 0 && !!iconType,
[`${prefixCls}-background-ghost`]: ghost && !isUnBorderedButtonVariant(mergedVariant),
[`${prefixCls}-loading`]: innerLoading,
[`${prefixCls}-two-chinese-chars`]: hasTwoCNChar && mergedInsertSpace && !innerLoading,
[`${prefixCls}-block`]: block,
[`${prefixCls}-rtl`]: direction === "rtl",
[`${prefixCls}-icon-end`]: iconPosition === "end"
}, compactItemClassnames, className, rootClassName, button === null || button === void 0 ? void 0 : button.className);
const fullStyle = Object.assign(Object.assign({}, button === null || button === void 0 ? void 0 : button.style), customStyle);
const iconClasses = cls(customClassNames === null || customClassNames === void 0 ? void 0 : customClassNames.icon, (_b2 = button === null || button === void 0 ? void 0 : button.classNames) === null || _b2 === void 0 ? void 0 : _b2.icon);
const iconStyle = Object.assign(Object.assign({}, (styles2 === null || styles2 === void 0 ? void 0 : styles2.icon) || {}), ((_c2 = button === null || button === void 0 ? void 0 : button.styles) === null || _c2 === void 0 ? void 0 : _c2.icon) || {});
const iconNode = icon && !innerLoading ? /* @__PURE__ */ React.createElement(IconWrapper, {
prefixCls,
className: iconClasses,
style: iconStyle
}, icon) : /* @__PURE__ */ React.createElement(LoadingIcon, {
existIcon: !!icon,
prefixCls,
loading: innerLoading
});
const kids = children || children === 0 ? spaceChildren(children, needInserted && mergedInsertSpace) : null;
if (linkButtonRestProps.href !== void 0) {
return wrapCSSVar(/* @__PURE__ */ React.createElement("a", Object.assign({}, linkButtonRestProps, {
className: cls(classes, {
[`${prefixCls}-disabled`]: mergedDisabled
}),
href: mergedDisabled ? void 0 : linkButtonRestProps.href,
style: fullStyle,
onClick: handleClick,
ref: buttonRef,
tabIndex: mergedDisabled ? -1 : 0
}), iconNode, kids));
}
let buttonNode = /* @__PURE__ */ React.createElement("button", Object.assign({}, rest, {
type: htmlType,
className: classes,
style: fullStyle,
onClick: handleClick,
disabled: mergedDisabled,
ref: buttonRef
}), iconNode, kids, !!compactItemClassnames && /* @__PURE__ */ React.createElement(CompactCmp, {
key: "compact",
prefixCls
}));
if (!isUnBorderedButtonVariant(mergedVariant)) {
buttonNode = /* @__PURE__ */ React.createElement(Wave, {
component: "Button",
disabled: innerLoading
}, buttonNode);
}
return wrapCSSVar(buttonNode);
});
const Button$1 = InternalCompoundedButton;
Button$1.Group = ButtonGroup;
Button$1.__ANT_BUTTON = true;
var OrderContext = /* @__PURE__ */ reactExports.createContext(null);
var EMPTY_LIST$3 = [];
function useDom(render2, debug) {
var _React$useState = reactExports.useState(function() {
if (!canUseDom()) {
return null;
}
var defaultEle = document.createElement("div");
return defaultEle;
}), _React$useState2 = _slicedToArray(_React$useState, 1), ele = _React$useState2[0];
var appendedRef = reactExports.useRef(false);
var queueCreate = reactExports.useContext(OrderContext);
var _React$useState3 = reactExports.useState(EMPTY_LIST$3), _React$useState4 = _slicedToArray(_React$useState3, 2), queue = _React$useState4[0], setQueue = _React$useState4[1];
var mergedQueueCreate = queueCreate || (appendedRef.current ? void 0 : function(appendFn) {
setQueue(function(origin) {
var newQueue = [appendFn].concat(_toConsumableArray(origin));
return newQueue;
});
});
function append2() {
if (!ele.parentElement) {
document.body.appendChild(ele);
}
appendedRef.current = true;
}
function cleanup2() {
var _ele$parentElement;
(_ele$parentElement = ele.parentElement) === null || _ele$parentElement === void 0 ? void 0 : _ele$parentElement.removeChild(ele);
appendedRef.current = false;
}
useLayoutEffect$1(function() {
if (render2) {
if (queueCreate) {
queueCreate(append2);
} else {
append2();
}
} else {
cleanup2();
}
return cleanup2;
}, [render2]);
useLayoutEffect$1(function() {
if (queue.length) {
queue.forEach(function(appendFn) {
return appendFn();
});
setQueue(EMPTY_LIST$3);
}
}, [queue]);
return [ele, mergedQueueCreate];
}
var cached;
function measureScrollbarSize(ele) {
var randomId = "rc-scrollbar-measure-".concat(Math.random().toString(36).substring(7));
var measureEle = document.createElement("div");
measureEle.id = randomId;
var measureStyle = measureEle.style;
measureStyle.position = "absolute";
measureStyle.left = "0";
measureStyle.top = "0";
measureStyle.width = "100px";
measureStyle.height = "100px";
measureStyle.overflow = "scroll";
var fallbackWidth;
var fallbackHeight;
if (ele) {
var targetStyle = getComputedStyle(ele);
measureStyle.scrollbarColor = targetStyle.scrollbarColor;
measureStyle.scrollbarWidth = targetStyle.scrollbarWidth;
var webkitScrollbarStyle = getComputedStyle(ele, "::-webkit-scrollbar");
var width = parseInt(webkitScrollbarStyle.width, 10);
var height = parseInt(webkitScrollbarStyle.height, 10);
try {
var widthStyle = width ? "width: ".concat(webkitScrollbarStyle.width, ";") : "";
var heightStyle = height ? "height: ".concat(webkitScrollbarStyle.height, ";") : "";
updateCSS("\n#".concat(randomId, "::-webkit-scrollbar {\n").concat(widthStyle, "\n").concat(heightStyle, "\n}"), randomId);
} catch (e2) {
console.error(e2);
fallbackWidth = width;
fallbackHeight = height;
}
}
document.body.appendChild(measureEle);
var scrollWidth = ele && fallbackWidth && !isNaN(fallbackWidth) ? fallbackWidth : measureEle.offsetWidth - measureEle.clientWidth;
var scrollHeight = ele && fallbackHeight && !isNaN(fallbackHeight) ? fallbackHeight : measureEle.offsetHeight - measureEle.clientHeight;
document.body.removeChild(measureEle);
removeCSS(randomId);
return {
width: scrollWidth,
height: scrollHeight
};
}
function getScrollBarSize(fresh) {
if (typeof document === "undefined") {
return 0;
}
if (cached === void 0) {
cached = measureScrollbarSize();
}
return cached.width;
}
function getTargetScrollBarSize(target) {
if (typeof document === "undefined" || !target || !(target instanceof Element)) {
return {
width: 0,
height: 0
};
}
return measureScrollbarSize(target);
}
function isBodyOverflowing() {
return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) && window.innerWidth > document.body.offsetWidth;
}
var UNIQUE_ID = "rc-util-locker-".concat(Date.now());
var uuid$2 = 0;
function useScrollLocker(lock) {
var mergedLock = !!lock;
var _React$useState = reactExports.useState(function() {
uuid$2 += 1;
return "".concat(UNIQUE_ID, "_").concat(uuid$2);
}), _React$useState2 = _slicedToArray(_React$useState, 1), id2 = _React$useState2[0];
useLayoutEffect$1(function() {
if (mergedLock) {
var scrollbarSize = getTargetScrollBarSize(document.body).width;
var isOverflow = isBodyOverflowing();
updateCSS("\nhtml body {\n overflow-y: hidden;\n ".concat(isOverflow ? "width: calc(100% - ".concat(scrollbarSize, "px);") : "", "\n}"), id2);
} else {
removeCSS(id2);
}
return function() {
removeCSS(id2);
};
}, [mergedLock, id2]);
}
var inline = false;
function inlineMock(nextInline) {
return inline;
}
var getPortalContainer = function getPortalContainer2(getContainer2) {
if (getContainer2 === false) {
return false;
}
if (!canUseDom() || !getContainer2) {
return null;
}
if (typeof getContainer2 === "string") {
return document.querySelector(getContainer2);
}
if (typeof getContainer2 === "function") {
return getContainer2();
}
return getContainer2;
};
var Portal = /* @__PURE__ */ reactExports.forwardRef(function(props, ref) {
var open2 = props.open, autoLock = props.autoLock, getContainer2 = props.getContainer;
props.debug;
var _props$autoDestroy = props.autoDestroy, autoDestroy = _props$autoDestroy === void 0 ? true : _props$autoDestroy, children = props.children;
var _React$useState = reactExports.useState(open2), _React$useState2 = _slicedToArray(_React$useState, 2), shouldRender = _React$useState2[0], setShouldRender = _React$useState2[1];
var mergedRender = shouldRender || open2;
reactExports.useEffect(function() {
if (autoDestroy || open2) {
setShouldRender(open2);
}
}, [open2, autoDestroy]);
var _React$useState3 = reactExports.useState(function() {
return getPortalContainer(getContainer2);
}), _React$useState4 = _slicedToArray(_React$useState3, 2), innerContainer = _React$useState4[0], setInnerContainer = _React$useState4[1];
reactExports.useEffect(function() {
var customizeContainer = getPortalContainer(getContainer2);
setInnerContainer(customizeContainer !== null && customizeContainer !== void 0 ? customizeContainer : null);
});
var _useDom = useDom(mergedRender && !innerContainer), _useDom2 = _slicedToArray(_useDom, 2), defaultContainer2 = _useDom2[0], queueCreate = _useDom2[1];
var mergedContainer = innerContainer !== null && innerContainer !== void 0 ? innerContainer : defaultContainer2;
useScrollLocker(autoLock && open2 && canUseDom() && (mergedContainer === defaultContainer2 || mergedContainer === document.body));
var childRef = null;
if (children && supportRef(children) && ref) {
var _ref = children;
childRef = _ref.ref;
}
var mergedRef = useComposeRef(childRef, ref);
if (!mergedRender || !canUseDom() || innerContainer === void 0) {
return null;
}
var renderInline = mergedContainer === false || inlineMock();
var reffedChildren = children;
if (ref) {
reffedChildren = /* @__PURE__ */ reactExports.cloneElement(children, {
ref: mergedRef
});
}
return /* @__PURE__ */ reactExports.createElement(OrderContext.Provider, {
value: queueCreate
}, renderInline ? reffedChildren : /* @__PURE__ */ reactDomExports.createPortal(reffedChildren, mergedContainer));
});
function getUseId() {
var fullClone2 = _objectSpread2$1({}, React$1);
return fullClone2.useId;
}
var uuid$1 = 0;
var useOriginId = getUseId();
const useId$1 = useOriginId ? (
// Use React `useId`
function useId(id2) {
var reactId = useOriginId();
if (id2) {
return id2;
}
return reactId;
}
) : (
// Use compatible of `useId`
function useCompatId(id2) {
var _React$useState = reactExports.useState("ssr-id"), _React$useState2 = _slicedToArray(_React$useState, 2), innerId = _React$useState2[0], setInnerId = _React$useState2[1];
reactExports.useEffect(function() {
var nextId = uuid$1;
uuid$1 += 1;
setInnerId("rc_unique_".concat(nextId));
}, []);
if (id2) {
return id2;
}
return innerId;
}
);
var HOOK_MARK = "RC_FORM_INTERNAL_HOOKS";
var warningFunc = function warningFunc2() {
warningOnce(false, "Can not find FormContext. Please make sure you wrap Field under Form.");
};
var Context$1 = /* @__PURE__ */ reactExports.createContext({
getFieldValue: warningFunc,
getFieldsValue: warningFunc,
getFieldError: warningFunc,
getFieldWarning: warningFunc,
getFieldsError: warningFunc,
isFieldsTouched: warningFunc,
isFieldTouched: warningFunc,
isFieldValidating: warningFunc,
isFieldsValidating: warningFunc,
resetFields: warningFunc,
setFields: warningFunc,
setFieldValue: warningFunc,
setFieldsValue: warningFunc,
validateFields: warningFunc,
submit: warningFunc,
getInternalHooks: function getInternalHooks() {
warningFunc();
return {
dispatch: warningFunc,
initEntityValue: warningFunc,
registerField: warningFunc,
useSubscribe: warningFunc,
setInitialValues: warningFunc,
destroyForm: warningFunc,
setCallbacks: warningFunc,
registerWatch: warningFunc,
getFields: warningFunc,
setValidateMessages: warningFunc,
setPreserve: warningFunc,
getInitialValue: warningFunc
};
}
});
var ListContext = /* @__PURE__ */ reactExports.createContext(null);
function toArray$3(value) {
if (value === void 0 || value === null) {
return [];
}
return Array.isArray(value) ? value : [value];
}
function isFormInstance(form) {
return form && !!form._init;
}
function newMessages() {
return {
default: "Validation error on field %s",
required: "%s is required",
enum: "%s must be one of %s",
whitespace: "%s cannot be empty",
date: {
format: "%s date %s is invalid for format %s",
parse: "%s date could not be parsed, %s is invalid ",
invalid: "%s date %s is invalid"
},
types: {
string: "%s is not a %s",
method: "%s is not a %s (function)",
array: "%s is not an %s",
object: "%s is not an %s",
number: "%s is not a %s",
date: "%s is not a %s",
boolean: "%s is not a %s",
integer: "%s is not an %s",
float: "%s is not a %s",
regexp: "%s is not a valid %s",
email: "%s is not a valid %s",
url: "%s is not a valid %s",
hex: "%s is not a valid %s"
},
string: {
len: "%s must be exactly %s characters",
min: "%s must be at least %s characters",
max: "%s cannot be longer than %s characters",
range: "%s must be between %s and %s characters"
},
number: {
len: "%s must equal %s",
min: "%s cannot be less than %s",
max: "%s cannot be greater than %s",
range: "%s must be between %s and %s"
},
array: {
len: "%s must be exactly %s in length",
min: "%s cannot be less than %s in length",
max: "%s cannot be greater than %s in length",
range: "%s must be between %s and %s in length"
},
pattern: {
mismatch: "%s value %s does not match pattern %s"
},
clone: function clone3() {
var cloned = JSON.parse(JSON.stringify(this));
cloned.clone = this.clone;
return cloned;
}
};
}
var messages$1 = newMessages();
function _isNativeFunction(t2) {
try {
return -1 !== Function.toString.call(t2).indexOf("[native code]");
} catch (n2) {
return "function" == typeof t2;
}
}
function _construct(t2, e2, r2) {
if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);
var o = [null];
o.push.apply(o, e2);
var p2 = new (t2.bind.apply(t2, o))();
return r2 && _setPrototypeOf(p2, r2.prototype), p2;
}
function _wrapNativeSuper(t2) {
var r2 = "function" == typeof Map ? /* @__PURE__ */ new Map() : void 0;
return _wrapNativeSuper = function _wrapNativeSuper2(t3) {
if (null === t3 || !_isNativeFunction(t3)) return t3;
if ("function" != typeof t3) throw new TypeError("Super expression must either be null or a function");
if (void 0 !== r2) {
if (r2.has(t3)) return r2.get(t3);
r2.set(t3, Wrapper2);
}
function Wrapper2() {
return _construct(t3, arguments, _getPrototypeOf(this).constructor);
}
return Wrapper2.prototype = Object.create(t3.prototype, {
constructor: {
value: Wrapper2,
enumerable: false,
writable: true,
configurable: true
}
}), _setPrototypeOf(Wrapper2, t3);
}, _wrapNativeSuper(t2);
}
var define_process_env_default = {};
var formatRegExp = /%[sdj%]/g;
var warning = function warning2() {
};
if (typeof process !== "undefined" && define_process_env_default && false) {
warning = function warning3(type4, errors) {
if (typeof console !== "undefined" && console.warn && typeof ASYNC_VALIDATOR_NO_WARNING === "undefined") {
if (errors.every(function(e2) {
return typeof e2 === "string";
})) {
console.warn(type4, errors);
}
}
};
}
function convertFieldsError(errors) {
if (!errors || !errors.length) return null;
var fields = {};
errors.forEach(function(error) {
var field = error.field;
fields[field] = fields[field] || [];
fields[field].push(error);
});
return fields;
}
function format$3(template) {
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
var i = 0;
var len2 = args.length;
if (typeof template === "function") {
return template.apply(null, args);
}
if (typeof template === "string") {
var str = template.replace(formatRegExp, function(x2) {
if (x2 === "%%") {
return "%";
}
if (i >= len2) {
return x2;
}
switch (x2) {
case "%s":
return String(args[i++]);
case "%d":
return Number(args[i++]);
case "%j":
try {
return JSON.stringify(args[i++]);
} catch (_) {
return "[Circular]";
}
break;
default:
return x2;
}
});
return str;
}
return template;
}
function isNativeStringType(type4) {
return type4 === "string" || type4 === "url" || type4 === "hex" || type4 === "email" || type4 === "date" || type4 === "pattern";
}
function isEmptyValue$1(value, type4) {
if (value === void 0 || value === null) {
return true;
}
if (type4 === "array" && Array.isArray(value) && !value.length) {
return true;
}
if (isNativeStringType(type4) && typeof value === "string" && !value) {
return true;
}
return false;
}
function asyncParallelArray(arr, func, callback) {
var results = [];
var total = 0;
var arrLength = arr.length;
function count2(errors) {
results.push.apply(results, _toConsumableArray(errors || []));
total++;
if (total === arrLength) {
callback(results);
}
}
arr.forEach(function(a) {
func(a, count2);
});
}
function asyncSerialArray(arr, func, callback) {
var index2 = 0;
var arrLength = arr.length;
function next2(errors) {
if (errors && errors.length) {
callback(errors);
return;
}
var original = index2;
index2 = index2 + 1;
if (original < arrLength) {
func(arr[original], next2);
} else {
callback([]);
}
}
next2([]);
}
function flattenObjArr(objArr) {
var ret = [];
Object.keys(objArr).forEach(function(k2) {
ret.push.apply(ret, _toConsumableArray(objArr[k2] || []));
});
return ret;
}
var AsyncValidationError = /* @__PURE__ */ function(_Error) {
_inherits(AsyncValidationError2, _Error);
var _super = _createSuper(AsyncValidationError2);
function AsyncValidationError2(errors, fields) {
var _this;
_classCallCheck(this, AsyncValidationError2);
_this = _super.call(this, "Async Validation Error");
_defineProperty(_assertThisInitialized(_this), "errors", void 0);
_defineProperty(_assertThisInitialized(_this), "fields", void 0);
_this.errors = errors;
_this.fields = fields;
return _this;
}
return _createClass(AsyncValidationError2);
}(/* @__PURE__ */ _wrapNativeSuper(Error));
function asyncMap(objArr, option, func, callback, source) {
if (option.first) {
var _pending = new Promise(function(resolve, reject) {
var next2 = function next22(errors) {
callback(errors);
return errors.length ? reject(new AsyncValidationError(errors, convertFieldsError(errors))) : resolve(source);
};
var flattenArr = flattenObjArr(objArr);
asyncSerialArray(flattenArr, func, next2);
});
_pending.catch(function(e2) {
return e2;
});
return _pending;
}
var firstFields = option.firstFields === true ? Object.keys(objArr) : option.firstFields || [];
var objArrKeys = Object.keys(objArr);
var objArrLength = objArrKeys.length;
var total = 0;
var results = [];
var pending = new Promise(function(resolve, reject) {
var next2 = function next22(errors) {
results.push.apply(results, errors);
total++;
if (total === objArrLength) {
callback(results);
return results.length ? reject(new AsyncValidationError(results, convertFieldsError(results))) : resolve(source);
}
};
if (!objArrKeys.length) {
callback(results);
resolve(source);
}
objArrKeys.forEach(function(key) {
var arr = objArr[key];
if (firstFields.indexOf(key) !== -1) {
asyncSerialArray(arr, func, next2);
} else {
asyncParallelArray(arr, func, next2);
}
});
});
pending.catch(function(e2) {
return e2;
});
return pending;
}
function isErrorObj(obj) {
return !!(obj && obj.message !== void 0);
}
function getValue(value, path) {
var v4 = value;
for (var i = 0; i < path.length; i++) {
if (v4 == void 0) {
return v4;
}
v4 = v4[path[i]];
}
return v4;
}
function complementError(rule, source) {
return function(oe2) {
var fieldValue;
if (rule.fullFields) {
fieldValue = getValue(source, rule.fullFields);
} else {
fieldValue = source[oe2.field || rule.fullField];
}
if (isErrorObj(oe2)) {
oe2.field = oe2.field || rule.fullField;
oe2.fieldValue = fieldValue;
return oe2;
}
return {
message: typeof oe2 === "function" ? oe2() : oe2,
fieldValue,
field: oe2.field || rule.fullField
};
};
}
function deepMerge(target, source) {
if (source) {
for (var s in source) {
if (source.hasOwnProperty(s)) {
var value = source[s];
if (_typeof$2(value) === "object" && _typeof$2(target[s]) === "object") {
target[s] = _objectSpread2$1(_objectSpread2$1({}, target[s]), value);
} else {
target[s] = value;
}
}
}
}
return target;
}
var ENUM$1 = "enum";
var enumerable$1 = function enumerable(rule, value, source, errors, options) {
rule[ENUM$1] = Array.isArray(rule[ENUM$1]) ? rule[ENUM$1] : [];
if (rule[ENUM$1].indexOf(value) === -1) {
errors.push(format$3(options.messages[ENUM$1], rule.fullField, rule[ENUM$1].join(", ")));
}
};
var pattern$2 = function pattern(rule, value, source, errors, options) {
if (rule.pattern) {
if (rule.pattern instanceof RegExp) {
rule.pattern.lastIndex = 0;
if (!rule.pattern.test(value)) {
errors.push(format$3(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));
}
} else if (typeof rule.pattern === "string") {
var _pattern = new RegExp(rule.pattern);
if (!_pattern.test(value)) {
errors.push(format$3(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));
}
}
}
};
var range = function range2(rule, value, source, errors, options) {
var len2 = typeof rule.len === "number";
var min3 = typeof rule.min === "number";
var max3 = typeof rule.max === "number";
var spRegexp = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
var val = value;
var key = null;
var num = typeof value === "number";
var str = typeof value === "string";
var arr = Array.isArray(value);
if (num) {
key = "number";
} else if (str) {
key = "string";
} else if (arr) {
key = "array";
}
if (!key) {
return false;
}
if (arr) {
val = value.length;
}
if (str) {
val = value.replace(spRegexp, "_").length;
}
if (len2) {
if (val !== rule.len) {
errors.push(format$3(options.messages[key].len, rule.fullField, rule.len));
}
} else if (min3 && !max3 && val < rule.min) {
errors.push(format$3(options.messages[key].min, rule.fullField, rule.min));
} else if (max3 && !min3 && val > rule.max) {
errors.push(format$3(options.messages[key].max, rule.fullField, rule.max));
} else if (min3 && max3 && (val < rule.min || val > rule.max)) {
errors.push(format$3(options.messages[key].range, rule.fullField, rule.min, rule.max));
}
};
var required$1 = function required(rule, value, source, errors, options, type4) {
if (rule.required && (!source.hasOwnProperty(rule.field) || isEmptyValue$1(value, type4 || rule.type))) {
errors.push(format$3(options.messages.required, rule.fullField));
}
};
var urlReg;
const getUrlRegex = function() {
if (urlReg) {
return urlReg;
}
var word = "[a-fA-F\\d:]";
var b2 = function b3(options) {
return options && options.includeBoundaries ? "(?:(?<=\\s|^)(?=".concat(word, ")|(?<=").concat(word, ")(?=\\s|$))") : "";
};
var v4 = "(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}";
var v6seg = "[a-fA-F\\d]{1,4}";
var v6List = [
"(?:".concat(v6seg, ":){7}(?:").concat(v6seg, "|:)"),
// 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8
"(?:".concat(v6seg, ":){6}(?:").concat(v4, "|:").concat(v6seg, "|:)"),
// 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::
"(?:".concat(v6seg, ":){5}(?::").concat(v4, "|(?::").concat(v6seg, "){1,2}|:)"),
// 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::
"(?:".concat(v6seg, ":){4}(?:(?::").concat(v6seg, "){0,1}:").concat(v4, "|(?::").concat(v6seg, "){1,3}|:)"),
// 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::
"(?:".concat(v6seg, ":){3}(?:(?::").concat(v6seg, "){0,2}:").concat(v4, "|(?::").concat(v6seg, "){1,4}|:)"),
// 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::
"(?:".concat(v6seg, ":){2}(?:(?::").concat(v6seg, "){0,3}:").concat(v4, "|(?::").concat(v6seg, "){1,5}|:)"),
// 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::
"(?:".concat(v6seg, ":){1}(?:(?::").concat(v6seg, "){0,4}:").concat(v4, "|(?::").concat(v6seg, "){1,6}|:)"),
// 1:: 1::3:4:5:6:7:8 1::8 1::
"(?::(?:(?::".concat(v6seg, "){0,5}:").concat(v4, "|(?::").concat(v6seg, "){1,7}|:))")
// ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::
];
var v6Eth0 = "(?:%[0-9a-zA-Z]{1,})?";
var v6 = "(?:".concat(v6List.join("|"), ")").concat(v6Eth0);
var v46Exact = new RegExp("(?:^".concat(v4, "$)|(?:^").concat(v6, "$)"));
var v4exact = new RegExp("^".concat(v4, "$"));
var v6exact = new RegExp("^".concat(v6, "$"));
var ip = function ip2(options) {
return options && options.exact ? v46Exact : new RegExp("(?:".concat(b2(options)).concat(v4).concat(b2(options), ")|(?:").concat(b2(options)).concat(v6).concat(b2(options), ")"), "g");
};
ip.v4 = function(options) {
return options && options.exact ? v4exact : new RegExp("".concat(b2(options)).concat(v4).concat(b2(options)), "g");
};
ip.v6 = function(options) {
return options && options.exact ? v6exact : new RegExp("".concat(b2(options)).concat(v6).concat(b2(options)), "g");
};
var protocol = "(?:(?:[a-z]+:)?//)";
var auth = "(?:\\S+(?::\\S*)?@)?";
var ipv4 = ip.v4().source;
var ipv6 = ip.v6().source;
var host = "(?:(?:[a-z\\u00a1-\\uffff0-9][-_]*)*[a-z\\u00a1-\\uffff0-9]+)";
var domain = "(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*";
var tld = "(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))";
var port = "(?::\\d{2,5})?";
var path = '(?:[/?#][^\\s"]*)?';
var regex = "(?:".concat(protocol, "|www\\.)").concat(auth, "(?:localhost|").concat(ipv4, "|").concat(ipv6, "|").concat(host).concat(domain).concat(tld, ")").concat(port).concat(path);
urlReg = new RegExp("(?:^".concat(regex, "$)"), "i");
return urlReg;
};
var pattern$1 = {
// http://emailregex.com/
email: /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,
// url: new RegExp(
// '^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$',
// 'i',
// ),
hex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/i
};
var types = {
integer: function integer(value) {
return types.number(value) && parseInt(value, 10) === value;
},
float: function float(value) {
return types.number(value) && !types.integer(value);
},
array: function array(value) {
return Array.isArray(value);
},
regexp: function regexp(value) {
if (value instanceof RegExp) {
return true;
}
try {
return !!new RegExp(value);
} catch (e2) {
return false;
}
},
date: function date(value) {
return typeof value.getTime === "function" && typeof value.getMonth === "function" && typeof value.getYear === "function" && !isNaN(value.getTime());
},
number: function number(value) {
if (isNaN(value)) {
return false;
}
return typeof value === "number";
},
object: function object(value) {
return _typeof$2(value) === "object" && !types.array(value);
},
method: function method(value) {
return typeof value === "function";
},
email: function email(value) {
return typeof value === "string" && value.length <= 320 && !!value.match(pattern$1.email);
},
url: function url(value) {
return typeof value === "string" && value.length <= 2048 && !!value.match(getUrlRegex());
},
hex: function hex(value) {
return typeof value === "string" && !!value.match(pattern$1.hex);
}
};
var type$1 = function type(rule, value, source, errors, options) {
if (rule.required && value === void 0) {
required$1(rule, value, source, errors, options);
return;
}
var custom = ["integer", "float", "array", "regexp", "object", "method", "email", "number", "date", "url", "hex"];
var ruleType = rule.type;
if (custom.indexOf(ruleType) > -1) {
if (!types[ruleType](value)) {
errors.push(format$3(options.messages.types[ruleType], rule.fullField, rule.type));
}
} else if (ruleType && _typeof$2(value) !== rule.type) {
errors.push(format$3(options.messages.types[ruleType], rule.fullField, rule.type));
}
};
var whitespace = function whitespace2(rule, value, source, errors, options) {
if (/^\s+$/.test(value) || value === "") {
errors.push(format$3(options.messages.whitespace, rule.fullField));
}
};
const rules = {
required: required$1,
whitespace,
type: type$1,
range,
enum: enumerable$1,
pattern: pattern$2
};
var any = function any2(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (isEmptyValue$1(value) && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options);
}
callback(errors);
};
var array2 = function array3(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if ((value === void 0 || value === null) && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options, "array");
if (value !== void 0 && value !== null) {
rules.type(rule, value, source, errors, options);
rules.range(rule, value, source, errors, options);
}
}
callback(errors);
};
var boolean = function boolean2(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (isEmptyValue$1(value) && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options);
if (value !== void 0) {
rules.type(rule, value, source, errors, options);
}
}
callback(errors);
};
var date2 = function date3(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (isEmptyValue$1(value, "date") && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options);
if (!isEmptyValue$1(value, "date")) {
var dateObject;
if (value instanceof Date) {
dateObject = value;
} else {
dateObject = new Date(value);
}
rules.type(rule, dateObject, source, errors, options);
if (dateObject) {
rules.range(rule, dateObject.getTime(), source, errors, options);
}
}
}
callback(errors);
};
var ENUM = "enum";
var enumerable2 = function enumerable3(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (isEmptyValue$1(value) && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options);
if (value !== void 0) {
rules[ENUM](rule, value, source, errors, options);
}
}
callback(errors);
};
var floatFn = function floatFn2(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (isEmptyValue$1(value) && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options);
if (value !== void 0) {
rules.type(rule, value, source, errors, options);
rules.range(rule, value, source, errors, options);
}
}
callback(errors);
};
var integer2 = function integer3(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (isEmptyValue$1(value) && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options);
if (value !== void 0) {
rules.type(rule, value, source, errors, options);
rules.range(rule, value, source, errors, options);
}
}
callback(errors);
};
var method2 = function method3(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (isEmptyValue$1(value) && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options);
if (value !== void 0) {
rules.type(rule, value, source, errors, options);
}
}
callback(errors);
};
var number$1 = function number2(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (value === "") {
value = void 0;
}
if (isEmptyValue$1(value) && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options);
if (value !== void 0) {
rules.type(rule, value, source, errors, options);
rules.range(rule, value, source, errors, options);
}
}
callback(errors);
};
var object$1 = function object2(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (isEmptyValue$1(value) && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options);
if (value !== void 0) {
rules.type(rule, value, source, errors, options);
}
}
callback(errors);
};
var pattern2 = function pattern3(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (isEmptyValue$1(value, "string") && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options);
if (!isEmptyValue$1(value, "string")) {
rules.pattern(rule, value, source, errors, options);
}
}
callback(errors);
};
var regexp$1 = function regexp2(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (isEmptyValue$1(value) && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options);
if (!isEmptyValue$1(value)) {
rules.type(rule, value, source, errors, options);
}
}
callback(errors);
};
var required2 = function required3(rule, value, callback, source, options) {
var errors = [];
var type4 = Array.isArray(value) ? "array" : _typeof$2(value);
rules.required(rule, value, source, errors, options, type4);
callback(errors);
};
var string = function string2(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (isEmptyValue$1(value, "string") && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options, "string");
if (!isEmptyValue$1(value, "string")) {
rules.type(rule, value, source, errors, options);
rules.range(rule, value, source, errors, options);
rules.pattern(rule, value, source, errors, options);
if (rule.whitespace === true) {
rules.whitespace(rule, value, source, errors, options);
}
}
}
callback(errors);
};
var type2 = function type3(rule, value, callback, source, options) {
var ruleType = rule.type;
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (isEmptyValue$1(value, ruleType) && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options, ruleType);
if (!isEmptyValue$1(value, ruleType)) {
rules.type(rule, value, source, errors, options);
}
}
callback(errors);
};
const validators = {
string,
method: method2,
number: number$1,
boolean,
regexp: regexp$1,
integer: integer2,
float: floatFn,
array: array2,
object: object$1,
enum: enumerable2,
pattern: pattern2,
date: date2,
url: type2,
hex: type2,
email: type2,
required: required2,
any
};
var Schema = /* @__PURE__ */ function() {
function Schema2(descriptor) {
_classCallCheck(this, Schema2);
_defineProperty(this, "rules", null);
_defineProperty(this, "_messages", messages$1);
this.define(descriptor);
}
_createClass(Schema2, [{
key: "define",
value: function define(rules2) {
var _this = this;
if (!rules2) {
throw new Error("Cannot configure a schema with no rules");
}
if (_typeof$2(rules2) !== "object" || Array.isArray(rules2)) {
throw new Error("Rules must be an object");
}
this.rules = {};
Object.keys(rules2).forEach(function(name) {
var item = rules2[name];
_this.rules[name] = Array.isArray(item) ? item : [item];
});
}
}, {
key: "messages",
value: function messages2(_messages) {
if (_messages) {
this._messages = deepMerge(newMessages(), _messages);
}
return this._messages;
}
}, {
key: "validate",
value: function validate(source_) {
var _this2 = this;
var o = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
var oc2 = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : function() {
};
var source = source_;
var options = o;
var callback = oc2;
if (typeof options === "function") {
callback = options;
options = {};
}
if (!this.rules || Object.keys(this.rules).length === 0) {
if (callback) {
callback(null, source);
}
return Promise.resolve(source);
}
function complete(results) {
var errors = [];
var fields = {};
function add2(e2) {
if (Array.isArray(e2)) {
var _errors;
errors = (_errors = errors).concat.apply(_errors, _toConsumableArray(e2));
} else {
errors.push(e2);
}
}
for (var i = 0; i < results.length; i++) {
add2(results[i]);
}
if (!errors.length) {
callback(null, source);
} else {
fields = convertFieldsError(errors);
callback(errors, fields);
}
}
if (options.messages) {
var messages2 = this.messages();
if (messages2 === messages$1) {
messages2 = newMessages();
}
deepMerge(messages2, options.messages);
options.messages = messages2;
} else {
options.messages = this.messages();
}
var series = {};
var keys2 = options.keys || Object.keys(this.rules);
keys2.forEach(function(z2) {
var arr = _this2.rules[z2];
var value = source[z2];
arr.forEach(function(r2) {
var rule = r2;
if (typeof rule.transform === "function") {
if (source === source_) {
source = _objectSpread2$1({}, source);
}
value = source[z2] = rule.transform(value);
if (value !== void 0 && value !== null) {
rule.type = rule.type || (Array.isArray(value) ? "array" : _typeof$2(value));
}
}
if (typeof rule === "function") {
rule = {
validator: rule
};
} else {
rule = _objectSpread2$1({}, rule);
}
rule.validator = _this2.getValidationMethod(rule);
if (!rule.validator) {
return;
}
rule.field = z2;
rule.fullField = rule.fullField || z2;
rule.type = _this2.getType(rule);
series[z2] = series[z2] || [];
series[z2].push({
rule,
value,
source,
field: z2
});
});
});
var errorFields = {};
return asyncMap(series, options, function(data, doIt) {
var rule = data.rule;
var deep = (rule.type === "object" || rule.type === "array") && (_typeof$2(rule.fields) === "object" || _typeof$2(rule.defaultField) === "object");
deep = deep && (rule.required || !rule.required && data.value);
rule.field = data.field;
function addFullField(key, schema) {
return _objectSpread2$1(_objectSpread2$1({}, schema), {}, {
fullField: "".concat(rule.fullField, ".").concat(key),
fullFields: rule.fullFields ? [].concat(_toConsumableArray(rule.fullFields), [key]) : [key]
});
}
function cb2() {
var e2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
var errorList = Array.isArray(e2) ? e2 : [e2];
if (!options.suppressWarning && errorList.length) {
Schema2.warning("async-validator:", errorList);
}
if (errorList.length && rule.message !== void 0) {
errorList = [].concat(rule.message);
}
var filledErrors = errorList.map(complementError(rule, source));
if (options.first && filledErrors.length) {
errorFields[rule.field] = 1;
return doIt(filledErrors);
}
if (!deep) {
doIt(filledErrors);
} else {
if (rule.required && !data.value) {
if (rule.message !== void 0) {
filledErrors = [].concat(rule.message).map(complementError(rule, source));
} else if (options.error) {
filledErrors = [options.error(rule, format$3(options.messages.required, rule.field))];
}
return doIt(filledErrors);
}
var fieldsSchema = {};
if (rule.defaultField) {
Object.keys(data.value).map(function(key) {
fieldsSchema[key] = rule.defaultField;
});
}
fieldsSchema = _objectSpread2$1(_objectSpread2$1({}, fieldsSchema), data.rule.fields);
var paredFieldsSchema = {};
Object.keys(fieldsSchema).forEach(function(field) {
var fieldSchema = fieldsSchema[field];
var fieldSchemaList = Array.isArray(fieldSchema) ? fieldSchema : [fieldSchema];
paredFieldsSchema[field] = fieldSchemaList.map(addFullField.bind(null, field));
});
var schema = new Schema2(paredFieldsSchema);
schema.messages(options.messages);
if (data.rule.options) {
data.rule.options.messages = options.messages;
data.rule.options.error = options.error;
}
schema.validate(data.value, data.rule.options || options, function(errs) {
var finalErrors = [];
if (filledErrors && filledErrors.length) {
finalErrors.push.apply(finalErrors, _toConsumableArray(filledErrors));
}
if (errs && errs.length) {
finalErrors.push.apply(finalErrors, _toConsumableArray(errs));
}
doIt(finalErrors.length ? finalErrors : null);
});
}
}
var res;
if (rule.asyncValidator) {
res = rule.asyncValidator(rule, data.value, cb2, data.source, options);
} else if (rule.validator) {
try {
res = rule.validator(rule, data.value, cb2, data.source, options);
} catch (error) {
var _console$error, _console;
(_console$error = (_console = console).error) === null || _console$error === void 0 || _console$error.call(_console, error);
if (!options.suppressValidatorError) {
setTimeout(function() {
throw error;
}, 0);
}
cb2(error.message);
}
if (res === true) {
cb2();
} else if (res === false) {
cb2(typeof rule.message === "function" ? rule.message(rule.fullField || rule.field) : rule.message || "".concat(rule.fullField || rule.field, " fails"));
} else if (res instanceof Array) {
cb2(res);
} else if (res instanceof Error) {
cb2(res.message);
}
}
if (res && res.then) {
res.then(function() {
return cb2();
}, function(e2) {
return cb2(e2);
});
}
}, function(results) {
complete(results);
}, source);
}
}, {
key: "getType",
value: function getType(rule) {
if (rule.type === void 0 && rule.pattern instanceof RegExp) {
rule.type = "pattern";
}
if (typeof rule.validator !== "function" && rule.type && !validators.hasOwnProperty(rule.type)) {
throw new Error(format$3("Unknown rule type %s", rule.type));
}
return rule.type || "string";
}
}, {
key: "getValidationMethod",
value: function getValidationMethod(rule) {
if (typeof rule.validator === "function") {
return rule.validator;
}
var keys2 = Object.keys(rule);
var messageIndex = keys2.indexOf("message");
if (messageIndex !== -1) {
keys2.splice(messageIndex, 1);
}
if (keys2.length === 1 && keys2[0] === "required") {
return validators.required;
}
return validators[this.getType(rule)] || void 0;
}
}]);
return Schema2;
}();
_defineProperty(Schema, "register", function register(type4, validator) {
if (typeof validator !== "function") {
throw new Error("Cannot register a validator by type, validator is not a function");
}
validators[type4] = validator;
});
_defineProperty(Schema, "warning", warning);
_defineProperty(Schema, "messages", messages$1);
_defineProperty(Schema, "validators", validators);
var typeTemplate$1 = "'${name}' is not a valid ${type}";
var defaultValidateMessages = {
default: "Validation error on field '${name}'",
required: "'${name}' is required",
enum: "'${name}' must be one of [${enum}]",
whitespace: "'${name}' cannot be empty",
date: {
format: "'${name}' is invalid for format date",
parse: "'${name}' could not be parsed as date",
invalid: "'${name}' is invalid date"
},
types: {
string: typeTemplate$1,
method: typeTemplate$1,
array: typeTemplate$1,
object: typeTemplate$1,
number: typeTemplate$1,
date: typeTemplate$1,
boolean: typeTemplate$1,
integer: typeTemplate$1,
float: typeTemplate$1,
regexp: typeTemplate$1,
email: typeTemplate$1,
url: typeTemplate$1,
hex: typeTemplate$1
},
string: {
len: "'${name}' must be exactly ${len} characters",
min: "'${name}' must be at least ${min} characters",
max: "'${name}' cannot be longer than ${max} characters",
range: "'${name}' must be between ${min} and ${max} characters"
},
number: {
len: "'${name}' must equal ${len}",
min: "'${name}' cannot be less than ${min}",
max: "'${name}' cannot be greater than ${max}",
range: "'${name}' must be between ${min} and ${max}"
},
array: {
len: "'${name}' must be exactly ${len} in length",
min: "'${name}' cannot be less than ${min} in length",
max: "'${name}' cannot be greater than ${max} in length",
range: "'${name}' must be between ${min} and ${max} in length"
},
pattern: {
mismatch: "'${name}' does not match pattern ${pattern}"
}
};
var AsyncValidator = Schema;
function replaceMessage(template, kv) {
return template.replace(/\\?\$\{\w+\}/g, function(str) {
if (str.startsWith("\\")) {
return str.slice(1);
}
var key = str.slice(2, -1);
return kv[key];
});
}
var CODE_LOGIC_ERROR = "CODE_LOGIC_ERROR";
function validateRule(_x, _x2, _x3, _x4, _x5) {
return _validateRule.apply(this, arguments);
}
function _validateRule() {
_validateRule = _asyncToGenerator(/* @__PURE__ */ _regeneratorRuntime().mark(function _callee2(name, value, rule, options, messageVariables) {
var cloneRule, originValidator, subRuleField, validator, messages2, result, subResults, kv, fillVariableResult;
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
while (1) switch (_context2.prev = _context2.next) {
case 0:
cloneRule = _objectSpread2$1({}, rule);
delete cloneRule.ruleIndex;
AsyncValidator.warning = function() {
return void 0;
};
if (cloneRule.validator) {
originValidator = cloneRule.validator;
cloneRule.validator = function() {
try {
return originValidator.apply(void 0, arguments);
} catch (error) {
console.error(error);
return Promise.reject(CODE_LOGIC_ERROR);
}
};
}
subRuleField = null;
if (cloneRule && cloneRule.type === "array" && cloneRule.defaultField) {
subRuleField = cloneRule.defaultField;
delete cloneRule.defaultField;
}
validator = new AsyncValidator(_defineProperty({}, name, [cloneRule]));
messages2 = merge$2(defaultValidateMessages, options.validateMessages);
validator.messages(messages2);
result = [];
_context2.prev = 10;
_context2.next = 13;
return Promise.resolve(validator.validate(_defineProperty({}, name, value), _objectSpread2$1({}, options)));
case 13:
_context2.next = 18;
break;
case 15:
_context2.prev = 15;
_context2.t0 = _context2["catch"](10);
if (_context2.t0.errors) {
result = _context2.t0.errors.map(function(_ref4, index2) {
var message2 = _ref4.message;
var mergedMessage = message2 === CODE_LOGIC_ERROR ? messages2.default : message2;
return /* @__PURE__ */ reactExports.isValidElement(mergedMessage) ? (
// Wrap ReactNode with `key`
/* @__PURE__ */ reactExports.cloneElement(mergedMessage, {
key: "error_".concat(index2)
})
) : mergedMessage;
});
}
case 18:
if (!(!result.length && subRuleField)) {
_context2.next = 23;
break;
}
_context2.next = 21;
return Promise.all(value.map(function(subValue, i) {
return validateRule("".concat(name, ".").concat(i), subValue, subRuleField, options, messageVariables);
}));
case 21:
subResults = _context2.sent;
return _context2.abrupt("return", subResults.reduce(function(prev2, errors) {
return [].concat(_toConsumableArray(prev2), _toConsumableArray(errors));
}, []));
case 23:
kv = _objectSpread2$1(_objectSpread2$1({}, rule), {}, {
name,
enum: (rule.enum || []).join(", ")
}, messageVariables);
fillVariableResult = result.map(function(error) {
if (typeof error === "string") {
return replaceMessage(error, kv);
}
return error;
});
return _context2.abrupt("return", fillVariableResult);
case 26:
case "end":
return _context2.stop();
}
}, _callee2, null, [[10, 15]]);
}));
return _validateRule.apply(this, arguments);
}
function validateRules(namePath, value, rules2, options, validateFirst, messageVariables) {
var name = namePath.join(".");
var filledRules = rules2.map(function(currentRule, ruleIndex) {
var originValidatorFunc = currentRule.validator;
var cloneRule = _objectSpread2$1(_objectSpread2$1({}, currentRule), {}, {
ruleIndex
});
if (originValidatorFunc) {
cloneRule.validator = function(rule, val, callback) {
var hasPromise = false;
var wrappedCallback = function wrappedCallback2() {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
Promise.resolve().then(function() {
warningOnce(!hasPromise, "Your validator function has already return a promise. `callback` will be ignored.");
if (!hasPromise) {
callback.apply(void 0, args);
}
});
};
var promise = originValidatorFunc(rule, val, wrappedCallback);
hasPromise = promise && typeof promise.then === "function" && typeof promise.catch === "function";
warningOnce(hasPromise, "`callback` is deprecated. Please return a promise instead.");
if (hasPromise) {
promise.then(function() {
callback();
}).catch(function(err) {
callback(err || " ");
});
}
};
}
return cloneRule;
}).sort(function(_ref, _ref2) {
var w1 = _ref.warningOnly, i1 = _ref.ruleIndex;
var w2 = _ref2.warningOnly, i2 = _ref2.ruleIndex;
if (!!w1 === !!w2) {
return i1 - i2;
}
if (w1) {
return 1;
}
return -1;
});
var summaryPromise;
if (validateFirst === true) {
summaryPromise = new Promise(/* @__PURE__ */ function() {
var _ref3 = _asyncToGenerator(/* @__PURE__ */ _regeneratorRuntime().mark(function _callee(resolve, reject) {
var i, rule, errors;
return _regeneratorRuntime().wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
i = 0;
case 1:
if (!(i < filledRules.length)) {
_context.next = 12;
break;
}
rule = filledRules[i];
_context.next = 5;
return validateRule(name, value, rule, options, messageVariables);
case 5:
errors = _context.sent;
if (!errors.length) {
_context.next = 9;
break;
}
reject([{
errors,
rule
}]);
return _context.abrupt("return");
case 9:
i += 1;
_context.next = 1;
break;
case 12:
resolve([]);
case 13:
case "end":
return _context.stop();
}
}, _callee);
}));
return function(_x6, _x7) {
return _ref3.apply(this, arguments);
};
}());
} else {
var rulePromises = filledRules.map(function(rule) {
return validateRule(name, value, rule, options, messageVariables).then(function(errors) {
return {
errors,
rule
};
});
});
summaryPromise = (validateFirst ? finishOnFirstFailed(rulePromises) : finishOnAllFailed(rulePromises)).then(function(errors) {
return Promise.reject(errors);
});
}
summaryPromise.catch(function(e2) {
return e2;
});
return summaryPromise;
}
function finishOnAllFailed(_x8) {
return _finishOnAllFailed.apply(this, arguments);
}
function _finishOnAllFailed() {
_finishOnAllFailed = _asyncToGenerator(/* @__PURE__ */ _regeneratorRuntime().mark(function _callee3(rulePromises) {
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
while (1) switch (_context3.prev = _context3.next) {
case 0:
return _context3.abrupt("return", Promise.all(rulePromises).then(function(errorsList) {
var _ref5;
var errors = (_ref5 = []).concat.apply(_ref5, _toConsumableArray(errorsList));
return errors;
}));
case 1:
case "end":
return _context3.stop();
}
}, _callee3);
}));
return _finishOnAllFailed.apply(this, arguments);
}
function finishOnFirstFailed(_x9) {
return _finishOnFirstFailed.apply(this, arguments);
}
function _finishOnFirstFailed() {
_finishOnFirstFailed = _asyncToGenerator(/* @__PURE__ */ _regeneratorRuntime().mark(function _callee4(rulePromises) {
var count2;
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
while (1) switch (_context4.prev = _context4.next) {
case 0:
count2 = 0;
return _context4.abrupt("return", new Promise(function(resolve) {
rulePromises.forEach(function(promise) {
promise.then(function(ruleError) {
if (ruleError.errors.length) {
resolve([ruleError]);
}
count2 += 1;
if (count2 === rulePromises.length) {
resolve([]);
}
});
});
}));
case 2:
case "end":
return _context4.stop();
}
}, _callee4);
}));
return _finishOnFirstFailed.apply(this, arguments);
}
function getNamePath(path) {
return toArray$3(path);
}
function cloneByNamePathList(store, namePathList) {
var newStore = {};
namePathList.forEach(function(namePath) {
var value = get$1(store, namePath);
newStore = set$2(newStore, namePath, value);
});
return newStore;
}
function containsNamePath(namePathList, namePath) {
var partialMatch = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
return namePathList && namePathList.some(function(path) {
return matchNamePath(namePath, path, partialMatch);
});
}
function matchNamePath(namePath, subNamePath) {
var partialMatch = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
if (!namePath || !subNamePath) {
return false;
}
if (!partialMatch && namePath.length !== subNamePath.length) {
return false;
}
return subNamePath.every(function(nameUnit, i) {
return namePath[i] === nameUnit;
});
}
function isSimilar(source, target) {
if (source === target) {
return true;
}
if (!source && target || source && !target) {
return false;
}
if (!source || !target || _typeof$2(source) !== "object" || _typeof$2(target) !== "object") {
return false;
}
var sourceKeys = Object.keys(source);
var targetKeys = Object.keys(target);
var keys2 = new Set([].concat(sourceKeys, targetKeys));
return _toConsumableArray(keys2).every(function(key) {
var sourceValue = source[key];
var targetValue = target[key];
if (typeof sourceValue === "function" && typeof targetValue === "function") {
return true;
}
return sourceValue === targetValue;
});
}
function defaultGetValueFromEvent(valuePropName) {
var event = arguments.length <= 1 ? void 0 : arguments[1];
if (event && event.target && _typeof$2(event.target) === "object" && valuePropName in event.target) {
return event.target[valuePropName];
}
return event;
}
function move(array4, moveIndex, toIndex) {
var length2 = array4.length;
if (moveIndex < 0 || moveIndex >= length2 || toIndex < 0 || toIndex >= length2) {
return array4;
}
var item = array4[moveIndex];
var diff = moveIndex - toIndex;
if (diff > 0) {
return [].concat(_toConsumableArray(array4.slice(0, toIndex)), [item], _toConsumableArray(array4.slice(toIndex, moveIndex)), _toConsumableArray(array4.slice(moveIndex + 1, length2)));
}
if (diff < 0) {
return [].concat(_toConsumableArray(array4.slice(0, moveIndex)), _toConsumableArray(array4.slice(moveIndex + 1, toIndex + 1)), [item], _toConsumableArray(array4.slice(toIndex + 1, length2)));
}
return array4;
}
var _excluded$D = ["name"];
var EMPTY_ERRORS = [];
function requireUpdate(shouldUpdate, prev2, next2, prevValue, nextValue, info) {
if (typeof shouldUpdate === "function") {
return shouldUpdate(prev2, next2, "source" in info ? {
source: info.source
} : {});
}
return prevValue !== nextValue;
}
var Field = /* @__PURE__ */ function(_React$Component) {
_inherits(Field2, _React$Component);
var _super = _createSuper(Field2);
function Field2(props) {
var _this;
_classCallCheck(this, Field2);
_this = _super.call(this, props);
_defineProperty(_assertThisInitialized(_this), "state", {
resetCount: 0
});
_defineProperty(_assertThisInitialized(_this), "cancelRegisterFunc", null);
_defineProperty(_assertThisInitialized(_this), "mounted", false);
_defineProperty(_assertThisInitialized(_this), "touched", false);
_defineProperty(_assertThisInitialized(_this), "dirty", false);
_defineProperty(_assertThisInitialized(_this), "validatePromise", void 0);
_defineProperty(_assertThisInitialized(_this), "prevValidating", void 0);
_defineProperty(_assertThisInitialized(_this), "errors", EMPTY_ERRORS);
_defineProperty(_assertThisInitialized(_this), "warnings", EMPTY_ERRORS);
_defineProperty(_assertThisInitialized(_this), "cancelRegister", function() {
var _this$props = _this.props, preserve2 = _this$props.preserve, isListField = _this$props.isListField, name = _this$props.name;
if (_this.cancelRegisterFunc) {
_this.cancelRegisterFunc(isListField, preserve2, getNamePath(name));
}
_this.cancelRegisterFunc = null;
});
_defineProperty(_assertThisInitialized(_this), "getNamePath", function() {
var _this$props2 = _this.props, name = _this$props2.name, fieldContext = _this$props2.fieldContext;
var _fieldContext$prefixN = fieldContext.prefixName, prefixName = _fieldContext$prefixN === void 0 ? [] : _fieldContext$prefixN;
return name !== void 0 ? [].concat(_toConsumableArray(prefixName), _toConsumableArray(name)) : [];
});
_defineProperty(_assertThisInitialized(_this), "getRules", function() {
var _this$props3 = _this.props, _this$props3$rules = _this$props3.rules, rules2 = _this$props3$rules === void 0 ? [] : _this$props3$rules, fieldContext = _this$props3.fieldContext;
return rules2.map(function(rule) {
if (typeof rule === "function") {
return rule(fieldContext);
}
return rule;
});
});
_defineProperty(_assertThisInitialized(_this), "refresh", function() {
if (!_this.mounted) return;
_this.setState(function(_ref) {
var resetCount = _ref.resetCount;
return {
resetCount: resetCount + 1
};
});
});
_defineProperty(_assertThisInitialized(_this), "metaCache", null);
_defineProperty(_assertThisInitialized(_this), "triggerMetaEvent", function(destroy2) {
var onMetaChange = _this.props.onMetaChange;
if (onMetaChange) {
var _meta = _objectSpread2$1(_objectSpread2$1({}, _this.getMeta()), {}, {
destroy: destroy2
});
if (!isEqual$1(_this.metaCache, _meta)) {
onMetaChange(_meta);
}
_this.metaCache = _meta;
} else {
_this.metaCache = null;
}
});
_defineProperty(_assertThisInitialized(_this), "onStoreChange", function(prevStore, namePathList, info) {
var _this$props4 = _this.props, shouldUpdate = _this$props4.shouldUpdate, _this$props4$dependen = _this$props4.dependencies, dependencies2 = _this$props4$dependen === void 0 ? [] : _this$props4$dependen, onReset = _this$props4.onReset;
var store = info.store;
var namePath = _this.getNamePath();
var prevValue = _this.getValue(prevStore);
var curValue = _this.getValue(store);
var namePathMatch = namePathList && containsNamePath(namePathList, namePath);
if (info.type === "valueUpdate" && info.source === "external" && !isEqual$1(prevValue, curValue)) {
_this.touched = true;
_this.dirty = true;
_this.validatePromise = null;
_this.errors = EMPTY_ERRORS;
_this.warnings = EMPTY_ERRORS;
_this.triggerMetaEvent();
}
switch (info.type) {
case "reset":
if (!namePathList || namePathMatch) {
_this.touched = false;
_this.dirty = false;
_this.validatePromise = void 0;
_this.errors = EMPTY_ERRORS;
_this.warnings = EMPTY_ERRORS;
_this.triggerMetaEvent();
onReset === null || onReset === void 0 || onReset();
_this.refresh();
return;
}
break;
case "remove": {
if (shouldUpdate && requireUpdate(shouldUpdate, prevStore, store, prevValue, curValue, info)) {
_this.reRender();
return;
}
break;
}
case "setField": {
var data = info.data;
if (namePathMatch) {
if ("touched" in data) {
_this.touched = data.touched;
}
if ("validating" in data && !("originRCField" in data)) {
_this.validatePromise = data.validating ? Promise.resolve([]) : null;
}
if ("errors" in data) {
_this.errors = data.errors || EMPTY_ERRORS;
}
if ("warnings" in data) {
_this.warnings = data.warnings || EMPTY_ERRORS;
}
_this.dirty = true;
_this.triggerMetaEvent();
_this.reRender();
return;
} else if ("value" in data && containsNamePath(namePathList, namePath, true)) {
_this.reRender();
return;
}
if (shouldUpdate && !namePath.length && requireUpdate(shouldUpdate, prevStore, store, prevValue, curValue, info)) {
_this.reRender();
return;
}
break;
}
case "dependenciesUpdate": {
var dependencyList = dependencies2.map(getNamePath);
if (dependencyList.some(function(dependency) {
return containsNamePath(info.relatedFields, dependency);
})) {
_this.reRender();
return;
}
break;
}
default:
if (namePathMatch || (!dependencies2.length || namePath.length || shouldUpdate) && requireUpdate(shouldUpdate, prevStore, store, prevValue, curValue, info)) {
_this.reRender();
return;
}
break;
}
if (shouldUpdate === true) {
_this.reRender();
}
});
_defineProperty(_assertThisInitialized(_this), "validateRules", function(options) {
var namePath = _this.getNamePath();
var currentValue = _this.getValue();
var _ref2 = options || {}, triggerName = _ref2.triggerName, _ref2$validateOnly = _ref2.validateOnly, validateOnly = _ref2$validateOnly === void 0 ? false : _ref2$validateOnly;
var rootPromise = Promise.resolve().then(/* @__PURE__ */ _asyncToGenerator(/* @__PURE__ */ _regeneratorRuntime().mark(function _callee() {
var _this$props5, _this$props5$validate, validateFirst, messageVariables, validateDebounce, filteredRules, promise;
return _regeneratorRuntime().wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
if (_this.mounted) {
_context.next = 2;
break;
}
return _context.abrupt("return", []);
case 2:
_this$props5 = _this.props, _this$props5$validate = _this$props5.validateFirst, validateFirst = _this$props5$validate === void 0 ? false : _this$props5$validate, messageVariables = _this$props5.messageVariables, validateDebounce = _this$props5.validateDebounce;
filteredRules = _this.getRules();
if (triggerName) {
filteredRules = filteredRules.filter(function(rule) {
return rule;
}).filter(function(rule) {
var validateTrigger = rule.validateTrigger;
if (!validateTrigger) {
return true;
}
var triggerList = toArray$3(validateTrigger);
return triggerList.includes(triggerName);
});
}
if (!(validateDebounce && triggerName)) {
_context.next = 10;
break;
}
_context.next = 8;
return new Promise(function(resolve) {
setTimeout(resolve, validateDebounce);
});
case 8:
if (!(_this.validatePromise !== rootPromise)) {
_context.next = 10;
break;
}
return _context.abrupt("return", []);
case 10:
promise = validateRules(namePath, currentValue, filteredRules, options, validateFirst, messageVariables);
promise.catch(function(e2) {
return e2;
}).then(function() {
var ruleErrors = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : EMPTY_ERRORS;
if (_this.validatePromise === rootPromise) {
var _ruleErrors$forEach;
_this.validatePromise = null;
var nextErrors = [];
var nextWarnings = [];
(_ruleErrors$forEach = ruleErrors.forEach) === null || _ruleErrors$forEach === void 0 || _ruleErrors$forEach.call(ruleErrors, function(_ref4) {
var warningOnly = _ref4.rule.warningOnly, _ref4$errors = _ref4.errors, errors = _ref4$errors === void 0 ? EMPTY_ERRORS : _ref4$errors;
if (warningOnly) {
nextWarnings.push.apply(nextWarnings, _toConsumableArray(errors));
} else {
nextErrors.push.apply(nextErrors, _toConsumableArray(errors));
}
});
_this.errors = nextErrors;
_this.warnings = nextWarnings;
_this.triggerMetaEvent();
_this.reRender();
}
});
return _context.abrupt("return", promise);
case 13:
case "end":
return _context.stop();
}
}, _callee);
})));
if (validateOnly) {
return rootPromise;
}
_this.validatePromise = rootPromise;
_this.dirty = true;
_this.errors = EMPTY_ERRORS;
_this.warnings = EMPTY_ERRORS;
_this.triggerMetaEvent();
_this.reRender();
return rootPromise;
});
_defineProperty(_assertThisInitialized(_this), "isFieldValidating", function() {
return !!_this.validatePromise;
});
_defineProperty(_assertThisInitialized(_this), "isFieldTouched", function() {
return _this.touched;
});
_defineProperty(_assertThisInitialized(_this), "isFieldDirty", function() {
if (_this.dirty || _this.props.initialValue !== void 0) {
return true;
}
var fieldContext = _this.props.fieldContext;
var _fieldContext$getInte = fieldContext.getInternalHooks(HOOK_MARK), getInitialValue = _fieldContext$getInte.getInitialValue;
if (getInitialValue(_this.getNamePath()) !== void 0) {
return true;
}
return false;
});
_defineProperty(_assertThisInitialized(_this), "getErrors", function() {
return _this.errors;
});
_defineProperty(_assertThisInitialized(_this), "getWarnings", function() {
return _this.warnings;
});
_defineProperty(_assertThisInitialized(_this), "isListField", function() {
return _this.props.isListField;
});
_defineProperty(_assertThisInitialized(_this), "isList", function() {
return _this.props.isList;
});
_defineProperty(_assertThisInitialized(_this), "isPreserve", function() {
return _this.props.preserve;
});
_defineProperty(_assertThisInitialized(_this), "getMeta", function() {
_this.prevValidating = _this.isFieldValidating();
var meta = {
touched: _this.isFieldTouched(),
validating: _this.prevValidating,
errors: _this.errors,
warnings: _this.warnings,
name: _this.getNamePath(),
validated: _this.validatePromise === null
};
return meta;
});
_defineProperty(_assertThisInitialized(_this), "getOnlyChild", function(children) {
if (typeof children === "function") {
var _meta2 = _this.getMeta();
return _objectSpread2$1(_objectSpread2$1({}, _this.getOnlyChild(children(_this.getControlled(), _meta2, _this.props.fieldContext))), {}, {
isFunction: true
});
}
var childList = toArray$4(children);
if (childList.length !== 1 || !/* @__PURE__ */ reactExports.isValidElement(childList[0])) {
return {
child: childList,
isFunction: false
};
}
return {
child: childList[0],
isFunction: false
};
});
_defineProperty(_assertThisInitialized(_this), "getValue", function(store) {
var getFieldsValue = _this.props.fieldContext.getFieldsValue;
var namePath = _this.getNamePath();
return get$1(store || getFieldsValue(true), namePath);
});
_defineProperty(_assertThisInitialized(_this), "getControlled", function() {
var childProps = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
var _this$props6 = _this.props, name = _this$props6.name, trigger2 = _this$props6.trigger, validateTrigger = _this$props6.validateTrigger, getValueFromEvent = _this$props6.getValueFromEvent, normalize2 = _this$props6.normalize, valuePropName = _this$props6.valuePropName, getValueProps = _this$props6.getValueProps, fieldContext = _this$props6.fieldContext;
var mergedValidateTrigger = validateTrigger !== void 0 ? validateTrigger : fieldContext.validateTrigger;
var namePath = _this.getNamePath();
var getInternalHooks22 = fieldContext.getInternalHooks, getFieldsValue = fieldContext.getFieldsValue;
var _getInternalHooks = getInternalHooks22(HOOK_MARK), dispatch = _getInternalHooks.dispatch;
var value = _this.getValue();
var mergedGetValueProps = getValueProps || function(val) {
return _defineProperty({}, valuePropName, val);
};
var originTriggerFunc = childProps[trigger2];
var valueProps = name !== void 0 ? mergedGetValueProps(value) : {};
var control = _objectSpread2$1(_objectSpread2$1({}, childProps), valueProps);
control[trigger2] = function() {
_this.touched = true;
_this.dirty = true;
_this.triggerMetaEvent();
var newValue;
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
if (getValueFromEvent) {
newValue = getValueFromEvent.apply(void 0, args);
} else {
newValue = defaultGetValueFromEvent.apply(void 0, [valuePropName].concat(args));
}
if (normalize2) {
newValue = normalize2(newValue, value, getFieldsValue(true));
}
dispatch({
type: "updateValue",
namePath,
value: newValue
});
if (originTriggerFunc) {
originTriggerFunc.apply(void 0, args);
}
};
var validateTriggerList = toArray$3(mergedValidateTrigger || []);
validateTriggerList.forEach(function(triggerName) {
var originTrigger = control[triggerName];
control[triggerName] = function() {
if (originTrigger) {
originTrigger.apply(void 0, arguments);
}
var rules2 = _this.props.rules;
if (rules2 && rules2.length) {
dispatch({
type: "validateField",
namePath,
triggerName
});
}
};
});
return control;
});
if (props.fieldContext) {
var getInternalHooks2 = props.fieldContext.getInternalHooks;
var _getInternalHooks2 = getInternalHooks2(HOOK_MARK), initEntityValue = _getInternalHooks2.initEntityValue;
initEntityValue(_assertThisInitialized(_this));
}
return _this;
}
_createClass(Field2, [{
key: "componentDidMount",
value: function componentDidMount() {
var _this$props7 = this.props, shouldUpdate = _this$props7.shouldUpdate, fieldContext = _this$props7.fieldContext;
this.mounted = true;
if (fieldContext) {
var getInternalHooks2 = fieldContext.getInternalHooks;
var _getInternalHooks3 = getInternalHooks2(HOOK_MARK), registerField = _getInternalHooks3.registerField;
this.cancelRegisterFunc = registerField(this);
}
if (shouldUpdate === true) {
this.reRender();
}
}
}, {
key: "componentWillUnmount",
value: function componentWillUnmount() {
this.cancelRegister();
this.triggerMetaEvent(true);
this.mounted = false;
}
}, {
key: "reRender",
value: function reRender() {
if (!this.mounted) return;
this.forceUpdate();
}
}, {
key: "render",
value: function render2() {
var resetCount = this.state.resetCount;
var children = this.props.children;
var _this$getOnlyChild = this.getOnlyChild(children), child = _this$getOnlyChild.child, isFunction2 = _this$getOnlyChild.isFunction;
var returnChildNode;
if (isFunction2) {
returnChildNode = child;
} else if (/* @__PURE__ */ reactExports.isValidElement(child)) {
returnChildNode = /* @__PURE__ */ reactExports.cloneElement(child, this.getControlled(child.props));
} else {
warningOnce(!child, "`children` of Field is not validate ReactElement.");
returnChildNode = child;
}
return /* @__PURE__ */ reactExports.createElement(reactExports.Fragment, {
key: resetCount
}, returnChildNode);
}
}]);
return Field2;
}(reactExports.Component);
_defineProperty(Field, "contextType", Context$1);
_defineProperty(Field, "defaultProps", {
trigger: "onChange",
valuePropName: "value"
});
function WrapperField(_ref6) {
var name = _ref6.name, restProps = _objectWithoutProperties(_ref6, _excluded$D);
var fieldContext = reactExports.useContext(Context$1);
var listContext = reactExports.useContext(ListContext);
var namePath = name !== void 0 ? getNamePath(name) : void 0;
var key = "keep";
if (!restProps.isListField) {
key = "_".concat((namePath || []).join("_"));
}
return /* @__PURE__ */ reactExports.createElement(Field, _extends$2({
key,
name: namePath,
isListField: !!listContext
}, restProps, {
fieldContext
}));
}
function List$1(_ref) {
var name = _ref.name, initialValue = _ref.initialValue, children = _ref.children, rules2 = _ref.rules, validateTrigger = _ref.validateTrigger, isListField = _ref.isListField;
var context = reactExports.useContext(Context$1);
var wrapperListContext = reactExports.useContext(ListContext);
var keyRef = reactExports.useRef({
keys: [],
id: 0
});
var keyManager = keyRef.current;
var prefixName = reactExports.useMemo(function() {
var parentPrefixName = getNamePath(context.prefixName) || [];
return [].concat(_toConsumableArray(parentPrefixName), _toConsumableArray(getNamePath(name)));
}, [context.prefixName, name]);
var fieldContext = reactExports.useMemo(function() {
return _objectSpread2$1(_objectSpread2$1({}, context), {}, {
prefixName
});
}, [context, prefixName]);
var listContext = reactExports.useMemo(function() {
return {
getKey: function getKey2(namePath) {
var len2 = prefixName.length;
var pathName = namePath[len2];
return [keyManager.keys[pathName], namePath.slice(len2 + 1)];
}
};
}, [prefixName]);
if (typeof children !== "function") {
warningOnce(false, "Form.List only accepts function as children.");
return null;
}
var shouldUpdate = function shouldUpdate2(prevValue, nextValue, _ref2) {
var source = _ref2.source;
if (source === "internal") {
return false;
}
return prevValue !== nextValue;
};
return /* @__PURE__ */ reactExports.createElement(ListContext.Provider, {
value: listContext
}, /* @__PURE__ */ reactExports.createElement(Context$1.Provider, {
value: fieldContext
}, /* @__PURE__ */ reactExports.createElement(WrapperField, {
name: [],
shouldUpdate,
rules: rules2,
validateTrigger,
initialValue,
isList: true,
isListField: isListField !== null && isListField !== void 0 ? isListField : !!wrapperListContext
}, function(_ref3, meta) {
var _ref3$value = _ref3.value, value = _ref3$value === void 0 ? [] : _ref3$value, onChange = _ref3.onChange;
var getFieldValue = context.getFieldValue;
var getNewValue = function getNewValue2() {
var values = getFieldValue(prefixName || []);
return values || [];
};
var operations = {
add: function add2(defaultValue, index2) {
var newValue = getNewValue();
if (index2 >= 0 && index2 <= newValue.length) {
keyManager.keys = [].concat(_toConsumableArray(keyManager.keys.slice(0, index2)), [keyManager.id], _toConsumableArray(keyManager.keys.slice(index2)));
onChange([].concat(_toConsumableArray(newValue.slice(0, index2)), [defaultValue], _toConsumableArray(newValue.slice(index2))));
} else {
keyManager.keys = [].concat(_toConsumableArray(keyManager.keys), [keyManager.id]);
onChange([].concat(_toConsumableArray(newValue), [defaultValue]));
}
keyManager.id += 1;
},
remove: function remove(index2) {
var newValue = getNewValue();
var indexSet = new Set(Array.isArray(index2) ? index2 : [index2]);
if (indexSet.size <= 0) {
return;
}
keyManager.keys = keyManager.keys.filter(function(_, keysIndex) {
return !indexSet.has(keysIndex);
});
onChange(newValue.filter(function(_, valueIndex) {
return !indexSet.has(valueIndex);
}));
},
move: function move$1(from2, to) {
if (from2 === to) {
return;
}
var newValue = getNewValue();
if (from2 < 0 || from2 >= newValue.length || to < 0 || to >= newValue.length) {
return;
}
keyManager.keys = move(keyManager.keys, from2, to);
onChange(move(newValue, from2, to));
}
};
var listValue = value || [];
if (!Array.isArray(listValue)) {
listValue = [];
}
return children(listValue.map(function(__, index2) {
var key = keyManager.keys[index2];
if (key === void 0) {
keyManager.keys[index2] = keyManager.id;
key = keyManager.keys[index2];
keyManager.id += 1;
}
return {
name: index2,
key,
isListField: true
};
}), operations, meta);
})));
}
function allPromiseFinish(promiseList) {
var hasError = false;
var count2 = promiseList.length;
var results = [];
if (!promiseList.length) {
return Promise.resolve([]);
}
return new Promise(function(resolve, reject) {
promiseList.forEach(function(promise, index2) {
promise.catch(function(e2) {
hasError = true;
return e2;
}).then(function(result) {
count2 -= 1;
results[index2] = result;
if (count2 > 0) {
return;
}
if (hasError) {
reject(results);
}
resolve(results);
});
});
});
}
var SPLIT = "__@field_split__";
function normalize$4(namePath) {
return namePath.map(function(cell) {
return "".concat(_typeof$2(cell), ":").concat(cell);
}).join(SPLIT);
}
var NameMap = /* @__PURE__ */ function() {
function NameMap2() {
_classCallCheck(this, NameMap2);
_defineProperty(this, "kvs", /* @__PURE__ */ new Map());
}
_createClass(NameMap2, [{
key: "set",
value: function set2(key, value) {
this.kvs.set(normalize$4(key), value);
}
}, {
key: "get",
value: function get2(key) {
return this.kvs.get(normalize$4(key));
}
}, {
key: "update",
value: function update(key, updater) {
var origin = this.get(key);
var next2 = updater(origin);
if (!next2) {
this.delete(key);
} else {
this.set(key, next2);
}
}
}, {
key: "delete",
value: function _delete(key) {
this.kvs.delete(normalize$4(key));
}
// Since we only use this in test, let simply realize this
}, {
key: "map",
value: function map2(callback) {
return _toConsumableArray(this.kvs.entries()).map(function(_ref) {
var _ref2 = _slicedToArray(_ref, 2), key = _ref2[0], value = _ref2[1];
var cells = key.split(SPLIT);
return callback({
key: cells.map(function(cell) {
var _cell$match = cell.match(/^([^:]*):(.*)$/), _cell$match2 = _slicedToArray(_cell$match, 3), type4 = _cell$match2[1], unit2 = _cell$match2[2];
return type4 === "number" ? Number(unit2) : unit2;
}),
value
});
});
}
}, {
key: "toJSON",
value: function toJSON() {
var json = {};
this.map(function(_ref3) {
var key = _ref3.key, value = _ref3.value;
json[key.join(".")] = value;
return null;
});
return json;
}
}]);
return NameMap2;
}();
var _excluded$C = ["name"];
var FormStore = /* @__PURE__ */ _createClass(function FormStore2(forceRootUpdate) {
var _this = this;
_classCallCheck(this, FormStore2);
_defineProperty(this, "formHooked", false);
_defineProperty(this, "forceRootUpdate", void 0);
_defineProperty(this, "subscribable", true);
_defineProperty(this, "store", {});
_defineProperty(this, "fieldEntities", []);
_defineProperty(this, "initialValues", {});
_defineProperty(this, "callbacks", {});
_defineProperty(this, "validateMessages", null);
_defineProperty(this, "preserve", null);
_defineProperty(this, "lastValidatePromise", null);
_defineProperty(this, "getForm", function() {
return {
getFieldValue: _this.getFieldValue,
getFieldsValue: _this.getFieldsValue,
getFieldError: _this.getFieldError,
getFieldWarning: _this.getFieldWarning,
getFieldsError: _this.getFieldsError,
isFieldsTouched: _this.isFieldsTouched,
isFieldTouched: _this.isFieldTouched,
isFieldValidating: _this.isFieldValidating,
isFieldsValidating: _this.isFieldsValidating,
resetFields: _this.resetFields,
setFields: _this.setFields,
setFieldValue: _this.setFieldValue,
setFieldsValue: _this.setFieldsValue,
validateFields: _this.validateFields,
submit: _this.submit,
_init: true,
getInternalHooks: _this.getInternalHooks
};
});
_defineProperty(this, "getInternalHooks", function(key) {
if (key === HOOK_MARK) {
_this.formHooked = true;
return {
dispatch: _this.dispatch,
initEntityValue: _this.initEntityValue,
registerField: _this.registerField,
useSubscribe: _this.useSubscribe,
setInitialValues: _this.setInitialValues,
destroyForm: _this.destroyForm,
setCallbacks: _this.setCallbacks,
setValidateMessages: _this.setValidateMessages,
getFields: _this.getFields,
setPreserve: _this.setPreserve,
getInitialValue: _this.getInitialValue,
registerWatch: _this.registerWatch
};
}
warningOnce(false, "`getInternalHooks` is internal usage. Should not call directly.");
return null;
});
_defineProperty(this, "useSubscribe", function(subscribable) {
_this.subscribable = subscribable;
});
_defineProperty(this, "prevWithoutPreserves", null);
_defineProperty(this, "setInitialValues", function(initialValues, init2) {
_this.initialValues = initialValues || {};
if (init2) {
var _this$prevWithoutPres;
var nextStore = merge$2(initialValues, _this.store);
(_this$prevWithoutPres = _this.prevWithoutPreserves) === null || _this$prevWithoutPres === void 0 || _this$prevWithoutPres.map(function(_ref) {
var namePath = _ref.key;
nextStore = set$2(nextStore, namePath, get$1(initialValues, namePath));
});
_this.prevWithoutPreserves = null;
_this.updateStore(nextStore);
}
});
_defineProperty(this, "destroyForm", function(clearOnDestroy) {
if (clearOnDestroy) {
_this.updateStore({});
} else {
var prevWithoutPreserves = new NameMap();
_this.getFieldEntities(true).forEach(function(entity) {
if (!_this.isMergedPreserve(entity.isPreserve())) {
prevWithoutPreserves.set(entity.getNamePath(), true);
}
});
_this.prevWithoutPreserves = prevWithoutPreserves;
}
});
_defineProperty(this, "getInitialValue", function(namePath) {
var initValue = get$1(_this.initialValues, namePath);
return namePath.length ? merge$2(initValue) : initValue;
});
_defineProperty(this, "setCallbacks", function(callbacks) {
_this.callbacks = callbacks;
});
_defineProperty(this, "setValidateMessages", function(validateMessages) {
_this.validateMessages = validateMessages;
});
_defineProperty(this, "setPreserve", function(preserve2) {
_this.preserve = preserve2;
});
_defineProperty(this, "watchList", []);
_defineProperty(this, "registerWatch", function(callback) {
_this.watchList.push(callback);
return function() {
_this.watchList = _this.watchList.filter(function(fn) {
return fn !== callback;
});
};
});
_defineProperty(this, "notifyWatch", function() {
var namePath = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
if (_this.watchList.length) {
var values = _this.getFieldsValue();
var allValues = _this.getFieldsValue(true);
_this.watchList.forEach(function(callback) {
callback(values, allValues, namePath);
});
}
});
_defineProperty(this, "timeoutId", null);
_defineProperty(this, "warningUnhooked", function() {
});
_defineProperty(this, "updateStore", function(nextStore) {
_this.store = nextStore;
});
_defineProperty(this, "getFieldEntities", function() {
var pure = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false;
if (!pure) {
return _this.fieldEntities;
}
return _this.fieldEntities.filter(function(field) {
return field.getNamePath().length;
});
});
_defineProperty(this, "getFieldsMap", function() {
var pure = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false;
var cache = new NameMap();
_this.getFieldEntities(pure).forEach(function(field) {
var namePath = field.getNamePath();
cache.set(namePath, field);
});
return cache;
});
_defineProperty(this, "getFieldEntitiesForNamePathList", function(nameList) {
if (!nameList) {
return _this.getFieldEntities(true);
}
var cache = _this.getFieldsMap(true);
return nameList.map(function(name) {
var namePath = getNamePath(name);
return cache.get(namePath) || {
INVALIDATE_NAME_PATH: getNamePath(name)
};
});
});
_defineProperty(this, "getFieldsValue", function(nameList, filterFunc) {
_this.warningUnhooked();
var mergedNameList;
var mergedFilterFunc;
var mergedStrict;
if (nameList === true || Array.isArray(nameList)) {
mergedNameList = nameList;
mergedFilterFunc = filterFunc;
} else if (nameList && _typeof$2(nameList) === "object") {
mergedStrict = nameList.strict;
mergedFilterFunc = nameList.filter;
}
if (mergedNameList === true && !mergedFilterFunc) {
return _this.store;
}
var fieldEntities = _this.getFieldEntitiesForNamePathList(Array.isArray(mergedNameList) ? mergedNameList : null);
var filteredNameList = [];
fieldEntities.forEach(function(entity) {
var _isListField, _ref3;
var namePath = "INVALIDATE_NAME_PATH" in entity ? entity.INVALIDATE_NAME_PATH : entity.getNamePath();
if (mergedStrict) {
var _isList, _ref2;
if ((_isList = (_ref2 = entity).isList) !== null && _isList !== void 0 && _isList.call(_ref2)) {
return;
}
} else if (!mergedNameList && (_isListField = (_ref3 = entity).isListField) !== null && _isListField !== void 0 && _isListField.call(_ref3)) {
return;
}
if (!mergedFilterFunc) {
filteredNameList.push(namePath);
} else {
var meta = "getMeta" in entity ? entity.getMeta() : null;
if (mergedFilterFunc(meta)) {
filteredNameList.push(namePath);
}
}
});
return cloneByNamePathList(_this.store, filteredNameList.map(getNamePath));
});
_defineProperty(this, "getFieldValue", function(name) {
_this.warningUnhooked();
var namePath = getNamePath(name);
return get$1(_this.store, namePath);
});
_defineProperty(this, "getFieldsError", function(nameList) {
_this.warningUnhooked();
var fieldEntities = _this.getFieldEntitiesForNamePathList(nameList);
return fieldEntities.map(function(entity, index2) {
if (entity && !("INVALIDATE_NAME_PATH" in entity)) {
return {
name: entity.getNamePath(),
errors: entity.getErrors(),
warnings: entity.getWarnings()
};
}
return {
name: getNamePath(nameList[index2]),
errors: [],
warnings: []
};
});
});
_defineProperty(this, "getFieldError", function(name) {
_this.warningUnhooked();
var namePath = getNamePath(name);
var fieldError = _this.getFieldsError([namePath])[0];
return fieldError.errors;
});
_defineProperty(this, "getFieldWarning", function(name) {
_this.warningUnhooked();
var namePath = getNamePath(name);
var fieldError = _this.getFieldsError([namePath])[0];
return fieldError.warnings;
});
_defineProperty(this, "isFieldsTouched", function() {
_this.warningUnhooked();
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
var arg0 = args[0], arg1 = args[1];
var namePathList;
var isAllFieldsTouched = false;
if (args.length === 0) {
namePathList = null;
} else if (args.length === 1) {
if (Array.isArray(arg0)) {
namePathList = arg0.map(getNamePath);
isAllFieldsTouched = false;
} else {
namePathList = null;
isAllFieldsTouched = arg0;
}
} else {
namePathList = arg0.map(getNamePath);
isAllFieldsTouched = arg1;
}
var fieldEntities = _this.getFieldEntities(true);
var isFieldTouched = function isFieldTouched2(field) {
return field.isFieldTouched();
};
if (!namePathList) {
return isAllFieldsTouched ? fieldEntities.every(function(entity) {
return isFieldTouched(entity) || entity.isList();
}) : fieldEntities.some(isFieldTouched);
}
var map2 = new NameMap();
namePathList.forEach(function(shortNamePath) {
map2.set(shortNamePath, []);
});
fieldEntities.forEach(function(field) {
var fieldNamePath = field.getNamePath();
namePathList.forEach(function(shortNamePath) {
if (shortNamePath.every(function(nameUnit, i) {
return fieldNamePath[i] === nameUnit;
})) {
map2.update(shortNamePath, function(list) {
return [].concat(_toConsumableArray(list), [field]);
});
}
});
});
var isNamePathListTouched = function isNamePathListTouched2(entities) {
return entities.some(isFieldTouched);
};
var namePathListEntities = map2.map(function(_ref4) {
var value = _ref4.value;
return value;
});
return isAllFieldsTouched ? namePathListEntities.every(isNamePathListTouched) : namePathListEntities.some(isNamePathListTouched);
});
_defineProperty(this, "isFieldTouched", function(name) {
_this.warningUnhooked();
return _this.isFieldsTouched([name]);
});
_defineProperty(this, "isFieldsValidating", function(nameList) {
_this.warningUnhooked();
var fieldEntities = _this.getFieldEntities();
if (!nameList) {
return fieldEntities.some(function(testField) {
return testField.isFieldValidating();
});
}
var namePathList = nameList.map(getNamePath);
return fieldEntities.some(function(testField) {
var fieldNamePath = testField.getNamePath();
return containsNamePath(namePathList, fieldNamePath) && testField.isFieldValidating();
});
});
_defineProperty(this, "isFieldValidating", function(name) {
_this.warningUnhooked();
return _this.isFieldsValidating([name]);
});
_defineProperty(this, "resetWithFieldInitialValue", function() {
var info = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
var cache = new NameMap();
var fieldEntities = _this.getFieldEntities(true);
fieldEntities.forEach(function(field) {
var initialValue = field.props.initialValue;
var namePath = field.getNamePath();
if (initialValue !== void 0) {
var records = cache.get(namePath) || /* @__PURE__ */ new Set();
records.add({
entity: field,
value: initialValue
});
cache.set(namePath, records);
}
});
var resetWithFields = function resetWithFields2(entities) {
entities.forEach(function(field) {
var initialValue = field.props.initialValue;
if (initialValue !== void 0) {
var namePath = field.getNamePath();
var formInitialValue = _this.getInitialValue(namePath);
if (formInitialValue !== void 0) {
warningOnce(false, "Form already set 'initialValues' with path '".concat(namePath.join("."), "'. Field can not overwrite it."));
} else {
var records = cache.get(namePath);
if (records && records.size > 1) {
warningOnce(false, "Multiple Field with path '".concat(namePath.join("."), "' set 'initialValue'. Can not decide which one to pick."));
} else if (records) {
var originValue = _this.getFieldValue(namePath);
var isListField = field.isListField();
if (!isListField && (!info.skipExist || originValue === void 0)) {
_this.updateStore(set$2(_this.store, namePath, _toConsumableArray(records)[0].value));
}
}
}
}
});
};
var requiredFieldEntities;
if (info.entities) {
requiredFieldEntities = info.entities;
} else if (info.namePathList) {
requiredFieldEntities = [];
info.namePathList.forEach(function(namePath) {
var records = cache.get(namePath);
if (records) {
var _requiredFieldEntitie;
(_requiredFieldEntitie = requiredFieldEntities).push.apply(_requiredFieldEntitie, _toConsumableArray(_toConsumableArray(records).map(function(r2) {
return r2.entity;
})));
}
});
} else {
requiredFieldEntities = fieldEntities;
}
resetWithFields(requiredFieldEntities);
});
_defineProperty(this, "resetFields", function(nameList) {
_this.warningUnhooked();
var prevStore = _this.store;
if (!nameList) {
_this.updateStore(merge$2(_this.initialValues));
_this.resetWithFieldInitialValue();
_this.notifyObservers(prevStore, null, {
type: "reset"
});
_this.notifyWatch();
return;
}
var namePathList = nameList.map(getNamePath);
namePathList.forEach(function(namePath) {
var initialValue = _this.getInitialValue(namePath);
_this.updateStore(set$2(_this.store, namePath, initialValue));
});
_this.resetWithFieldInitialValue({
namePathList
});
_this.notifyObservers(prevStore, namePathList, {
type: "reset"
});
_this.notifyWatch(namePathList);
});
_defineProperty(this, "setFields", function(fields) {
_this.warningUnhooked();
var prevStore = _this.store;
var namePathList = [];
fields.forEach(function(fieldData) {
var name = fieldData.name, data = _objectWithoutProperties(fieldData, _excluded$C);
var namePath = getNamePath(name);
namePathList.push(namePath);
if ("value" in data) {
_this.updateStore(set$2(_this.store, namePath, data.value));
}
_this.notifyObservers(prevStore, [namePath], {
type: "setField",
data: fieldData
});
});
_this.notifyWatch(namePathList);
});
_defineProperty(this, "getFields", function() {
var entities = _this.getFieldEntities(true);
var fields = entities.map(function(field) {
var namePath = field.getNamePath();
var meta = field.getMeta();
var fieldData = _objectSpread2$1(_objectSpread2$1({}, meta), {}, {
name: namePath,
value: _this.getFieldValue(namePath)
});
Object.defineProperty(fieldData, "originRCField", {
value: true
});
return fieldData;
});
return fields;
});
_defineProperty(this, "initEntityValue", function(entity) {
var initialValue = entity.props.initialValue;
if (initialValue !== void 0) {
var namePath = entity.getNamePath();
var prevValue = get$1(_this.store, namePath);
if (prevValue === void 0) {
_this.updateStore(set$2(_this.store, namePath, initialValue));
}
}
});
_defineProperty(this, "isMergedPreserve", function(fieldPreserve) {
var mergedPreserve = fieldPreserve !== void 0 ? fieldPreserve : _this.preserve;
return mergedPreserve !== null && mergedPreserve !== void 0 ? mergedPreserve : true;
});
_defineProperty(this, "registerField", function(entity) {
_this.fieldEntities.push(entity);
var namePath = entity.getNamePath();
_this.notifyWatch([namePath]);
if (entity.props.initialValue !== void 0) {
var prevStore = _this.store;
_this.resetWithFieldInitialValue({
entities: [entity],
skipExist: true
});
_this.notifyObservers(prevStore, [entity.getNamePath()], {
type: "valueUpdate",
source: "internal"
});
}
return function(isListField, preserve2) {
var subNamePath = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : [];
_this.fieldEntities = _this.fieldEntities.filter(function(item) {
return item !== entity;
});
if (!_this.isMergedPreserve(preserve2) && (!isListField || subNamePath.length > 1)) {
var defaultValue = isListField ? void 0 : _this.getInitialValue(namePath);
if (namePath.length && _this.getFieldValue(namePath) !== defaultValue && _this.fieldEntities.every(function(field) {
return (
// Only reset when no namePath exist
!matchNamePath(field.getNamePath(), namePath)
);
})) {
var _prevStore = _this.store;
_this.updateStore(set$2(_prevStore, namePath, defaultValue, true));
_this.notifyObservers(_prevStore, [namePath], {
type: "remove"
});
_this.triggerDependenciesUpdate(_prevStore, namePath);
}
}
_this.notifyWatch([namePath]);
};
});
_defineProperty(this, "dispatch", function(action) {
switch (action.type) {
case "updateValue": {
var namePath = action.namePath, value = action.value;
_this.updateValue(namePath, value);
break;
}
case "validateField": {
var _namePath = action.namePath, triggerName = action.triggerName;
_this.validateFields([_namePath], {
triggerName
});
break;
}
}
});
_defineProperty(this, "notifyObservers", function(prevStore, namePathList, info) {
if (_this.subscribable) {
var mergedInfo = _objectSpread2$1(_objectSpread2$1({}, info), {}, {
store: _this.getFieldsValue(true)
});
_this.getFieldEntities().forEach(function(_ref5) {
var onStoreChange = _ref5.onStoreChange;
onStoreChange(prevStore, namePathList, mergedInfo);
});
} else {
_this.forceRootUpdate();
}
});
_defineProperty(this, "triggerDependenciesUpdate", function(prevStore, namePath) {
var childrenFields = _this.getDependencyChildrenFields(namePath);
if (childrenFields.length) {
_this.validateFields(childrenFields);
}
_this.notifyObservers(prevStore, childrenFields, {
type: "dependenciesUpdate",
relatedFields: [namePath].concat(_toConsumableArray(childrenFields))
});
return childrenFields;
});
_defineProperty(this, "updateValue", function(name, value) {
var namePath = getNamePath(name);
var prevStore = _this.store;
_this.updateStore(set$2(_this.store, namePath, value));
_this.notifyObservers(prevStore, [namePath], {
type: "valueUpdate",
source: "internal"
});
_this.notifyWatch([namePath]);
var childrenFields = _this.triggerDependenciesUpdate(prevStore, namePath);
var onValuesChange = _this.callbacks.onValuesChange;
if (onValuesChange) {
var changedValues = cloneByNamePathList(_this.store, [namePath]);
onValuesChange(changedValues, _this.getFieldsValue());
}
_this.triggerOnFieldsChange([namePath].concat(_toConsumableArray(childrenFields)));
});
_defineProperty(this, "setFieldsValue", function(store) {
_this.warningUnhooked();
var prevStore = _this.store;
if (store) {
var nextStore = merge$2(_this.store, store);
_this.updateStore(nextStore);
}
_this.notifyObservers(prevStore, null, {
type: "valueUpdate",
source: "external"
});
_this.notifyWatch();
});
_defineProperty(this, "setFieldValue", function(name, value) {
_this.setFields([{
name,
value
}]);
});
_defineProperty(this, "getDependencyChildrenFields", function(rootNamePath) {
var children = /* @__PURE__ */ new Set();
var childrenFields = [];
var dependencies2fields = new NameMap();
_this.getFieldEntities().forEach(function(field) {
var dependencies2 = field.props.dependencies;
(dependencies2 || []).forEach(function(dependency) {
var dependencyNamePath = getNamePath(dependency);
dependencies2fields.update(dependencyNamePath, function() {
var fields = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : /* @__PURE__ */ new Set();
fields.add(field);
return fields;
});
});
});
var fillChildren = function fillChildren2(namePath) {
var fields = dependencies2fields.get(namePath) || /* @__PURE__ */ new Set();
fields.forEach(function(field) {
if (!children.has(field)) {
children.add(field);
var fieldNamePath = field.getNamePath();
if (field.isFieldDirty() && fieldNamePath.length) {
childrenFields.push(fieldNamePath);
fillChildren2(fieldNamePath);
}
}
});
};
fillChildren(rootNamePath);
return childrenFields;
});
_defineProperty(this, "triggerOnFieldsChange", function(namePathList, filedErrors) {
var onFieldsChange = _this.callbacks.onFieldsChange;
if (onFieldsChange) {
var fields = _this.getFields();
if (filedErrors) {
var cache = new NameMap();
filedErrors.forEach(function(_ref6) {
var name = _ref6.name, errors = _ref6.errors;
cache.set(name, errors);
});
fields.forEach(function(field) {
field.errors = cache.get(field.name) || field.errors;
});
}
var changedFields = fields.filter(function(_ref7) {
var fieldName = _ref7.name;
return containsNamePath(namePathList, fieldName);
});
if (changedFields.length) {
onFieldsChange(changedFields, fields);
}
}
});
_defineProperty(this, "validateFields", function(arg1, arg2) {
_this.warningUnhooked();
var nameList;
var options;
if (Array.isArray(arg1) || typeof arg1 === "string" || typeof arg2 === "string") {
nameList = arg1;
options = arg2;
} else {
options = arg1;
}
var provideNameList = !!nameList;
var namePathList = provideNameList ? nameList.map(getNamePath) : [];
var promiseList = [];
var TMP_SPLIT = String(Date.now());
var validateNamePathList = /* @__PURE__ */ new Set();
var _ref8 = options || {}, recursive = _ref8.recursive, dirty = _ref8.dirty;
_this.getFieldEntities(true).forEach(function(field) {
if (!provideNameList) {
namePathList.push(field.getNamePath());
}
if (!field.props.rules || !field.props.rules.length) {
return;
}
if (dirty && !field.isFieldDirty()) {
return;
}
var fieldNamePath = field.getNamePath();
validateNamePathList.add(fieldNamePath.join(TMP_SPLIT));
if (!provideNameList || containsNamePath(namePathList, fieldNamePath, recursive)) {
var promise = field.validateRules(_objectSpread2$1({
validateMessages: _objectSpread2$1(_objectSpread2$1({}, defaultValidateMessages), _this.validateMessages)
}, options));
promiseList.push(promise.then(function() {
return {
name: fieldNamePath,
errors: [],
warnings: []
};
}).catch(function(ruleErrors) {
var _ruleErrors$forEach;
var mergedErrors = [];
var mergedWarnings = [];
(_ruleErrors$forEach = ruleErrors.forEach) === null || _ruleErrors$forEach === void 0 || _ruleErrors$forEach.call(ruleErrors, function(_ref9) {
var warningOnly = _ref9.rule.warningOnly, errors = _ref9.errors;
if (warningOnly) {
mergedWarnings.push.apply(mergedWarnings, _toConsumableArray(errors));
} else {
mergedErrors.push.apply(mergedErrors, _toConsumableArray(errors));
}
});
if (mergedErrors.length) {
return Promise.reject({
name: fieldNamePath,
errors: mergedErrors,
warnings: mergedWarnings
});
}
return {
name: fieldNamePath,
errors: mergedErrors,
warnings: mergedWarnings
};
}));
}
});
var summaryPromise = allPromiseFinish(promiseList);
_this.lastValidatePromise = summaryPromise;
summaryPromise.catch(function(results) {
return results;
}).then(function(results) {
var resultNamePathList = results.map(function(_ref10) {
var name = _ref10.name;
return name;
});
_this.notifyObservers(_this.store, resultNamePathList, {
type: "validateFinish"
});
_this.triggerOnFieldsChange(resultNamePathList, results);
});
var returnPromise = summaryPromise.then(function() {
if (_this.lastValidatePromise === summaryPromise) {
return Promise.resolve(_this.getFieldsValue(namePathList));
}
return Promise.reject([]);
}).catch(function(results) {
var errorList = results.filter(function(result) {
return result && result.errors.length;
});
return Promise.reject({
values: _this.getFieldsValue(namePathList),
errorFields: errorList,
outOfDate: _this.lastValidatePromise !== summaryPromise
});
});
returnPromise.catch(function(e2) {
return e2;
});
var triggerNamePathList = namePathList.filter(function(namePath) {
return validateNamePathList.has(namePath.join(TMP_SPLIT));
});
_this.triggerOnFieldsChange(triggerNamePathList);
return returnPromise;
});
_defineProperty(this, "submit", function() {
_this.warningUnhooked();
_this.validateFields().then(function(values) {
var onFinish = _this.callbacks.onFinish;
if (onFinish) {
try {
onFinish(values);
} catch (err) {
console.error(err);
}
}
}).catch(function(e2) {
var onFinishFailed = _this.callbacks.onFinishFailed;
if (onFinishFailed) {
onFinishFailed(e2);
}
});
});
this.forceRootUpdate = forceRootUpdate;
});
function useForm(form) {
var formRef = reactExports.useRef();
var _React$useState = reactExports.useState({}), _React$useState2 = _slicedToArray(_React$useState, 2), forceUpdate = _React$useState2[1];
if (!formRef.current) {
if (form) {
formRef.current = form;
} else {
var forceReRender = function forceReRender2() {
forceUpdate({});
};
var formStore = new FormStore(forceReRender);
formRef.current = formStore.getForm();
}
}
return [formRef.current];
}
var FormContext = /* @__PURE__ */ reactExports.createContext({
triggerFormChange: function triggerFormChange() {
},
triggerFormFinish: function triggerFormFinish() {
},
registerForm: function registerForm() {
},
unregisterForm: function unregisterForm() {
}
});
var FormProvider = function FormProvider2(_ref) {
var validateMessages = _ref.validateMessages, onFormChange = _ref.onFormChange, onFormFinish = _ref.onFormFinish, children = _ref.children;
var formContext = reactExports.useContext(FormContext);
var formsRef = reactExports.useRef({});
return /* @__PURE__ */ reactExports.createElement(FormContext.Provider, {
value: _objectSpread2$1(_objectSpread2$1({}, formContext), {}, {
validateMessages: _objectSpread2$1(_objectSpread2$1({}, formContext.validateMessages), validateMessages),
// =========================================================
// = Global Form Control =
// =========================================================
triggerFormChange: function triggerFormChange2(name, changedFields) {
if (onFormChange) {
onFormChange(name, {
changedFields,
forms: formsRef.current
});
}
formContext.triggerFormChange(name, changedFields);
},
triggerFormFinish: function triggerFormFinish2(name, values) {
if (onFormFinish) {
onFormFinish(name, {
values,
forms: formsRef.current
});
}
formContext.triggerFormFinish(name, values);
},
registerForm: function registerForm2(name, form) {
if (name) {
formsRef.current = _objectSpread2$1(_objectSpread2$1({}, formsRef.current), {}, _defineProperty({}, name, form));
}
formContext.registerForm(name, form);
},
unregisterForm: function unregisterForm2(name) {
var newForms = _objectSpread2$1({}, formsRef.current);
delete newForms[name];
formsRef.current = newForms;
formContext.unregisterForm(name);
}
})
}, children);
};
var _excluded$B = ["name", "initialValues", "fields", "form", "preserve", "children", "component", "validateMessages", "validateTrigger", "onValuesChange", "onFieldsChange", "onFinish", "onFinishFailed", "clearOnDestroy"];
var Form = function Form2(_ref, ref) {
var name = _ref.name, initialValues = _ref.initialValues, fields = _ref.fields, form = _ref.form, preserve2 = _ref.preserve, children = _ref.children, _ref$component = _ref.component, Component = _ref$component === void 0 ? "form" : _ref$component, validateMessages = _ref.validateMessages, _ref$validateTrigger = _ref.validateTrigger, validateTrigger = _ref$validateTrigger === void 0 ? "onChange" : _ref$validateTrigger, onValuesChange = _ref.onValuesChange, _onFieldsChange = _ref.onFieldsChange, _onFinish = _ref.onFinish, onFinishFailed = _ref.onFinishFailed, clearOnDestroy = _ref.clearOnDestroy, restProps = _objectWithoutProperties(_ref, _excluded$B);
var nativeElementRef = reactExports.useRef(null);
var formContext = reactExports.useContext(FormContext);
var _useForm = useForm(form), _useForm2 = _slicedToArray(_useForm, 1), formInstance = _useForm2[0];
var _getInternalHooks = formInstance.getInternalHooks(HOOK_MARK), useSubscribe = _getInternalHooks.useSubscribe, setInitialValues = _getInternalHooks.setInitialValues, setCallbacks = _getInternalHooks.setCallbacks, setValidateMessages = _getInternalHooks.setValidateMessages, setPreserve = _getInternalHooks.setPreserve, destroyForm = _getInternalHooks.destroyForm;
reactExports.useImperativeHandle(ref, function() {
return _objectSpread2$1(_objectSpread2$1({}, formInstance), {}, {
nativeElement: nativeElementRef.current
});
});
reactExports.useEffect(function() {
formContext.registerForm(name, formInstance);
return function() {
formContext.unregisterForm(name);
};
}, [formContext, formInstance, name]);
setValidateMessages(_objectSpread2$1(_objectSpread2$1({}, formContext.validateMessages), validateMessages));
setCallbacks({
onValuesChange,
onFieldsChange: function onFieldsChange(changedFields) {
formContext.triggerFormChange(name, changedFields);
if (_onFieldsChange) {
for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
rest[_key - 1] = arguments[_key];
}
_onFieldsChange.apply(void 0, [changedFields].concat(rest));
}
},
onFinish: function onFinish(values) {
formContext.triggerFormFinish(name, values);
if (_onFinish) {
_onFinish(values);
}
},
onFinishFailed
});
setPreserve(preserve2);
var mountRef = reactExports.useRef(null);
setInitialValues(initialValues, !mountRef.current);
if (!mountRef.current) {
mountRef.current = true;
}
reactExports.useEffect(
function() {
return function() {
return destroyForm(clearOnDestroy);
};
},
// eslint-disable-next-line react-hooks/exhaustive-deps
[]
);
var childrenNode;
var childrenRenderProps = typeof children === "function";
if (childrenRenderProps) {
var _values = formInstance.getFieldsValue(true);
childrenNode = children(_values, formInstance);
} else {
childrenNode = children;
}
useSubscribe(!childrenRenderProps);
var prevFieldsRef = reactExports.useRef();
reactExports.useEffect(function() {
if (!isSimilar(prevFieldsRef.current || [], fields || [])) {
formInstance.setFields(fields || []);
}
prevFieldsRef.current = fields;
}, [fields, formInstance]);
var formContextValue = reactExports.useMemo(function() {
return _objectSpread2$1(_objectSpread2$1({}, formInstance), {}, {
validateTrigger
});
}, [formInstance, validateTrigger]);
var wrapperNode = /* @__PURE__ */ reactExports.createElement(ListContext.Provider, {
value: null
}, /* @__PURE__ */ reactExports.createElement(Context$1.Provider, {
value: formContextValue
}, childrenNode));
if (Component === false) {
return wrapperNode;
}
return /* @__PURE__ */ reactExports.createElement(Component, _extends$2({}, restProps, {
ref: nativeElementRef,
onSubmit: function onSubmit(event) {
event.preventDefault();
event.stopPropagation();
formInstance.submit();
},
onReset: function onReset(event) {
var _restProps$onReset;
event.preventDefault();
formInstance.resetFields();
(_restProps$onReset = restProps.onReset) === null || _restProps$onReset === void 0 || _restProps$onReset.call(restProps, event);
}
}), wrapperNode);
};
function stringify$1(value) {
try {
return JSON.stringify(value);
} catch (err) {
return Math.random();
}
}
function useWatch$1() {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
var dependencies2 = args[0], _args$ = args[1], _form = _args$ === void 0 ? {} : _args$;
var options = isFormInstance(_form) ? {
form: _form
} : _form;
var form = options.form;
var _useState = reactExports.useState(), _useState2 = _slicedToArray(_useState, 2), value = _useState2[0], setValue = _useState2[1];
var valueStr = reactExports.useMemo(function() {
return stringify$1(value);
}, [value]);
var valueStrRef = reactExports.useRef(valueStr);
valueStrRef.current = valueStr;
var fieldContext = reactExports.useContext(Context$1);
var formInstance = form || fieldContext;
var isValidForm = formInstance && formInstance._init;
var namePath = getNamePath(dependencies2);
var namePathRef = reactExports.useRef(namePath);
namePathRef.current = namePath;
reactExports.useEffect(
function() {
if (!isValidForm) {
return;
}
var getFieldsValue = formInstance.getFieldsValue, getInternalHooks2 = formInstance.getInternalHooks;
var _getInternalHooks = getInternalHooks2(HOOK_MARK), registerWatch = _getInternalHooks.registerWatch;
var getWatchValue = function getWatchValue2(values, allValues) {
var watchValue = options.preserve ? allValues : values;
return typeof dependencies2 === "function" ? dependencies2(watchValue) : get$1(watchValue, namePathRef.current);
};
var cancelRegister = registerWatch(function(values, allValues) {
var newValue = getWatchValue(values, allValues);
var nextValueStr = stringify$1(newValue);
if (valueStrRef.current !== nextValueStr) {
valueStrRef.current = nextValueStr;
setValue(newValue);
}
});
var initialValue = getWatchValue(getFieldsValue(), getFieldsValue(true));
if (value !== initialValue) {
setValue(initialValue);
}
return cancelRegister;
},
// We do not need re-register since namePath content is the same
// eslint-disable-next-line react-hooks/exhaustive-deps
[isValidForm]
);
return value;
}
var InternalForm = /* @__PURE__ */ reactExports.forwardRef(Form);
var RefForm = InternalForm;
RefForm.FormProvider = FormProvider;
RefForm.Field = WrapperField;
RefForm.List = List$1;
RefForm.useForm = useForm;
RefForm.useWatch = useWatch$1;
const FormItemInputContext = /* @__PURE__ */ reactExports.createContext({});
const NoFormStyle = (_ref) => {
let {
children,
status,
override
} = _ref;
const formItemInputContext = reactExports.useContext(FormItemInputContext);
const newFormItemInputContext = reactExports.useMemo(() => {
const newContext = Object.assign({}, formItemInputContext);
if (override) {
delete newContext.isFormItemInput;
}
if (status) {
delete newContext.status;
delete newContext.hasFeedback;
delete newContext.feedbackIcon;
}
return newContext;
}, [status, override, formItemInputContext]);
return /* @__PURE__ */ reactExports.createElement(FormItemInputContext.Provider, {
value: newFormItemInputContext
}, children);
};
const VariantContext = /* @__PURE__ */ reactExports.createContext(void 0);
const ContextIsolator = (props) => {
const {
space,
form,
children
} = props;
if (children === void 0 || children === null) {
return null;
}
let result = children;
if (form) {
result = /* @__PURE__ */ React.createElement(NoFormStyle, {
override: true,
status: true
}, result);
}
if (space) {
result = /* @__PURE__ */ React.createElement(NoCompactStyle, null, result);
}
return result;
};
var isStyleNameSupport = function isStyleNameSupport2(styleName) {
if (canUseDom() && window.document.documentElement) {
var styleNameList = Array.isArray(styleName) ? styleName : [styleName];
var documentElement = window.document.documentElement;
return styleNameList.some(function(name) {
return name in documentElement.style;
});
}
return false;
};
var isStyleValueSupport = function isStyleValueSupport2(styleName, value) {
if (!isStyleNameSupport(styleName)) {
return false;
}
var ele = document.createElement("div");
var origin = ele.style[styleName];
ele.style[styleName] = value;
return ele.style[styleName] !== origin;
};
function isStyleSupport(styleName, styleValue) {
if (!Array.isArray(styleName) && styleValue !== void 0) {
return isStyleValueSupport(styleName, styleValue);
}
return isStyleNameSupport(styleName);
}
const AppConfigContext = /* @__PURE__ */ React.createContext({});
function withPureRenderTheme(Component) {
return (props) => /* @__PURE__ */ reactExports.createElement(ConfigProvider, {
theme: {
token: {
motion: false,
zIndexPopupBase: 0
}
}
}, /* @__PURE__ */ reactExports.createElement(Component, Object.assign({}, props)));
}
const genPurePanel = (Component, defaultPrefixCls2, getDropdownCls, postProps) => {
const PurePanel2 = (props) => {
const {
prefixCls: customizePrefixCls,
style: style2
} = props;
const holderRef = reactExports.useRef(null);
const [popupHeight, setPopupHeight] = reactExports.useState(0);
const [popupWidth, setPopupWidth] = reactExports.useState(0);
const [open2, setOpen] = useMergedState(false, {
value: props.open
});
const {
getPrefixCls
} = reactExports.useContext(ConfigContext);
const prefixCls = getPrefixCls(defaultPrefixCls2 || "select", customizePrefixCls);
reactExports.useEffect(() => {
setOpen(true);
if (typeof ResizeObserver !== "undefined") {
const resizeObserver2 = new ResizeObserver((entries) => {
const element = entries[0].target;
setPopupHeight(element.offsetHeight + 8);
setPopupWidth(element.offsetWidth);
});
const interval = setInterval(() => {
var _a2;
const dropdownCls = getDropdownCls ? `.${getDropdownCls(prefixCls)}` : `.${prefixCls}-dropdown`;
const popup = (_a2 = holderRef.current) === null || _a2 === void 0 ? void 0 : _a2.querySelector(dropdownCls);
if (popup) {
clearInterval(interval);
resizeObserver2.observe(popup);
}
}, 10);
return () => {
clearInterval(interval);
resizeObserver2.disconnect();
};
}
}, []);
let mergedProps = Object.assign(Object.assign({}, props), {
style: Object.assign(Object.assign({}, style2), {
margin: 0
}),
open: open2,
visible: open2,
getPopupContainer: () => holderRef.current
});
if (postProps) {
mergedProps = postProps(mergedProps);
}
const mergedStyle = {
paddingBottom: popupHeight,
position: "relative",
minWidth: popupWidth
};
return /* @__PURE__ */ reactExports.createElement("div", {
ref: holderRef,
style: mergedStyle
}, /* @__PURE__ */ reactExports.createElement(Component, Object.assign({}, mergedProps)));
};
return withPureRenderTheme(PurePanel2);
};
const isMobile = function() {
if (typeof navigator === "undefined" || typeof window === "undefined") {
return false;
}
var agent = navigator.userAgent || navigator.vendor || window.opera;
return /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(agent) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(agent === null || agent === void 0 ? void 0 : agent.substr(0, 4));
};
var TransBtn = function TransBtn2(props) {
var className = props.className, customizeIcon = props.customizeIcon, customizeIconProps = props.customizeIconProps, children = props.children, _onMouseDown = props.onMouseDown, onClick = props.onClick;
var icon = typeof customizeIcon === "function" ? customizeIcon(customizeIconProps) : customizeIcon;
return /* @__PURE__ */ reactExports.createElement("span", {
className,
onMouseDown: function onMouseDown(event) {
event.preventDefault();
_onMouseDown === null || _onMouseDown === void 0 || _onMouseDown(event);
},
style: {
userSelect: "none",
WebkitUserSelect: "none"
},
unselectable: "on",
onClick,
"aria-hidden": true
}, icon !== void 0 ? icon : /* @__PURE__ */ reactExports.createElement("span", {
className: cls(className.split(/\s+/).map(function(cls2) {
return "".concat(cls2, "-icon");
}))
}, children));
};
var useAllowClear = function useAllowClear2(prefixCls, onClearMouseDown, displayValues, allowClear, clearIcon) {
var disabled = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : false;
var mergedSearchValue = arguments.length > 6 ? arguments[6] : void 0;
var mode = arguments.length > 7 ? arguments[7] : void 0;
var mergedClearIcon = React.useMemo(function() {
if (_typeof$2(allowClear) === "object") {
return allowClear.clearIcon;
}
if (clearIcon) {
return clearIcon;
}
}, [allowClear, clearIcon]);
var mergedAllowClear = React.useMemo(function() {
if (!disabled && !!allowClear && (displayValues.length || mergedSearchValue) && !(mode === "combobox" && mergedSearchValue === "")) {
return true;
}
return false;
}, [allowClear, disabled, displayValues.length, mergedSearchValue, mode]);
return {
allowClear: mergedAllowClear,
clearIcon: /* @__PURE__ */ React.createElement(TransBtn, {
className: "".concat(prefixCls, "-clear"),
onMouseDown: onClearMouseDown,
customizeIcon: mergedClearIcon
}, "×")
};
};
var BaseSelectContext = /* @__PURE__ */ reactExports.createContext(null);
function useBaseProps() {
return reactExports.useContext(BaseSelectContext);
}
function useDelayReset() {
var timeout = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 10;
var _React$useState = reactExports.useState(false), _React$useState2 = _slicedToArray(_React$useState, 2), bool = _React$useState2[0], setBool = _React$useState2[1];
var delayRef = reactExports.useRef(null);
var cancelLatest = function cancelLatest2() {
window.clearTimeout(delayRef.current);
};
reactExports.useEffect(function() {
return cancelLatest;
}, []);
var delaySetBool = function delaySetBool2(value, callback) {
cancelLatest();
delayRef.current = window.setTimeout(function() {
setBool(value);
if (callback) {
callback();
}
}, timeout);
};
return [bool, delaySetBool, cancelLatest];
}
function useLock() {
var duration = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 250;
var lockRef = reactExports.useRef(null);
var timeoutRef = reactExports.useRef(null);
reactExports.useEffect(function() {
return function() {
window.clearTimeout(timeoutRef.current);
};
}, []);
function doLock(locked) {
if (locked || lockRef.current === null) {
lockRef.current = locked;
}
window.clearTimeout(timeoutRef.current);
timeoutRef.current = window.setTimeout(function() {
lockRef.current = null;
}, duration);
}
return [function() {
return lockRef.current;
}, doLock];
}
function useSelectTriggerControl(elements, open2, triggerOpen, customizedTrigger) {
var propsRef = reactExports.useRef(null);
propsRef.current = {
open: open2,
triggerOpen,
customizedTrigger
};
reactExports.useEffect(function() {
function onGlobalMouseDown(event) {
var _propsRef$current;
if ((_propsRef$current = propsRef.current) !== null && _propsRef$current !== void 0 && _propsRef$current.customizedTrigger) {
return;
}
var target = event.target;
if (target.shadowRoot && event.composed) {
target = event.composedPath()[0] || target;
}
if (propsRef.current.open && elements().filter(function(element) {
return element;
}).every(function(element) {
return !element.contains(target) && element !== target;
})) {
propsRef.current.triggerOpen(false);
}
}
window.addEventListener("mousedown", onGlobalMouseDown);
return function() {
return window.removeEventListener("mousedown", onGlobalMouseDown);
};
}, []);
}
function isValidateOpenKey(currentKeyCode) {
return ![
// System function button
KeyCode.ESC,
KeyCode.SHIFT,
KeyCode.BACKSPACE,
KeyCode.TAB,
KeyCode.WIN_KEY,
KeyCode.ALT,
KeyCode.META,
KeyCode.WIN_KEY_RIGHT,
KeyCode.CTRL,
KeyCode.SEMICOLON,
KeyCode.EQUALS,
KeyCode.CAPS_LOCK,
KeyCode.CONTEXT_MENU,
// F1-F12
KeyCode.F1,
KeyCode.F2,
KeyCode.F3,
KeyCode.F4,
KeyCode.F5,
KeyCode.F6,
KeyCode.F7,
KeyCode.F8,
KeyCode.F9,
KeyCode.F10,
KeyCode.F11,
KeyCode.F12
].includes(currentKeyCode);
}
var _excluded$A = ["prefixCls", "invalidate", "item", "renderItem", "responsive", "responsiveDisabled", "registerSize", "itemKey", "className", "style", "children", "display", "order", "component"];
var UNDEFINED$1 = void 0;
function InternalItem(props, ref) {
var prefixCls = props.prefixCls, invalidate = props.invalidate, item = props.item, renderItem = props.renderItem, responsive = props.responsive, responsiveDisabled = props.responsiveDisabled, registerSize = props.registerSize, itemKey2 = props.itemKey, className = props.className, style2 = props.style, children = props.children, display = props.display, order = props.order, _props$component = props.component, Component = _props$component === void 0 ? "div" : _props$component, restProps = _objectWithoutProperties(props, _excluded$A);
var mergedHidden = responsive && !display;
function internalRegisterSize(width) {
registerSize(itemKey2, width);
}
reactExports.useEffect(function() {
return function() {
internalRegisterSize(null);
};
}, []);
var childNode = renderItem && item !== UNDEFINED$1 ? renderItem(item) : children;
var overflowStyle;
if (!invalidate) {
overflowStyle = {
opacity: mergedHidden ? 0 : 1,
height: mergedHidden ? 0 : UNDEFINED$1,
overflowY: mergedHidden ? "hidden" : UNDEFINED$1,
order: responsive ? order : UNDEFINED$1,
pointerEvents: mergedHidden ? "none" : UNDEFINED$1,
position: mergedHidden ? "absolute" : UNDEFINED$1
};
}
var overflowProps = {};
if (mergedHidden) {
overflowProps["aria-hidden"] = true;
}
var itemNode = /* @__PURE__ */ reactExports.createElement(Component, _extends$2({
className: cls(!invalidate && prefixCls, className),
style: _objectSpread2$1(_objectSpread2$1({}, overflowStyle), style2)
}, overflowProps, restProps, {
ref
}), childNode);
if (responsive) {
itemNode = /* @__PURE__ */ reactExports.createElement(RefResizeObserver, {
onResize: function onResize2(_ref) {
var offsetWidth = _ref.offsetWidth;
internalRegisterSize(offsetWidth);
},
disabled: responsiveDisabled
}, itemNode);
}
return itemNode;
}
var Item$2 = /* @__PURE__ */ reactExports.forwardRef(InternalItem);
Item$2.displayName = "Item";
function channelUpdate(callback) {
if (typeof MessageChannel === "undefined") {
wrapperRaf(callback);
} else {
var channel = new MessageChannel();
channel.port1.onmessage = function() {
return callback();
};
channel.port2.postMessage(void 0);
}
}
function useBatcher() {
var updateFuncRef = reactExports.useRef(null);
var notifyEffectUpdate = function notifyEffectUpdate2(callback) {
if (!updateFuncRef.current) {
updateFuncRef.current = [];
channelUpdate(function() {
reactDomExports.unstable_batchedUpdates(function() {
updateFuncRef.current.forEach(function(fn) {
fn();
});
updateFuncRef.current = null;
});
});
}
updateFuncRef.current.push(callback);
};
return notifyEffectUpdate;
}
function useEffectState(notifyEffectUpdate, defaultValue) {
var _React$useState = reactExports.useState(defaultValue), _React$useState2 = _slicedToArray(_React$useState, 2), stateValue = _React$useState2[0], setStateValue = _React$useState2[1];
var setEffectVal = useEvent(function(nextValue) {
notifyEffectUpdate(function() {
setStateValue(nextValue);
});
});
return [stateValue, setEffectVal];
}
var OverflowContext = /* @__PURE__ */ React.createContext(null);
var _excluded$z = ["component"], _excluded2$4 = ["className"], _excluded3$1 = ["className"];
var InternalRawItem = function InternalRawItem2(props, ref) {
var context = reactExports.useContext(OverflowContext);
if (!context) {
var _props$component = props.component, Component = _props$component === void 0 ? "div" : _props$component, _restProps = _objectWithoutProperties(props, _excluded$z);
return /* @__PURE__ */ reactExports.createElement(Component, _extends$2({}, _restProps, {
ref
}));
}
var contextClassName = context.className, restContext = _objectWithoutProperties(context, _excluded2$4);
var className = props.className, restProps = _objectWithoutProperties(props, _excluded3$1);
return /* @__PURE__ */ reactExports.createElement(OverflowContext.Provider, {
value: null
}, /* @__PURE__ */ reactExports.createElement(Item$2, _extends$2({
ref,
className: cls(contextClassName, className)
}, restContext, restProps)));
};
var RawItem = /* @__PURE__ */ reactExports.forwardRef(InternalRawItem);
RawItem.displayName = "RawItem";
var _excluded$y = ["prefixCls", "data", "renderItem", "renderRawItem", "itemKey", "itemWidth", "ssr", "style", "className", "maxCount", "renderRest", "renderRawRest", "suffix", "component", "itemComponent", "onVisibleChange"];
var RESPONSIVE = "responsive";
var INVALIDATE = "invalidate";
function defaultRenderRest(omittedItems) {
return "+ ".concat(omittedItems.length, " ...");
}
function Overflow(props, ref) {
var _props$prefixCls = props.prefixCls, prefixCls = _props$prefixCls === void 0 ? "rc-overflow" : _props$prefixCls, _props$data = props.data, data = _props$data === void 0 ? [] : _props$data, renderItem = props.renderItem, renderRawItem = props.renderRawItem, itemKey2 = props.itemKey, _props$itemWidth = props.itemWidth, itemWidth = _props$itemWidth === void 0 ? 10 : _props$itemWidth, ssr = props.ssr, style2 = props.style, className = props.className, maxCount = props.maxCount, renderRest = props.renderRest, renderRawRest = props.renderRawRest, suffix = props.suffix, _props$component = props.component, Component = _props$component === void 0 ? "div" : _props$component, itemComponent = props.itemComponent, onVisibleChange = props.onVisibleChange, restProps = _objectWithoutProperties(props, _excluded$y);
var fullySSR = ssr === "full";
var notifyEffectUpdate = useBatcher();
var _useEffectState = useEffectState(notifyEffectUpdate, null), _useEffectState2 = _slicedToArray(_useEffectState, 2), containerWidth = _useEffectState2[0], setContainerWidth = _useEffectState2[1];
var mergedContainerWidth = containerWidth || 0;
var _useEffectState3 = useEffectState(notifyEffectUpdate, /* @__PURE__ */ new Map()), _useEffectState4 = _slicedToArray(_useEffectState3, 2), itemWidths = _useEffectState4[0], setItemWidths = _useEffectState4[1];
var _useEffectState5 = useEffectState(notifyEffectUpdate, 0), _useEffectState6 = _slicedToArray(_useEffectState5, 2), prevRestWidth = _useEffectState6[0], setPrevRestWidth = _useEffectState6[1];
var _useEffectState7 = useEffectState(notifyEffectUpdate, 0), _useEffectState8 = _slicedToArray(_useEffectState7, 2), restWidth = _useEffectState8[0], setRestWidth = _useEffectState8[1];
var _useEffectState9 = useEffectState(notifyEffectUpdate, 0), _useEffectState10 = _slicedToArray(_useEffectState9, 2), suffixWidth = _useEffectState10[0], setSuffixWidth = _useEffectState10[1];
var _useState = reactExports.useState(null), _useState2 = _slicedToArray(_useState, 2), suffixFixedStart = _useState2[0], setSuffixFixedStart = _useState2[1];
var _useState3 = reactExports.useState(null), _useState4 = _slicedToArray(_useState3, 2), displayCount = _useState4[0], setDisplayCount = _useState4[1];
var mergedDisplayCount = reactExports.useMemo(function() {
if (displayCount === null && fullySSR) {
return Number.MAX_SAFE_INTEGER;
}
return displayCount || 0;
}, [displayCount, containerWidth]);
var _useState5 = reactExports.useState(false), _useState6 = _slicedToArray(_useState5, 2), restReady = _useState6[0], setRestReady = _useState6[1];
var itemPrefixCls = "".concat(prefixCls, "-item");
var mergedRestWidth = Math.max(prevRestWidth, restWidth);
var isResponsive = maxCount === RESPONSIVE;
var shouldResponsive = data.length && isResponsive;
var invalidate = maxCount === INVALIDATE;
var showRest = shouldResponsive || typeof maxCount === "number" && data.length > maxCount;
var mergedData = reactExports.useMemo(function() {
var items = data;
if (shouldResponsive) {
if (containerWidth === null && fullySSR) {
items = data;
} else {
items = data.slice(0, Math.min(data.length, mergedContainerWidth / itemWidth));
}
} else if (typeof maxCount === "number") {
items = data.slice(0, maxCount);
}
return items;
}, [data, itemWidth, containerWidth, maxCount, shouldResponsive]);
var omittedItems = reactExports.useMemo(function() {
if (shouldResponsive) {
return data.slice(mergedDisplayCount + 1);
}
return data.slice(mergedData.length);
}, [data, mergedData, shouldResponsive, mergedDisplayCount]);
var getKey2 = reactExports.useCallback(function(item, index2) {
var _ref;
if (typeof itemKey2 === "function") {
return itemKey2(item);
}
return (_ref = itemKey2 && (item === null || item === void 0 ? void 0 : item[itemKey2])) !== null && _ref !== void 0 ? _ref : index2;
}, [itemKey2]);
var mergedRenderItem = reactExports.useCallback(renderItem || function(item) {
return item;
}, [renderItem]);
function updateDisplayCount(count2, suffixFixedStartVal, notReady) {
if (displayCount === count2 && (suffixFixedStartVal === void 0 || suffixFixedStartVal === suffixFixedStart)) {
return;
}
setDisplayCount(count2);
if (!notReady) {
setRestReady(count2 < data.length - 1);
onVisibleChange === null || onVisibleChange === void 0 ? void 0 : onVisibleChange(count2);
}
if (suffixFixedStartVal !== void 0) {
setSuffixFixedStart(suffixFixedStartVal);
}
}
function onOverflowResize(_, element) {
setContainerWidth(element.clientWidth);
}
function registerSize(key, width) {
setItemWidths(function(origin) {
var clone3 = new Map(origin);
if (width === null) {
clone3.delete(key);
} else {
clone3.set(key, width);
}
return clone3;
});
}
function registerOverflowSize(_, width) {
setRestWidth(width);
setPrevRestWidth(restWidth);
}
function registerSuffixSize(_, width) {
setSuffixWidth(width);
}
function getItemWidth(index2) {
return itemWidths.get(getKey2(mergedData[index2], index2));
}
useLayoutEffect$1(function() {
if (mergedContainerWidth && typeof mergedRestWidth === "number" && mergedData) {
var totalWidth = suffixWidth;
var len2 = mergedData.length;
var lastIndex = len2 - 1;
if (!len2) {
updateDisplayCount(0, null);
return;
}
for (var i = 0; i < len2; i += 1) {
var currentItemWidth = getItemWidth(i);
if (fullySSR) {
currentItemWidth = currentItemWidth || 0;
}
if (currentItemWidth === void 0) {
updateDisplayCount(i - 1, void 0, true);
break;
}
totalWidth += currentItemWidth;
if (
// Only one means `totalWidth` is the final width
lastIndex === 0 && totalWidth <= mergedContainerWidth || // Last two width will be the final width
i === lastIndex - 1 && totalWidth + getItemWidth(lastIndex) <= mergedContainerWidth
) {
updateDisplayCount(lastIndex, null);
break;
} else if (totalWidth + mergedRestWidth > mergedContainerWidth) {
updateDisplayCount(i - 1, totalWidth - currentItemWidth - suffixWidth + restWidth);
break;
}
}
if (suffix && getItemWidth(0) + suffixWidth > mergedContainerWidth) {
setSuffixFixedStart(null);
}
}
}, [mergedContainerWidth, itemWidths, restWidth, suffixWidth, getKey2, mergedData]);
var displayRest = restReady && !!omittedItems.length;
var suffixStyle = {};
if (suffixFixedStart !== null && shouldResponsive) {
suffixStyle = {
position: "absolute",
left: suffixFixedStart,
top: 0
};
}
var itemSharedProps = {
prefixCls: itemPrefixCls,
responsive: shouldResponsive,
component: itemComponent,
invalidate
};
var internalRenderItemNode = renderRawItem ? function(item, index2) {
var key = getKey2(item, index2);
return /* @__PURE__ */ reactExports.createElement(OverflowContext.Provider, {
key,
value: _objectSpread2$1(_objectSpread2$1({}, itemSharedProps), {}, {
order: index2,
item,
itemKey: key,
registerSize,
display: index2 <= mergedDisplayCount
})
}, renderRawItem(item, index2));
} : function(item, index2) {
var key = getKey2(item, index2);
return /* @__PURE__ */ reactExports.createElement(Item$2, _extends$2({}, itemSharedProps, {
order: index2,
key,
item,
renderItem: mergedRenderItem,
itemKey: key,
registerSize,
display: index2 <= mergedDisplayCount
}));
};
var restNode;
var restContextProps = {
order: displayRest ? mergedDisplayCount : Number.MAX_SAFE_INTEGER,
className: "".concat(itemPrefixCls, "-rest"),
registerSize: registerOverflowSize,
display: displayRest
};
if (!renderRawRest) {
var mergedRenderRest = renderRest || defaultRenderRest;
restNode = /* @__PURE__ */ reactExports.createElement(Item$2, _extends$2({}, itemSharedProps, restContextProps), typeof mergedRenderRest === "function" ? mergedRenderRest(omittedItems) : mergedRenderRest);
} else if (renderRawRest) {
restNode = /* @__PURE__ */ reactExports.createElement(OverflowContext.Provider, {
value: _objectSpread2$1(_objectSpread2$1({}, itemSharedProps), restContextProps)
}, renderRawRest(omittedItems));
}
var overflowNode = /* @__PURE__ */ reactExports.createElement(Component, _extends$2({
className: cls(!invalidate && prefixCls, className),
style: style2,
ref
}, restProps), mergedData.map(internalRenderItemNode), showRest ? restNode : null, suffix && /* @__PURE__ */ reactExports.createElement(Item$2, _extends$2({}, itemSharedProps, {
responsive: isResponsive,
responsiveDisabled: !shouldResponsive,
order: mergedDisplayCount,
className: "".concat(itemPrefixCls, "-suffix"),
registerSize: registerSuffixSize,
display: true,
style: suffixStyle
}), suffix));
if (isResponsive) {
overflowNode = /* @__PURE__ */ reactExports.createElement(RefResizeObserver, {
onResize: onOverflowResize,
disabled: !shouldResponsive
}, overflowNode);
}
return overflowNode;
}
var ForwardOverflow = /* @__PURE__ */ reactExports.forwardRef(Overflow);
ForwardOverflow.displayName = "Overflow";
ForwardOverflow.Item = RawItem;
ForwardOverflow.RESPONSIVE = RESPONSIVE;
ForwardOverflow.INVALIDATE = INVALIDATE;
var Input$3 = function Input2(props, ref) {
var _inputNode2;
var prefixCls = props.prefixCls, id2 = props.id, inputElement = props.inputElement, disabled = props.disabled, tabIndex = props.tabIndex, autoFocus = props.autoFocus, autoComplete = props.autoComplete, editable = props.editable, activeDescendantId = props.activeDescendantId, value = props.value, maxLength = props.maxLength, _onKeyDown = props.onKeyDown, _onMouseDown = props.onMouseDown, _onChange = props.onChange, onPaste = props.onPaste, _onCompositionStart = props.onCompositionStart, _onCompositionEnd = props.onCompositionEnd, open2 = props.open, attrs = props.attrs;
var inputNode = inputElement || /* @__PURE__ */ reactExports.createElement("input", null);
var _inputNode = inputNode, originRef = _inputNode.ref, originProps = _inputNode.props;
var onOriginKeyDown = originProps.onKeyDown, onOriginChange = originProps.onChange, onOriginMouseDown = originProps.onMouseDown, onOriginCompositionStart = originProps.onCompositionStart, onOriginCompositionEnd = originProps.onCompositionEnd, style2 = originProps.style;
warning$2(!("maxLength" in inputNode.props));
inputNode = /* @__PURE__ */ reactExports.cloneElement(inputNode, _objectSpread2$1(_objectSpread2$1(_objectSpread2$1({
type: "search"
}, originProps), {}, {
// Override over origin props
id: id2,
ref: composeRef(ref, originRef),
disabled,
tabIndex,
autoComplete: autoComplete || "off",
autoFocus,
className: cls("".concat(prefixCls, "-selection-search-input"), (_inputNode2 = inputNode) === null || _inputNode2 === void 0 || (_inputNode2 = _inputNode2.props) === null || _inputNode2 === void 0 ? void 0 : _inputNode2.className),
role: "combobox",
"aria-expanded": open2 || false,
"aria-haspopup": "listbox",
"aria-owns": "".concat(id2, "_list"),
"aria-autocomplete": "list",
"aria-controls": "".concat(id2, "_list"),
"aria-activedescendant": open2 ? activeDescendantId : void 0
}, attrs), {}, {
value: editable ? value : "",
maxLength,
readOnly: !editable,
unselectable: !editable ? "on" : null,
style: _objectSpread2$1(_objectSpread2$1({}, style2), {}, {
opacity: editable ? null : 0
}),
onKeyDown: function onKeyDown2(event) {
_onKeyDown(event);
if (onOriginKeyDown) {
onOriginKeyDown(event);
}
},
onMouseDown: function onMouseDown(event) {
_onMouseDown(event);
if (onOriginMouseDown) {
onOriginMouseDown(event);
}
},
onChange: function onChange(event) {
_onChange(event);
if (onOriginChange) {
onOriginChange(event);
}
},
onCompositionStart: function onCompositionStart(event) {
_onCompositionStart(event);
if (onOriginCompositionStart) {
onOriginCompositionStart(event);
}
},
onCompositionEnd: function onCompositionEnd(event) {
_onCompositionEnd(event);
if (onOriginCompositionEnd) {
onOriginCompositionEnd(event);
}
},
onPaste
}));
return inputNode;
};
var RefInput = /* @__PURE__ */ reactExports.forwardRef(Input$3);
function toArray$2(value) {
if (Array.isArray(value)) {
return value;
}
return value !== void 0 ? [value] : [];
}
var isClient = typeof window !== "undefined" && window.document && window.document.documentElement;
var isBrowserClient$1 = isClient;
function hasValue(value) {
return value !== void 0 && value !== null;
}
function isComboNoValue(value) {
return !value && value !== 0;
}
function isTitleType$1(title) {
return ["string", "number"].includes(_typeof$2(title));
}
function getTitle(item) {
var title = void 0;
if (item) {
if (isTitleType$1(item.title)) {
title = item.title.toString();
} else if (isTitleType$1(item.label)) {
title = item.label.toString();
}
}
return title;
}
function useLayoutEffect(effect, deps) {
if (isBrowserClient$1) {
reactExports.useLayoutEffect(effect, deps);
} else {
reactExports.useEffect(effect, deps);
}
}
function itemKey$1(value) {
var _value$key;
return (_value$key = value.key) !== null && _value$key !== void 0 ? _value$key : value.value;
}
var onPreventMouseDown = function onPreventMouseDown2(event) {
event.preventDefault();
event.stopPropagation();
};
var SelectSelector = function SelectSelector2(props) {
var id2 = props.id, prefixCls = props.prefixCls, values = props.values, open2 = props.open, searchValue = props.searchValue, autoClearSearchValue = props.autoClearSearchValue, inputRef = props.inputRef, placeholder = props.placeholder, disabled = props.disabled, mode = props.mode, showSearch = props.showSearch, autoFocus = props.autoFocus, autoComplete = props.autoComplete, activeDescendantId = props.activeDescendantId, tabIndex = props.tabIndex, removeIcon = props.removeIcon, maxTagCount = props.maxTagCount, maxTagTextLength = props.maxTagTextLength, _props$maxTagPlacehol = props.maxTagPlaceholder, maxTagPlaceholder = _props$maxTagPlacehol === void 0 ? function(omittedValues) {
return "+ ".concat(omittedValues.length, " ...");
} : _props$maxTagPlacehol, tagRender = props.tagRender, onToggleOpen = props.onToggleOpen, onRemove = props.onRemove, onInputChange = props.onInputChange, onInputPaste = props.onInputPaste, onInputKeyDown = props.onInputKeyDown, onInputMouseDown = props.onInputMouseDown, onInputCompositionStart = props.onInputCompositionStart, onInputCompositionEnd = props.onInputCompositionEnd;
var measureRef = reactExports.useRef(null);
var _useState = reactExports.useState(0), _useState2 = _slicedToArray(_useState, 2), inputWidth = _useState2[0], setInputWidth = _useState2[1];
var _useState3 = reactExports.useState(false), _useState4 = _slicedToArray(_useState3, 2), focused = _useState4[0], setFocused = _useState4[1];
var selectionPrefixCls = "".concat(prefixCls, "-selection");
var inputValue = open2 || mode === "multiple" && autoClearSearchValue === false || mode === "tags" ? searchValue : "";
var inputEditable = mode === "tags" || mode === "multiple" && autoClearSearchValue === false || showSearch && (open2 || focused);
useLayoutEffect(function() {
setInputWidth(measureRef.current.scrollWidth);
}, [inputValue]);
var defaultRenderSelector = function defaultRenderSelector2(item, content, itemDisabled, closable, onClose) {
return /* @__PURE__ */ reactExports.createElement("span", {
title: getTitle(item),
className: cls("".concat(selectionPrefixCls, "-item"), _defineProperty({}, "".concat(selectionPrefixCls, "-item-disabled"), itemDisabled))
}, /* @__PURE__ */ reactExports.createElement("span", {
className: "".concat(selectionPrefixCls, "-item-content")
}, content), closable && /* @__PURE__ */ reactExports.createElement(TransBtn, {
className: "".concat(selectionPrefixCls, "-item-remove"),
onMouseDown: onPreventMouseDown,
onClick: onClose,
customizeIcon: removeIcon
}, "×"));
};
var customizeRenderSelector = function customizeRenderSelector2(value, content, itemDisabled, closable, onClose, isMaxTag) {
var onMouseDown = function onMouseDown2(e2) {
onPreventMouseDown(e2);
onToggleOpen(!open2);
};
return /* @__PURE__ */ reactExports.createElement("span", {
onMouseDown
}, tagRender({
label: content,
value,
disabled: itemDisabled,
closable,
onClose,
isMaxTag: !!isMaxTag
}));
};
var renderItem = function renderItem2(valueItem) {
var itemDisabled = valueItem.disabled, label = valueItem.label, value = valueItem.value;
var closable = !disabled && !itemDisabled;
var displayLabel = label;
if (typeof maxTagTextLength === "number") {
if (typeof label === "string" || typeof label === "number") {
var strLabel = String(displayLabel);
if (strLabel.length > maxTagTextLength) {
displayLabel = "".concat(strLabel.slice(0, maxTagTextLength), "...");
}
}
}
var onClose = function onClose2(event) {
if (event) {
event.stopPropagation();
}
onRemove(valueItem);
};
return typeof tagRender === "function" ? customizeRenderSelector(value, displayLabel, itemDisabled, closable, onClose) : defaultRenderSelector(valueItem, displayLabel, itemDisabled, closable, onClose);
};
var renderRest = function renderRest2(omittedValues) {
var content = typeof maxTagPlaceholder === "function" ? maxTagPlaceholder(omittedValues) : maxTagPlaceholder;
return typeof tagRender === "function" ? customizeRenderSelector(void 0, content, false, false, void 0, true) : defaultRenderSelector({
title: content
}, content, false);
};
var inputNode = /* @__PURE__ */ reactExports.createElement("div", {
className: "".concat(selectionPrefixCls, "-search"),
style: {
width: inputWidth
},
onFocus: function onFocus() {
setFocused(true);
},
onBlur: function onBlur() {
setFocused(false);
}
}, /* @__PURE__ */ reactExports.createElement(RefInput, {
ref: inputRef,
open: open2,
prefixCls,
id: id2,
inputElement: null,
disabled,
autoFocus,
autoComplete,
editable: inputEditable,
activeDescendantId,
value: inputValue,
onKeyDown: onInputKeyDown,
onMouseDown: onInputMouseDown,
onChange: onInputChange,
onPaste: onInputPaste,
onCompositionStart: onInputCompositionStart,
onCompositionEnd: onInputCompositionEnd,
tabIndex,
attrs: pickAttrs(props, true)
}), /* @__PURE__ */ reactExports.createElement("span", {
ref: measureRef,
className: "".concat(selectionPrefixCls, "-search-mirror"),
"aria-hidden": true
}, inputValue, " "));
var selectionNode = /* @__PURE__ */ reactExports.createElement(ForwardOverflow, {
prefixCls: "".concat(selectionPrefixCls, "-overflow"),
data: values,
renderItem,
renderRest,
suffix: inputNode,
itemKey: itemKey$1,
maxCount: maxTagCount
});
return /* @__PURE__ */ reactExports.createElement(reactExports.Fragment, null, selectionNode, !values.length && !inputValue && /* @__PURE__ */ reactExports.createElement("span", {
className: "".concat(selectionPrefixCls, "-placeholder")
}, placeholder));
};
var SingleSelector = function SingleSelector2(props) {
var inputElement = props.inputElement, prefixCls = props.prefixCls, id2 = props.id, inputRef = props.inputRef, disabled = props.disabled, autoFocus = props.autoFocus, autoComplete = props.autoComplete, activeDescendantId = props.activeDescendantId, mode = props.mode, open2 = props.open, values = props.values, placeholder = props.placeholder, tabIndex = props.tabIndex, showSearch = props.showSearch, searchValue = props.searchValue, activeValue = props.activeValue, maxLength = props.maxLength, onInputKeyDown = props.onInputKeyDown, onInputMouseDown = props.onInputMouseDown, onInputChange = props.onInputChange, onInputPaste = props.onInputPaste, onInputCompositionStart = props.onInputCompositionStart, onInputCompositionEnd = props.onInputCompositionEnd, title = props.title;
var _React$useState = reactExports.useState(false), _React$useState2 = _slicedToArray(_React$useState, 2), inputChanged = _React$useState2[0], setInputChanged = _React$useState2[1];
var combobox = mode === "combobox";
var inputEditable = combobox || showSearch;
var item = values[0];
var inputValue = searchValue || "";
if (combobox && activeValue && !inputChanged) {
inputValue = activeValue;
}
reactExports.useEffect(function() {
if (combobox) {
setInputChanged(false);
}
}, [combobox, activeValue]);
var hasTextInput = mode !== "combobox" && !open2 && !showSearch ? false : !!inputValue;
var selectionTitle = title === void 0 ? getTitle(item) : title;
var placeholderNode = reactExports.useMemo(function() {
if (item) {
return null;
}
return /* @__PURE__ */ reactExports.createElement("span", {
className: "".concat(prefixCls, "-selection-placeholder"),
style: hasTextInput ? {
visibility: "hidden"
} : void 0
}, placeholder);
}, [item, hasTextInput, placeholder, prefixCls]);
return /* @__PURE__ */ reactExports.createElement(reactExports.Fragment, null, /* @__PURE__ */ reactExports.createElement("span", {
className: "".concat(prefixCls, "-selection-search")
}, /* @__PURE__ */ reactExports.createElement(RefInput, {
ref: inputRef,
prefixCls,
id: id2,
open: open2,
inputElement,
disabled,
autoFocus,
autoComplete,
editable: inputEditable,
activeDescendantId,
value: inputValue,
onKeyDown: onInputKeyDown,
onMouseDown: onInputMouseDown,
onChange: function onChange(e2) {
setInputChanged(true);
onInputChange(e2);
},
onPaste: onInputPaste,
onCompositionStart: onInputCompositionStart,
onCompositionEnd: onInputCompositionEnd,
tabIndex,
attrs: pickAttrs(props, true),
maxLength: combobox ? maxLength : void 0
})), !combobox && item ? /* @__PURE__ */ reactExports.createElement("span", {
className: "".concat(prefixCls, "-selection-item"),
title: selectionTitle,
style: hasTextInput ? {
visibility: "hidden"
} : void 0
}, item.label) : null, placeholderNode);
};
var Selector = function Selector2(props, ref) {
var inputRef = reactExports.useRef(null);
var compositionStatusRef = reactExports.useRef(false);
var prefixCls = props.prefixCls, open2 = props.open, mode = props.mode, showSearch = props.showSearch, tokenWithEnter = props.tokenWithEnter, disabled = props.disabled, autoClearSearchValue = props.autoClearSearchValue, onSearch = props.onSearch, onSearchSubmit = props.onSearchSubmit, onToggleOpen = props.onToggleOpen, onInputKeyDown = props.onInputKeyDown, domRef = props.domRef;
reactExports.useImperativeHandle(ref, function() {
return {
focus: function focus(options) {
inputRef.current.focus(options);
},
blur: function blur() {
inputRef.current.blur();
}
};
});
var _useLock = useLock(0), _useLock2 = _slicedToArray(_useLock, 2), getInputMouseDown = _useLock2[0], setInputMouseDown = _useLock2[1];
var onInternalInputKeyDown = function onInternalInputKeyDown2(event) {
var which = event.which;
if (which === KeyCode.UP || which === KeyCode.DOWN) {
event.preventDefault();
}
if (onInputKeyDown) {
onInputKeyDown(event);
}
if (which === KeyCode.ENTER && mode === "tags" && !compositionStatusRef.current && !open2) {
onSearchSubmit === null || onSearchSubmit === void 0 || onSearchSubmit(event.target.value);
}
if (isValidateOpenKey(which)) {
onToggleOpen(true);
}
};
var onInternalInputMouseDown = function onInternalInputMouseDown2() {
setInputMouseDown(true);
};
var pastedTextRef = reactExports.useRef(null);
var triggerOnSearch = function triggerOnSearch2(value) {
if (onSearch(value, true, compositionStatusRef.current) !== false) {
onToggleOpen(true);
}
};
var onInputCompositionStart = function onInputCompositionStart2() {
compositionStatusRef.current = true;
};
var onInputCompositionEnd = function onInputCompositionEnd2(e2) {
compositionStatusRef.current = false;
if (mode !== "combobox") {
triggerOnSearch(e2.target.value);
}
};
var onInputChange = function onInputChange2(event) {
var value = event.target.value;
if (tokenWithEnter && pastedTextRef.current && /[\r\n]/.test(pastedTextRef.current)) {
var replacedText = pastedTextRef.current.replace(/[\r\n]+$/, "").replace(/\r\n/g, " ").replace(/[\r\n]/g, " ");
value = value.replace(replacedText, pastedTextRef.current);
}
pastedTextRef.current = null;
triggerOnSearch(value);
};
var onInputPaste = function onInputPaste2(e2) {
var clipboardData = e2.clipboardData;
var value = clipboardData === null || clipboardData === void 0 ? void 0 : clipboardData.getData("text");
pastedTextRef.current = value || "";
};
var onClick = function onClick2(_ref) {
var target = _ref.target;
if (target !== inputRef.current) {
var isIE = document.body.style.msTouchAction !== void 0;
if (isIE) {
setTimeout(function() {
inputRef.current.focus();
});
} else {
inputRef.current.focus();
}
}
};
var onMouseDown = function onMouseDown2(event) {
var inputMouseDown = getInputMouseDown();
if (event.target !== inputRef.current && !inputMouseDown && !(mode === "combobox" && disabled)) {
event.preventDefault();
}
if (mode !== "combobox" && (!showSearch || !inputMouseDown) || !open2) {
if (open2 && autoClearSearchValue !== false) {
onSearch("", true, false);
}
onToggleOpen();
}
};
var sharedProps = {
inputRef,
onInputKeyDown: onInternalInputKeyDown,
onInputMouseDown: onInternalInputMouseDown,
onInputChange,
onInputPaste,
onInputCompositionStart,
onInputCompositionEnd
};
var selectNode = mode === "multiple" || mode === "tags" ? /* @__PURE__ */ reactExports.createElement(SelectSelector, _extends$2({}, props, sharedProps)) : /* @__PURE__ */ reactExports.createElement(SingleSelector, _extends$2({}, props, sharedProps));
return /* @__PURE__ */ reactExports.createElement("div", {
ref: domRef,
className: "".concat(prefixCls, "-selector"),
onClick,
onMouseDown
}, selectNode);
};
var ForwardSelector = /* @__PURE__ */ reactExports.forwardRef(Selector);
function Arrow$1(props) {
var prefixCls = props.prefixCls, align = props.align, arrow = props.arrow, arrowPos = props.arrowPos;
var _ref = arrow || {}, className = _ref.className, content = _ref.content;
var _arrowPos$x = arrowPos.x, x2 = _arrowPos$x === void 0 ? 0 : _arrowPos$x, _arrowPos$y = arrowPos.y, y2 = _arrowPos$y === void 0 ? 0 : _arrowPos$y;
var arrowRef = reactExports.useRef();
if (!align || !align.points) {
return null;
}
var alignStyle = {
position: "absolute"
};
if (align.autoArrow !== false) {
var popupPoints = align.points[0];
var targetPoints = align.points[1];
var popupTB = popupPoints[0];
var popupLR = popupPoints[1];
var targetTB = targetPoints[0];
var targetLR = targetPoints[1];
if (popupTB === targetTB || !["t", "b"].includes(popupTB)) {
alignStyle.top = y2;
} else if (popupTB === "t") {
alignStyle.top = 0;
} else {
alignStyle.bottom = 0;
}
if (popupLR === targetLR || !["l", "r"].includes(popupLR)) {
alignStyle.left = x2;
} else if (popupLR === "l") {
alignStyle.left = 0;
} else {
alignStyle.right = 0;
}
}
return /* @__PURE__ */ reactExports.createElement("div", {
ref: arrowRef,
className: cls("".concat(prefixCls, "-arrow"), className),
style: alignStyle
}, content);
}
function Mask(props) {
var prefixCls = props.prefixCls, open2 = props.open, zIndex = props.zIndex, mask = props.mask, motion = props.motion;
if (!mask) {
return null;
}
return /* @__PURE__ */ reactExports.createElement(CSSMotion, _extends$2({}, motion, {
motionAppear: true,
visible: open2,
removeOnLeave: true
}), function(_ref) {
var className = _ref.className;
return /* @__PURE__ */ reactExports.createElement("div", {
style: {
zIndex
},
className: cls("".concat(prefixCls, "-mask"), className)
});
});
}
var PopupContent = /* @__PURE__ */ reactExports.memo(function(_ref) {
var children = _ref.children;
return children;
}, function(_, next2) {
return next2.cache;
});
var Popup$1 = /* @__PURE__ */ reactExports.forwardRef(function(props, ref) {
var popup = props.popup, className = props.className, prefixCls = props.prefixCls, style2 = props.style, target = props.target, _onVisibleChanged = props.onVisibleChanged, open2 = props.open, keepDom = props.keepDom, fresh = props.fresh, onClick = props.onClick, mask = props.mask, arrow = props.arrow, arrowPos = props.arrowPos, align = props.align, motion = props.motion, maskMotion = props.maskMotion, forceRender = props.forceRender, getPopupContainer = props.getPopupContainer, autoDestroy = props.autoDestroy, Portal2 = props.portal, zIndex = props.zIndex, onMouseEnter = props.onMouseEnter, onMouseLeave = props.onMouseLeave, onPointerEnter = props.onPointerEnter, ready = props.ready, offsetX = props.offsetX, offsetY = props.offsetY, offsetR = props.offsetR, offsetB = props.offsetB, onAlign = props.onAlign, onPrepare = props.onPrepare, stretch = props.stretch, targetWidth = props.targetWidth, targetHeight = props.targetHeight;
var childNode = typeof popup === "function" ? popup() : popup;
var isNodeVisible = open2 || keepDom;
var getPopupContainerNeedParams = (getPopupContainer === null || getPopupContainer === void 0 ? void 0 : getPopupContainer.length) > 0;
var _React$useState = reactExports.useState(!getPopupContainer || !getPopupContainerNeedParams), _React$useState2 = _slicedToArray(_React$useState, 2), show = _React$useState2[0], setShow = _React$useState2[1];
useLayoutEffect$1(function() {
if (!show && getPopupContainerNeedParams && target) {
setShow(true);
}
}, [show, getPopupContainerNeedParams, target]);
if (!show) {
return null;
}
var AUTO = "auto";
var offsetStyle = {
left: "-1000vw",
top: "-1000vh",
right: AUTO,
bottom: AUTO
};
if (ready || !open2) {
var _experimental;
var points2 = align.points;
var dynamicInset = align.dynamicInset || ((_experimental = align._experimental) === null || _experimental === void 0 ? void 0 : _experimental.dynamicInset);
var alignRight = dynamicInset && points2[0][1] === "r";
var alignBottom = dynamicInset && points2[0][0] === "b";
if (alignRight) {
offsetStyle.right = offsetR;
offsetStyle.left = AUTO;
} else {
offsetStyle.left = offsetX;
offsetStyle.right = AUTO;
}
if (alignBottom) {
offsetStyle.bottom = offsetB;
offsetStyle.top = AUTO;
} else {
offsetStyle.top = offsetY;
offsetStyle.bottom = AUTO;
}
}
var miscStyle = {};
if (stretch) {
if (stretch.includes("height") && targetHeight) {
miscStyle.height = targetHeight;
} else if (stretch.includes("minHeight") && targetHeight) {
miscStyle.minHeight = targetHeight;
}
if (stretch.includes("width") && targetWidth) {
miscStyle.width = targetWidth;
} else if (stretch.includes("minWidth") && targetWidth) {
miscStyle.minWidth = targetWidth;
}
}
if (!open2) {
miscStyle.pointerEvents = "none";
}
return /* @__PURE__ */ reactExports.createElement(Portal2, {
open: forceRender || isNodeVisible,
getContainer: getPopupContainer && function() {
return getPopupContainer(target);
},
autoDestroy
}, /* @__PURE__ */ reactExports.createElement(Mask, {
prefixCls,
open: open2,
zIndex,
mask,
motion: maskMotion
}), /* @__PURE__ */ reactExports.createElement(RefResizeObserver, {
onResize: onAlign,
disabled: !open2
}, function(resizeObserverRef) {
return /* @__PURE__ */ reactExports.createElement(CSSMotion, _extends$2({
motionAppear: true,
motionEnter: true,
motionLeave: true,
removeOnLeave: false,
forceRender,
leavedClassName: "".concat(prefixCls, "-hidden")
}, motion, {
onAppearPrepare: onPrepare,
onEnterPrepare: onPrepare,
visible: open2,
onVisibleChanged: function onVisibleChanged(nextVisible) {
var _motion$onVisibleChan;
motion === null || motion === void 0 || (_motion$onVisibleChan = motion.onVisibleChanged) === null || _motion$onVisibleChan === void 0 || _motion$onVisibleChan.call(motion, nextVisible);
_onVisibleChanged(nextVisible);
}
}), function(_ref, motionRef) {
var motionClassName = _ref.className, motionStyle = _ref.style;
var cls$1 = cls(prefixCls, motionClassName, className);
return /* @__PURE__ */ reactExports.createElement("div", {
ref: composeRef(resizeObserverRef, ref, motionRef),
className: cls$1,
style: _objectSpread2$1(_objectSpread2$1(_objectSpread2$1(_objectSpread2$1({
"--arrow-x": "".concat(arrowPos.x || 0, "px"),
"--arrow-y": "".concat(arrowPos.y || 0, "px")
}, offsetStyle), miscStyle), motionStyle), {}, {
boxSizing: "border-box",
zIndex
}, style2),
onMouseEnter,
onMouseLeave,
onPointerEnter,
onClick
}, arrow && /* @__PURE__ */ reactExports.createElement(Arrow$1, {
prefixCls,
arrow,
arrowPos,
align
}), /* @__PURE__ */ reactExports.createElement(PopupContent, {
cache: !open2 && !fresh
}, childNode));
});
}));
});
var TriggerWrapper = /* @__PURE__ */ reactExports.forwardRef(function(props, ref) {
var children = props.children, getTriggerDOMNode = props.getTriggerDOMNode;
var canUseRef = supportRef(children);
var setRef = reactExports.useCallback(function(node2) {
fillRef(ref, getTriggerDOMNode ? getTriggerDOMNode(node2) : node2);
}, [getTriggerDOMNode]);
var mergedRef = useComposeRef(setRef, children.ref);
return canUseRef ? /* @__PURE__ */ reactExports.cloneElement(children, {
ref: mergedRef
}) : children;
});
var TriggerContext = /* @__PURE__ */ reactExports.createContext(null);
function toArray$1(val) {
return val ? Array.isArray(val) ? val : [val] : [];
}
function useAction(mobile, action, showAction, hideAction) {
return reactExports.useMemo(function() {
var mergedShowAction = toArray$1(showAction !== null && showAction !== void 0 ? showAction : action);
var mergedHideAction = toArray$1(hideAction !== null && hideAction !== void 0 ? hideAction : action);
var showActionSet = new Set(mergedShowAction);
var hideActionSet = new Set(mergedHideAction);
if (mobile) {
if (showActionSet.has("hover")) {
showActionSet.delete("hover");
showActionSet.add("click");
}
if (hideActionSet.has("hover")) {
hideActionSet.delete("hover");
hideActionSet.add("click");
}
}
return [showActionSet, hideActionSet];
}, [mobile, action, showAction, hideAction]);
}
function isPointsEq() {
var a1 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
var a2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];
var isAlignPoint = arguments.length > 2 ? arguments[2] : void 0;
if (isAlignPoint) {
return a1[0] === a2[0];
}
return a1[0] === a2[0] && a1[1] === a2[1];
}
function getAlignPopupClassName(builtinPlacements, prefixCls, align, isAlignPoint) {
var points2 = align.points;
var placements2 = Object.keys(builtinPlacements);
for (var i = 0; i < placements2.length; i += 1) {
var _builtinPlacements$pl;
var placement = placements2[i];
if (isPointsEq((_builtinPlacements$pl = builtinPlacements[placement]) === null || _builtinPlacements$pl === void 0 ? void 0 : _builtinPlacements$pl.points, points2, isAlignPoint)) {
return "".concat(prefixCls, "-placement-").concat(placement);
}
}
return "";
}
function getMotion$1(prefixCls, motion, animation, transitionName) {
if (motion) {
return motion;
}
if (animation) {
return {
motionName: "".concat(prefixCls, "-").concat(animation)
};
}
if (transitionName) {
return {
motionName: transitionName
};
}
return null;
}
function getWin(ele) {
return ele.ownerDocument.defaultView;
}
function collectScroller(ele) {
var scrollerList = [];
var current = ele === null || ele === void 0 ? void 0 : ele.parentElement;
var scrollStyle = ["hidden", "scroll", "clip", "auto"];
while (current) {
var _getWin$getComputedSt = getWin(current).getComputedStyle(current), overflowX = _getWin$getComputedSt.overflowX, overflowY = _getWin$getComputedSt.overflowY, overflow = _getWin$getComputedSt.overflow;
if ([overflowX, overflowY, overflow].some(function(o) {
return scrollStyle.includes(o);
})) {
scrollerList.push(current);
}
current = current.parentElement;
}
return scrollerList;
}
function toNum(num) {
var defaultValue = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1;
return Number.isNaN(num) ? defaultValue : num;
}
function getPxValue(val) {
return toNum(parseFloat(val), 0);
}
function getVisibleArea(initArea, scrollerList) {
var visibleArea = _objectSpread2$1({}, initArea);
(scrollerList || []).forEach(function(ele) {
if (ele instanceof HTMLBodyElement || ele instanceof HTMLHtmlElement) {
return;
}
var _getWin$getComputedSt2 = getWin(ele).getComputedStyle(ele), overflow = _getWin$getComputedSt2.overflow, overflowClipMargin = _getWin$getComputedSt2.overflowClipMargin, borderTopWidth = _getWin$getComputedSt2.borderTopWidth, borderBottomWidth = _getWin$getComputedSt2.borderBottomWidth, borderLeftWidth = _getWin$getComputedSt2.borderLeftWidth, borderRightWidth = _getWin$getComputedSt2.borderRightWidth;
var eleRect = ele.getBoundingClientRect();
var eleOutHeight = ele.offsetHeight, eleInnerHeight = ele.clientHeight, eleOutWidth = ele.offsetWidth, eleInnerWidth = ele.clientWidth;
var borderTopNum = getPxValue(borderTopWidth);
var borderBottomNum = getPxValue(borderBottomWidth);
var borderLeftNum = getPxValue(borderLeftWidth);
var borderRightNum = getPxValue(borderRightWidth);
var scaleX = toNum(Math.round(eleRect.width / eleOutWidth * 1e3) / 1e3);
var scaleY = toNum(Math.round(eleRect.height / eleOutHeight * 1e3) / 1e3);
var eleScrollWidth = (eleOutWidth - eleInnerWidth - borderLeftNum - borderRightNum) * scaleX;
var eleScrollHeight = (eleOutHeight - eleInnerHeight - borderTopNum - borderBottomNum) * scaleY;
var scaledBorderTopWidth = borderTopNum * scaleY;
var scaledBorderBottomWidth = borderBottomNum * scaleY;
var scaledBorderLeftWidth = borderLeftNum * scaleX;
var scaledBorderRightWidth = borderRightNum * scaleX;
var clipMarginWidth = 0;
var clipMarginHeight = 0;
if (overflow === "clip") {
var clipNum = getPxValue(overflowClipMargin);
clipMarginWidth = clipNum * scaleX;
clipMarginHeight = clipNum * scaleY;
}
var eleLeft = eleRect.x + scaledBorderLeftWidth - clipMarginWidth;
var eleTop = eleRect.y + scaledBorderTopWidth - clipMarginHeight;
var eleRight = eleLeft + eleRect.width + 2 * clipMarginWidth - scaledBorderLeftWidth - scaledBorderRightWidth - eleScrollWidth;
var eleBottom = eleTop + eleRect.height + 2 * clipMarginHeight - scaledBorderTopWidth - scaledBorderBottomWidth - eleScrollHeight;
visibleArea.left = Math.max(visibleArea.left, eleLeft);
visibleArea.top = Math.max(visibleArea.top, eleTop);
visibleArea.right = Math.min(visibleArea.right, eleRight);
visibleArea.bottom = Math.min(visibleArea.bottom, eleBottom);
});
return visibleArea;
}
function getUnitOffset(size) {
var offset2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
var offsetStr = "".concat(offset2);
var cells = offsetStr.match(/^(.*)\%$/);
if (cells) {
return size * (parseFloat(cells[1]) / 100);
}
return parseFloat(offsetStr);
}
function getNumberOffset(rect, offset2) {
var _ref = offset2 || [], _ref2 = _slicedToArray(_ref, 2), offsetX = _ref2[0], offsetY = _ref2[1];
return [getUnitOffset(rect.width, offsetX), getUnitOffset(rect.height, offsetY)];
}
function splitPoints() {
var points2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "";
return [points2[0], points2[1]];
}
function getAlignPoint(rect, points2) {
var topBottom = points2[0];
var leftRight = points2[1];
var x2;
var y2;
if (topBottom === "t") {
y2 = rect.y;
} else if (topBottom === "b") {
y2 = rect.y + rect.height;
} else {
y2 = rect.y + rect.height / 2;
}
if (leftRight === "l") {
x2 = rect.x;
} else if (leftRight === "r") {
x2 = rect.x + rect.width;
} else {
x2 = rect.x + rect.width / 2;
}
return {
x: x2,
y: y2
};
}
function reversePoints(points2, index2) {
var reverseMap = {
t: "b",
b: "t",
l: "r",
r: "l"
};
return points2.map(function(point, i) {
if (i === index2) {
return reverseMap[point] || "c";
}
return point;
}).join("");
}
function useAlign(open2, popupEle, target, placement, builtinPlacements, popupAlign, onPopupAlign) {
var _React$useState = reactExports.useState({
ready: false,
offsetX: 0,
offsetY: 0,
offsetR: 0,
offsetB: 0,
arrowX: 0,
arrowY: 0,
scaleX: 1,
scaleY: 1,
align: builtinPlacements[placement] || {}
}), _React$useState2 = _slicedToArray(_React$useState, 2), offsetInfo = _React$useState2[0], setOffsetInfo = _React$useState2[1];
var alignCountRef = reactExports.useRef(0);
var scrollerList = reactExports.useMemo(function() {
if (!popupEle) {
return [];
}
return collectScroller(popupEle);
}, [popupEle]);
var prevFlipRef = reactExports.useRef({});
var resetFlipCache = function resetFlipCache2() {
prevFlipRef.current = {};
};
if (!open2) {
resetFlipCache();
}
var onAlign = useEvent(function() {
if (popupEle && target && open2) {
let getIntersectionVisibleArea2 = function(offsetX, offsetY) {
var area = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : visibleArea;
var l2 = popupRect.x + offsetX;
var t2 = popupRect.y + offsetY;
var r2 = l2 + popupWidth;
var b2 = t2 + popupHeight;
var visibleL = Math.max(l2, area.left);
var visibleT = Math.max(t2, area.top);
var visibleR = Math.min(r2, area.right);
var visibleB = Math.min(b2, area.bottom);
return Math.max(0, (visibleR - visibleL) * (visibleB - visibleT));
}, syncNextPopupPosition2 = function() {
nextPopupY = popupRect.y + nextOffsetY;
nextPopupBottom = nextPopupY + popupHeight;
nextPopupX = popupRect.x + nextOffsetX;
nextPopupRight = nextPopupX + popupWidth;
};
var getIntersectionVisibleArea = getIntersectionVisibleArea2, syncNextPopupPosition = syncNextPopupPosition2;
var _popupElement$parentE, _popupRect$x, _popupRect$y, _popupElement$parentE2;
var popupElement = popupEle;
var doc = popupElement.ownerDocument;
var win = getWin(popupElement);
var _win$getComputedStyle = win.getComputedStyle(popupElement), width = _win$getComputedStyle.width, height = _win$getComputedStyle.height, popupPosition = _win$getComputedStyle.position;
var originLeft = popupElement.style.left;
var originTop = popupElement.style.top;
var originRight = popupElement.style.right;
var originBottom = popupElement.style.bottom;
var originOverflow = popupElement.style.overflow;
var placementInfo = _objectSpread2$1(_objectSpread2$1({}, builtinPlacements[placement]), popupAlign);
var placeholderElement = doc.createElement("div");
(_popupElement$parentE = popupElement.parentElement) === null || _popupElement$parentE === void 0 || _popupElement$parentE.appendChild(placeholderElement);
placeholderElement.style.left = "".concat(popupElement.offsetLeft, "px");
placeholderElement.style.top = "".concat(popupElement.offsetTop, "px");
placeholderElement.style.position = popupPosition;
placeholderElement.style.height = "".concat(popupElement.offsetHeight, "px");
placeholderElement.style.width = "".concat(popupElement.offsetWidth, "px");
popupElement.style.left = "0";
popupElement.style.top = "0";
popupElement.style.right = "auto";
popupElement.style.bottom = "auto";
popupElement.style.overflow = "hidden";
var targetRect;
if (Array.isArray(target)) {
targetRect = {
x: target[0],
y: target[1],
width: 0,
height: 0
};
} else {
var _rect$x, _rect$y;
var rect = target.getBoundingClientRect();
rect.x = (_rect$x = rect.x) !== null && _rect$x !== void 0 ? _rect$x : rect.left;
rect.y = (_rect$y = rect.y) !== null && _rect$y !== void 0 ? _rect$y : rect.top;
targetRect = {
x: rect.x,
y: rect.y,
width: rect.width,
height: rect.height
};
}
var popupRect = popupElement.getBoundingClientRect();
popupRect.x = (_popupRect$x = popupRect.x) !== null && _popupRect$x !== void 0 ? _popupRect$x : popupRect.left;
popupRect.y = (_popupRect$y = popupRect.y) !== null && _popupRect$y !== void 0 ? _popupRect$y : popupRect.top;
var _doc$documentElement = doc.documentElement, clientWidth = _doc$documentElement.clientWidth, clientHeight = _doc$documentElement.clientHeight, scrollWidth = _doc$documentElement.scrollWidth, scrollHeight = _doc$documentElement.scrollHeight, scrollTop = _doc$documentElement.scrollTop, scrollLeft = _doc$documentElement.scrollLeft;
var popupHeight = popupRect.height;
var popupWidth = popupRect.width;
var targetHeight = targetRect.height;
var targetWidth = targetRect.width;
var visibleRegion = {
left: 0,
top: 0,
right: clientWidth,
bottom: clientHeight
};
var scrollRegion = {
left: -scrollLeft,
top: -scrollTop,
right: scrollWidth - scrollLeft,
bottom: scrollHeight - scrollTop
};
var htmlRegion = placementInfo.htmlRegion;
var VISIBLE = "visible";
var VISIBLE_FIRST = "visibleFirst";
if (htmlRegion !== "scroll" && htmlRegion !== VISIBLE_FIRST) {
htmlRegion = VISIBLE;
}
var isVisibleFirst = htmlRegion === VISIBLE_FIRST;
var scrollRegionArea = getVisibleArea(scrollRegion, scrollerList);
var visibleRegionArea = getVisibleArea(visibleRegion, scrollerList);
var visibleArea = htmlRegion === VISIBLE ? visibleRegionArea : scrollRegionArea;
var adjustCheckVisibleArea = isVisibleFirst ? visibleRegionArea : visibleArea;
popupElement.style.left = "auto";
popupElement.style.top = "auto";
popupElement.style.right = "0";
popupElement.style.bottom = "0";
var popupMirrorRect = popupElement.getBoundingClientRect();
popupElement.style.left = originLeft;
popupElement.style.top = originTop;
popupElement.style.right = originRight;
popupElement.style.bottom = originBottom;
popupElement.style.overflow = originOverflow;
(_popupElement$parentE2 = popupElement.parentElement) === null || _popupElement$parentE2 === void 0 || _popupElement$parentE2.removeChild(placeholderElement);
var _scaleX = toNum(Math.round(popupWidth / parseFloat(width) * 1e3) / 1e3);
var _scaleY = toNum(Math.round(popupHeight / parseFloat(height) * 1e3) / 1e3);
if (_scaleX === 0 || _scaleY === 0 || isDOM(target) && !isVisible(target)) {
return;
}
var offset2 = placementInfo.offset, targetOffset2 = placementInfo.targetOffset;
var _getNumberOffset = getNumberOffset(popupRect, offset2), _getNumberOffset2 = _slicedToArray(_getNumberOffset, 2), popupOffsetX = _getNumberOffset2[0], popupOffsetY = _getNumberOffset2[1];
var _getNumberOffset3 = getNumberOffset(targetRect, targetOffset2), _getNumberOffset4 = _slicedToArray(_getNumberOffset3, 2), targetOffsetX = _getNumberOffset4[0], targetOffsetY = _getNumberOffset4[1];
targetRect.x -= targetOffsetX;
targetRect.y -= targetOffsetY;
var _ref3 = placementInfo.points || [], _ref4 = _slicedToArray(_ref3, 2), popupPoint = _ref4[0], targetPoint = _ref4[1];
var targetPoints = splitPoints(targetPoint);
var popupPoints = splitPoints(popupPoint);
var targetAlignPoint = getAlignPoint(targetRect, targetPoints);
var popupAlignPoint = getAlignPoint(popupRect, popupPoints);
var nextAlignInfo = _objectSpread2$1({}, placementInfo);
var nextOffsetX = targetAlignPoint.x - popupAlignPoint.x + popupOffsetX;
var nextOffsetY = targetAlignPoint.y - popupAlignPoint.y + popupOffsetY;
var originIntersectionVisibleArea = getIntersectionVisibleArea2(nextOffsetX, nextOffsetY);
var originIntersectionRecommendArea = getIntersectionVisibleArea2(nextOffsetX, nextOffsetY, visibleRegionArea);
var targetAlignPointTL = getAlignPoint(targetRect, ["t", "l"]);
var popupAlignPointTL = getAlignPoint(popupRect, ["t", "l"]);
var targetAlignPointBR = getAlignPoint(targetRect, ["b", "r"]);
var popupAlignPointBR = getAlignPoint(popupRect, ["b", "r"]);
var overflow = placementInfo.overflow || {};
var adjustX = overflow.adjustX, adjustY = overflow.adjustY, shiftX = overflow.shiftX, shiftY = overflow.shiftY;
var supportAdjust = function supportAdjust2(val) {
if (typeof val === "boolean") {
return val;
}
return val >= 0;
};
var nextPopupY;
var nextPopupBottom;
var nextPopupX;
var nextPopupRight;
syncNextPopupPosition2();
var needAdjustY = supportAdjust(adjustY);
var sameTB = popupPoints[0] === targetPoints[0];
if (needAdjustY && popupPoints[0] === "t" && (nextPopupBottom > adjustCheckVisibleArea.bottom || prevFlipRef.current.bt)) {
var tmpNextOffsetY = nextOffsetY;
if (sameTB) {
tmpNextOffsetY -= popupHeight - targetHeight;
} else {
tmpNextOffsetY = targetAlignPointTL.y - popupAlignPointBR.y - popupOffsetY;
}
var newVisibleArea = getIntersectionVisibleArea2(nextOffsetX, tmpNextOffsetY);
var newVisibleRecommendArea = getIntersectionVisibleArea2(nextOffsetX, tmpNextOffsetY, visibleRegionArea);
if (
// Of course use larger one
newVisibleArea > originIntersectionVisibleArea || newVisibleArea === originIntersectionVisibleArea && (!isVisibleFirst || // Choose recommend one
newVisibleRecommendArea >= originIntersectionRecommendArea)
) {
prevFlipRef.current.bt = true;
nextOffsetY = tmpNextOffsetY;
popupOffsetY = -popupOffsetY;
nextAlignInfo.points = [reversePoints(popupPoints, 0), reversePoints(targetPoints, 0)];
} else {
prevFlipRef.current.bt = false;
}
}
if (needAdjustY && popupPoints[0] === "b" && (nextPopupY < adjustCheckVisibleArea.top || prevFlipRef.current.tb)) {
var _tmpNextOffsetY = nextOffsetY;
if (sameTB) {
_tmpNextOffsetY += popupHeight - targetHeight;
} else {
_tmpNextOffsetY = targetAlignPointBR.y - popupAlignPointTL.y - popupOffsetY;
}
var _newVisibleArea = getIntersectionVisibleArea2(nextOffsetX, _tmpNextOffsetY);
var _newVisibleRecommendArea = getIntersectionVisibleArea2(nextOffsetX, _tmpNextOffsetY, visibleRegionArea);
if (
// Of course use larger one
_newVisibleArea > originIntersectionVisibleArea || _newVisibleArea === originIntersectionVisibleArea && (!isVisibleFirst || // Choose recommend one
_newVisibleRecommendArea >= originIntersectionRecommendArea)
) {
prevFlipRef.current.tb = true;
nextOffsetY = _tmpNextOffsetY;
popupOffsetY = -popupOffsetY;
nextAlignInfo.points = [reversePoints(popupPoints, 0), reversePoints(targetPoints, 0)];
} else {
prevFlipRef.current.tb = false;
}
}
var needAdjustX = supportAdjust(adjustX);
var sameLR = popupPoints[1] === targetPoints[1];
if (needAdjustX && popupPoints[1] === "l" && (nextPopupRight > adjustCheckVisibleArea.right || prevFlipRef.current.rl)) {
var tmpNextOffsetX = nextOffsetX;
if (sameLR) {
tmpNextOffsetX -= popupWidth - targetWidth;
} else {
tmpNextOffsetX = targetAlignPointTL.x - popupAlignPointBR.x - popupOffsetX;
}
var _newVisibleArea2 = getIntersectionVisibleArea2(tmpNextOffsetX, nextOffsetY);
var _newVisibleRecommendArea2 = getIntersectionVisibleArea2(tmpNextOffsetX, nextOffsetY, visibleRegionArea);
if (
// Of course use larger one
_newVisibleArea2 > originIntersectionVisibleArea || _newVisibleArea2 === originIntersectionVisibleArea && (!isVisibleFirst || // Choose recommend one
_newVisibleRecommendArea2 >= originIntersectionRecommendArea)
) {
prevFlipRef.current.rl = true;
nextOffsetX = tmpNextOffsetX;
popupOffsetX = -popupOffsetX;
nextAlignInfo.points = [reversePoints(popupPoints, 1), reversePoints(targetPoints, 1)];
} else {
prevFlipRef.current.rl = false;
}
}
if (needAdjustX && popupPoints[1] === "r" && (nextPopupX < adjustCheckVisibleArea.left || prevFlipRef.current.lr)) {
var _tmpNextOffsetX = nextOffsetX;
if (sameLR) {
_tmpNextOffsetX += popupWidth - targetWidth;
} else {
_tmpNextOffsetX = targetAlignPointBR.x - popupAlignPointTL.x - popupOffsetX;
}
var _newVisibleArea3 = getIntersectionVisibleArea2(_tmpNextOffsetX, nextOffsetY);
var _newVisibleRecommendArea3 = getIntersectionVisibleArea2(_tmpNextOffsetX, nextOffsetY, visibleRegionArea);
if (
// Of course use larger one
_newVisibleArea3 > originIntersectionVisibleArea || _newVisibleArea3 === originIntersectionVisibleArea && (!isVisibleFirst || // Choose recommend one
_newVisibleRecommendArea3 >= originIntersectionRecommendArea)
) {
prevFlipRef.current.lr = true;
nextOffsetX = _tmpNextOffsetX;
popupOffsetX = -popupOffsetX;
nextAlignInfo.points = [reversePoints(popupPoints, 1), reversePoints(targetPoints, 1)];
} else {
prevFlipRef.current.lr = false;
}
}
syncNextPopupPosition2();
var numShiftX = shiftX === true ? 0 : shiftX;
if (typeof numShiftX === "number") {
if (nextPopupX < visibleRegionArea.left) {
nextOffsetX -= nextPopupX - visibleRegionArea.left - popupOffsetX;
if (targetRect.x + targetWidth < visibleRegionArea.left + numShiftX) {
nextOffsetX += targetRect.x - visibleRegionArea.left + targetWidth - numShiftX;
}
}
if (nextPopupRight > visibleRegionArea.right) {
nextOffsetX -= nextPopupRight - visibleRegionArea.right - popupOffsetX;
if (targetRect.x > visibleRegionArea.right - numShiftX) {
nextOffsetX += targetRect.x - visibleRegionArea.right + numShiftX;
}
}
}
var numShiftY = shiftY === true ? 0 : shiftY;
if (typeof numShiftY === "number") {
if (nextPopupY < visibleRegionArea.top) {
nextOffsetY -= nextPopupY - visibleRegionArea.top - popupOffsetY;
if (targetRect.y + targetHeight < visibleRegionArea.top + numShiftY) {
nextOffsetY += targetRect.y - visibleRegionArea.top + targetHeight - numShiftY;
}
}
if (nextPopupBottom > visibleRegionArea.bottom) {
nextOffsetY -= nextPopupBottom - visibleRegionArea.bottom - popupOffsetY;
if (targetRect.y > visibleRegionArea.bottom - numShiftY) {
nextOffsetY += targetRect.y - visibleRegionArea.bottom + numShiftY;
}
}
}
var popupLeft = popupRect.x + nextOffsetX;
var popupRight = popupLeft + popupWidth;
var popupTop = popupRect.y + nextOffsetY;
var popupBottom = popupTop + popupHeight;
var targetLeft = targetRect.x;
var targetRight = targetLeft + targetWidth;
var targetTop = targetRect.y;
var targetBottom = targetTop + targetHeight;
var maxLeft = Math.max(popupLeft, targetLeft);
var minRight = Math.min(popupRight, targetRight);
var xCenter = (maxLeft + minRight) / 2;
var nextArrowX = xCenter - popupLeft;
var maxTop = Math.max(popupTop, targetTop);
var minBottom = Math.min(popupBottom, targetBottom);
var yCenter = (maxTop + minBottom) / 2;
var nextArrowY = yCenter - popupTop;
onPopupAlign === null || onPopupAlign === void 0 || onPopupAlign(popupEle, nextAlignInfo);
var offsetX4Right = popupMirrorRect.right - popupRect.x - (nextOffsetX + popupRect.width);
var offsetY4Bottom = popupMirrorRect.bottom - popupRect.y - (nextOffsetY + popupRect.height);
if (_scaleX === 1) {
nextOffsetX = Math.round(nextOffsetX);
offsetX4Right = Math.round(offsetX4Right);
}
if (_scaleY === 1) {
nextOffsetY = Math.round(nextOffsetY);
offsetY4Bottom = Math.round(offsetY4Bottom);
}
var nextOffsetInfo = {
ready: true,
offsetX: nextOffsetX / _scaleX,
offsetY: nextOffsetY / _scaleY,
offsetR: offsetX4Right / _scaleX,
offsetB: offsetY4Bottom / _scaleY,
arrowX: nextArrowX / _scaleX,
arrowY: nextArrowY / _scaleY,
scaleX: _scaleX,
scaleY: _scaleY,
align: nextAlignInfo
};
setOffsetInfo(nextOffsetInfo);
}
});
var triggerAlign = function triggerAlign2() {
alignCountRef.current += 1;
var id2 = alignCountRef.current;
Promise.resolve().then(function() {
if (alignCountRef.current === id2) {
onAlign();
}
});
};
var resetReady = function resetReady2() {
setOffsetInfo(function(ori) {
return _objectSpread2$1(_objectSpread2$1({}, ori), {}, {
ready: false
});
});
};
useLayoutEffect$1(resetReady, [placement]);
useLayoutEffect$1(function() {
if (!open2) {
resetReady();
}
}, [open2]);
return [offsetInfo.ready, offsetInfo.offsetX, offsetInfo.offsetY, offsetInfo.offsetR, offsetInfo.offsetB, offsetInfo.arrowX, offsetInfo.arrowY, offsetInfo.scaleX, offsetInfo.scaleY, offsetInfo.align, triggerAlign];
}
function useWatch(open2, target, popup, onAlign, onScroll) {
useLayoutEffect$1(function() {
if (open2 && target && popup) {
let notifyScroll2 = function() {
onAlign();
onScroll();
};
var notifyScroll = notifyScroll2;
var targetElement = target;
var popupElement = popup;
var targetScrollList = collectScroller(targetElement);
var popupScrollList = collectScroller(popupElement);
var win = getWin(popupElement);
var mergedList = new Set([win].concat(_toConsumableArray(targetScrollList), _toConsumableArray(popupScrollList)));
mergedList.forEach(function(scroller) {
scroller.addEventListener("scroll", notifyScroll2, {
passive: true
});
});
win.addEventListener("resize", notifyScroll2, {
passive: true
});
onAlign();
return function() {
mergedList.forEach(function(scroller) {
scroller.removeEventListener("scroll", notifyScroll2);
win.removeEventListener("resize", notifyScroll2);
});
};
}
}, [open2, target, popup]);
}
function useWinClick(open2, clickToHide, targetEle, popupEle, mask, maskClosable, inPopupOrChild, triggerOpen) {
var openRef = reactExports.useRef(open2);
openRef.current = open2;
reactExports.useEffect(function() {
if (clickToHide && popupEle && (!mask || maskClosable)) {
var onTriggerClose = function onTriggerClose2(e2) {
var _e$composedPath;
if (openRef.current && !inPopupOrChild(((_e$composedPath = e2.composedPath) === null || _e$composedPath === void 0 || (_e$composedPath = _e$composedPath.call(e2)) === null || _e$composedPath === void 0 ? void 0 : _e$composedPath[0]) || e2.target)) {
triggerOpen(false);
}
};
var win = getWin(popupEle);
win.addEventListener("mousedown", onTriggerClose, true);
win.addEventListener("contextmenu", onTriggerClose, true);
var targetShadowRoot = getShadowRoot(targetEle);
if (targetShadowRoot) {
targetShadowRoot.addEventListener("mousedown", onTriggerClose, true);
targetShadowRoot.addEventListener("contextmenu", onTriggerClose, true);
}
return function() {
win.removeEventListener("mousedown", onTriggerClose, true);
win.removeEventListener("contextmenu", onTriggerClose, true);
if (targetShadowRoot) {
targetShadowRoot.removeEventListener("mousedown", onTriggerClose, true);
targetShadowRoot.removeEventListener("contextmenu", onTriggerClose, true);
}
};
}
}, [clickToHide, targetEle, popupEle, mask, maskClosable]);
}
var _excluded$x = ["prefixCls", "children", "action", "showAction", "hideAction", "popupVisible", "defaultPopupVisible", "onPopupVisibleChange", "afterPopupVisibleChange", "mouseEnterDelay", "mouseLeaveDelay", "focusDelay", "blurDelay", "mask", "maskClosable", "getPopupContainer", "forceRender", "autoDestroy", "destroyPopupOnHide", "popup", "popupClassName", "popupStyle", "popupPlacement", "builtinPlacements", "popupAlign", "zIndex", "stretch", "getPopupClassNameFromAlign", "fresh", "alignPoint", "onPopupClick", "onPopupAlign", "arrow", "popupMotion", "maskMotion", "popupTransitionName", "popupAnimation", "maskTransitionName", "maskAnimation", "className", "getTriggerDOMNode"];
function generateTrigger() {
var PortalComponent = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : Portal;
var Trigger2 = /* @__PURE__ */ reactExports.forwardRef(function(props, ref) {
var _props$prefixCls = props.prefixCls, prefixCls = _props$prefixCls === void 0 ? "rc-trigger-popup" : _props$prefixCls, children = props.children, _props$action = props.action, action = _props$action === void 0 ? "hover" : _props$action, showAction = props.showAction, hideAction = props.hideAction, popupVisible = props.popupVisible, defaultPopupVisible = props.defaultPopupVisible, onPopupVisibleChange = props.onPopupVisibleChange, afterPopupVisibleChange = props.afterPopupVisibleChange, mouseEnterDelay = props.mouseEnterDelay, _props$mouseLeaveDela = props.mouseLeaveDelay, mouseLeaveDelay = _props$mouseLeaveDela === void 0 ? 0.1 : _props$mouseLeaveDela, focusDelay = props.focusDelay, blurDelay = props.blurDelay, mask = props.mask, _props$maskClosable = props.maskClosable, maskClosable = _props$maskClosable === void 0 ? true : _props$maskClosable, getPopupContainer = props.getPopupContainer, forceRender = props.forceRender, autoDestroy = props.autoDestroy, destroyPopupOnHide = props.destroyPopupOnHide, popup = props.popup, popupClassName = props.popupClassName, popupStyle = props.popupStyle, popupPlacement = props.popupPlacement, _props$builtinPlaceme = props.builtinPlacements, builtinPlacements = _props$builtinPlaceme === void 0 ? {} : _props$builtinPlaceme, popupAlign = props.popupAlign, zIndex = props.zIndex, stretch = props.stretch, getPopupClassNameFromAlign = props.getPopupClassNameFromAlign, fresh = props.fresh, alignPoint = props.alignPoint, onPopupClick = props.onPopupClick, onPopupAlign = props.onPopupAlign, arrow = props.arrow, popupMotion = props.popupMotion, maskMotion = props.maskMotion, popupTransitionName = props.popupTransitionName, popupAnimation = props.popupAnimation, maskTransitionName = props.maskTransitionName, maskAnimation = props.maskAnimation, className = props.className, getTriggerDOMNode = props.getTriggerDOMNode, restProps = _objectWithoutProperties(props, _excluded$x);
var mergedAutoDestroy = autoDestroy || destroyPopupOnHide || false;
var _React$useState = reactExports.useState(false), _React$useState2 = _slicedToArray(_React$useState, 2), mobile = _React$useState2[0], setMobile = _React$useState2[1];
useLayoutEffect$1(function() {
setMobile(isMobile());
}, []);
var subPopupElements = reactExports.useRef({});
var parentContext = reactExports.useContext(TriggerContext);
var context = reactExports.useMemo(function() {
return {
registerSubPopup: function registerSubPopup(id22, subPopupEle) {
subPopupElements.current[id22] = subPopupEle;
parentContext === null || parentContext === void 0 || parentContext.registerSubPopup(id22, subPopupEle);
}
};
}, [parentContext]);
var id2 = useId$1();
var _React$useState3 = reactExports.useState(null), _React$useState4 = _slicedToArray(_React$useState3, 2), popupEle = _React$useState4[0], setPopupEle = _React$useState4[1];
var externalPopupRef = reactExports.useRef(null);
var setPopupRef = useEvent(function(node2) {
externalPopupRef.current = node2;
if (isDOM(node2) && popupEle !== node2) {
setPopupEle(node2);
}
parentContext === null || parentContext === void 0 || parentContext.registerSubPopup(id2, node2);
});
var _React$useState5 = reactExports.useState(null), _React$useState6 = _slicedToArray(_React$useState5, 2), targetEle = _React$useState6[0], setTargetEle = _React$useState6[1];
var externalForwardRef = reactExports.useRef(null);
var setTargetRef = useEvent(function(node2) {
if (isDOM(node2) && targetEle !== node2) {
setTargetEle(node2);
externalForwardRef.current = node2;
}
});
var child = reactExports.Children.only(children);
var originChildProps = (child === null || child === void 0 ? void 0 : child.props) || {};
var cloneProps = {};
var inPopupOrChild = useEvent(function(ele) {
var _getShadowRoot, _getShadowRoot2;
var childDOM = targetEle;
return (childDOM === null || childDOM === void 0 ? void 0 : childDOM.contains(ele)) || ((_getShadowRoot = getShadowRoot(childDOM)) === null || _getShadowRoot === void 0 ? void 0 : _getShadowRoot.host) === ele || ele === childDOM || (popupEle === null || popupEle === void 0 ? void 0 : popupEle.contains(ele)) || ((_getShadowRoot2 = getShadowRoot(popupEle)) === null || _getShadowRoot2 === void 0 ? void 0 : _getShadowRoot2.host) === ele || ele === popupEle || Object.values(subPopupElements.current).some(function(subPopupEle) {
return (subPopupEle === null || subPopupEle === void 0 ? void 0 : subPopupEle.contains(ele)) || ele === subPopupEle;
});
});
var mergePopupMotion = getMotion$1(prefixCls, popupMotion, popupAnimation, popupTransitionName);
var mergeMaskMotion = getMotion$1(prefixCls, maskMotion, maskAnimation, maskTransitionName);
var _React$useState7 = reactExports.useState(defaultPopupVisible || false), _React$useState8 = _slicedToArray(_React$useState7, 2), internalOpen = _React$useState8[0], setInternalOpen = _React$useState8[1];
var mergedOpen = popupVisible !== null && popupVisible !== void 0 ? popupVisible : internalOpen;
var setMergedOpen = useEvent(function(nextOpen) {
if (popupVisible === void 0) {
setInternalOpen(nextOpen);
}
});
useLayoutEffect$1(function() {
setInternalOpen(popupVisible || false);
}, [popupVisible]);
var openRef = reactExports.useRef(mergedOpen);
openRef.current = mergedOpen;
var lastTriggerRef = reactExports.useRef([]);
lastTriggerRef.current = [];
var internalTriggerOpen = useEvent(function(nextOpen) {
var _lastTriggerRef$curre;
setMergedOpen(nextOpen);
if (((_lastTriggerRef$curre = lastTriggerRef.current[lastTriggerRef.current.length - 1]) !== null && _lastTriggerRef$curre !== void 0 ? _lastTriggerRef$curre : mergedOpen) !== nextOpen) {
lastTriggerRef.current.push(nextOpen);
onPopupVisibleChange === null || onPopupVisibleChange === void 0 || onPopupVisibleChange(nextOpen);
}
});
var delayRef = reactExports.useRef();
var clearDelay = function clearDelay2() {
clearTimeout(delayRef.current);
};
var triggerOpen = function triggerOpen2(nextOpen) {
var delay = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
clearDelay();
if (delay === 0) {
internalTriggerOpen(nextOpen);
} else {
delayRef.current = setTimeout(function() {
internalTriggerOpen(nextOpen);
}, delay * 1e3);
}
};
reactExports.useEffect(function() {
return clearDelay;
}, []);
var _React$useState9 = reactExports.useState(false), _React$useState10 = _slicedToArray(_React$useState9, 2), inMotion = _React$useState10[0], setInMotion = _React$useState10[1];
useLayoutEffect$1(function(firstMount) {
if (!firstMount || mergedOpen) {
setInMotion(true);
}
}, [mergedOpen]);
var _React$useState11 = reactExports.useState(null), _React$useState12 = _slicedToArray(_React$useState11, 2), motionPrepareResolve = _React$useState12[0], setMotionPrepareResolve = _React$useState12[1];
var _React$useState13 = reactExports.useState(null), _React$useState14 = _slicedToArray(_React$useState13, 2), mousePos = _React$useState14[0], setMousePos = _React$useState14[1];
var setMousePosByEvent = function setMousePosByEvent2(event) {
setMousePos([event.clientX, event.clientY]);
};
var _useAlign = useAlign(mergedOpen, popupEle, alignPoint && mousePos !== null ? mousePos : targetEle, popupPlacement, builtinPlacements, popupAlign, onPopupAlign), _useAlign2 = _slicedToArray(_useAlign, 11), ready = _useAlign2[0], offsetX = _useAlign2[1], offsetY = _useAlign2[2], offsetR = _useAlign2[3], offsetB = _useAlign2[4], arrowX = _useAlign2[5], arrowY = _useAlign2[6], scaleX = _useAlign2[7], scaleY = _useAlign2[8], alignInfo = _useAlign2[9], onAlign = _useAlign2[10];
var _useAction = useAction(mobile, action, showAction, hideAction), _useAction2 = _slicedToArray(_useAction, 2), showActions = _useAction2[0], hideActions = _useAction2[1];
var clickToShow = showActions.has("click");
var clickToHide = hideActions.has("click") || hideActions.has("contextMenu");
var triggerAlign = useEvent(function() {
if (!inMotion) {
onAlign();
}
});
var onScroll = function onScroll2() {
if (openRef.current && alignPoint && clickToHide) {
triggerOpen(false);
}
};
useWatch(mergedOpen, targetEle, popupEle, triggerAlign, onScroll);
useLayoutEffect$1(function() {
triggerAlign();
}, [mousePos, popupPlacement]);
useLayoutEffect$1(function() {
if (mergedOpen && !(builtinPlacements !== null && builtinPlacements !== void 0 && builtinPlacements[popupPlacement])) {
triggerAlign();
}
}, [JSON.stringify(popupAlign)]);
var alignedClassName = reactExports.useMemo(function() {
var baseClassName = getAlignPopupClassName(builtinPlacements, prefixCls, alignInfo, alignPoint);
return cls(baseClassName, getPopupClassNameFromAlign === null || getPopupClassNameFromAlign === void 0 ? void 0 : getPopupClassNameFromAlign(alignInfo));
}, [alignInfo, getPopupClassNameFromAlign, builtinPlacements, prefixCls, alignPoint]);
reactExports.useImperativeHandle(ref, function() {
return {
nativeElement: externalForwardRef.current,
popupElement: externalPopupRef.current,
forceAlign: triggerAlign
};
});
var _React$useState15 = reactExports.useState(0), _React$useState16 = _slicedToArray(_React$useState15, 2), targetWidth = _React$useState16[0], setTargetWidth = _React$useState16[1];
var _React$useState17 = reactExports.useState(0), _React$useState18 = _slicedToArray(_React$useState17, 2), targetHeight = _React$useState18[0], setTargetHeight = _React$useState18[1];
var syncTargetSize = function syncTargetSize2() {
if (stretch && targetEle) {
var rect = targetEle.getBoundingClientRect();
setTargetWidth(rect.width);
setTargetHeight(rect.height);
}
};
var onTargetResize = function onTargetResize2() {
syncTargetSize();
triggerAlign();
};
var onVisibleChanged = function onVisibleChanged2(visible) {
setInMotion(false);
onAlign();
afterPopupVisibleChange === null || afterPopupVisibleChange === void 0 || afterPopupVisibleChange(visible);
};
var onPrepare = function onPrepare2() {
return new Promise(function(resolve) {
syncTargetSize();
setMotionPrepareResolve(function() {
return resolve;
});
});
};
useLayoutEffect$1(function() {
if (motionPrepareResolve) {
onAlign();
motionPrepareResolve();
setMotionPrepareResolve(null);
}
}, [motionPrepareResolve]);
function wrapperAction(eventName, nextOpen, delay, preEvent) {
cloneProps[eventName] = function(event) {
var _originChildProps$eve;
preEvent === null || preEvent === void 0 || preEvent(event);
triggerOpen(nextOpen, delay);
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
(_originChildProps$eve = originChildProps[eventName]) === null || _originChildProps$eve === void 0 || _originChildProps$eve.call.apply(_originChildProps$eve, [originChildProps, event].concat(args));
};
}
if (clickToShow || clickToHide) {
cloneProps.onClick = function(event) {
var _originChildProps$onC;
if (openRef.current && clickToHide) {
triggerOpen(false);
} else if (!openRef.current && clickToShow) {
setMousePosByEvent(event);
triggerOpen(true);
}
for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
args[_key2 - 1] = arguments[_key2];
}
(_originChildProps$onC = originChildProps.onClick) === null || _originChildProps$onC === void 0 || _originChildProps$onC.call.apply(_originChildProps$onC, [originChildProps, event].concat(args));
};
}
useWinClick(mergedOpen, clickToHide, targetEle, popupEle, mask, maskClosable, inPopupOrChild, triggerOpen);
var hoverToShow = showActions.has("hover");
var hoverToHide = hideActions.has("hover");
var onPopupMouseEnter;
var onPopupMouseLeave;
if (hoverToShow) {
wrapperAction("onMouseEnter", true, mouseEnterDelay, function(event) {
setMousePosByEvent(event);
});
wrapperAction("onPointerEnter", true, mouseEnterDelay, function(event) {
setMousePosByEvent(event);
});
onPopupMouseEnter = function onPopupMouseEnter2(event) {
if ((mergedOpen || inMotion) && popupEle !== null && popupEle !== void 0 && popupEle.contains(event.target)) {
triggerOpen(true, mouseEnterDelay);
}
};
if (alignPoint) {
cloneProps.onMouseMove = function(event) {
var _originChildProps$onM;
(_originChildProps$onM = originChildProps.onMouseMove) === null || _originChildProps$onM === void 0 || _originChildProps$onM.call(originChildProps, event);
};
}
}
if (hoverToHide) {
wrapperAction("onMouseLeave", false, mouseLeaveDelay);
wrapperAction("onPointerLeave", false, mouseLeaveDelay);
onPopupMouseLeave = function onPopupMouseLeave2() {
triggerOpen(false, mouseLeaveDelay);
};
}
if (showActions.has("focus")) {
wrapperAction("onFocus", true, focusDelay);
}
if (hideActions.has("focus")) {
wrapperAction("onBlur", false, blurDelay);
}
if (showActions.has("contextMenu")) {
cloneProps.onContextMenu = function(event) {
var _originChildProps$onC2;
if (openRef.current && hideActions.has("contextMenu")) {
triggerOpen(false);
} else {
setMousePosByEvent(event);
triggerOpen(true);
}
event.preventDefault();
for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
args[_key3 - 1] = arguments[_key3];
}
(_originChildProps$onC2 = originChildProps.onContextMenu) === null || _originChildProps$onC2 === void 0 || _originChildProps$onC2.call.apply(_originChildProps$onC2, [originChildProps, event].concat(args));
};
}
if (className) {
cloneProps.className = cls(originChildProps.className, className);
}
var mergedChildrenProps = _objectSpread2$1(_objectSpread2$1({}, originChildProps), cloneProps);
var passedProps = {};
var passedEventList = ["onContextMenu", "onClick", "onMouseDown", "onTouchStart", "onMouseEnter", "onMouseLeave", "onFocus", "onBlur"];
passedEventList.forEach(function(eventName) {
if (restProps[eventName]) {
passedProps[eventName] = function() {
var _mergedChildrenProps$;
for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
args[_key4] = arguments[_key4];
}
(_mergedChildrenProps$ = mergedChildrenProps[eventName]) === null || _mergedChildrenProps$ === void 0 || _mergedChildrenProps$.call.apply(_mergedChildrenProps$, [mergedChildrenProps].concat(args));
restProps[eventName].apply(restProps, args);
};
}
});
var triggerNode = /* @__PURE__ */ reactExports.cloneElement(child, _objectSpread2$1(_objectSpread2$1({}, mergedChildrenProps), passedProps));
var arrowPos = {
x: arrowX,
y: arrowY
};
var innerArrow = arrow ? _objectSpread2$1({}, arrow !== true ? arrow : {}) : null;
return /* @__PURE__ */ reactExports.createElement(reactExports.Fragment, null, /* @__PURE__ */ reactExports.createElement(RefResizeObserver, {
disabled: !mergedOpen,
ref: setTargetRef,
onResize: onTargetResize
}, /* @__PURE__ */ reactExports.createElement(TriggerWrapper, {
getTriggerDOMNode
}, triggerNode)), /* @__PURE__ */ reactExports.createElement(TriggerContext.Provider, {
value: context
}, /* @__PURE__ */ reactExports.createElement(Popup$1, {
portal: PortalComponent,
ref: setPopupRef,
prefixCls,
popup,
className: cls(popupClassName, alignedClassName),
style: popupStyle,
target: targetEle,
onMouseEnter: onPopupMouseEnter,
onMouseLeave: onPopupMouseLeave,
onPointerEnter: onPopupMouseEnter,
zIndex,
open: mergedOpen,
keepDom: inMotion,
fresh,
onClick: onPopupClick,
mask,
motion: mergePopupMotion,
maskMotion: mergeMaskMotion,
onVisibleChanged,
onPrepare,
forceRender,
autoDestroy: mergedAutoDestroy,
getPopupContainer,
align: alignInfo,
arrow: innerArrow,
arrowPos,
ready,
offsetX,
offsetY,
offsetR,
offsetB,
onAlign: triggerAlign,
stretch,
targetWidth: targetWidth / scaleX,
targetHeight: targetHeight / scaleY
})));
});
return Trigger2;
}
const Trigger = generateTrigger(Portal);
var _excluded$w = ["prefixCls", "disabled", "visible", "children", "popupElement", "animation", "transitionName", "dropdownStyle", "dropdownClassName", "direction", "placement", "builtinPlacements", "dropdownMatchSelectWidth", "dropdownRender", "dropdownAlign", "getPopupContainer", "empty", "getTriggerDOMNode", "onPopupVisibleChange", "onPopupMouseEnter"];
var getBuiltInPlacements$1 = function getBuiltInPlacements2(dropdownMatchSelectWidth) {
var adjustX = dropdownMatchSelectWidth === true ? 0 : 1;
return {
bottomLeft: {
points: ["tl", "bl"],
offset: [0, 4],
overflow: {
adjustX,
adjustY: 1
},
htmlRegion: "scroll"
},
bottomRight: {
points: ["tr", "br"],
offset: [0, 4],
overflow: {
adjustX,
adjustY: 1
},
htmlRegion: "scroll"
},
topLeft: {
points: ["bl", "tl"],
offset: [0, -4],
overflow: {
adjustX,
adjustY: 1
},
htmlRegion: "scroll"
},
topRight: {
points: ["br", "tr"],
offset: [0, -4],
overflow: {
adjustX,
adjustY: 1
},
htmlRegion: "scroll"
}
};
};
var SelectTrigger = function SelectTrigger2(props, ref) {
var prefixCls = props.prefixCls;
props.disabled;
var visible = props.visible, children = props.children, popupElement = props.popupElement, animation = props.animation, transitionName = props.transitionName, dropdownStyle = props.dropdownStyle, dropdownClassName = props.dropdownClassName, _props$direction = props.direction, direction = _props$direction === void 0 ? "ltr" : _props$direction, placement = props.placement, builtinPlacements = props.builtinPlacements, dropdownMatchSelectWidth = props.dropdownMatchSelectWidth, dropdownRender = props.dropdownRender, dropdownAlign = props.dropdownAlign, getPopupContainer = props.getPopupContainer, empty = props.empty, getTriggerDOMNode = props.getTriggerDOMNode, onPopupVisibleChange = props.onPopupVisibleChange, onPopupMouseEnter = props.onPopupMouseEnter, restProps = _objectWithoutProperties(props, _excluded$w);
var dropdownPrefixCls = "".concat(prefixCls, "-dropdown");
var popupNode = popupElement;
if (dropdownRender) {
popupNode = dropdownRender(popupElement);
}
var mergedBuiltinPlacements2 = reactExports.useMemo(function() {
return builtinPlacements || getBuiltInPlacements$1(dropdownMatchSelectWidth);
}, [builtinPlacements, dropdownMatchSelectWidth]);
var mergedTransitionName = animation ? "".concat(dropdownPrefixCls, "-").concat(animation) : transitionName;
var isNumberPopupWidth = typeof dropdownMatchSelectWidth === "number";
var stretch = reactExports.useMemo(function() {
if (isNumberPopupWidth) {
return null;
}
return dropdownMatchSelectWidth === false ? "minWidth" : "width";
}, [dropdownMatchSelectWidth, isNumberPopupWidth]);
var popupStyle = dropdownStyle;
if (isNumberPopupWidth) {
popupStyle = _objectSpread2$1(_objectSpread2$1({}, popupStyle), {}, {
width: dropdownMatchSelectWidth
});
}
var triggerPopupRef = reactExports.useRef(null);
reactExports.useImperativeHandle(ref, function() {
return {
getPopupElement: function getPopupElement() {
var _triggerPopupRef$curr;
return (_triggerPopupRef$curr = triggerPopupRef.current) === null || _triggerPopupRef$curr === void 0 ? void 0 : _triggerPopupRef$curr.popupElement;
}
};
});
return /* @__PURE__ */ reactExports.createElement(Trigger, _extends$2({}, restProps, {
showAction: onPopupVisibleChange ? ["click"] : [],
hideAction: onPopupVisibleChange ? ["click"] : [],
popupPlacement: placement || (direction === "rtl" ? "bottomRight" : "bottomLeft"),
builtinPlacements: mergedBuiltinPlacements2,
prefixCls: dropdownPrefixCls,
popupTransitionName: mergedTransitionName,
popup: /* @__PURE__ */ reactExports.createElement("div", {
onMouseEnter: onPopupMouseEnter
}, popupNode),
ref: triggerPopupRef,
stretch,
popupAlign: dropdownAlign,
popupVisible: visible,
getPopupContainer,
popupClassName: cls(dropdownClassName, _defineProperty({}, "".concat(dropdownPrefixCls, "-empty"), empty)),
popupStyle,
getTriggerDOMNode,
onPopupVisibleChange
}), children);
};
var RefSelectTrigger = /* @__PURE__ */ reactExports.forwardRef(SelectTrigger);
function getKey$2(data, index2) {
var key = data.key;
var value;
if ("value" in data) {
value = data.value;
}
if (key !== null && key !== void 0) {
return key;
}
if (value !== void 0) {
return value;
}
return "rc-index-key-".concat(index2);
}
function isValidCount(value) {
return typeof value !== "undefined" && !Number.isNaN(value);
}
function fillFieldNames$2(fieldNames, childrenAsData) {
var _ref = fieldNames || {}, label = _ref.label, value = _ref.value, options = _ref.options, groupLabel = _ref.groupLabel;
var mergedLabel = label || (childrenAsData ? "children" : "label");
return {
label: mergedLabel,
value: value || "value",
options: options || "options",
groupLabel: groupLabel || mergedLabel
};
}
function flattenOptions(options) {
var _ref2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, fieldNames = _ref2.fieldNames, childrenAsData = _ref2.childrenAsData;
var flattenList = [];
var _fillFieldNames = fillFieldNames$2(fieldNames, false), fieldLabel = _fillFieldNames.label, fieldValue = _fillFieldNames.value, fieldOptions = _fillFieldNames.options, groupLabel = _fillFieldNames.groupLabel;
function dig(list, isGroupOption) {
if (!Array.isArray(list)) {
return;
}
list.forEach(function(data) {
if (isGroupOption || !(fieldOptions in data)) {
var value = data[fieldValue];
flattenList.push({
key: getKey$2(data, flattenList.length),
groupOption: isGroupOption,
data,
label: data[fieldLabel],
value
});
} else {
var grpLabel = data[groupLabel];
if (grpLabel === void 0 && childrenAsData) {
grpLabel = data.label;
}
flattenList.push({
key: getKey$2(data, flattenList.length),
group: true,
data,
label: grpLabel
});
dig(data[fieldOptions], true);
}
});
}
dig(options, false);
return flattenList;
}
function injectPropsWithOption(option) {
var newOption = _objectSpread2$1({}, option);
if (!("props" in newOption)) {
Object.defineProperty(newOption, "props", {
get: function get2() {
warningOnce(false, "Return type is option instead of Option instance. Please read value directly instead of reading from `props`.");
return newOption;
}
});
}
return newOption;
}
var getSeparatedContent = function getSeparatedContent2(text, tokens, end2) {
if (!tokens || !tokens.length) {
return null;
}
var match2 = false;
var separate = function separate2(str, _ref3) {
var _ref4 = _toArray(_ref3), token2 = _ref4[0], restTokens = _ref4.slice(1);
if (!token2) {
return [str];
}
var list2 = str.split(token2);
match2 = match2 || list2.length > 1;
return list2.reduce(function(prevList, unitStr) {
return [].concat(_toConsumableArray(prevList), _toConsumableArray(separate2(unitStr, restTokens)));
}, []).filter(Boolean);
};
var list = separate(text, tokens);
if (match2) {
return typeof end2 !== "undefined" ? list.slice(0, end2) : list;
} else {
return null;
}
};
var SelectContext = /* @__PURE__ */ reactExports.createContext(null);
function Polite(props) {
var visible = props.visible, values = props.values;
if (!visible) {
return null;
}
var MAX_COUNT = 50;
return /* @__PURE__ */ reactExports.createElement("span", {
"aria-live": "polite",
style: {
width: 0,
height: 0,
position: "absolute",
overflow: "hidden",
opacity: 0
}
}, "".concat(values.slice(0, MAX_COUNT).map(function(_ref) {
var label = _ref.label, value = _ref.value;
return ["number", "string"].includes(_typeof$2(label)) ? label : value;
}).join(", ")), values.length > MAX_COUNT ? ", ..." : null);
}
var _excluded$v = ["id", "prefixCls", "className", "showSearch", "tagRender", "direction", "omitDomProps", "displayValues", "onDisplayValuesChange", "emptyOptions", "notFoundContent", "onClear", "mode", "disabled", "loading", "getInputElement", "getRawInputElement", "open", "defaultOpen", "onDropdownVisibleChange", "activeValue", "onActiveValueChange", "activeDescendantId", "searchValue", "autoClearSearchValue", "onSearch", "onSearchSplit", "tokenSeparators", "allowClear", "suffixIcon", "clearIcon", "OptionList", "animation", "transitionName", "dropdownStyle", "dropdownClassName", "dropdownMatchSelectWidth", "dropdownRender", "dropdownAlign", "placement", "builtinPlacements", "getPopupContainer", "showAction", "onFocus", "onBlur", "onKeyUp", "onKeyDown", "onMouseDown"];
var DEFAULT_OMIT_PROPS = ["value", "onChange", "removeIcon", "placeholder", "autoFocus", "maxTagCount", "maxTagTextLength", "maxTagPlaceholder", "choiceTransitionName", "onInputKeyDown", "onPopupScroll", "tabIndex"];
var isMultiple$1 = function isMultiple2(mode) {
return mode === "tags" || mode === "multiple";
};
var BaseSelect = /* @__PURE__ */ reactExports.forwardRef(function(props, ref) {
var _customizeRawInputEle;
var id2 = props.id, prefixCls = props.prefixCls, className = props.className, showSearch = props.showSearch, tagRender = props.tagRender, direction = props.direction, omitDomProps = props.omitDomProps, displayValues = props.displayValues, onDisplayValuesChange = props.onDisplayValuesChange, emptyOptions = props.emptyOptions, _props$notFoundConten = props.notFoundContent, notFoundContent = _props$notFoundConten === void 0 ? "Not Found" : _props$notFoundConten, onClear = props.onClear, mode = props.mode, disabled = props.disabled, loading = props.loading, getInputElement = props.getInputElement, getRawInputElement = props.getRawInputElement, open2 = props.open, defaultOpen = props.defaultOpen, onDropdownVisibleChange = props.onDropdownVisibleChange, activeValue = props.activeValue, onActiveValueChange = props.onActiveValueChange, activeDescendantId = props.activeDescendantId, searchValue = props.searchValue, autoClearSearchValue = props.autoClearSearchValue, onSearch = props.onSearch, onSearchSplit = props.onSearchSplit, tokenSeparators = props.tokenSeparators, allowClear = props.allowClear, suffixIcon = props.suffixIcon, clearIcon = props.clearIcon, OptionList3 = props.OptionList, animation = props.animation, transitionName = props.transitionName, dropdownStyle = props.dropdownStyle, dropdownClassName = props.dropdownClassName, dropdownMatchSelectWidth = props.dropdownMatchSelectWidth, dropdownRender = props.dropdownRender, dropdownAlign = props.dropdownAlign, placement = props.placement, builtinPlacements = props.builtinPlacements, getPopupContainer = props.getPopupContainer, _props$showAction = props.showAction, showAction = _props$showAction === void 0 ? [] : _props$showAction, onFocus = props.onFocus, onBlur = props.onBlur, onKeyUp = props.onKeyUp, onKeyDown2 = props.onKeyDown, onMouseDown = props.onMouseDown, restProps = _objectWithoutProperties(props, _excluded$v);
var multiple = isMultiple$1(mode);
var mergedShowSearch = (showSearch !== void 0 ? showSearch : multiple) || mode === "combobox";
var domProps = _objectSpread2$1({}, restProps);
DEFAULT_OMIT_PROPS.forEach(function(propName) {
delete domProps[propName];
});
omitDomProps === null || omitDomProps === void 0 || omitDomProps.forEach(function(propName) {
delete domProps[propName];
});
var _React$useState = reactExports.useState(false), _React$useState2 = _slicedToArray(_React$useState, 2), mobile = _React$useState2[0], setMobile = _React$useState2[1];
reactExports.useEffect(function() {
setMobile(isMobile());
}, []);
var containerRef = reactExports.useRef(null);
var selectorDomRef = reactExports.useRef(null);
var triggerRef = reactExports.useRef(null);
var selectorRef = reactExports.useRef(null);
var listRef = reactExports.useRef(null);
var blurRef = reactExports.useRef(false);
var _useDelayReset = useDelayReset(), _useDelayReset2 = _slicedToArray(_useDelayReset, 3), mockFocused = _useDelayReset2[0], setMockFocused = _useDelayReset2[1], cancelSetMockFocused = _useDelayReset2[2];
reactExports.useImperativeHandle(ref, function() {
var _selectorRef$current, _selectorRef$current2;
return {
focus: (_selectorRef$current = selectorRef.current) === null || _selectorRef$current === void 0 ? void 0 : _selectorRef$current.focus,
blur: (_selectorRef$current2 = selectorRef.current) === null || _selectorRef$current2 === void 0 ? void 0 : _selectorRef$current2.blur,
scrollTo: function scrollTo2(arg) {
var _listRef$current;
return (_listRef$current = listRef.current) === null || _listRef$current === void 0 ? void 0 : _listRef$current.scrollTo(arg);
},
nativeElement: containerRef.current || selectorDomRef.current
};
});
var mergedSearchValue = reactExports.useMemo(function() {
var _displayValues$;
if (mode !== "combobox") {
return searchValue;
}
var val = (_displayValues$ = displayValues[0]) === null || _displayValues$ === void 0 ? void 0 : _displayValues$.value;
return typeof val === "string" || typeof val === "number" ? String(val) : "";
}, [searchValue, mode, displayValues]);
var customizeInputElement = mode === "combobox" && typeof getInputElement === "function" && getInputElement() || null;
var customizeRawInputElement = typeof getRawInputElement === "function" && getRawInputElement();
var customizeRawInputRef = useComposeRef(selectorDomRef, customizeRawInputElement === null || customizeRawInputElement === void 0 || (_customizeRawInputEle = customizeRawInputElement.props) === null || _customizeRawInputEle === void 0 ? void 0 : _customizeRawInputEle.ref);
var _React$useState3 = reactExports.useState(false), _React$useState4 = _slicedToArray(_React$useState3, 2), rendered = _React$useState4[0], setRendered = _React$useState4[1];
useLayoutEffect$1(function() {
setRendered(true);
}, []);
var _useMergedState = useMergedState(false, {
defaultValue: defaultOpen,
value: open2
}), _useMergedState2 = _slicedToArray(_useMergedState, 2), innerOpen = _useMergedState2[0], setInnerOpen = _useMergedState2[1];
var mergedOpen = rendered ? innerOpen : false;
var emptyListContent = !notFoundContent && emptyOptions;
if (disabled || emptyListContent && mergedOpen && mode === "combobox") {
mergedOpen = false;
}
var triggerOpen = emptyListContent ? false : mergedOpen;
var onToggleOpen = reactExports.useCallback(function(newOpen) {
var nextOpen = newOpen !== void 0 ? newOpen : !mergedOpen;
if (!disabled) {
setInnerOpen(nextOpen);
if (mergedOpen !== nextOpen) {
onDropdownVisibleChange === null || onDropdownVisibleChange === void 0 || onDropdownVisibleChange(nextOpen);
}
}
}, [disabled, mergedOpen, setInnerOpen, onDropdownVisibleChange]);
var tokenWithEnter = reactExports.useMemo(function() {
return (tokenSeparators || []).some(function(tokenSeparator) {
return ["\n", "\r\n"].includes(tokenSeparator);
});
}, [tokenSeparators]);
var _ref = reactExports.useContext(SelectContext) || {}, maxCount = _ref.maxCount, rawValues = _ref.rawValues;
var onInternalSearch = function onInternalSearch2(searchText, fromTyping, isCompositing) {
if (multiple && isValidCount(maxCount) && (rawValues === null || rawValues === void 0 ? void 0 : rawValues.size) >= maxCount) {
return;
}
var ret = true;
var newSearchText = searchText;
onActiveValueChange === null || onActiveValueChange === void 0 || onActiveValueChange(null);
var separatedList = getSeparatedContent(searchText, tokenSeparators, isValidCount(maxCount) ? maxCount - rawValues.size : void 0);
var patchLabels = isCompositing ? null : separatedList;
if (mode !== "combobox" && patchLabels) {
newSearchText = "";
onSearchSplit === null || onSearchSplit === void 0 || onSearchSplit(patchLabels);
onToggleOpen(false);
ret = false;
}
if (onSearch && mergedSearchValue !== newSearchText) {
onSearch(newSearchText, {
source: fromTyping ? "typing" : "effect"
});
}
return ret;
};
var onInternalSearchSubmit = function onInternalSearchSubmit2(searchText) {
if (!searchText || !searchText.trim()) {
return;
}
onSearch(searchText, {
source: "submit"
});
};
reactExports.useEffect(function() {
if (!mergedOpen && !multiple && mode !== "combobox") {
onInternalSearch("", false, false);
}
}, [mergedOpen]);
reactExports.useEffect(function() {
if (innerOpen && disabled) {
setInnerOpen(false);
}
if (disabled && !blurRef.current) {
setMockFocused(false);
}
}, [disabled]);
var _useLock = useLock(), _useLock2 = _slicedToArray(_useLock, 2), getClearLock = _useLock2[0], setClearLock = _useLock2[1];
var keyLockRef = reactExports.useRef(false);
var onInternalKeyDown = function onInternalKeyDown2(event) {
var clearLock = getClearLock();
var key = event.key;
var isEnterKey = key === "Enter";
if (isEnterKey) {
if (mode !== "combobox") {
event.preventDefault();
}
if (!mergedOpen) {
onToggleOpen(true);
}
}
setClearLock(!!mergedSearchValue);
if (key === "Backspace" && !clearLock && multiple && !mergedSearchValue && displayValues.length) {
var cloneDisplayValues = _toConsumableArray(displayValues);
var removedDisplayValue = null;
for (var i = cloneDisplayValues.length - 1; i >= 0; i -= 1) {
var current = cloneDisplayValues[i];
if (!current.disabled) {
cloneDisplayValues.splice(i, 1);
removedDisplayValue = current;
break;
}
}
if (removedDisplayValue) {
onDisplayValuesChange(cloneDisplayValues, {
type: "remove",
values: [removedDisplayValue]
});
}
}
for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
rest[_key - 1] = arguments[_key];
}
if (mergedOpen && (!isEnterKey || !keyLockRef.current)) {
var _listRef$current2;
(_listRef$current2 = listRef.current) === null || _listRef$current2 === void 0 || _listRef$current2.onKeyDown.apply(_listRef$current2, [event].concat(rest));
}
if (isEnterKey) {
keyLockRef.current = true;
}
onKeyDown2 === null || onKeyDown2 === void 0 || onKeyDown2.apply(void 0, [event].concat(rest));
};
var onInternalKeyUp = function onInternalKeyUp2(event) {
for (var _len2 = arguments.length, rest = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
rest[_key2 - 1] = arguments[_key2];
}
if (mergedOpen) {
var _listRef$current3;
(_listRef$current3 = listRef.current) === null || _listRef$current3 === void 0 || _listRef$current3.onKeyUp.apply(_listRef$current3, [event].concat(rest));
}
if (event.key === "Enter") {
keyLockRef.current = false;
}
onKeyUp === null || onKeyUp === void 0 || onKeyUp.apply(void 0, [event].concat(rest));
};
var onSelectorRemove = function onSelectorRemove2(val) {
var newValues = displayValues.filter(function(i) {
return i !== val;
});
onDisplayValuesChange(newValues, {
type: "remove",
values: [val]
});
};
var focusRef = reactExports.useRef(false);
var onContainerFocus = function onContainerFocus2() {
setMockFocused(true);
if (!disabled) {
if (onFocus && !focusRef.current) {
onFocus.apply(void 0, arguments);
}
if (showAction.includes("focus")) {
onToggleOpen(true);
}
}
focusRef.current = true;
};
var onContainerBlur = function onContainerBlur2() {
blurRef.current = true;
setMockFocused(false, function() {
focusRef.current = false;
blurRef.current = false;
onToggleOpen(false);
});
if (disabled) {
return;
}
if (mergedSearchValue) {
if (mode === "tags") {
onSearch(mergedSearchValue, {
source: "submit"
});
} else if (mode === "multiple") {
onSearch("", {
source: "blur"
});
}
}
if (onBlur) {
onBlur.apply(void 0, arguments);
}
};
var activeTimeoutIds = [];
reactExports.useEffect(function() {
return function() {
activeTimeoutIds.forEach(function(timeoutId) {
return clearTimeout(timeoutId);
});
activeTimeoutIds.splice(0, activeTimeoutIds.length);
};
}, []);
var onInternalMouseDown = function onInternalMouseDown2(event) {
var _triggerRef$current;
var target = event.target;
var popupElement = (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : _triggerRef$current.getPopupElement();
if (popupElement && popupElement.contains(target)) {
var timeoutId = setTimeout(function() {
var index2 = activeTimeoutIds.indexOf(timeoutId);
if (index2 !== -1) {
activeTimeoutIds.splice(index2, 1);
}
cancelSetMockFocused();
if (!mobile && !popupElement.contains(document.activeElement)) {
var _selectorRef$current3;
(_selectorRef$current3 = selectorRef.current) === null || _selectorRef$current3 === void 0 || _selectorRef$current3.focus();
}
});
activeTimeoutIds.push(timeoutId);
}
for (var _len3 = arguments.length, restArgs = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
restArgs[_key3 - 1] = arguments[_key3];
}
onMouseDown === null || onMouseDown === void 0 || onMouseDown.apply(void 0, [event].concat(restArgs));
};
var _React$useState5 = reactExports.useState({}), _React$useState6 = _slicedToArray(_React$useState5, 2), forceUpdate = _React$useState6[1];
function onPopupMouseEnter() {
forceUpdate({});
}
var onTriggerVisibleChange;
if (customizeRawInputElement) {
onTriggerVisibleChange = function onTriggerVisibleChange2(newOpen) {
onToggleOpen(newOpen);
};
}
useSelectTriggerControl(function() {
var _triggerRef$current2;
return [containerRef.current, (_triggerRef$current2 = triggerRef.current) === null || _triggerRef$current2 === void 0 ? void 0 : _triggerRef$current2.getPopupElement()];
}, triggerOpen, onToggleOpen, !!customizeRawInputElement);
var baseSelectContext = reactExports.useMemo(function() {
return _objectSpread2$1(_objectSpread2$1({}, props), {}, {
notFoundContent,
open: mergedOpen,
triggerOpen,
id: id2,
showSearch: mergedShowSearch,
multiple,
toggleOpen: onToggleOpen
});
}, [props, notFoundContent, triggerOpen, mergedOpen, id2, mergedShowSearch, multiple, onToggleOpen]);
var showSuffixIcon = !!suffixIcon || loading;
var arrowNode;
if (showSuffixIcon) {
arrowNode = /* @__PURE__ */ reactExports.createElement(TransBtn, {
className: cls("".concat(prefixCls, "-arrow"), _defineProperty({}, "".concat(prefixCls, "-arrow-loading"), loading)),
customizeIcon: suffixIcon,
customizeIconProps: {
loading,
searchValue: mergedSearchValue,
open: mergedOpen,
focused: mockFocused,
showSearch: mergedShowSearch
}
});
}
var onClearMouseDown = function onClearMouseDown2() {
var _selectorRef$current4;
onClear === null || onClear === void 0 || onClear();
(_selectorRef$current4 = selectorRef.current) === null || _selectorRef$current4 === void 0 || _selectorRef$current4.focus();
onDisplayValuesChange([], {
type: "clear",
values: displayValues
});
onInternalSearch("", false, false);
};
var _useAllowClear = useAllowClear(prefixCls, onClearMouseDown, displayValues, allowClear, clearIcon, disabled, mergedSearchValue, mode), mergedAllowClear = _useAllowClear.allowClear, clearNode = _useAllowClear.clearIcon;
var optionList = /* @__PURE__ */ reactExports.createElement(OptionList3, {
ref: listRef
});
var mergedClassName = cls(prefixCls, className, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "".concat(prefixCls, "-focused"), mockFocused), "".concat(prefixCls, "-multiple"), multiple), "".concat(prefixCls, "-single"), !multiple), "".concat(prefixCls, "-allow-clear"), allowClear), "".concat(prefixCls, "-show-arrow"), showSuffixIcon), "".concat(prefixCls, "-disabled"), disabled), "".concat(prefixCls, "-loading"), loading), "".concat(prefixCls, "-open"), mergedOpen), "".concat(prefixCls, "-customize-input"), customizeInputElement), "".concat(prefixCls, "-show-search"), mergedShowSearch));
var selectorNode = /* @__PURE__ */ reactExports.createElement(RefSelectTrigger, {
ref: triggerRef,
disabled,
prefixCls,
visible: triggerOpen,
popupElement: optionList,
animation,
transitionName,
dropdownStyle,
dropdownClassName,
direction,
dropdownMatchSelectWidth,
dropdownRender,
dropdownAlign,
placement,
builtinPlacements,
getPopupContainer,
empty: emptyOptions,
getTriggerDOMNode: function getTriggerDOMNode(node2) {
return (
// TODO: This is workaround and should be removed in `rc-select`
// And use new standard `nativeElement` for ref.
// But we should update `rc-resize-observer` first.
selectorDomRef.current || node2
);
},
onPopupVisibleChange: onTriggerVisibleChange,
onPopupMouseEnter
}, customizeRawInputElement ? /* @__PURE__ */ reactExports.cloneElement(customizeRawInputElement, {
ref: customizeRawInputRef
}) : /* @__PURE__ */ reactExports.createElement(ForwardSelector, _extends$2({}, props, {
domRef: selectorDomRef,
prefixCls,
inputElement: customizeInputElement,
ref: selectorRef,
id: id2,
showSearch: mergedShowSearch,
autoClearSearchValue,
mode,
activeDescendantId,
tagRender,
values: displayValues,
open: mergedOpen,
onToggleOpen,
activeValue,
searchValue: mergedSearchValue,
onSearch: onInternalSearch,
onSearchSubmit: onInternalSearchSubmit,
onRemove: onSelectorRemove,
tokenWithEnter
})));
var renderNode2;
if (customizeRawInputElement) {
renderNode2 = selectorNode;
} else {
renderNode2 = /* @__PURE__ */ reactExports.createElement("div", _extends$2({
className: mergedClassName
}, domProps, {
ref: containerRef,
onMouseDown: onInternalMouseDown,
onKeyDown: onInternalKeyDown,
onKeyUp: onInternalKeyUp,
onFocus: onContainerFocus,
onBlur: onContainerBlur
}), /* @__PURE__ */ reactExports.createElement(Polite, {
visible: mockFocused && !mergedOpen,
values: displayValues
}), selectorNode, arrowNode, mergedAllowClear && clearNode);
}
return /* @__PURE__ */ reactExports.createElement(BaseSelectContext.Provider, {
value: baseSelectContext
}, renderNode2);
});
var OptGroup = function OptGroup2() {
return null;
};
OptGroup.isSelectOptGroup = true;
var Option = function Option2() {
return null;
};
Option.isSelectOption = true;
var Filler = /* @__PURE__ */ reactExports.forwardRef(function(_ref, ref) {
var height = _ref.height, offsetY = _ref.offsetY, offsetX = _ref.offsetX, children = _ref.children, prefixCls = _ref.prefixCls, onInnerResize = _ref.onInnerResize, innerProps = _ref.innerProps, rtl = _ref.rtl, extra = _ref.extra;
var outerStyle = {};
var innerStyle = {
display: "flex",
flexDirection: "column"
};
if (offsetY !== void 0) {
outerStyle = {
height,
position: "relative",
overflow: "hidden"
};
innerStyle = _objectSpread2$1(_objectSpread2$1({}, innerStyle), {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({
transform: "translateY(".concat(offsetY, "px)")
}, rtl ? "marginRight" : "marginLeft", -offsetX), "position", "absolute"), "left", 0), "right", 0), "top", 0));
}
return /* @__PURE__ */ reactExports.createElement("div", {
style: outerStyle
}, /* @__PURE__ */ reactExports.createElement(RefResizeObserver, {
onResize: function onResize2(_ref2) {
var offsetHeight = _ref2.offsetHeight;
if (offsetHeight && onInnerResize) {
onInnerResize();
}
}
}, /* @__PURE__ */ reactExports.createElement("div", _extends$2({
style: innerStyle,
className: cls(_defineProperty({}, "".concat(prefixCls, "-holder-inner"), prefixCls)),
ref
}, innerProps), children, extra)));
});
Filler.displayName = "Filler";
function Item$1(_ref) {
var children = _ref.children, setRef = _ref.setRef;
var refFunc = reactExports.useCallback(function(node2) {
setRef(node2);
}, []);
return /* @__PURE__ */ reactExports.cloneElement(children, {
ref: refFunc
});
}
function useChildren(list, startIndex, endIndex, scrollWidth, offsetX, setNodeRef, renderFunc, _ref) {
var getKey2 = _ref.getKey;
return list.slice(startIndex, endIndex + 1).map(function(item, index2) {
var eleIndex = startIndex + index2;
var node2 = renderFunc(item, eleIndex, {
style: {
width: scrollWidth
},
offsetX
});
var key = getKey2(item);
return /* @__PURE__ */ reactExports.createElement(Item$1, {
key,
setRef: function setRef(ele) {
return setNodeRef(item, ele);
}
}, node2);
});
}
function findListDiffIndex(originList, targetList, getKey2) {
var originLen = originList.length;
var targetLen = targetList.length;
var shortList;
var longList;
if (originLen === 0 && targetLen === 0) {
return null;
}
if (originLen < targetLen) {
shortList = originList;
longList = targetList;
} else {
shortList = targetList;
longList = originList;
}
var notExistKey = {
__EMPTY_ITEM__: true
};
function getItemKey(item) {
if (item !== void 0) {
return getKey2(item);
}
return notExistKey;
}
var diffIndex = null;
var multiple = Math.abs(originLen - targetLen) !== 1;
for (var i = 0; i < longList.length; i += 1) {
var shortKey = getItemKey(shortList[i]);
var longKey = getItemKey(longList[i]);
if (shortKey !== longKey) {
diffIndex = i;
multiple = multiple || shortKey !== getItemKey(longList[i + 1]);
break;
}
}
return diffIndex === null ? null : {
index: diffIndex,
multiple
};
}
function useDiffItem(data, getKey2, onDiff) {
var _React$useState = reactExports.useState(data), _React$useState2 = _slicedToArray(_React$useState, 2), prevData = _React$useState2[0], setPrevData = _React$useState2[1];
var _React$useState3 = reactExports.useState(null), _React$useState4 = _slicedToArray(_React$useState3, 2), diffItem = _React$useState4[0], setDiffItem = _React$useState4[1];
reactExports.useEffect(function() {
var diff = findListDiffIndex(prevData || [], data || [], getKey2);
if ((diff === null || diff === void 0 ? void 0 : diff.index) !== void 0) {
setDiffItem(data[diff.index]);
}
setPrevData(data);
}, [data]);
return [diffItem];
}
var isFF = (typeof navigator === "undefined" ? "undefined" : _typeof$2(navigator)) === "object" && /Firefox/i.test(navigator.userAgent);
const useOriginScroll = function(isScrollAtTop, isScrollAtBottom, isScrollAtLeft, isScrollAtRight) {
var lockRef = reactExports.useRef(false);
var lockTimeoutRef = reactExports.useRef(null);
function lockScroll() {
clearTimeout(lockTimeoutRef.current);
lockRef.current = true;
lockTimeoutRef.current = setTimeout(function() {
lockRef.current = false;
}, 50);
}
var scrollPingRef = reactExports.useRef({
top: isScrollAtTop,
bottom: isScrollAtBottom,
left: isScrollAtLeft,
right: isScrollAtRight
});
scrollPingRef.current.top = isScrollAtTop;
scrollPingRef.current.bottom = isScrollAtBottom;
scrollPingRef.current.left = isScrollAtLeft;
scrollPingRef.current.right = isScrollAtRight;
return function(isHorizontal, delta) {
var smoothOffset = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
var originScroll = isHorizontal ? (
// Pass origin wheel when on the left
delta < 0 && scrollPingRef.current.left || // Pass origin wheel when on the right
delta > 0 && scrollPingRef.current.right
) : delta < 0 && scrollPingRef.current.top || // Pass origin wheel when on the bottom
delta > 0 && scrollPingRef.current.bottom;
if (smoothOffset && originScroll) {
clearTimeout(lockTimeoutRef.current);
lockRef.current = false;
} else if (!originScroll || lockRef.current) {
lockScroll();
}
return !lockRef.current && originScroll;
};
};
function useFrameWheel(inVirtual, isScrollAtTop, isScrollAtBottom, isScrollAtLeft, isScrollAtRight, horizontalScroll, onWheelDelta) {
var offsetRef = reactExports.useRef(0);
var nextFrameRef = reactExports.useRef(null);
var wheelValueRef = reactExports.useRef(null);
var isMouseScrollRef = reactExports.useRef(false);
var originScroll = useOriginScroll(isScrollAtTop, isScrollAtBottom, isScrollAtLeft, isScrollAtRight);
function onWheelY(e2, deltaY) {
wrapperRaf.cancel(nextFrameRef.current);
if (originScroll(false, deltaY)) return;
var event = e2;
if (!event._virtualHandled) {
event._virtualHandled = true;
} else {
return;
}
offsetRef.current += deltaY;
wheelValueRef.current = deltaY;
if (!isFF) {
event.preventDefault();
}
nextFrameRef.current = wrapperRaf(function() {
var patchMultiple = isMouseScrollRef.current ? 10 : 1;
onWheelDelta(offsetRef.current * patchMultiple, false);
offsetRef.current = 0;
});
}
function onWheelX(event, deltaX) {
onWheelDelta(deltaX, true);
if (!isFF) {
event.preventDefault();
}
}
var wheelDirectionRef = reactExports.useRef(null);
var wheelDirectionCleanRef = reactExports.useRef(null);
function onWheel(event) {
if (!inVirtual) return;
wrapperRaf.cancel(wheelDirectionCleanRef.current);
wheelDirectionCleanRef.current = wrapperRaf(function() {
wheelDirectionRef.current = null;
}, 2);
var deltaX = event.deltaX, deltaY = event.deltaY, shiftKey = event.shiftKey;
var mergedDeltaX = deltaX;
var mergedDeltaY = deltaY;
if (wheelDirectionRef.current === "sx" || !wheelDirectionRef.current && (shiftKey || false) && deltaY && !deltaX) {
mergedDeltaX = deltaY;
mergedDeltaY = 0;
wheelDirectionRef.current = "sx";
}
var absX = Math.abs(mergedDeltaX);
var absY = Math.abs(mergedDeltaY);
if (wheelDirectionRef.current === null) {
wheelDirectionRef.current = horizontalScroll && absX > absY ? "x" : "y";
}
if (wheelDirectionRef.current === "y") {
onWheelY(event, mergedDeltaY);
} else {
onWheelX(event, mergedDeltaX);
}
}
function onFireFoxScroll(event) {
if (!inVirtual) return;
isMouseScrollRef.current = event.detail === wheelValueRef.current;
}
return [onWheel, onFireFoxScroll];
}
function useGetSize(mergedData, getKey2, heights, itemHeight) {
var _React$useMemo = reactExports.useMemo(function() {
return [/* @__PURE__ */ new Map(), []];
}, [mergedData, heights.id, itemHeight]), _React$useMemo2 = _slicedToArray(_React$useMemo, 2), key2Index = _React$useMemo2[0], bottomList = _React$useMemo2[1];
var getSize2 = function getSize3(startKey) {
var endKey = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : startKey;
var startIndex = key2Index.get(startKey);
var endIndex = key2Index.get(endKey);
if (startIndex === void 0 || endIndex === void 0) {
var dataLen = mergedData.length;
for (var i = bottomList.length; i < dataLen; i += 1) {
var _heights$get;
var item = mergedData[i];
var key = getKey2(item);
key2Index.set(key, i);
var cacheHeight = (_heights$get = heights.get(key)) !== null && _heights$get !== void 0 ? _heights$get : itemHeight;
bottomList[i] = (bottomList[i - 1] || 0) + cacheHeight;
if (key === startKey) {
startIndex = i;
}
if (key === endKey) {
endIndex = i;
}
if (startIndex !== void 0 && endIndex !== void 0) {
break;
}
}
}
return {
top: bottomList[startIndex - 1] || 0,
bottom: bottomList[endIndex]
};
};
return getSize2;
}
var CacheMap = /* @__PURE__ */ function() {
function CacheMap2() {
_classCallCheck(this, CacheMap2);
_defineProperty(this, "maps", void 0);
_defineProperty(this, "id", 0);
this.maps = /* @__PURE__ */ Object.create(null);
}
_createClass(CacheMap2, [{
key: "set",
value: function set2(key, value) {
this.maps[key] = value;
this.id += 1;
}
}, {
key: "get",
value: function get2(key) {
return this.maps[key];
}
}]);
return CacheMap2;
}();
function useHeights(getKey2, onItemAdd, onItemRemove) {
var _React$useState = reactExports.useState(0), _React$useState2 = _slicedToArray(_React$useState, 2), updatedMark = _React$useState2[0], setUpdatedMark = _React$useState2[1];
var instanceRef = reactExports.useRef(/* @__PURE__ */ new Map());
var heightsRef = reactExports.useRef(new CacheMap());
var collectRafRef = reactExports.useRef();
function cancelRaf() {
wrapperRaf.cancel(collectRafRef.current);
}
function collectHeight() {
var sync = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false;
cancelRaf();
var doCollect = function doCollect2() {
instanceRef.current.forEach(function(element, key) {
if (element && element.offsetParent) {
var htmlElement = findDOMNode(element);
var offsetHeight = htmlElement.offsetHeight;
if (heightsRef.current.get(key) !== offsetHeight) {
heightsRef.current.set(key, htmlElement.offsetHeight);
}
}
});
setUpdatedMark(function(c2) {
return c2 + 1;
});
};
if (sync) {
doCollect();
} else {
collectRafRef.current = wrapperRaf(doCollect);
}
}
function setInstanceRef(item, instance) {
var key = getKey2(item);
instanceRef.current.get(key);
if (instance) {
instanceRef.current.set(key, instance);
collectHeight();
} else {
instanceRef.current.delete(key);
}
}
reactExports.useEffect(function() {
return cancelRaf;
}, []);
return [setInstanceRef, collectHeight, heightsRef.current, updatedMark];
}
var SMOOTH_PTG = 14 / 15;
function useMobileTouchMove(inVirtual, listRef, callback) {
var touchedRef = reactExports.useRef(false);
var touchXRef = reactExports.useRef(0);
var touchYRef = reactExports.useRef(0);
var elementRef = reactExports.useRef(null);
var intervalRef = reactExports.useRef(null);
var cleanUpEvents;
var onTouchMove = function onTouchMove2(e2) {
if (touchedRef.current) {
var currentX = Math.ceil(e2.touches[0].pageX);
var currentY = Math.ceil(e2.touches[0].pageY);
var offsetX = touchXRef.current - currentX;
var offsetY = touchYRef.current - currentY;
var _isHorizontal = Math.abs(offsetX) > Math.abs(offsetY);
if (_isHorizontal) {
touchXRef.current = currentX;
} else {
touchYRef.current = currentY;
}
var scrollHandled = callback(_isHorizontal, _isHorizontal ? offsetX : offsetY, false, e2);
if (scrollHandled) {
e2.preventDefault();
}
clearInterval(intervalRef.current);
if (scrollHandled) {
intervalRef.current = setInterval(function() {
if (_isHorizontal) {
offsetX *= SMOOTH_PTG;
} else {
offsetY *= SMOOTH_PTG;
}
var offset2 = Math.floor(_isHorizontal ? offsetX : offsetY);
if (!callback(_isHorizontal, offset2, true) || Math.abs(offset2) <= 0.1) {
clearInterval(intervalRef.current);
}
}, 16);
}
}
};
var onTouchEnd = function onTouchEnd2() {
touchedRef.current = false;
cleanUpEvents();
};
var onTouchStart = function onTouchStart2(e2) {
cleanUpEvents();
if (e2.touches.length === 1 && !touchedRef.current) {
touchedRef.current = true;
touchXRef.current = Math.ceil(e2.touches[0].pageX);
touchYRef.current = Math.ceil(e2.touches[0].pageY);
elementRef.current = e2.target;
elementRef.current.addEventListener("touchmove", onTouchMove, {
passive: false
});
elementRef.current.addEventListener("touchend", onTouchEnd, {
passive: true
});
}
};
cleanUpEvents = function cleanUpEvents2() {
if (elementRef.current) {
elementRef.current.removeEventListener("touchmove", onTouchMove);
elementRef.current.removeEventListener("touchend", onTouchEnd);
}
};
useLayoutEffect$1(function() {
if (inVirtual) {
listRef.current.addEventListener("touchstart", onTouchStart, {
passive: true
});
}
return function() {
var _listRef$current;
(_listRef$current = listRef.current) === null || _listRef$current === void 0 || _listRef$current.removeEventListener("touchstart", onTouchStart);
cleanUpEvents();
clearInterval(intervalRef.current);
};
}, [inVirtual]);
}
var MAX_TIMES = 10;
function useScrollTo(containerRef, data, heights, itemHeight, getKey2, collectHeight, syncScrollTop, triggerFlash) {
var scrollRef = reactExports.useRef();
var _React$useState = reactExports.useState(null), _React$useState2 = _slicedToArray(_React$useState, 2), syncState = _React$useState2[0], setSyncState = _React$useState2[1];
useLayoutEffect$1(function() {
if (syncState && syncState.times < MAX_TIMES) {
if (!containerRef.current) {
setSyncState(function(ori) {
return _objectSpread2$1({}, ori);
});
return;
}
collectHeight();
var targetAlign = syncState.targetAlign, originAlign = syncState.originAlign, index2 = syncState.index, offset2 = syncState.offset;
var height = containerRef.current.clientHeight;
var needCollectHeight = false;
var newTargetAlign = targetAlign;
var targetTop = null;
if (height) {
var mergedAlign = targetAlign || originAlign;
var stackTop = 0;
var itemTop = 0;
var itemBottom = 0;
var maxLen = Math.min(data.length - 1, index2);
for (var i = 0; i <= maxLen; i += 1) {
var key = getKey2(data[i]);
itemTop = stackTop;
var cacheHeight = heights.get(key);
itemBottom = itemTop + (cacheHeight === void 0 ? itemHeight : cacheHeight);
stackTop = itemBottom;
}
var leftHeight = mergedAlign === "top" ? offset2 : height - offset2;
for (var _i = maxLen; _i >= 0; _i -= 1) {
var _key = getKey2(data[_i]);
var _cacheHeight = heights.get(_key);
if (_cacheHeight === void 0) {
needCollectHeight = true;
break;
}
leftHeight -= _cacheHeight;
if (leftHeight <= 0) {
break;
}
}
switch (mergedAlign) {
case "top":
targetTop = itemTop - offset2;
break;
case "bottom":
targetTop = itemBottom - height + offset2;
break;
default: {
var scrollTop = containerRef.current.scrollTop;
var scrollBottom = scrollTop + height;
if (itemTop < scrollTop) {
newTargetAlign = "top";
} else if (itemBottom > scrollBottom) {
newTargetAlign = "bottom";
}
}
}
if (targetTop !== null) {
syncScrollTop(targetTop);
}
if (targetTop !== syncState.lastTop) {
needCollectHeight = true;
}
}
if (needCollectHeight) {
setSyncState(_objectSpread2$1(_objectSpread2$1({}, syncState), {}, {
times: syncState.times + 1,
targetAlign: newTargetAlign,
lastTop: targetTop
}));
}
}
}, [syncState, containerRef.current]);
return function(arg) {
if (arg === null || arg === void 0) {
triggerFlash();
return;
}
wrapperRaf.cancel(scrollRef.current);
if (typeof arg === "number") {
syncScrollTop(arg);
} else if (arg && _typeof$2(arg) === "object") {
var index2;
var align = arg.align;
if ("index" in arg) {
index2 = arg.index;
} else {
index2 = data.findIndex(function(item) {
return getKey2(item) === arg.key;
});
}
var _arg$offset = arg.offset, offset2 = _arg$offset === void 0 ? 0 : _arg$offset;
setSyncState({
times: 0,
index: index2,
offset: offset2,
originAlign: align
});
}
};
}
function getPageXY(e2, horizontal) {
var obj = "touches" in e2 ? e2.touches[0] : e2;
return obj[horizontal ? "pageX" : "pageY"];
}
var ScrollBar = /* @__PURE__ */ reactExports.forwardRef(function(props, ref) {
var prefixCls = props.prefixCls, rtl = props.rtl, scrollOffset = props.scrollOffset, scrollRange = props.scrollRange, onStartMove = props.onStartMove, onStopMove = props.onStopMove, onScroll = props.onScroll, horizontal = props.horizontal, spinSize = props.spinSize, containerSize = props.containerSize, style2 = props.style, propsThumbStyle = props.thumbStyle;
var _React$useState = reactExports.useState(false), _React$useState2 = _slicedToArray(_React$useState, 2), dragging = _React$useState2[0], setDragging = _React$useState2[1];
var _React$useState3 = reactExports.useState(null), _React$useState4 = _slicedToArray(_React$useState3, 2), pageXY = _React$useState4[0], setPageXY = _React$useState4[1];
var _React$useState5 = reactExports.useState(null), _React$useState6 = _slicedToArray(_React$useState5, 2), startTop = _React$useState6[0], setStartTop = _React$useState6[1];
var isLTR = !rtl;
var scrollbarRef = reactExports.useRef();
var thumbRef = reactExports.useRef();
var _React$useState7 = reactExports.useState(false), _React$useState8 = _slicedToArray(_React$useState7, 2), visible = _React$useState8[0], setVisible = _React$useState8[1];
var visibleTimeoutRef = reactExports.useRef();
var delayHidden = function delayHidden2() {
clearTimeout(visibleTimeoutRef.current);
setVisible(true);
visibleTimeoutRef.current = setTimeout(function() {
setVisible(false);
}, 3e3);
};
var enableScrollRange = scrollRange - containerSize || 0;
var enableOffsetRange = containerSize - spinSize || 0;
var top = reactExports.useMemo(function() {
if (scrollOffset === 0 || enableScrollRange === 0) {
return 0;
}
var ptg = scrollOffset / enableScrollRange;
return ptg * enableOffsetRange;
}, [scrollOffset, enableScrollRange, enableOffsetRange]);
var onContainerMouseDown = function onContainerMouseDown2(e2) {
e2.stopPropagation();
e2.preventDefault();
};
var stateRef = reactExports.useRef({
top,
dragging,
pageY: pageXY,
startTop
});
stateRef.current = {
top,
dragging,
pageY: pageXY,
startTop
};
var onThumbMouseDown = function onThumbMouseDown2(e2) {
setDragging(true);
setPageXY(getPageXY(e2, horizontal));
setStartTop(stateRef.current.top);
onStartMove();
e2.stopPropagation();
e2.preventDefault();
};
reactExports.useEffect(function() {
var onScrollbarTouchStart = function onScrollbarTouchStart2(e2) {
e2.preventDefault();
};
var scrollbarEle = scrollbarRef.current;
var thumbEle = thumbRef.current;
scrollbarEle.addEventListener("touchstart", onScrollbarTouchStart, {
passive: false
});
thumbEle.addEventListener("touchstart", onThumbMouseDown, {
passive: false
});
return function() {
scrollbarEle.removeEventListener("touchstart", onScrollbarTouchStart);
thumbEle.removeEventListener("touchstart", onThumbMouseDown);
};
}, []);
var enableScrollRangeRef = reactExports.useRef();
enableScrollRangeRef.current = enableScrollRange;
var enableOffsetRangeRef = reactExports.useRef();
enableOffsetRangeRef.current = enableOffsetRange;
reactExports.useEffect(function() {
if (dragging) {
var moveRafId;
var onMouseMove = function onMouseMove2(e2) {
var _stateRef$current = stateRef.current, stateDragging = _stateRef$current.dragging, statePageY = _stateRef$current.pageY, stateStartTop = _stateRef$current.startTop;
wrapperRaf.cancel(moveRafId);
var rect = scrollbarRef.current.getBoundingClientRect();
var scale2 = containerSize / (horizontal ? rect.width : rect.height);
if (stateDragging) {
var offset2 = (getPageXY(e2, horizontal) - statePageY) * scale2;
var newTop = stateStartTop;
if (!isLTR && horizontal) {
newTop -= offset2;
} else {
newTop += offset2;
}
var tmpEnableScrollRange = enableScrollRangeRef.current;
var tmpEnableOffsetRange = enableOffsetRangeRef.current;
var ptg = tmpEnableOffsetRange ? newTop / tmpEnableOffsetRange : 0;
var newScrollTop = Math.ceil(ptg * tmpEnableScrollRange);
newScrollTop = Math.max(newScrollTop, 0);
newScrollTop = Math.min(newScrollTop, tmpEnableScrollRange);
moveRafId = wrapperRaf(function() {
onScroll(newScrollTop, horizontal);
});
}
};
var onMouseUp = function onMouseUp2() {
setDragging(false);
onStopMove();
};
window.addEventListener("mousemove", onMouseMove, {
passive: true
});
window.addEventListener("touchmove", onMouseMove, {
passive: true
});
window.addEventListener("mouseup", onMouseUp, {
passive: true
});
window.addEventListener("touchend", onMouseUp, {
passive: true
});
return function() {
window.removeEventListener("mousemove", onMouseMove);
window.removeEventListener("touchmove", onMouseMove);
window.removeEventListener("mouseup", onMouseUp);
window.removeEventListener("touchend", onMouseUp);
wrapperRaf.cancel(moveRafId);
};
}
}, [dragging]);
reactExports.useEffect(function() {
delayHidden();
return function() {
clearTimeout(visibleTimeoutRef.current);
};
}, [scrollOffset]);
reactExports.useImperativeHandle(ref, function() {
return {
delayHidden
};
});
var scrollbarPrefixCls = "".concat(prefixCls, "-scrollbar");
var containerStyle = {
position: "absolute",
visibility: visible ? null : "hidden"
};
var thumbStyle = {
position: "absolute",
background: "rgba(0, 0, 0, 0.5)",
borderRadius: 99,
cursor: "pointer",
userSelect: "none"
};
if (horizontal) {
containerStyle.height = 8;
containerStyle.left = 0;
containerStyle.right = 0;
containerStyle.bottom = 0;
thumbStyle.height = "100%";
thumbStyle.width = spinSize;
if (isLTR) {
thumbStyle.left = top;
} else {
thumbStyle.right = top;
}
} else {
containerStyle.width = 8;
containerStyle.top = 0;
containerStyle.bottom = 0;
if (isLTR) {
containerStyle.right = 0;
} else {
containerStyle.left = 0;
}
thumbStyle.width = "100%";
thumbStyle.height = spinSize;
thumbStyle.top = top;
}
return /* @__PURE__ */ reactExports.createElement("div", {
ref: scrollbarRef,
className: cls(scrollbarPrefixCls, _defineProperty(_defineProperty(_defineProperty({}, "".concat(scrollbarPrefixCls, "-horizontal"), horizontal), "".concat(scrollbarPrefixCls, "-vertical"), !horizontal), "".concat(scrollbarPrefixCls, "-visible"), visible)),
style: _objectSpread2$1(_objectSpread2$1({}, containerStyle), style2),
onMouseDown: onContainerMouseDown,
onMouseMove: delayHidden
}, /* @__PURE__ */ reactExports.createElement("div", {
ref: thumbRef,
className: cls("".concat(scrollbarPrefixCls, "-thumb"), _defineProperty({}, "".concat(scrollbarPrefixCls, "-thumb-moving"), dragging)),
style: _objectSpread2$1(_objectSpread2$1({}, thumbStyle), propsThumbStyle),
onMouseDown: onThumbMouseDown
}));
});
var MIN_SIZE = 20;
function getSpinSize() {
var containerSize = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0;
var scrollRange = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
var baseSize = containerSize / scrollRange * containerSize;
if (isNaN(baseSize)) {
baseSize = 0;
}
baseSize = Math.max(baseSize, MIN_SIZE);
return Math.floor(baseSize);
}
var _excluded$u = ["prefixCls", "className", "height", "itemHeight", "fullHeight", "style", "data", "children", "itemKey", "virtual", "direction", "scrollWidth", "component", "onScroll", "onVirtualScroll", "onVisibleChange", "innerProps", "extraRender", "styles"];
var EMPTY_DATA$1 = [];
var ScrollStyle = {
overflowY: "auto",
overflowAnchor: "none"
};
function RawList(props, ref) {
var _props$prefixCls = props.prefixCls, prefixCls = _props$prefixCls === void 0 ? "rc-virtual-list" : _props$prefixCls, className = props.className, height = props.height, itemHeight = props.itemHeight, _props$fullHeight = props.fullHeight, fullHeight = _props$fullHeight === void 0 ? true : _props$fullHeight, style2 = props.style, data = props.data, children = props.children, itemKey2 = props.itemKey, virtual = props.virtual, direction = props.direction, scrollWidth = props.scrollWidth, _props$component = props.component, Component = _props$component === void 0 ? "div" : _props$component, onScroll = props.onScroll, onVirtualScroll = props.onVirtualScroll, onVisibleChange = props.onVisibleChange, innerProps = props.innerProps, extraRender = props.extraRender, styles2 = props.styles, restProps = _objectWithoutProperties(props, _excluded$u);
var getKey2 = reactExports.useCallback(function(item) {
if (typeof itemKey2 === "function") {
return itemKey2(item);
}
return item === null || item === void 0 ? void 0 : item[itemKey2];
}, [itemKey2]);
var _useHeights = useHeights(getKey2), _useHeights2 = _slicedToArray(_useHeights, 4), setInstanceRef = _useHeights2[0], collectHeight = _useHeights2[1], heights = _useHeights2[2], heightUpdatedMark = _useHeights2[3];
var useVirtual = !!(virtual !== false && height && itemHeight);
var containerHeight = reactExports.useMemo(function() {
return Object.values(heights.maps).reduce(function(total, curr) {
return total + curr;
}, 0);
}, [heights.id, heights.maps]);
var inVirtual = useVirtual && data && (Math.max(itemHeight * data.length, containerHeight) > height || !!scrollWidth);
var isRTL = direction === "rtl";
var mergedClassName = cls(prefixCls, _defineProperty({}, "".concat(prefixCls, "-rtl"), isRTL), className);
var mergedData = data || EMPTY_DATA$1;
var componentRef = reactExports.useRef();
var fillerInnerRef = reactExports.useRef();
var containerRef = reactExports.useRef();
var _useState = reactExports.useState(0), _useState2 = _slicedToArray(_useState, 2), offsetTop = _useState2[0], setOffsetTop = _useState2[1];
var _useState3 = reactExports.useState(0), _useState4 = _slicedToArray(_useState3, 2), offsetLeft = _useState4[0], setOffsetLeft = _useState4[1];
var _useState5 = reactExports.useState(false), _useState6 = _slicedToArray(_useState5, 2), scrollMoving = _useState6[0], setScrollMoving = _useState6[1];
var onScrollbarStartMove = function onScrollbarStartMove2() {
setScrollMoving(true);
};
var onScrollbarStopMove = function onScrollbarStopMove2() {
setScrollMoving(false);
};
var sharedConfig = {
getKey: getKey2
};
function syncScrollTop(newTop) {
setOffsetTop(function(origin) {
var value;
if (typeof newTop === "function") {
value = newTop(origin);
} else {
value = newTop;
}
var alignedTop = keepInRange(value);
componentRef.current.scrollTop = alignedTop;
return alignedTop;
});
}
var rangeRef = reactExports.useRef({
start: 0,
end: mergedData.length
});
var diffItemRef = reactExports.useRef();
var _useDiffItem = useDiffItem(mergedData, getKey2), _useDiffItem2 = _slicedToArray(_useDiffItem, 1), diffItem = _useDiffItem2[0];
diffItemRef.current = diffItem;
var _React$useMemo = reactExports.useMemo(function() {
if (!useVirtual) {
return {
scrollHeight: void 0,
start: 0,
end: mergedData.length - 1,
offset: void 0
};
}
if (!inVirtual) {
var _fillerInnerRef$curre;
return {
scrollHeight: ((_fillerInnerRef$curre = fillerInnerRef.current) === null || _fillerInnerRef$curre === void 0 ? void 0 : _fillerInnerRef$curre.offsetHeight) || 0,
start: 0,
end: mergedData.length - 1,
offset: void 0
};
}
var itemTop = 0;
var startIndex;
var startOffset;
var endIndex;
var dataLen = mergedData.length;
for (var i = 0; i < dataLen; i += 1) {
var _item = mergedData[i];
var key = getKey2(_item);
var cacheHeight = heights.get(key);
var currentItemBottom = itemTop + (cacheHeight === void 0 ? itemHeight : cacheHeight);
if (currentItemBottom >= offsetTop && startIndex === void 0) {
startIndex = i;
startOffset = itemTop;
}
if (currentItemBottom > offsetTop + height && endIndex === void 0) {
endIndex = i;
}
itemTop = currentItemBottom;
}
if (startIndex === void 0) {
startIndex = 0;
startOffset = 0;
endIndex = Math.ceil(height / itemHeight);
}
if (endIndex === void 0) {
endIndex = mergedData.length - 1;
}
endIndex = Math.min(endIndex + 1, mergedData.length - 1);
return {
scrollHeight: itemTop,
start: startIndex,
end: endIndex,
offset: startOffset
};
}, [inVirtual, useVirtual, offsetTop, mergedData, heightUpdatedMark, height]), scrollHeight = _React$useMemo.scrollHeight, start2 = _React$useMemo.start, end2 = _React$useMemo.end, fillerOffset = _React$useMemo.offset;
rangeRef.current.start = start2;
rangeRef.current.end = end2;
var _React$useState = reactExports.useState({
width: 0,
height
}), _React$useState2 = _slicedToArray(_React$useState, 2), size = _React$useState2[0], setSize = _React$useState2[1];
var onHolderResize = function onHolderResize2(sizeInfo) {
setSize({
width: sizeInfo.offsetWidth,
height: sizeInfo.offsetHeight
});
};
var verticalScrollBarRef = reactExports.useRef();
var horizontalScrollBarRef = reactExports.useRef();
var horizontalScrollBarSpinSize = reactExports.useMemo(function() {
return getSpinSize(size.width, scrollWidth);
}, [size.width, scrollWidth]);
var verticalScrollBarSpinSize = reactExports.useMemo(function() {
return getSpinSize(size.height, scrollHeight);
}, [size.height, scrollHeight]);
var maxScrollHeight = scrollHeight - height;
var maxScrollHeightRef = reactExports.useRef(maxScrollHeight);
maxScrollHeightRef.current = maxScrollHeight;
function keepInRange(newScrollTop) {
var newTop = newScrollTop;
if (!Number.isNaN(maxScrollHeightRef.current)) {
newTop = Math.min(newTop, maxScrollHeightRef.current);
}
newTop = Math.max(newTop, 0);
return newTop;
}
var isScrollAtTop = offsetTop <= 0;
var isScrollAtBottom = offsetTop >= maxScrollHeight;
var isScrollAtLeft = offsetLeft <= 0;
var isScrollAtRight = offsetLeft >= scrollWidth;
var originScroll = useOriginScroll(isScrollAtTop, isScrollAtBottom, isScrollAtLeft, isScrollAtRight);
var getVirtualScrollInfo = function getVirtualScrollInfo2() {
return {
x: isRTL ? -offsetLeft : offsetLeft,
y: offsetTop
};
};
var lastVirtualScrollInfoRef = reactExports.useRef(getVirtualScrollInfo());
var triggerScroll = useEvent(function(params) {
if (onVirtualScroll) {
var nextInfo = _objectSpread2$1(_objectSpread2$1({}, getVirtualScrollInfo()), params);
if (lastVirtualScrollInfoRef.current.x !== nextInfo.x || lastVirtualScrollInfoRef.current.y !== nextInfo.y) {
onVirtualScroll(nextInfo);
lastVirtualScrollInfoRef.current = nextInfo;
}
}
});
function onScrollBar(newScrollOffset, horizontal) {
var newOffset = newScrollOffset;
if (horizontal) {
reactDomExports.flushSync(function() {
setOffsetLeft(newOffset);
});
triggerScroll();
} else {
syncScrollTop(newOffset);
}
}
function onFallbackScroll(e2) {
var newScrollTop = e2.currentTarget.scrollTop;
if (newScrollTop !== offsetTop) {
syncScrollTop(newScrollTop);
}
onScroll === null || onScroll === void 0 || onScroll(e2);
triggerScroll();
}
var keepInHorizontalRange = function keepInHorizontalRange2(nextOffsetLeft) {
var tmpOffsetLeft = nextOffsetLeft;
var max3 = !!scrollWidth ? scrollWidth - size.width : 0;
tmpOffsetLeft = Math.max(tmpOffsetLeft, 0);
tmpOffsetLeft = Math.min(tmpOffsetLeft, max3);
return tmpOffsetLeft;
};
var onWheelDelta = useEvent(function(offsetXY, fromHorizontal) {
if (fromHorizontal) {
reactDomExports.flushSync(function() {
setOffsetLeft(function(left) {
var nextOffsetLeft = left + (isRTL ? -offsetXY : offsetXY);
return keepInHorizontalRange(nextOffsetLeft);
});
});
triggerScroll();
} else {
syncScrollTop(function(top) {
var newTop = top + offsetXY;
return newTop;
});
}
});
var _useFrameWheel = useFrameWheel(useVirtual, isScrollAtTop, isScrollAtBottom, isScrollAtLeft, isScrollAtRight, !!scrollWidth, onWheelDelta), _useFrameWheel2 = _slicedToArray(_useFrameWheel, 2), onRawWheel = _useFrameWheel2[0], onFireFoxScroll = _useFrameWheel2[1];
useMobileTouchMove(useVirtual, componentRef, function(isHorizontal, delta, smoothOffset, e2) {
var event = e2;
if (originScroll(isHorizontal, delta, smoothOffset)) {
return false;
}
if (!event || !event._virtualHandled) {
if (event) {
event._virtualHandled = true;
}
onRawWheel({
preventDefault: function preventDefault2() {
},
deltaX: isHorizontal ? delta : 0,
deltaY: isHorizontal ? 0 : delta
});
return true;
}
return false;
});
useLayoutEffect$1(function() {
function onMozMousePixelScroll(e2) {
var scrollingUpAtTop = isScrollAtTop && e2.detail < 0;
var scrollingDownAtBottom = isScrollAtBottom && e2.detail > 0;
if (useVirtual && !scrollingUpAtTop && !scrollingDownAtBottom) {
e2.preventDefault();
}
}
var componentEle = componentRef.current;
componentEle.addEventListener("wheel", onRawWheel, {
passive: false
});
componentEle.addEventListener("DOMMouseScroll", onFireFoxScroll, {
passive: true
});
componentEle.addEventListener("MozMousePixelScroll", onMozMousePixelScroll, {
passive: false
});
return function() {
componentEle.removeEventListener("wheel", onRawWheel);
componentEle.removeEventListener("DOMMouseScroll", onFireFoxScroll);
componentEle.removeEventListener("MozMousePixelScroll", onMozMousePixelScroll);
};
}, [useVirtual, isScrollAtTop, isScrollAtBottom]);
useLayoutEffect$1(function() {
if (scrollWidth) {
var newOffsetLeft = keepInHorizontalRange(offsetLeft);
setOffsetLeft(newOffsetLeft);
triggerScroll({
x: newOffsetLeft
});
}
}, [size.width, scrollWidth]);
var delayHideScrollBar = function delayHideScrollBar2() {
var _verticalScrollBarRef, _horizontalScrollBarR;
(_verticalScrollBarRef = verticalScrollBarRef.current) === null || _verticalScrollBarRef === void 0 || _verticalScrollBarRef.delayHidden();
(_horizontalScrollBarR = horizontalScrollBarRef.current) === null || _horizontalScrollBarR === void 0 || _horizontalScrollBarR.delayHidden();
};
var _scrollTo = useScrollTo(componentRef, mergedData, heights, itemHeight, getKey2, function() {
return collectHeight(true);
}, syncScrollTop, delayHideScrollBar);
reactExports.useImperativeHandle(ref, function() {
return {
nativeElement: containerRef.current,
getScrollInfo: getVirtualScrollInfo,
scrollTo: function scrollTo2(config) {
function isPosScroll(arg) {
return arg && _typeof$2(arg) === "object" && ("left" in arg || "top" in arg);
}
if (isPosScroll(config)) {
if (config.left !== void 0) {
setOffsetLeft(keepInHorizontalRange(config.left));
}
_scrollTo(config.top);
} else {
_scrollTo(config);
}
}
};
});
useLayoutEffect$1(function() {
if (onVisibleChange) {
var renderList = mergedData.slice(start2, end2 + 1);
onVisibleChange(renderList, mergedData);
}
}, [start2, end2, mergedData]);
var getSize2 = useGetSize(mergedData, getKey2, heights, itemHeight);
var extraContent = extraRender === null || extraRender === void 0 ? void 0 : extraRender({
start: start2,
end: end2,
virtual: inVirtual,
offsetX: offsetLeft,
offsetY: fillerOffset,
rtl: isRTL,
getSize: getSize2
});
var listChildren = useChildren(mergedData, start2, end2, scrollWidth, offsetLeft, setInstanceRef, children, sharedConfig);
var componentStyle = null;
if (height) {
componentStyle = _objectSpread2$1(_defineProperty({}, fullHeight ? "height" : "maxHeight", height), ScrollStyle);
if (useVirtual) {
componentStyle.overflowY = "hidden";
if (scrollWidth) {
componentStyle.overflowX = "hidden";
}
if (scrollMoving) {
componentStyle.pointerEvents = "none";
}
}
}
var containerProps = {};
if (isRTL) {
containerProps.dir = "rtl";
}
return /* @__PURE__ */ reactExports.createElement("div", _extends$2({
ref: containerRef,
style: _objectSpread2$1(_objectSpread2$1({}, style2), {}, {
position: "relative"
}),
className: mergedClassName
}, containerProps, restProps), /* @__PURE__ */ reactExports.createElement(RefResizeObserver, {
onResize: onHolderResize
}, /* @__PURE__ */ reactExports.createElement(Component, {
className: "".concat(prefixCls, "-holder"),
style: componentStyle,
ref: componentRef,
onScroll: onFallbackScroll,
onMouseEnter: delayHideScrollBar
}, /* @__PURE__ */ reactExports.createElement(Filler, {
prefixCls,
height: scrollHeight,
offsetX: offsetLeft,
offsetY: fillerOffset,
scrollWidth,
onInnerResize: collectHeight,
ref: fillerInnerRef,
innerProps,
rtl: isRTL,
extra: extraContent
}, listChildren))), inVirtual && scrollHeight > height && /* @__PURE__ */ reactExports.createElement(ScrollBar, {
ref: verticalScrollBarRef,
prefixCls,
scrollOffset: offsetTop,
scrollRange: scrollHeight,
rtl: isRTL,
onScroll: onScrollBar,
onStartMove: onScrollbarStartMove,
onStopMove: onScrollbarStopMove,
spinSize: verticalScrollBarSpinSize,
containerSize: size.height,
style: styles2 === null || styles2 === void 0 ? void 0 : styles2.verticalScrollBar,
thumbStyle: styles2 === null || styles2 === void 0 ? void 0 : styles2.verticalScrollBarThumb
}), inVirtual && scrollWidth > size.width && /* @__PURE__ */ reactExports.createElement(ScrollBar, {
ref: horizontalScrollBarRef,
prefixCls,
scrollOffset: offsetLeft,
scrollRange: scrollWidth,
rtl: isRTL,
onScroll: onScrollBar,
onStartMove: onScrollbarStartMove,
onStopMove: onScrollbarStopMove,
spinSize: horizontalScrollBarSpinSize,
containerSize: size.width,
horizontal: true,
style: styles2 === null || styles2 === void 0 ? void 0 : styles2.horizontalScrollBar,
thumbStyle: styles2 === null || styles2 === void 0 ? void 0 : styles2.horizontalScrollBarThumb
}));
}
var List = /* @__PURE__ */ reactExports.forwardRef(RawList);
List.displayName = "List";
function isPlatformMac() {
return /(mac\sos|macintosh)/i.test(navigator.appVersion);
}
var _excluded$t = ["disabled", "title", "children", "style", "className"];
function isTitleType(content) {
return typeof content === "string" || typeof content === "number";
}
var OptionList = function OptionList2(_, ref) {
var _useBaseProps = useBaseProps(), prefixCls = _useBaseProps.prefixCls, id2 = _useBaseProps.id, open2 = _useBaseProps.open, multiple = _useBaseProps.multiple, mode = _useBaseProps.mode, searchValue = _useBaseProps.searchValue, toggleOpen = _useBaseProps.toggleOpen, notFoundContent = _useBaseProps.notFoundContent, onPopupScroll = _useBaseProps.onPopupScroll;
var _React$useContext = reactExports.useContext(SelectContext), maxCount = _React$useContext.maxCount, flattenOptions2 = _React$useContext.flattenOptions, onActiveValue = _React$useContext.onActiveValue, defaultActiveFirstOption = _React$useContext.defaultActiveFirstOption, onSelect = _React$useContext.onSelect, menuItemSelectedIcon = _React$useContext.menuItemSelectedIcon, rawValues = _React$useContext.rawValues, fieldNames = _React$useContext.fieldNames, virtual = _React$useContext.virtual, direction = _React$useContext.direction, listHeight = _React$useContext.listHeight, listItemHeight = _React$useContext.listItemHeight, optionRender = _React$useContext.optionRender;
var itemPrefixCls = "".concat(prefixCls, "-item");
var memoFlattenOptions = useMemo(function() {
return flattenOptions2;
}, [open2, flattenOptions2], function(prev2, next2) {
return next2[0] && prev2[1] !== next2[1];
});
var listRef = reactExports.useRef(null);
var overMaxCount = reactExports.useMemo(function() {
return multiple && isValidCount(maxCount) && (rawValues === null || rawValues === void 0 ? void 0 : rawValues.size) >= maxCount;
}, [multiple, maxCount, rawValues === null || rawValues === void 0 ? void 0 : rawValues.size]);
var onListMouseDown = function onListMouseDown2(event) {
event.preventDefault();
};
var scrollIntoView = function scrollIntoView2(args) {
var _listRef$current;
(_listRef$current = listRef.current) === null || _listRef$current === void 0 || _listRef$current.scrollTo(typeof args === "number" ? {
index: args
} : args);
};
var getEnabledActiveIndex = function getEnabledActiveIndex2(index2) {
var offset2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1;
var len2 = memoFlattenOptions.length;
for (var i = 0; i < len2; i += 1) {
var current = (index2 + i * offset2 + len2) % len2;
var _ref = memoFlattenOptions[current] || {}, group = _ref.group, data = _ref.data;
if (!group && !(data !== null && data !== void 0 && data.disabled) && !overMaxCount) {
return current;
}
}
return -1;
};
var _React$useState = reactExports.useState(function() {
return getEnabledActiveIndex(0);
}), _React$useState2 = _slicedToArray(_React$useState, 2), activeIndex = _React$useState2[0], setActiveIndex = _React$useState2[1];
var setActive = function setActive2(index2) {
var fromKeyboard = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
setActiveIndex(index2);
var info = {
source: fromKeyboard ? "keyboard" : "mouse"
};
var flattenItem = memoFlattenOptions[index2];
if (!flattenItem) {
onActiveValue(null, -1, info);
return;
}
onActiveValue(flattenItem.value, index2, info);
};
reactExports.useEffect(function() {
setActive(defaultActiveFirstOption !== false ? getEnabledActiveIndex(0) : -1);
}, [memoFlattenOptions.length, searchValue]);
var isSelected = reactExports.useCallback(function(value) {
return rawValues.has(value) && mode !== "combobox";
}, [mode, _toConsumableArray(rawValues).toString(), rawValues.size]);
reactExports.useEffect(function() {
var timeoutId = setTimeout(function() {
if (!multiple && open2 && rawValues.size === 1) {
var value = Array.from(rawValues)[0];
var index2 = memoFlattenOptions.findIndex(function(_ref2) {
var data = _ref2.data;
return data.value === value;
});
if (index2 !== -1) {
setActive(index2);
scrollIntoView(index2);
}
}
});
if (open2) {
var _listRef$current2;
(_listRef$current2 = listRef.current) === null || _listRef$current2 === void 0 || _listRef$current2.scrollTo(void 0);
}
return function() {
return clearTimeout(timeoutId);
};
}, [open2, searchValue]);
var onSelectValue = function onSelectValue2(value) {
if (value !== void 0) {
onSelect(value, {
selected: !rawValues.has(value)
});
}
if (!multiple) {
toggleOpen(false);
}
};
reactExports.useImperativeHandle(ref, function() {
return {
onKeyDown: function onKeyDown2(event) {
var which = event.which, ctrlKey = event.ctrlKey;
switch (which) {
case KeyCode.N:
case KeyCode.P:
case KeyCode.UP:
case KeyCode.DOWN: {
var offset2 = 0;
if (which === KeyCode.UP) {
offset2 = -1;
} else if (which === KeyCode.DOWN) {
offset2 = 1;
} else if (isPlatformMac() && ctrlKey) {
if (which === KeyCode.N) {
offset2 = 1;
} else if (which === KeyCode.P) {
offset2 = -1;
}
}
if (offset2 !== 0) {
var nextActiveIndex = getEnabledActiveIndex(activeIndex + offset2, offset2);
scrollIntoView(nextActiveIndex);
setActive(nextActiveIndex, true);
}
break;
}
case KeyCode.ENTER: {
var _item$data;
var item = memoFlattenOptions[activeIndex];
if (item && !(item !== null && item !== void 0 && (_item$data = item.data) !== null && _item$data !== void 0 && _item$data.disabled) && !overMaxCount) {
onSelectValue(item.value);
} else {
onSelectValue(void 0);
}
if (open2) {
event.preventDefault();
}
break;
}
case KeyCode.ESC: {
toggleOpen(false);
if (open2) {
event.stopPropagation();
}
}
}
},
onKeyUp: function onKeyUp() {
},
scrollTo: function scrollTo2(index2) {
scrollIntoView(index2);
}
};
});
if (memoFlattenOptions.length === 0) {
return /* @__PURE__ */ reactExports.createElement("div", {
role: "listbox",
id: "".concat(id2, "_list"),
className: "".concat(itemPrefixCls, "-empty"),
onMouseDown: onListMouseDown
}, notFoundContent);
}
var omitFieldNameList = Object.keys(fieldNames).map(function(key) {
return fieldNames[key];
});
var getLabel = function getLabel2(item) {
return item.label;
};
function getItemAriaProps(item, index2) {
var group = item.group;
return {
role: group ? "presentation" : "option",
id: "".concat(id2, "_list_").concat(index2)
};
}
var renderItem = function renderItem2(index2) {
var item = memoFlattenOptions[index2];
if (!item) {
return null;
}
var itemData = item.data || {};
var value = itemData.value;
var group = item.group;
var attrs = pickAttrs(itemData, true);
var mergedLabel = getLabel(item);
return item ? /* @__PURE__ */ reactExports.createElement("div", _extends$2({
"aria-label": typeof mergedLabel === "string" && !group ? mergedLabel : null
}, attrs, {
key: index2
}, getItemAriaProps(item, index2), {
"aria-selected": isSelected(value)
}), value) : null;
};
var a11yProps = {
role: "listbox",
id: "".concat(id2, "_list")
};
return /* @__PURE__ */ reactExports.createElement(reactExports.Fragment, null, virtual && /* @__PURE__ */ reactExports.createElement("div", _extends$2({}, a11yProps, {
style: {
height: 0,
width: 0,
overflow: "hidden"
}
}), renderItem(activeIndex - 1), renderItem(activeIndex), renderItem(activeIndex + 1)), /* @__PURE__ */ reactExports.createElement(List, {
itemKey: "key",
ref: listRef,
data: memoFlattenOptions,
height: listHeight,
itemHeight: listItemHeight,
fullHeight: false,
onMouseDown: onListMouseDown,
onScroll: onPopupScroll,
virtual,
direction,
innerProps: virtual ? null : a11yProps
}, function(item, itemIndex) {
var group = item.group, groupOption = item.groupOption, data = item.data, label = item.label, value = item.value;
var key = data.key;
if (group) {
var _data$title;
var groupTitle = (_data$title = data.title) !== null && _data$title !== void 0 ? _data$title : isTitleType(label) ? label.toString() : void 0;
return /* @__PURE__ */ reactExports.createElement("div", {
className: cls(itemPrefixCls, "".concat(itemPrefixCls, "-group"), data.className),
title: groupTitle
}, label !== void 0 ? label : key);
}
var disabled = data.disabled, title = data.title;
data.children;
var style2 = data.style, className = data.className, otherProps = _objectWithoutProperties(data, _excluded$t);
var passedProps = omit(otherProps, omitFieldNameList);
var selected = isSelected(value);
var mergedDisabled = disabled || !selected && overMaxCount;
var optionPrefixCls = "".concat(itemPrefixCls, "-option");
var optionClassName = cls(itemPrefixCls, optionPrefixCls, className, _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "".concat(optionPrefixCls, "-grouped"), groupOption), "".concat(optionPrefixCls, "-active"), activeIndex === itemIndex && !mergedDisabled), "".concat(optionPrefixCls, "-disabled"), mergedDisabled), "".concat(optionPrefixCls, "-selected"), selected));
var mergedLabel = getLabel(item);
var iconVisible = !menuItemSelectedIcon || typeof menuItemSelectedIcon === "function" || selected;
var content = typeof mergedLabel === "number" ? mergedLabel : mergedLabel || value;
var optionTitle = isTitleType(content) ? content.toString() : void 0;
if (title !== void 0) {
optionTitle = title;
}
return /* @__PURE__ */ reactExports.createElement("div", _extends$2({}, pickAttrs(passedProps), !virtual ? getItemAriaProps(item, itemIndex) : {}, {
"aria-selected": selected,
className: optionClassName,
title: optionTitle,
onMouseMove: function onMouseMove() {
if (activeIndex === itemIndex || mergedDisabled) {
return;
}
setActive(itemIndex);
},
onClick: function onClick() {
if (!mergedDisabled) {
onSelectValue(value);
}
},
style: style2
}), /* @__PURE__ */ reactExports.createElement("div", {
className: "".concat(optionPrefixCls, "-content")
}, typeof optionRender === "function" ? optionRender(item, {
index: itemIndex
}) : content), /* @__PURE__ */ reactExports.isValidElement(menuItemSelectedIcon) || selected, iconVisible && /* @__PURE__ */ reactExports.createElement(TransBtn, {
className: "".concat(itemPrefixCls, "-option-state"),
customizeIcon: menuItemSelectedIcon,
customizeIconProps: {
value,
disabled: mergedDisabled,
isSelected: selected
}
}, selected ? "✓" : null));
}));
};
var RefOptionList$1 = /* @__PURE__ */ reactExports.forwardRef(OptionList);
const useCache = function(labeledValues, valueOptions) {
var cacheRef = reactExports.useRef({
values: /* @__PURE__ */ new Map(),
options: /* @__PURE__ */ new Map()
});
var filledLabeledValues = reactExports.useMemo(function() {
var _cacheRef$current = cacheRef.current, prevValueCache = _cacheRef$current.values, prevOptionCache = _cacheRef$current.options;
var patchedValues = labeledValues.map(function(item) {
if (item.label === void 0) {
var _prevValueCache$get;
return _objectSpread2$1(_objectSpread2$1({}, item), {}, {
label: (_prevValueCache$get = prevValueCache.get(item.value)) === null || _prevValueCache$get === void 0 ? void 0 : _prevValueCache$get.label
});
}
return item;
});
var valueCache = /* @__PURE__ */ new Map();
var optionCache = /* @__PURE__ */ new Map();
patchedValues.forEach(function(item) {
valueCache.set(item.value, item);
optionCache.set(item.value, valueOptions.get(item.value) || prevOptionCache.get(item.value));
});
cacheRef.current.values = valueCache;
cacheRef.current.options = optionCache;
return patchedValues;
}, [labeledValues, valueOptions]);
var getOption = reactExports.useCallback(function(val) {
return valueOptions.get(val) || cacheRef.current.options.get(val);
}, [valueOptions]);
return [filledLabeledValues, getOption];
};
function includes(test, search) {
return toArray$2(test).join("").toUpperCase().includes(search);
}
const useFilterOptions = function(options, fieldNames, searchValue, filterOption, optionFilterProp) {
return reactExports.useMemo(function() {
if (!searchValue || filterOption === false) {
return options;
}
var fieldOptions = fieldNames.options, fieldLabel = fieldNames.label, fieldValue = fieldNames.value;
var filteredOptions = [];
var customizeFilter = typeof filterOption === "function";
var upperSearch = searchValue.toUpperCase();
var filterFunc = customizeFilter ? filterOption : function(_, option) {
if (optionFilterProp) {
return includes(option[optionFilterProp], upperSearch);
}
if (option[fieldOptions]) {
return includes(option[fieldLabel !== "children" ? fieldLabel : "label"], upperSearch);
}
return includes(option[fieldValue], upperSearch);
};
var wrapOption = customizeFilter ? function(opt) {
return injectPropsWithOption(opt);
} : function(opt) {
return opt;
};
options.forEach(function(item) {
if (item[fieldOptions]) {
var matchGroup = filterFunc(searchValue, wrapOption(item));
if (matchGroup) {
filteredOptions.push(item);
} else {
var subOptions = item[fieldOptions].filter(function(subItem) {
return filterFunc(searchValue, wrapOption(subItem));
});
if (subOptions.length) {
filteredOptions.push(_objectSpread2$1(_objectSpread2$1({}, item), {}, _defineProperty({}, fieldOptions, subOptions)));
}
}
return;
}
if (filterFunc(searchValue, wrapOption(item))) {
filteredOptions.push(item);
}
});
return filteredOptions;
}, [options, filterOption, optionFilterProp, searchValue, fieldNames]);
};
var uuid = 0;
var isBrowserClient = canUseDom();
function getUUID() {
var retId;
if (isBrowserClient) {
retId = uuid;
uuid += 1;
} else {
retId = "TEST_OR_SSR";
}
return retId;
}
function useId2(id2) {
var _React$useState = reactExports.useState(), _React$useState2 = _slicedToArray(_React$useState, 2), innerId = _React$useState2[0], setInnerId = _React$useState2[1];
reactExports.useEffect(function() {
setInnerId("rc_select_".concat(getUUID()));
}, []);
return id2 || innerId;
}
var _excluded$s = ["children", "value"], _excluded2$3 = ["children"];
function convertNodeToOption(node2) {
var _ref = node2, key = _ref.key, _ref$props = _ref.props, children = _ref$props.children, value = _ref$props.value, restProps = _objectWithoutProperties(_ref$props, _excluded$s);
return _objectSpread2$1({
key,
value: value !== void 0 ? value : key,
children
}, restProps);
}
function convertChildrenToData(nodes) {
var optionOnly = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
return toArray$4(nodes).map(function(node2, index2) {
if (!/* @__PURE__ */ reactExports.isValidElement(node2) || !node2.type) {
return null;
}
var _ref2 = node2, isSelectOptGroup = _ref2.type.isSelectOptGroup, key = _ref2.key, _ref2$props = _ref2.props, children = _ref2$props.children, restProps = _objectWithoutProperties(_ref2$props, _excluded2$3);
if (optionOnly || !isSelectOptGroup) {
return convertNodeToOption(node2);
}
return _objectSpread2$1(_objectSpread2$1({
key: "__RC_SELECT_GRP__".concat(key === null ? index2 : key, "__"),
label: key
}, restProps), {}, {
options: convertChildrenToData(children)
});
}).filter(function(data) {
return data;
});
}
var useOptions$1 = function useOptions(options, children, fieldNames, optionFilterProp, optionLabelProp) {
return reactExports.useMemo(function() {
var mergedOptions = options;
var childrenAsData = !options;
if (childrenAsData) {
mergedOptions = convertChildrenToData(children);
}
var valueOptions = /* @__PURE__ */ new Map();
var labelOptions = /* @__PURE__ */ new Map();
var setLabelOptions = function setLabelOptions2(labelOptionsMap, option, key) {
if (key && typeof key === "string") {
labelOptionsMap.set(option[key], option);
}
};
var dig = function dig2(optionList) {
var isChildren = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
for (var i = 0; i < optionList.length; i += 1) {
var option = optionList[i];
if (!option[fieldNames.options] || isChildren) {
valueOptions.set(option[fieldNames.value], option);
setLabelOptions(labelOptions, option, fieldNames.label);
setLabelOptions(labelOptions, option, optionFilterProp);
setLabelOptions(labelOptions, option, optionLabelProp);
} else {
dig2(option[fieldNames.options], true);
}
}
};
dig(mergedOptions);
return {
options: mergedOptions,
valueOptions,
labelOptions
};
}, [options, children, fieldNames, optionFilterProp, optionLabelProp]);
};
function useRefFunc(callback) {
var funcRef = reactExports.useRef();
funcRef.current = callback;
var cacheFn = reactExports.useCallback(function() {
return funcRef.current.apply(funcRef, arguments);
}, []);
return cacheFn;
}
var _excluded$r = ["id", "mode", "prefixCls", "backfill", "fieldNames", "inputValue", "searchValue", "onSearch", "autoClearSearchValue", "onSelect", "onDeselect", "dropdownMatchSelectWidth", "filterOption", "filterSort", "optionFilterProp", "optionLabelProp", "options", "optionRender", "children", "defaultActiveFirstOption", "menuItemSelectedIcon", "virtual", "direction", "listHeight", "listItemHeight", "labelRender", "value", "defaultValue", "labelInValue", "onChange", "maxCount"];
var OMIT_DOM_PROPS = ["inputValue"];
function isRawValue(value) {
return !value || _typeof$2(value) !== "object";
}
var Select$1 = /* @__PURE__ */ reactExports.forwardRef(function(props, ref) {
var id2 = props.id, mode = props.mode, _props$prefixCls = props.prefixCls, prefixCls = _props$prefixCls === void 0 ? "rc-select" : _props$prefixCls, backfill = props.backfill, fieldNames = props.fieldNames, inputValue = props.inputValue, searchValue = props.searchValue, onSearch = props.onSearch, _props$autoClearSearc = props.autoClearSearchValue, autoClearSearchValue = _props$autoClearSearc === void 0 ? true : _props$autoClearSearc, onSelect = props.onSelect, onDeselect = props.onDeselect, _props$dropdownMatchS = props.dropdownMatchSelectWidth, dropdownMatchSelectWidth = _props$dropdownMatchS === void 0 ? true : _props$dropdownMatchS, filterOption = props.filterOption, filterSort = props.filterSort, optionFilterProp = props.optionFilterProp, optionLabelProp = props.optionLabelProp, options = props.options, optionRender = props.optionRender, children = props.children, defaultActiveFirstOption = props.defaultActiveFirstOption, menuItemSelectedIcon = props.menuItemSelectedIcon, virtual = props.virtual, direction = props.direction, _props$listHeight = props.listHeight, listHeight = _props$listHeight === void 0 ? 200 : _props$listHeight, _props$listItemHeight = props.listItemHeight, listItemHeight = _props$listItemHeight === void 0 ? 20 : _props$listItemHeight, labelRender = props.labelRender, value = props.value, defaultValue = props.defaultValue, labelInValue = props.labelInValue, onChange = props.onChange, maxCount = props.maxCount, restProps = _objectWithoutProperties(props, _excluded$r);
var mergedId = useId2(id2);
var multiple = isMultiple$1(mode);
var childrenAsData = !!(!options && children);
var mergedFilterOption = reactExports.useMemo(function() {
if (filterOption === void 0 && mode === "combobox") {
return false;
}
return filterOption;
}, [filterOption, mode]);
var mergedFieldNames = reactExports.useMemo(
function() {
return fillFieldNames$2(fieldNames, childrenAsData);
},
/* eslint-disable react-hooks/exhaustive-deps */
[
// We stringify fieldNames to avoid unnecessary re-renders.
JSON.stringify(fieldNames),
childrenAsData
]
/* eslint-enable react-hooks/exhaustive-deps */
);
var _useMergedState = useMergedState("", {
value: searchValue !== void 0 ? searchValue : inputValue,
postState: function postState(search) {
return search || "";
}
}), _useMergedState2 = _slicedToArray(_useMergedState, 2), mergedSearchValue = _useMergedState2[0], setSearchValue = _useMergedState2[1];
var parsedOptions = useOptions$1(options, children, mergedFieldNames, optionFilterProp, optionLabelProp);
var valueOptions = parsedOptions.valueOptions, labelOptions = parsedOptions.labelOptions, mergedOptions = parsedOptions.options;
var convert2LabelValues = reactExports.useCallback(function(draftValues) {
var valueList = toArray$2(draftValues);
return valueList.map(function(val) {
var rawValue;
var rawLabel;
var rawKey;
var rawDisabled;
var rawTitle;
if (isRawValue(val)) {
rawValue = val;
} else {
var _val$value;
rawKey = val.key;
rawLabel = val.label;
rawValue = (_val$value = val.value) !== null && _val$value !== void 0 ? _val$value : rawKey;
}
var option = valueOptions.get(rawValue);
if (option) {
var _option$key;
if (rawLabel === void 0) rawLabel = option === null || option === void 0 ? void 0 : option[optionLabelProp || mergedFieldNames.label];
if (rawKey === void 0) rawKey = (_option$key = option === null || option === void 0 ? void 0 : option.key) !== null && _option$key !== void 0 ? _option$key : rawValue;
rawDisabled = option === null || option === void 0 ? void 0 : option.disabled;
rawTitle = option === null || option === void 0 ? void 0 : option.title;
}
return {
label: rawLabel,
value: rawValue,
key: rawKey,
disabled: rawDisabled,
title: rawTitle
};
});
}, [mergedFieldNames, optionLabelProp, valueOptions]);
var _useMergedState3 = useMergedState(defaultValue, {
value
}), _useMergedState4 = _slicedToArray(_useMergedState3, 2), internalValue = _useMergedState4[0], setInternalValue = _useMergedState4[1];
var rawLabeledValues = reactExports.useMemo(function() {
var _values$;
var newInternalValue = multiple && internalValue === null ? [] : internalValue;
var values = convert2LabelValues(newInternalValue);
if (mode === "combobox" && isComboNoValue((_values$ = values[0]) === null || _values$ === void 0 ? void 0 : _values$.value)) {
return [];
}
return values;
}, [internalValue, convert2LabelValues, mode, multiple]);
var _useCache = useCache(rawLabeledValues, valueOptions), _useCache2 = _slicedToArray(_useCache, 2), mergedValues = _useCache2[0], getMixedOption = _useCache2[1];
var displayValues = reactExports.useMemo(function() {
if (!mode && mergedValues.length === 1) {
var firstValue = mergedValues[0];
if (firstValue.value === null && (firstValue.label === null || firstValue.label === void 0)) {
return [];
}
}
return mergedValues.map(function(item) {
var _ref;
return _objectSpread2$1(_objectSpread2$1({}, item), {}, {
label: (_ref = typeof labelRender === "function" ? labelRender(item) : item.label) !== null && _ref !== void 0 ? _ref : item.value
});
});
}, [mode, mergedValues, labelRender]);
var rawValues = reactExports.useMemo(function() {
return new Set(mergedValues.map(function(val) {
return val.value;
}));
}, [mergedValues]);
reactExports.useEffect(function() {
if (mode === "combobox") {
var _mergedValues$;
var strValue = (_mergedValues$ = mergedValues[0]) === null || _mergedValues$ === void 0 ? void 0 : _mergedValues$.value;
setSearchValue(hasValue(strValue) ? String(strValue) : "");
}
}, [mergedValues]);
var createTagOption = useRefFunc(function(val, label) {
var mergedLabel = label !== null && label !== void 0 ? label : val;
return _defineProperty(_defineProperty({}, mergedFieldNames.value, val), mergedFieldNames.label, mergedLabel);
});
var filledTagOptions = reactExports.useMemo(function() {
if (mode !== "tags") {
return mergedOptions;
}
var cloneOptions = _toConsumableArray(mergedOptions);
var existOptions = function existOptions2(val) {
return valueOptions.has(val);
};
_toConsumableArray(mergedValues).sort(function(a, b2) {
return a.value < b2.value ? -1 : 1;
}).forEach(function(item) {
var val = item.value;
if (!existOptions(val)) {
cloneOptions.push(createTagOption(val, item.label));
}
});
return cloneOptions;
}, [createTagOption, mergedOptions, valueOptions, mergedValues, mode]);
var filteredOptions = useFilterOptions(filledTagOptions, mergedFieldNames, mergedSearchValue, mergedFilterOption, optionFilterProp);
var filledSearchOptions = reactExports.useMemo(function() {
if (mode !== "tags" || !mergedSearchValue || filteredOptions.some(function(item) {
return item[optionFilterProp || "value"] === mergedSearchValue;
})) {
return filteredOptions;
}
if (filteredOptions.some(function(item) {
return item[mergedFieldNames.value] === mergedSearchValue;
})) {
return filteredOptions;
}
return [createTagOption(mergedSearchValue)].concat(_toConsumableArray(filteredOptions));
}, [createTagOption, optionFilterProp, mode, filteredOptions, mergedSearchValue, mergedFieldNames]);
var sorter = function sorter2(inputOptions) {
var sortedOptions = _toConsumableArray(inputOptions).sort(function(a, b2) {
return filterSort(a, b2, {
searchValue: mergedSearchValue
});
});
return sortedOptions.map(function(item) {
if (Array.isArray(item.options)) {
return _objectSpread2$1(_objectSpread2$1({}, item), {}, {
options: item.options.length > 0 ? sorter2(item.options) : item.options
});
}
return item;
});
};
var orderedFilteredOptions = reactExports.useMemo(function() {
if (!filterSort) {
return filledSearchOptions;
}
return sorter(filledSearchOptions);
}, [filledSearchOptions, filterSort, mergedSearchValue]);
var displayOptions = reactExports.useMemo(function() {
return flattenOptions(orderedFilteredOptions, {
fieldNames: mergedFieldNames,
childrenAsData
});
}, [orderedFilteredOptions, mergedFieldNames, childrenAsData]);
var triggerChange = function triggerChange2(values) {
var labeledValues = convert2LabelValues(values);
setInternalValue(labeledValues);
if (onChange && // Trigger event only when value changed
(labeledValues.length !== mergedValues.length || labeledValues.some(function(newVal, index2) {
var _mergedValues$index;
return ((_mergedValues$index = mergedValues[index2]) === null || _mergedValues$index === void 0 ? void 0 : _mergedValues$index.value) !== (newVal === null || newVal === void 0 ? void 0 : newVal.value);
}))) {
var returnValues = labelInValue ? labeledValues : labeledValues.map(function(v4) {
return v4.value;
});
var returnOptions = labeledValues.map(function(v4) {
return injectPropsWithOption(getMixedOption(v4.value));
});
onChange(
// Value
multiple ? returnValues : returnValues[0],
// Option
multiple ? returnOptions : returnOptions[0]
);
}
};
var _React$useState = reactExports.useState(null), _React$useState2 = _slicedToArray(_React$useState, 2), activeValue = _React$useState2[0], setActiveValue = _React$useState2[1];
var _React$useState3 = reactExports.useState(0), _React$useState4 = _slicedToArray(_React$useState3, 2), accessibilityIndex = _React$useState4[0], setAccessibilityIndex = _React$useState4[1];
var mergedDefaultActiveFirstOption = defaultActiveFirstOption !== void 0 ? defaultActiveFirstOption : mode !== "combobox";
var onActiveValue = reactExports.useCallback(function(active, index2) {
var _ref3 = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}, _ref3$source = _ref3.source, source = _ref3$source === void 0 ? "keyboard" : _ref3$source;
setAccessibilityIndex(index2);
if (backfill && mode === "combobox" && active !== null && source === "keyboard") {
setActiveValue(String(active));
}
}, [backfill, mode]);
var triggerSelect = function triggerSelect2(val, selected, type4) {
var getSelectEnt = function getSelectEnt2() {
var _option$key2;
var option = getMixedOption(val);
return [labelInValue ? {
label: option === null || option === void 0 ? void 0 : option[mergedFieldNames.label],
value: val,
key: (_option$key2 = option === null || option === void 0 ? void 0 : option.key) !== null && _option$key2 !== void 0 ? _option$key2 : val
} : val, injectPropsWithOption(option)];
};
if (selected && onSelect) {
var _getSelectEnt = getSelectEnt(), _getSelectEnt2 = _slicedToArray(_getSelectEnt, 2), wrappedValue = _getSelectEnt2[0], _option = _getSelectEnt2[1];
onSelect(wrappedValue, _option);
} else if (!selected && onDeselect && type4 !== "clear") {
var _getSelectEnt3 = getSelectEnt(), _getSelectEnt4 = _slicedToArray(_getSelectEnt3, 2), _wrappedValue = _getSelectEnt4[0], _option2 = _getSelectEnt4[1];
onDeselect(_wrappedValue, _option2);
}
};
var onInternalSelect = useRefFunc(function(val, info) {
var cloneValues;
var mergedSelect = multiple ? info.selected : true;
if (mergedSelect) {
cloneValues = multiple ? [].concat(_toConsumableArray(mergedValues), [val]) : [val];
} else {
cloneValues = mergedValues.filter(function(v4) {
return v4.value !== val;
});
}
triggerChange(cloneValues);
triggerSelect(val, mergedSelect);
if (mode === "combobox") {
setActiveValue("");
} else if (!isMultiple$1 || autoClearSearchValue) {
setSearchValue("");
setActiveValue("");
}
});
var onDisplayValuesChange = function onDisplayValuesChange2(nextValues, info) {
triggerChange(nextValues);
var type4 = info.type, values = info.values;
if (type4 === "remove" || type4 === "clear") {
values.forEach(function(item) {
triggerSelect(item.value, false, type4);
});
}
};
var onInternalSearch = function onInternalSearch2(searchText, info) {
setSearchValue(searchText);
setActiveValue(null);
if (info.source === "submit") {
var formatted = (searchText || "").trim();
if (formatted) {
var newRawValues = Array.from(new Set([].concat(_toConsumableArray(rawValues), [formatted])));
triggerChange(newRawValues);
triggerSelect(formatted, true);
setSearchValue("");
}
return;
}
if (info.source !== "blur") {
if (mode === "combobox") {
triggerChange(searchText);
}
onSearch === null || onSearch === void 0 || onSearch(searchText);
}
};
var onInternalSearchSplit = function onInternalSearchSplit2(words) {
var patchValues = words;
if (mode !== "tags") {
patchValues = words.map(function(word) {
var opt = labelOptions.get(word);
return opt === null || opt === void 0 ? void 0 : opt.value;
}).filter(function(val) {
return val !== void 0;
});
}
var newRawValues = Array.from(new Set([].concat(_toConsumableArray(rawValues), _toConsumableArray(patchValues))));
triggerChange(newRawValues);
newRawValues.forEach(function(newRawValue) {
triggerSelect(newRawValue, true);
});
};
var selectContext = reactExports.useMemo(function() {
var realVirtual = virtual !== false && dropdownMatchSelectWidth !== false;
return _objectSpread2$1(_objectSpread2$1({}, parsedOptions), {}, {
flattenOptions: displayOptions,
onActiveValue,
defaultActiveFirstOption: mergedDefaultActiveFirstOption,
onSelect: onInternalSelect,
menuItemSelectedIcon,
rawValues,
fieldNames: mergedFieldNames,
virtual: realVirtual,
direction,
listHeight,
listItemHeight,
childrenAsData,
maxCount,
optionRender
});
}, [maxCount, parsedOptions, displayOptions, onActiveValue, mergedDefaultActiveFirstOption, onInternalSelect, menuItemSelectedIcon, rawValues, mergedFieldNames, virtual, dropdownMatchSelectWidth, direction, listHeight, listItemHeight, childrenAsData, optionRender]);
return /* @__PURE__ */ reactExports.createElement(SelectContext.Provider, {
value: selectContext
}, /* @__PURE__ */ reactExports.createElement(BaseSelect, _extends$2({}, restProps, {
// >>> MISC
id: mergedId,
prefixCls,
ref,
omitDomProps: OMIT_DOM_PROPS,
mode,
displayValues,
onDisplayValuesChange,
direction,
searchValue: mergedSearchValue,
onSearch: onInternalSearch,
autoClearSearchValue,
onSearchSplit: onInternalSearchSplit,
dropdownMatchSelectWidth,
OptionList: RefOptionList$1,
emptyOptions: !displayOptions.length,
activeValue,
activeDescendantId: "".concat(mergedId, "_list_").concat(accessibilityIndex)
})));
});
var TypedSelect = Select$1;
TypedSelect.Option = Option;
TypedSelect.OptGroup = OptGroup;
function getStatusClassNames(prefixCls, status, hasFeedback) {
return cls({
[`${prefixCls}-status-success`]: status === "success",
[`${prefixCls}-status-warning`]: status === "warning",
[`${prefixCls}-status-error`]: status === "error",
[`${prefixCls}-status-validating`]: status === "validating",
[`${prefixCls}-has-feedback`]: hasFeedback
});
}
const getMergedStatus = (contextStatus, customStatus) => customStatus || contextStatus;
const Empty$2 = () => {
const [, token2] = useToken();
const bgColor = new TinyColor(token2.colorBgBase);
const themeStyle = bgColor.toHsl().l < 0.5 ? {
opacity: 0.65
} : {};
return /* @__PURE__ */ reactExports.createElement("svg", {
style: themeStyle,
width: "184",
height: "152",
viewBox: "0 0 184 152",
xmlns: "http://www.w3.org/2000/svg"
}, /* @__PURE__ */ reactExports.createElement("title", null, "empty image"), /* @__PURE__ */ reactExports.createElement("g", {
fill: "none",
fillRule: "evenodd"
}, /* @__PURE__ */ reactExports.createElement("g", {
transform: "translate(24 31.67)"
}, /* @__PURE__ */ reactExports.createElement("ellipse", {
fillOpacity: ".8",
fill: "#F5F5F7",
cx: "67.797",
cy: "106.89",
rx: "67.797",
ry: "12.668"
}), /* @__PURE__ */ reactExports.createElement("path", {
d: "M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z",
fill: "#AEB8C2"
}), /* @__PURE__ */ reactExports.createElement("path", {
d: "M101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z",
fill: "url(#linearGradient-1)",
transform: "translate(13.56)"
}), /* @__PURE__ */ reactExports.createElement("path", {
d: "M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z",
fill: "#F5F5F7"
}), /* @__PURE__ */ reactExports.createElement("path", {
d: "M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z",
fill: "#DCE0E6"
})), /* @__PURE__ */ reactExports.createElement("path", {
d: "M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z",
fill: "#DCE0E6"
}), /* @__PURE__ */ reactExports.createElement("g", {
transform: "translate(149.65 15.383)",
fill: "#FFF"
}, /* @__PURE__ */ reactExports.createElement("ellipse", {
cx: "20.654",
cy: "3.167",
rx: "2.849",
ry: "2.815"
}), /* @__PURE__ */ reactExports.createElement("path", {
d: "M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z"
}))));
};
const Simple = () => {
const [, token2] = useToken();
const {
colorFill,
colorFillTertiary,
colorFillQuaternary,
colorBgContainer
} = token2;
const {
borderColor,
shadowColor,
contentColor
} = reactExports.useMemo(() => ({
borderColor: new TinyColor(colorFill).onBackground(colorBgContainer).toHexShortString(),
shadowColor: new TinyColor(colorFillTertiary).onBackground(colorBgContainer).toHexShortString(),
contentColor: new TinyColor(colorFillQuaternary).onBackground(colorBgContainer).toHexShortString()
}), [colorFill, colorFillTertiary, colorFillQuaternary, colorBgContainer]);
return /* @__PURE__ */ reactExports.createElement("svg", {
width: "64",
height: "41",
viewBox: "0 0 64 41",
xmlns: "http://www.w3.org/2000/svg"
}, /* @__PURE__ */ reactExports.createElement("title", null, "Simple Empty"), /* @__PURE__ */ reactExports.createElement("g", {
transform: "translate(0 1)",
fill: "none",
fillRule: "evenodd"
}, /* @__PURE__ */ reactExports.createElement("ellipse", {
fill: shadowColor,
cx: "32",
cy: "33",
rx: "32",
ry: "7"
}), /* @__PURE__ */ reactExports.createElement("g", {
fillRule: "nonzero",
stroke: borderColor
}, /* @__PURE__ */ reactExports.createElement("path", {
d: "M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z"
}), /* @__PURE__ */ reactExports.createElement("path", {
d: "M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z",
fill: contentColor
}))));
};
const genSharedEmptyStyle = (token2) => {
const {
componentCls,
margin,
marginXS,
marginXL,
fontSize,
lineHeight
} = token2;
return {
[componentCls]: {
marginInline: marginXS,
fontSize,
lineHeight,
textAlign: "center",
// 原来 &-image 没有父子结构,现在为了外层承担我们的 hashId,改成父子结构
[`${componentCls}-image`]: {
height: token2.emptyImgHeight,
marginBottom: marginXS,
opacity: token2.opacityImage,
img: {
height: "100%"
},
svg: {
maxWidth: "100%",
height: "100%",
margin: "auto"
}
},
[`${componentCls}-description`]: {
color: token2.colorTextDescription
},
// 原来 &-footer 没有父子结构,现在为了外层承担我们的 hashId,改成父子结构
[`${componentCls}-footer`]: {
marginTop: margin
},
"&-normal": {
marginBlock: marginXL,
color: token2.colorTextDescription,
[`${componentCls}-description`]: {
color: token2.colorTextDescription
},
[`${componentCls}-image`]: {
height: token2.emptyImgHeightMD
}
},
"&-small": {
marginBlock: marginXS,
color: token2.colorTextDescription,
[`${componentCls}-image`]: {
height: token2.emptyImgHeightSM
}
}
}
};
};
const useStyle$e = genStyleHooks("Empty", (token2) => {
const {
componentCls,
controlHeightLG,
calc
} = token2;
const emptyToken = merge$1(token2, {
emptyImgCls: `${componentCls}-img`,
emptyImgHeight: calc(controlHeightLG).mul(2.5).equal(),
emptyImgHeightMD: controlHeightLG,
emptyImgHeightSM: calc(controlHeightLG).mul(0.875).equal()
});
return [genSharedEmptyStyle(emptyToken)];
});
var __rest$q = function(s, e2) {
var t2 = {};
for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0) t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i])) t2[p2[i]] = s[p2[i]];
}
return t2;
};
const defaultEmptyImg = /* @__PURE__ */ reactExports.createElement(Empty$2, null);
const simpleEmptyImg = /* @__PURE__ */ reactExports.createElement(Simple, null);
const Empty$1 = (_a2) => {
var {
className,
rootClassName,
prefixCls: customizePrefixCls,
image = defaultEmptyImg,
description,
children,
imageStyle,
style: style2
} = _a2, restProps = __rest$q(_a2, ["className", "rootClassName", "prefixCls", "image", "description", "children", "imageStyle", "style"]);
const {
getPrefixCls,
direction,
empty
} = reactExports.useContext(ConfigContext);
const prefixCls = getPrefixCls("empty", customizePrefixCls);
const [wrapCSSVar, hashId, cssVarCls] = useStyle$e(prefixCls);
const [locale2] = useLocale("Empty");
const des = typeof description !== "undefined" ? description : locale2 === null || locale2 === void 0 ? void 0 : locale2.description;
const alt = typeof des === "string" ? des : "empty";
let imageNode = null;
if (typeof image === "string") {
imageNode = /* @__PURE__ */ reactExports.createElement("img", {
alt,
src: image
});
} else {
imageNode = image;
}
return wrapCSSVar(/* @__PURE__ */ reactExports.createElement("div", Object.assign({
className: cls(hashId, cssVarCls, prefixCls, empty === null || empty === void 0 ? void 0 : empty.className, {
[`${prefixCls}-normal`]: image === simpleEmptyImg,
[`${prefixCls}-rtl`]: direction === "rtl"
}, className, rootClassName),
style: Object.assign(Object.assign({}, empty === null || empty === void 0 ? void 0 : empty.style), style2)
}, restProps), /* @__PURE__ */ reactExports.createElement("div", {
className: `${prefixCls}-image`,
style: imageStyle
}, imageNode), des && /* @__PURE__ */ reactExports.createElement("div", {
className: `${prefixCls}-description`
}, des), children && /* @__PURE__ */ reactExports.createElement("div", {
className: `${prefixCls}-footer`
}, children)));
};
Empty$1.PRESENTED_IMAGE_DEFAULT = defaultEmptyImg;
Empty$1.PRESENTED_IMAGE_SIMPLE = simpleEmptyImg;
const DefaultRenderEmpty = (props) => {
const {
componentName
} = props;
const {
getPrefixCls
} = reactExports.useContext(ConfigContext);
const prefix = getPrefixCls("empty");
switch (componentName) {
case "Table":
case "List":
return /* @__PURE__ */ React.createElement(Empty$1, {
image: Empty$1.PRESENTED_IMAGE_SIMPLE
});
case "Select":
case "TreeSelect":
case "Cascader":
case "Transfer":
case "Mentions":
return /* @__PURE__ */ React.createElement(Empty$1, {
image: Empty$1.PRESENTED_IMAGE_SIMPLE,
className: `${prefix}-small`
});
case "Table.filter":
return null;
default:
return /* @__PURE__ */ React.createElement(Empty$1, null);
}
};
const useVariant = function(component, variant) {
let legacyBordered = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : void 0;
var _a2, _b2;
const {
variant: configVariant,
[component]: componentConfig
} = reactExports.useContext(ConfigContext);
const ctxVariant = reactExports.useContext(VariantContext);
const configComponentVariant = componentConfig === null || componentConfig === void 0 ? void 0 : componentConfig.variant;
let mergedVariant;
if (typeof variant !== "undefined") {
mergedVariant = variant;
} else if (legacyBordered === false) {
mergedVariant = "borderless";
} else {
mergedVariant = (_b2 = (_a2 = ctxVariant !== null && ctxVariant !== void 0 ? ctxVariant : configComponentVariant) !== null && _a2 !== void 0 ? _a2 : configVariant) !== null && _b2 !== void 0 ? _b2 : "outlined";
}
const enableVariantCls = Variants.includes(mergedVariant);
return [mergedVariant, enableVariantCls];
};
const getBuiltInPlacements = (popupOverflow) => {
const htmlRegion = popupOverflow === "scroll" ? "scroll" : "visible";
const sharedConfig = {
overflow: {
adjustX: true,
adjustY: true,
shiftY: true
},
htmlRegion,
dynamicInset: true
};
return {
bottomLeft: Object.assign(Object.assign({}, sharedConfig), {
points: ["tl", "bl"],
offset: [0, 4]
}),
bottomRight: Object.assign(Object.assign({}, sharedConfig), {
points: ["tr", "br"],
offset: [0, 4]
}),
topLeft: Object.assign(Object.assign({}, sharedConfig), {
points: ["bl", "tl"],
offset: [0, -4]
}),
topRight: Object.assign(Object.assign({}, sharedConfig), {
points: ["br", "tr"],
offset: [0, -4]
})
};
};
function mergedBuiltinPlacements(buildInPlacements, popupOverflow) {
return buildInPlacements || getBuiltInPlacements(popupOverflow);
}
const genItemStyle = (token2) => {
const {
optionHeight,
optionFontSize,
optionLineHeight,
optionPadding
} = token2;
return {
position: "relative",
display: "block",
minHeight: optionHeight,
padding: optionPadding,
color: token2.colorText,
fontWeight: "normal",
fontSize: optionFontSize,
lineHeight: optionLineHeight,
boxSizing: "border-box"
};
};
const genSingleStyle$1 = (token2) => {
const {
antCls,
componentCls
} = token2;
const selectItemCls = `${componentCls}-item`;
const slideUpEnterActive = `&${antCls}-slide-up-enter${antCls}-slide-up-enter-active`;
const slideUpAppearActive = `&${antCls}-slide-up-appear${antCls}-slide-up-appear-active`;
const slideUpLeaveActive = `&${antCls}-slide-up-leave${antCls}-slide-up-leave-active`;
const dropdownPlacementCls = `${componentCls}-dropdown-placement-`;
return [
{
[`${componentCls}-dropdown`]: Object.assign(Object.assign({}, resetComponent(token2)), {
position: "absolute",
top: -9999,
zIndex: token2.zIndexPopup,
boxSizing: "border-box",
padding: token2.paddingXXS,
overflow: "hidden",
fontSize: token2.fontSize,
// Fix select render lag of long text in chrome
// https://github.com/ant-design/ant-design/issues/11456
// https://github.com/ant-design/ant-design/issues/11843
fontVariant: "initial",
backgroundColor: token2.colorBgElevated,
borderRadius: token2.borderRadiusLG,
outline: "none",
boxShadow: token2.boxShadowSecondary,
[`
${slideUpEnterActive}${dropdownPlacementCls}bottomLeft,
${slideUpAppearActive}${dropdownPlacementCls}bottomLeft
`]: {
animationName: slideUpIn
},
[`
${slideUpEnterActive}${dropdownPlacementCls}topLeft,
${slideUpAppearActive}${dropdownPlacementCls}topLeft,
${slideUpEnterActive}${dropdownPlacementCls}topRight,
${slideUpAppearActive}${dropdownPlacementCls}topRight
`]: {
animationName: slideDownIn
},
[`${slideUpLeaveActive}${dropdownPlacementCls}bottomLeft`]: {
animationName: slideUpOut
},
[`
${slideUpLeaveActive}${dropdownPlacementCls}topLeft,
${slideUpLeaveActive}${dropdownPlacementCls}topRight
`]: {
animationName: slideDownOut
},
"&-hidden": {
display: "none"
},
[selectItemCls]: Object.assign(Object.assign({}, genItemStyle(token2)), {
cursor: "pointer",
transition: `background ${token2.motionDurationSlow} ease`,
borderRadius: token2.borderRadiusSM,
// =========== Group ============
"&-group": {
color: token2.colorTextDescription,
fontSize: token2.fontSizeSM,
cursor: "default"
},
// =========== Option ===========
"&-option": {
display: "flex",
"&-content": Object.assign({
flex: "auto"
}, textEllipsis),
"&-state": {
flex: "none",
display: "flex",
alignItems: "center"
},
[`&-active:not(${selectItemCls}-option-disabled)`]: {
backgroundColor: token2.optionActiveBg
},
[`&-selected:not(${selectItemCls}-option-disabled)`]: {
color: token2.optionSelectedColor,
fontWeight: token2.optionSelectedFontWeight,
backgroundColor: token2.optionSelectedBg,
[`${selectItemCls}-option-state`]: {
color: token2.colorPrimary
},
[`&:has(+ ${selectItemCls}-option-selected:not(${selectItemCls}-option-disabled))`]: {
borderEndStartRadius: 0,
borderEndEndRadius: 0,
[`& + ${selectItemCls}-option-selected:not(${selectItemCls}-option-disabled)`]: {
borderStartStartRadius: 0,
borderStartEndRadius: 0
}
}
},
"&-disabled": {
[`&${selectItemCls}-option-selected`]: {
backgroundColor: token2.colorBgContainerDisabled
},
color: token2.colorTextDisabled,
cursor: "not-allowed"
},
"&-grouped": {
paddingInlineStart: token2.calc(token2.controlPaddingHorizontal).mul(2).equal()
}
},
"&-empty": Object.assign(Object.assign({}, genItemStyle(token2)), {
color: token2.colorTextDisabled
})
}),
// =========================== RTL ===========================
"&-rtl": {
direction: "rtl"
}
})
},
// Follow code may reuse in other components
initSlideMotion(token2, "slide-up"),
initSlideMotion(token2, "slide-down"),
initMoveMotion(token2, "move-up"),
initMoveMotion(token2, "move-down")
];
};
const getMultipleSelectorUnit = (token2) => {
const {
multipleSelectItemHeight,
paddingXXS,
lineWidth,
INTERNAL_FIXED_ITEM_MARGIN
} = token2;
const basePadding = token2.max(token2.calc(paddingXXS).sub(lineWidth).equal(), 0);
const containerPadding = token2.max(token2.calc(basePadding).sub(INTERNAL_FIXED_ITEM_MARGIN).equal(), 0);
return {
basePadding,
containerPadding,
itemHeight: unit$1(multipleSelectItemHeight),
itemLineHeight: unit$1(token2.calc(multipleSelectItemHeight).sub(token2.calc(token2.lineWidth).mul(2)).equal())
};
};
const getSelectItemStyle = (token2) => {
const {
multipleSelectItemHeight,
selectHeight,
lineWidth
} = token2;
const selectItemDist = token2.calc(selectHeight).sub(multipleSelectItemHeight).div(2).sub(lineWidth).equal();
return selectItemDist;
};
const genOverflowStyle = (token2) => {
const {
componentCls,
iconCls,
borderRadiusSM,
motionDurationSlow,
paddingXS,
multipleItemColorDisabled,
multipleItemBorderColorDisabled,
colorIcon,
colorIconHover,
INTERNAL_FIXED_ITEM_MARGIN
} = token2;
const selectOverflowPrefixCls = `${componentCls}-selection-overflow`;
return {
/**
* Do not merge `height` & `line-height` under style with `selection` & `search`, since chrome
* may update to redesign with its align logic.
*/
// =========================== Overflow ===========================
[selectOverflowPrefixCls]: {
position: "relative",
display: "flex",
flex: "auto",
flexWrap: "wrap",
maxWidth: "100%",
"&-item": {
flex: "none",
alignSelf: "center",
maxWidth: "100%",
display: "inline-flex"
},
// ======================== Selections ==========================
[`${componentCls}-selection-item`]: {
display: "flex",
alignSelf: "center",
flex: "none",
boxSizing: "border-box",
maxWidth: "100%",
marginBlock: INTERNAL_FIXED_ITEM_MARGIN,
borderRadius: borderRadiusSM,
cursor: "default",
transition: `font-size ${motionDurationSlow}, line-height ${motionDurationSlow}, height ${motionDurationSlow}`,
marginInlineEnd: token2.calc(INTERNAL_FIXED_ITEM_MARGIN).mul(2).equal(),
paddingInlineStart: paddingXS,
paddingInlineEnd: token2.calc(paddingXS).div(2).equal(),
[`${componentCls}-disabled&`]: {
color: multipleItemColorDisabled,
borderColor: multipleItemBorderColorDisabled,
cursor: "not-allowed"
},
// It's ok not to do this, but 24px makes bottom narrow in view should adjust
"&-content": {
display: "inline-block",
marginInlineEnd: token2.calc(paddingXS).div(2).equal(),
overflow: "hidden",
whiteSpace: "pre",
// fix whitespace wrapping. custom tags display all whitespace within.
textOverflow: "ellipsis"
},
"&-remove": Object.assign(Object.assign({}, resetIcon()), {
display: "inline-flex",
alignItems: "center",
color: colorIcon,
fontWeight: "bold",
fontSize: 10,
lineHeight: "inherit",
cursor: "pointer",
[`> ${iconCls}`]: {
verticalAlign: "-0.2em"
},
"&:hover": {
color: colorIconHover
}
})
}
}
};
};
const genSelectionStyle$1 = (token2, suffix) => {
const {
componentCls,
INTERNAL_FIXED_ITEM_MARGIN
} = token2;
const selectOverflowPrefixCls = `${componentCls}-selection-overflow`;
const selectItemHeight = token2.multipleSelectItemHeight;
const selectItemDist = getSelectItemStyle(token2);
const suffixCls = suffix ? `${componentCls}-${suffix}` : "";
const multipleSelectorUnit = getMultipleSelectorUnit(token2);
return {
[`${componentCls}-multiple${suffixCls}`]: Object.assign(Object.assign({}, genOverflowStyle(token2)), {
// ========================= Selector =========================
[`${componentCls}-selector`]: {
display: "flex",
flexWrap: "wrap",
alignItems: "center",
height: "100%",
// Multiple is little different that horizontal is follow the vertical
paddingInline: multipleSelectorUnit.basePadding,
paddingBlock: multipleSelectorUnit.containerPadding,
borderRadius: token2.borderRadius,
[`${componentCls}-disabled&`]: {
background: token2.multipleSelectorBgDisabled,
cursor: "not-allowed"
},
"&:after": {
display: "inline-block",
width: 0,
margin: `${unit$1(INTERNAL_FIXED_ITEM_MARGIN)} 0`,
lineHeight: unit$1(selectItemHeight),
visibility: "hidden",
content: '"\\a0"'
}
},
// ======================== Selections ========================
[`${componentCls}-selection-item`]: {
height: multipleSelectorUnit.itemHeight,
lineHeight: unit$1(multipleSelectorUnit.itemLineHeight)
},
// ========================== Input ==========================
[`${selectOverflowPrefixCls}-item + ${selectOverflowPrefixCls}-item`]: {
[`${componentCls}-selection-search`]: {
marginInlineStart: 0
}
},
// https://github.com/ant-design/ant-design/issues/44754
[`${selectOverflowPrefixCls}-item-suffix`]: {
height: "100%"
},
[`${componentCls}-selection-search`]: {
display: "inline-flex",
position: "relative",
maxWidth: "100%",
marginInlineStart: token2.calc(token2.inputPaddingHorizontalBase).sub(selectItemDist).equal(),
[`
&-input,
&-mirror
`]: {
height: selectItemHeight,
fontFamily: token2.fontFamily,
lineHeight: unit$1(selectItemHeight),
transition: `all ${token2.motionDurationSlow}`
},
"&-input": {
width: "100%",
minWidth: 4.1
// fix search cursor missing
},
"&-mirror": {
position: "absolute",
top: 0,
insetInlineStart: 0,
insetInlineEnd: "auto",
zIndex: 999,
whiteSpace: "pre",
// fix whitespace wrapping caused width calculation bug
visibility: "hidden"
}
},
// ======================= Placeholder =======================
[`${componentCls}-selection-placeholder`]: {
position: "absolute",
top: "50%",
insetInlineStart: token2.inputPaddingHorizontalBase,
insetInlineEnd: token2.inputPaddingHorizontalBase,
transform: "translateY(-50%)",
transition: `all ${token2.motionDurationSlow}`
}
})
};
};
function genSizeStyle$2(token2, suffix) {
const {
componentCls
} = token2;
const suffixCls = suffix ? `${componentCls}-${suffix}` : "";
const rawStyle = {
[`${componentCls}-multiple${suffixCls}`]: {
fontSize: token2.fontSize,
// ========================= Selector =========================
[`${componentCls}-selector`]: {
[`${componentCls}-show-search&`]: {
cursor: "text"
}
},
[`
&${componentCls}-show-arrow ${componentCls}-selector,
&${componentCls}-allow-clear ${componentCls}-selector
`]: {
paddingInlineEnd: token2.calc(token2.fontSizeIcon).add(token2.controlPaddingHorizontal).equal()
}
}
};
return [genSelectionStyle$1(token2, suffix), rawStyle];
}
const genMultipleStyle = (token2) => {
const {
componentCls
} = token2;
const smallToken = merge$1(token2, {
selectHeight: token2.controlHeightSM,
multipleSelectItemHeight: token2.multipleItemHeightSM,
borderRadius: token2.borderRadiusSM,
borderRadiusSM: token2.borderRadiusXS
});
const largeToken = merge$1(token2, {
fontSize: token2.fontSizeLG,
selectHeight: token2.controlHeightLG,
multipleSelectItemHeight: token2.multipleItemHeightLG,
borderRadius: token2.borderRadiusLG,
borderRadiusSM: token2.borderRadius
});
return [
genSizeStyle$2(token2),
// ======================== Small ========================
genSizeStyle$2(smallToken, "sm"),
// Padding
{
[`${componentCls}-multiple${componentCls}-sm`]: {
[`${componentCls}-selection-placeholder`]: {
insetInline: token2.calc(token2.controlPaddingHorizontalSM).sub(token2.lineWidth).equal()
},
// https://github.com/ant-design/ant-design/issues/29559
[`${componentCls}-selection-search`]: {
marginInlineStart: 2
// Magic Number
}
}
},
// ======================== Large ========================
genSizeStyle$2(largeToken, "lg")
];
};
function genSizeStyle$1(token2, suffix) {
const {
componentCls,
inputPaddingHorizontalBase,
borderRadius,
fontSizeIcon
} = token2;
const selectHeightWithoutBorder = token2.calc(token2.controlHeight).sub(token2.calc(token2.lineWidth).mul(2)).equal();
const singleInputPaddingHorizontal = token2.calc(inputPaddingHorizontalBase).add(fontSizeIcon).equal();
const suffixCls = suffix ? `${componentCls}-${suffix}` : "";
return {
[`${componentCls}-single${suffixCls}`]: {
fontSize: token2.fontSize,
height: token2.controlHeight,
// ========================= Selector =========================
[`${componentCls}-selector`]: Object.assign(Object.assign({}, resetComponent(token2, true)), {
display: "flex",
borderRadius,
[`${componentCls}-selection-search`]: {
position: "absolute",
top: 0,
insetInlineStart: inputPaddingHorizontalBase,
insetInlineEnd: unit$1(singleInputPaddingHorizontal),
bottom: 0,
"&-input": {
width: "100%",
WebkitAppearance: "textfield"
}
},
[`
${componentCls}-selection-item,
${componentCls}-selection-placeholder
`]: {
padding: 0,
lineHeight: unit$1(selectHeightWithoutBorder),
transition: `all ${token2.motionDurationSlow}, visibility 0s`,
alignSelf: "center"
},
[`${componentCls}-selection-placeholder`]: {
transition: "none",
pointerEvents: "none"
},
// For common baseline align
[[
"&:after",
/* For '' value baseline align */
`${componentCls}-selection-item:empty:after`,
/* For undefined value baseline align */
`${componentCls}-selection-placeholder:empty:after`
].join(",")]: {
display: "inline-block",
width: 0,
visibility: "hidden",
content: '"\\a0"'
}
}),
[`
&${componentCls}-show-arrow ${componentCls}-selection-item,
&${componentCls}-show-arrow ${componentCls}-selection-placeholder
`]: {
paddingInlineEnd: token2.showArrowPaddingInlineEnd
},
// Opacity selection if open
[`&${componentCls}-open ${componentCls}-selection-item`]: {
color: token2.colorTextPlaceholder
},
// ========================== Input ==========================
// We only change the style of non-customize input which is only support by `combobox` mode.
// Not customize
[`&:not(${componentCls}-customize-input)`]: {
[`${componentCls}-selector`]: {
width: "100%",
height: "100%",
padding: `0 ${unit$1(inputPaddingHorizontalBase)}`,
[`${componentCls}-selection-search-input`]: {
height: selectHeightWithoutBorder
},
"&:after": {
lineHeight: unit$1(selectHeightWithoutBorder)
}
}
},
[`&${componentCls}-customize-input`]: {
[`${componentCls}-selector`]: {
"&:after": {
display: "none"
},
[`${componentCls}-selection-search`]: {
position: "static",
width: "100%"
},
[`${componentCls}-selection-placeholder`]: {
position: "absolute",
insetInlineStart: 0,
insetInlineEnd: 0,
padding: `0 ${unit$1(inputPaddingHorizontalBase)}`,
"&:after": {
display: "none"
}
}
}
}
}
};
}
function genSingleStyle(token2) {
const {
componentCls
} = token2;
const inputPaddingHorizontalSM = token2.calc(token2.controlPaddingHorizontalSM).sub(token2.lineWidth).equal();
return [
genSizeStyle$1(token2),
// ======================== Small ========================
// Shared
genSizeStyle$1(merge$1(token2, {
controlHeight: token2.controlHeightSM,
borderRadius: token2.borderRadiusSM
}), "sm"),
// padding
{
[`${componentCls}-single${componentCls}-sm`]: {
[`&:not(${componentCls}-customize-input)`]: {
[`${componentCls}-selection-search`]: {
insetInlineStart: inputPaddingHorizontalSM,
insetInlineEnd: inputPaddingHorizontalSM
},
[`${componentCls}-selector`]: {
padding: `0 ${unit$1(inputPaddingHorizontalSM)}`
},
// With arrow should provides `padding-right` to show the arrow
[`&${componentCls}-show-arrow ${componentCls}-selection-search`]: {
insetInlineEnd: token2.calc(inputPaddingHorizontalSM).add(token2.calc(token2.fontSize).mul(1.5)).equal()
},
[`
&${componentCls}-show-arrow ${componentCls}-selection-item,
&${componentCls}-show-arrow ${componentCls}-selection-placeholder
`]: {
paddingInlineEnd: token2.calc(token2.fontSize).mul(1.5).equal()
}
}
}
},
// ======================== Large ========================
// Shared
genSizeStyle$1(merge$1(token2, {
controlHeight: token2.singleItemHeightLG,
fontSize: token2.fontSizeLG,
borderRadius: token2.borderRadiusLG
}), "lg")
];
}
const prepareComponentToken$b = (token2) => {
const {
fontSize,
lineHeight,
lineWidth,
controlHeight,
controlHeightSM,
controlHeightLG,
paddingXXS,
controlPaddingHorizontal,
zIndexPopupBase,
colorText,
fontWeightStrong,
controlItemBgActive,
controlItemBgHover,
colorBgContainer,
colorFillSecondary,
colorBgContainerDisabled,
colorTextDisabled,
colorPrimaryHover,
colorPrimary,
controlOutline
} = token2;
const dblPaddingXXS = paddingXXS * 2;
const dblLineWidth = lineWidth * 2;
const multipleItemHeight = Math.min(controlHeight - dblPaddingXXS, controlHeight - dblLineWidth);
const multipleItemHeightSM = Math.min(controlHeightSM - dblPaddingXXS, controlHeightSM - dblLineWidth);
const multipleItemHeightLG = Math.min(controlHeightLG - dblPaddingXXS, controlHeightLG - dblLineWidth);
const INTERNAL_FIXED_ITEM_MARGIN = Math.floor(paddingXXS / 2);
return {
INTERNAL_FIXED_ITEM_MARGIN,
zIndexPopup: zIndexPopupBase + 50,
optionSelectedColor: colorText,
optionSelectedFontWeight: fontWeightStrong,
optionSelectedBg: controlItemBgActive,
optionActiveBg: controlItemBgHover,
optionPadding: `${(controlHeight - fontSize * lineHeight) / 2}px ${controlPaddingHorizontal}px`,
optionFontSize: fontSize,
optionLineHeight: lineHeight,
optionHeight: controlHeight,
selectorBg: colorBgContainer,
clearBg: colorBgContainer,
singleItemHeightLG: controlHeightLG,
multipleItemBg: colorFillSecondary,
multipleItemBorderColor: "transparent",
multipleItemHeight,
multipleItemHeightSM,
multipleItemHeightLG,
multipleSelectorBgDisabled: colorBgContainerDisabled,
multipleItemColorDisabled: colorTextDisabled,
multipleItemBorderColorDisabled: "transparent",
showArrowPaddingInlineEnd: Math.ceil(token2.fontSize * 1.25),
hoverBorderColor: colorPrimaryHover,
activeBorderColor: colorPrimary,
activeOutlineColor: controlOutline
};
};
const genBaseOutlinedStyle$1 = (token2, options) => {
const {
componentCls,
antCls,
controlOutlineWidth
} = token2;
return {
[`&:not(${componentCls}-customize-input) ${componentCls}-selector`]: {
border: `${unit$1(token2.lineWidth)} ${token2.lineType} ${options.borderColor}`,
background: token2.selectorBg
},
[`&:not(${componentCls}-disabled):not(${componentCls}-customize-input):not(${antCls}-pagination-size-changer)`]: {
[`&:hover ${componentCls}-selector`]: {
borderColor: options.hoverBorderHover
},
[`${componentCls}-focused& ${componentCls}-selector`]: {
borderColor: options.activeBorderColor,
boxShadow: `0 0 0 ${unit$1(controlOutlineWidth)} ${options.activeOutlineColor}`,
outline: 0
}
}
};
};
const genOutlinedStatusStyle$1 = (token2, options) => ({
[`&${token2.componentCls}-status-${options.status}`]: Object.assign({}, genBaseOutlinedStyle$1(token2, options))
});
const genOutlinedStyle$1 = (token2) => ({
"&-outlined": Object.assign(Object.assign(Object.assign(Object.assign({}, genBaseOutlinedStyle$1(token2, {
borderColor: token2.colorBorder,
hoverBorderHover: token2.hoverBorderColor,
activeBorderColor: token2.activeBorderColor,
activeOutlineColor: token2.activeOutlineColor
})), genOutlinedStatusStyle$1(token2, {
status: "error",
borderColor: token2.colorError,
hoverBorderHover: token2.colorErrorHover,
activeBorderColor: token2.colorError,
activeOutlineColor: token2.colorErrorOutline
})), genOutlinedStatusStyle$1(token2, {
status: "warning",
borderColor: token2.colorWarning,
hoverBorderHover: token2.colorWarningHover,
activeBorderColor: token2.colorWarning,
activeOutlineColor: token2.colorWarningOutline
})), {
[`&${token2.componentCls}-disabled`]: {
[`&:not(${token2.componentCls}-customize-input) ${token2.componentCls}-selector`]: {
background: token2.colorBgContainerDisabled,
color: token2.colorTextDisabled
}
},
[`&${token2.componentCls}-multiple ${token2.componentCls}-selection-item`]: {
background: token2.multipleItemBg,
border: `${unit$1(token2.lineWidth)} ${token2.lineType} ${token2.multipleItemBorderColor}`
}
})
});
const genBaseFilledStyle$1 = (token2, options) => {
const {
componentCls,
antCls
} = token2;
return {
[`&:not(${componentCls}-customize-input) ${componentCls}-selector`]: {
background: options.bg,
border: `${unit$1(token2.lineWidth)} ${token2.lineType} transparent`,
color: options.color
},
[`&:not(${componentCls}-disabled):not(${componentCls}-customize-input):not(${antCls}-pagination-size-changer)`]: {
[`&:hover ${componentCls}-selector`]: {
background: options.hoverBg
},
[`${componentCls}-focused& ${componentCls}-selector`]: {
background: token2.selectorBg,
borderColor: options.activeBorderColor,
outline: 0
}
}
};
};
const genFilledStatusStyle$1 = (token2, options) => ({
[`&${token2.componentCls}-status-${options.status}`]: Object.assign({}, genBaseFilledStyle$1(token2, options))
});
const genFilledStyle$1 = (token2) => ({
"&-filled": Object.assign(Object.assign(Object.assign(Object.assign({}, genBaseFilledStyle$1(token2, {
bg: token2.colorFillTertiary,
hoverBg: token2.colorFillSecondary,
activeBorderColor: token2.activeBorderColor,
color: token2.colorText
})), genFilledStatusStyle$1(token2, {
status: "error",
bg: token2.colorErrorBg,
hoverBg: token2.colorErrorBgHover,
activeBorderColor: token2.colorError,
color: token2.colorError
})), genFilledStatusStyle$1(token2, {
status: "warning",
bg: token2.colorWarningBg,
hoverBg: token2.colorWarningBgHover,
activeBorderColor: token2.colorWarning,
color: token2.colorWarning
})), {
[`&${token2.componentCls}-disabled`]: {
[`&:not(${token2.componentCls}-customize-input) ${token2.componentCls}-selector`]: {
borderColor: token2.colorBorder,
background: token2.colorBgContainerDisabled,
color: token2.colorTextDisabled
}
},
[`&${token2.componentCls}-multiple ${token2.componentCls}-selection-item`]: {
background: token2.colorBgContainer,
border: `${unit$1(token2.lineWidth)} ${token2.lineType} ${token2.colorSplit}`
}
})
});
const genBorderlessStyle$1 = (token2) => ({
"&-borderless": {
[`${token2.componentCls}-selector`]: {
background: "transparent",
borderColor: "transparent"
},
[`&${token2.componentCls}-disabled`]: {
[`&:not(${token2.componentCls}-customize-input) ${token2.componentCls}-selector`]: {
color: token2.colorTextDisabled
}
},
[`&${token2.componentCls}-multiple ${token2.componentCls}-selection-item`]: {
background: token2.multipleItemBg,
border: `${unit$1(token2.lineWidth)} ${token2.lineType} ${token2.multipleItemBorderColor}`
},
// Status
[`&${token2.componentCls}-status-error`]: {
[`${token2.componentCls}-selection-item`]: {
color: token2.colorError
}
},
[`&${token2.componentCls}-status-warning`]: {
[`${token2.componentCls}-selection-item`]: {
color: token2.colorWarning
}
}
}
});
const genVariantsStyle = (token2) => ({
[token2.componentCls]: Object.assign(Object.assign(Object.assign({}, genOutlinedStyle$1(token2)), genFilledStyle$1(token2)), genBorderlessStyle$1(token2))
});
const genSelectorStyle = (token2) => {
const {
componentCls
} = token2;
return {
position: "relative",
transition: `all ${token2.motionDurationMid} ${token2.motionEaseInOut}`,
input: {
cursor: "pointer"
},
[`${componentCls}-show-search&`]: {
cursor: "text",
input: {
cursor: "auto",
color: "inherit",
height: "100%"
}
},
[`${componentCls}-disabled&`]: {
cursor: "not-allowed",
input: {
cursor: "not-allowed"
}
}
};
};
const getSearchInputWithoutBorderStyle = (token2) => {
const {
componentCls
} = token2;
return {
[`${componentCls}-selection-search-input`]: {
margin: 0,
padding: 0,
background: "transparent",
border: "none",
outline: "none",
appearance: "none",
fontFamily: "inherit",
"&::-webkit-search-cancel-button": {
display: "none",
"-webkit-appearance": "none"
}
}
};
};
const genBaseStyle$4 = (token2) => {
const {
antCls,
componentCls,
inputPaddingHorizontalBase,
iconCls
} = token2;
return {
[componentCls]: Object.assign(Object.assign({}, resetComponent(token2)), {
position: "relative",
display: "inline-block",
cursor: "pointer",
[`&:not(${componentCls}-customize-input) ${componentCls}-selector`]: Object.assign(Object.assign({}, genSelectorStyle(token2)), getSearchInputWithoutBorderStyle(token2)),
// ======================== Selection ========================
[`${componentCls}-selection-item`]: Object.assign(Object.assign({
flex: 1,
fontWeight: "normal",
position: "relative",
userSelect: "none"
}, textEllipsis), {
// https://github.com/ant-design/ant-design/issues/40421
[`> ${antCls}-typography`]: {
display: "inline"
}
}),
// ======================= Placeholder =======================
[`${componentCls}-selection-placeholder`]: Object.assign(Object.assign({}, textEllipsis), {
flex: 1,
color: token2.colorTextPlaceholder,
pointerEvents: "none"
}),
// ========================== Arrow ==========================
[`${componentCls}-arrow`]: Object.assign(Object.assign({}, resetIcon()), {
position: "absolute",
top: "50%",
insetInlineStart: "auto",
insetInlineEnd: inputPaddingHorizontalBase,
height: token2.fontSizeIcon,
marginTop: token2.calc(token2.fontSizeIcon).mul(-1).div(2).equal(),
color: token2.colorTextQuaternary,
fontSize: token2.fontSizeIcon,
lineHeight: 1,
textAlign: "center",
pointerEvents: "none",
display: "flex",
alignItems: "center",
transition: `opacity ${token2.motionDurationSlow} ease`,
[iconCls]: {
verticalAlign: "top",
transition: `transform ${token2.motionDurationSlow}`,
"> svg": {
verticalAlign: "top"
},
[`&:not(${componentCls}-suffix)`]: {
pointerEvents: "auto"
}
},
[`${componentCls}-disabled &`]: {
cursor: "not-allowed"
},
"> *:not(:last-child)": {
marginInlineEnd: 8
// FIXME: magic
}
}),
// ========================== Clear ==========================
[`${componentCls}-clear`]: {
position: "absolute",
top: "50%",
insetInlineStart: "auto",
insetInlineEnd: inputPaddingHorizontalBase,
zIndex: 1,
display: "inline-block",
width: token2.fontSizeIcon,
height: token2.fontSizeIcon,
marginTop: token2.calc(token2.fontSizeIcon).mul(-1).div(2).equal(),
color: token2.colorTextQuaternary,
fontSize: token2.fontSizeIcon,
fontStyle: "normal",
lineHeight: 1,
textAlign: "center",
textTransform: "none",
cursor: "pointer",
opacity: 0,
transition: `color ${token2.motionDurationMid} ease, opacity ${token2.motionDurationSlow} ease`,
textRendering: "auto",
"&:before": {
display: "block"
},
"&:hover": {
color: token2.colorTextTertiary
}
},
[`&:hover ${componentCls}-clear`]: {
opacity: 1,
background: token2.colorBgBase,
borderRadius: "50%"
}
}),
// ========================= Feedback ==========================
[`${componentCls}-has-feedback`]: {
[`${componentCls}-clear`]: {
insetInlineEnd: token2.calc(inputPaddingHorizontalBase).add(token2.fontSize).add(token2.paddingXS).equal()
}
}
};
};
const genSelectStyle = (token2) => {
const {
componentCls
} = token2;
return [
{
[componentCls]: {
// ==================== In Form ====================
[`&${componentCls}-in-form-item`]: {
width: "100%"
}
}
},
// =====================================================
// == LTR ==
// =====================================================
// Base
genBaseStyle$4(token2),
// Single
genSingleStyle(token2),
// Multiple
genMultipleStyle(token2),
// Dropdown
genSingleStyle$1(token2),
// =====================================================
// == RTL ==
// =====================================================
{
[`${componentCls}-rtl`]: {
direction: "rtl"
}
},
// =====================================================
// == Space Compact ==
// =====================================================
genCompactItemStyle(token2, {
borderElCls: `${componentCls}-selector`,
focusElCls: `${componentCls}-focused`
})
];
};
const useSelectStyle = genStyleHooks("Select", (token2, _ref) => {
let {
rootPrefixCls
} = _ref;
const selectToken = merge$1(token2, {
rootPrefixCls,
inputPaddingHorizontalBase: token2.calc(token2.paddingSM).sub(1).equal(),
multipleSelectItemHeight: token2.multipleItemHeight,
selectHeight: token2.controlHeight
});
return [genSelectStyle(selectToken), genVariantsStyle(selectToken)];
}, prepareComponentToken$b, {
unitless: {
optionLineHeight: true,
optionSelectedFontWeight: true
}
});
function useIcons(_ref) {
let {
suffixIcon,
clearIcon,
menuItemSelectedIcon,
removeIcon,
loading,
multiple,
hasFeedback,
prefixCls,
showSuffixIcon,
feedbackIcon,
showArrow,
componentName
} = _ref;
const mergedClearIcon = clearIcon !== null && clearIcon !== void 0 ? clearIcon : /* @__PURE__ */ reactExports.createElement(RefIcon$l, null);
const getSuffixIconNode = (arrowIcon) => {
if (suffixIcon === null && !hasFeedback && !showArrow) {
return null;
}
return /* @__PURE__ */ reactExports.createElement(reactExports.Fragment, null, showSuffixIcon !== false && arrowIcon, hasFeedback && feedbackIcon);
};
let mergedSuffixIcon = null;
if (suffixIcon !== void 0) {
mergedSuffixIcon = getSuffixIconNode(suffixIcon);
} else if (loading) {
mergedSuffixIcon = getSuffixIconNode(/* @__PURE__ */ reactExports.createElement(RefIcon$4, {
spin: true
}));
} else {
const iconCls = `${prefixCls}-suffix`;
mergedSuffixIcon = (_ref2) => {
let {
open: open2,
showSearch
} = _ref2;
if (open2 && showSearch) {
return getSuffixIconNode(/* @__PURE__ */ reactExports.createElement(RefIcon, {
className: iconCls
}));
}
return getSuffixIconNode(/* @__PURE__ */ reactExports.createElement(RefIcon$g, {
className: iconCls
}));
};
}
let mergedItemIcon = null;
if (menuItemSelectedIcon !== void 0) {
mergedItemIcon = menuItemSelectedIcon;
} else if (multiple) {
mergedItemIcon = /* @__PURE__ */ reactExports.createElement(RefIcon$m, null);
} else {
mergedItemIcon = null;
}
let mergedRemoveIcon = null;
if (removeIcon !== void 0) {
mergedRemoveIcon = removeIcon;
} else {
mergedRemoveIcon = /* @__PURE__ */ reactExports.createElement(RefIcon$k, null);
}
return {
clearIcon: mergedClearIcon,
suffixIcon: mergedSuffixIcon,
itemIcon: mergedItemIcon,
removeIcon: mergedRemoveIcon
};
}
function useShowArrow(suffixIcon, showArrow) {
return showArrow !== void 0 ? showArrow : suffixIcon !== null;
}
var __rest$p = function(s, e2) {
var t2 = {};
for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0) t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i])) t2[p2[i]] = s[p2[i]];
}
return t2;
};
const SECRET_COMBOBOX_MODE_DO_NOT_USE = "SECRET_COMBOBOX_MODE_DO_NOT_USE";
const InternalSelect = (props, ref) => {
var _a2;
const {
prefixCls: customizePrefixCls,
bordered,
className,
rootClassName,
getPopupContainer,
popupClassName,
dropdownClassName,
listHeight = 256,
placement,
listItemHeight: customListItemHeight,
size: customizeSize,
disabled: customDisabled,
notFoundContent,
status: customStatus,
builtinPlacements,
dropdownMatchSelectWidth,
popupMatchSelectWidth,
direction: propDirection,
style: style2,
allowClear,
variant: customizeVariant,
dropdownStyle,
transitionName,
tagRender,
maxCount
} = props, rest = __rest$p(props, ["prefixCls", "bordered", "className", "rootClassName", "getPopupContainer", "popupClassName", "dropdownClassName", "listHeight", "placement", "listItemHeight", "size", "disabled", "notFoundContent", "status", "builtinPlacements", "dropdownMatchSelectWidth", "popupMatchSelectWidth", "direction", "style", "allowClear", "variant", "dropdownStyle", "transitionName", "tagRender", "maxCount"]);
const {
getPopupContainer: getContextPopupContainer,
getPrefixCls,
renderEmpty,
direction: contextDirection,
virtual,
popupMatchSelectWidth: contextPopupMatchSelectWidth,
popupOverflow,
select
} = reactExports.useContext(ConfigContext);
const [, token2] = useToken();
const listItemHeight = customListItemHeight !== null && customListItemHeight !== void 0 ? customListItemHeight : token2 === null || token2 === void 0 ? void 0 : token2.controlHeight;
const prefixCls = getPrefixCls("select", customizePrefixCls);
const rootPrefixCls = getPrefixCls();
const direction = propDirection !== null && propDirection !== void 0 ? propDirection : contextDirection;
const {
compactSize,
compactItemClassnames
} = useCompactItemContext(prefixCls, direction);
const [variant, enableVariantCls] = useVariant("select", customizeVariant, bordered);
const rootCls = useCSSVarCls(prefixCls);
const [wrapCSSVar, hashId, cssVarCls] = useSelectStyle(prefixCls, rootCls);
const mode = reactExports.useMemo(() => {
const {
mode: m2
} = props;
if (m2 === "combobox") {
return void 0;
}
if (m2 === SECRET_COMBOBOX_MODE_DO_NOT_USE) {
return "combobox";
}
return m2;
}, [props.mode]);
const isMultiple3 = mode === "multiple" || mode === "tags";
const showSuffixIcon = useShowArrow(props.suffixIcon, props.showArrow);
const mergedPopupMatchSelectWidth = (_a2 = popupMatchSelectWidth !== null && popupMatchSelectWidth !== void 0 ? popupMatchSelectWidth : dropdownMatchSelectWidth) !== null && _a2 !== void 0 ? _a2 : contextPopupMatchSelectWidth;
const {
status: contextStatus,
hasFeedback,
isFormItemInput,
feedbackIcon
} = reactExports.useContext(FormItemInputContext);
const mergedStatus = getMergedStatus(contextStatus, customStatus);
let mergedNotFound;
if (notFoundContent !== void 0) {
mergedNotFound = notFoundContent;
} else if (mode === "combobox") {
mergedNotFound = null;
} else {
mergedNotFound = (renderEmpty === null || renderEmpty === void 0 ? void 0 : renderEmpty("Select")) || /* @__PURE__ */ reactExports.createElement(DefaultRenderEmpty, {
componentName: "Select"
});
}
const {
suffixIcon,
itemIcon,
removeIcon,
clearIcon
} = useIcons(Object.assign(Object.assign({}, rest), {
multiple: isMultiple3,
hasFeedback,
feedbackIcon,
showSuffixIcon,
prefixCls,
componentName: "Select"
}));
const mergedAllowClear = allowClear === true ? {
clearIcon
} : allowClear;
const selectProps = omit(rest, ["suffixIcon", "itemIcon"]);
const mergedPopupClassName = cls(popupClassName || dropdownClassName, {
[`${prefixCls}-dropdown-${direction}`]: direction === "rtl"
}, rootClassName, cssVarCls, rootCls, hashId);
const mergedSize = useSize((ctx) => {
var _a22;
return (_a22 = customizeSize !== null && customizeSize !== void 0 ? customizeSize : compactSize) !== null && _a22 !== void 0 ? _a22 : ctx;
});
const disabled = reactExports.useContext(DisabledContext);
const mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;
const mergedClassName = cls({
[`${prefixCls}-lg`]: mergedSize === "large",
[`${prefixCls}-sm`]: mergedSize === "small",
[`${prefixCls}-rtl`]: direction === "rtl",
[`${prefixCls}-${variant}`]: enableVariantCls,
[`${prefixCls}-in-form-item`]: isFormItemInput
}, getStatusClassNames(prefixCls, mergedStatus, hasFeedback), compactItemClassnames, select === null || select === void 0 ? void 0 : select.className, className, rootClassName, cssVarCls, rootCls, hashId);
const memoPlacement = reactExports.useMemo(() => {
if (placement !== void 0) {
return placement;
}
return direction === "rtl" ? "bottomRight" : "bottomLeft";
}, [placement, direction]);
const [zIndex] = useZIndex("SelectLike", dropdownStyle === null || dropdownStyle === void 0 ? void 0 : dropdownStyle.zIndex);
return wrapCSSVar(/* @__PURE__ */ reactExports.createElement(TypedSelect, Object.assign({
ref,
virtual,
showSearch: select === null || select === void 0 ? void 0 : select.showSearch
}, selectProps, {
style: Object.assign(Object.assign({}, select === null || select === void 0 ? void 0 : select.style), style2),
dropdownMatchSelectWidth: mergedPopupMatchSelectWidth,
transitionName: getTransitionName(rootPrefixCls, "slide-up", transitionName),
builtinPlacements: mergedBuiltinPlacements(builtinPlacements, popupOverflow),
listHeight,
listItemHeight,
mode,
prefixCls,
placement: memoPlacement,
direction,
suffixIcon,
menuItemSelectedIcon: itemIcon,
removeIcon,
allowClear: mergedAllowClear,
notFoundContent: mergedNotFound,
className: mergedClassName,
getPopupContainer: getPopupContainer || getContextPopupContainer,
dropdownClassName: mergedPopupClassName,
disabled: mergedDisabled,
dropdownStyle: Object.assign(Object.assign({}, dropdownStyle), {
zIndex
}),
maxCount: isMultiple3 ? maxCount : void 0,
tagRender: isMultiple3 ? tagRender : void 0
})));
};
const Select = /* @__PURE__ */ reactExports.forwardRef(InternalSelect);
const PurePanel$4 = genPurePanel(Select);
Select.SECRET_COMBOBOX_MODE_DO_NOT_USE = SECRET_COMBOBOX_MODE_DO_NOT_USE;
Select.Option = Option;
Select.OptGroup = OptGroup;
Select._InternalPanelDoNotUseOrYouWillBeFired = PurePanel$4;
const responsiveArray = ["xxl", "xl", "lg", "md", "sm", "xs"];
const getResponsiveMap = (token2) => ({
xs: `(max-width: ${token2.screenXSMax}px)`,
sm: `(min-width: ${token2.screenSM}px)`,
md: `(min-width: ${token2.screenMD}px)`,
lg: `(min-width: ${token2.screenLG}px)`,
xl: `(min-width: ${token2.screenXL}px)`,
xxl: `(min-width: ${token2.screenXXL}px)`
});
const validateBreakpoints = (token2) => {
const indexableToken = token2;
const revBreakpoints = [].concat(responsiveArray).reverse();
revBreakpoints.forEach((breakpoint, i) => {
const breakpointUpper = breakpoint.toUpperCase();
const screenMin = `screen${breakpointUpper}Min`;
const screen = `screen${breakpointUpper}`;
if (!(indexableToken[screenMin] <= indexableToken[screen])) {
throw new Error(`${screenMin}<=${screen} fails : !(${indexableToken[screenMin]}<=${indexableToken[screen]})`);
}
if (i < revBreakpoints.length - 1) {
const screenMax = `screen${breakpointUpper}Max`;
if (!(indexableToken[screen] <= indexableToken[screenMax])) {
throw new Error(`${screen}<=${screenMax} fails : !(${indexableToken[screen]}<=${indexableToken[screenMax]})`);
}
const nextBreakpointUpperMin = revBreakpoints[i + 1].toUpperCase();
const nextScreenMin = `screen${nextBreakpointUpperMin}Min`;
if (!(indexableToken[screenMax] <= indexableToken[nextScreenMin])) {
throw new Error(`${screenMax}<=${nextScreenMin} fails : !(${indexableToken[screenMax]}<=${indexableToken[nextScreenMin]})`);
}
}
});
return token2;
};
function useResponsiveObserver() {
const [, token2] = useToken();
const responsiveMap = getResponsiveMap(validateBreakpoints(token2));
return React.useMemo(() => {
const subscribers = /* @__PURE__ */ new Map();
let subUid = -1;
let screens = {};
return {
matchHandlers: {},
dispatch(pointMap) {
screens = pointMap;
subscribers.forEach((func) => func(screens));
return subscribers.size >= 1;
},
subscribe(func) {
if (!subscribers.size) this.register();
subUid += 1;
subscribers.set(subUid, func);
func(screens);
return subUid;
},
unsubscribe(paramToken) {
subscribers.delete(paramToken);
if (!subscribers.size) this.unregister();
},
unregister() {
Object.keys(responsiveMap).forEach((screen) => {
const matchMediaQuery = responsiveMap[screen];
const handler = this.matchHandlers[matchMediaQuery];
handler === null || handler === void 0 ? void 0 : handler.mql.removeListener(handler === null || handler === void 0 ? void 0 : handler.listener);
});
subscribers.clear();
},
register() {
Object.keys(responsiveMap).forEach((screen) => {
const matchMediaQuery = responsiveMap[screen];
const listener = (_ref) => {
let {
matches
} = _ref;
this.dispatch(Object.assign(Object.assign({}, screens), {
[screen]: matches
}));
};
const mql = window.matchMedia(matchMediaQuery);
mql.addListener(listener);
this.matchHandlers[matchMediaQuery] = {
mql,
listener
};
listener(mql);
});
},
responsiveMap
};
}, [token2]);
}
function useForceUpdate() {
const [, forceUpdate] = reactExports.useReducer((x2) => x2 + 1, 0);
return forceUpdate;
}
function useBreakpoint() {
let refreshOnChange = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true;
const screensRef = reactExports.useRef({});
const forceUpdate = useForceUpdate();
const responsiveObserver = useResponsiveObserver();
useLayoutEffect$1(() => {
const token2 = responsiveObserver.subscribe((supportScreens) => {
screensRef.current = supportScreens;
if (refreshOnChange) {
forceUpdate();
}
});
return () => responsiveObserver.unsubscribe(token2);
}, []);
return screensRef.current;
}
const getRenderPropValue = (propValue) => {
if (!propValue) {
return null;
}
return typeof propValue === "function" ? propValue() : propValue;
};
function Popup(props) {
var children = props.children, prefixCls = props.prefixCls, id2 = props.id, overlayInnerStyle = props.overlayInnerStyle, className = props.className, style2 = props.style;
return /* @__PURE__ */ reactExports.createElement("div", {
className: cls("".concat(prefixCls, "-content"), className),
style: style2
}, /* @__PURE__ */ reactExports.createElement("div", {
className: "".concat(prefixCls, "-inner"),
id: id2,
role: "tooltip",
style: overlayInnerStyle
}, typeof children === "function" ? children() : children));
}
var autoAdjustOverflowTopBottom = {
shiftX: 64,
adjustY: 1
};
var autoAdjustOverflowLeftRight = {
adjustX: 1,
shiftY: true
};
var targetOffset$1 = [0, 0];
var placements$2 = {
left: {
points: ["cr", "cl"],
overflow: autoAdjustOverflowLeftRight,
offset: [-4, 0],
targetOffset: targetOffset$1
},
right: {
points: ["cl", "cr"],
overflow: autoAdjustOverflowLeftRight,
offset: [4, 0],
targetOffset: targetOffset$1
},
top: {
points: ["bc", "tc"],
overflow: autoAdjustOverflowTopBottom,
offset: [0, -4],
targetOffset: targetOffset$1
},
bottom: {
points: ["tc", "bc"],
overflow: autoAdjustOverflowTopBottom,
offset: [0, 4],
targetOffset: targetOffset$1
},
topLeft: {
points: ["bl", "tl"],
overflow: autoAdjustOverflowTopBottom,
offset: [0, -4],
targetOffset: targetOffset$1
},
leftTop: {
points: ["tr", "tl"],
overflow: autoAdjustOverflowLeftRight,
offset: [-4, 0],
targetOffset: targetOffset$1
},
topRight: {
points: ["br", "tr"],
overflow: autoAdjustOverflowTopBottom,
offset: [0, -4],
targetOffset: targetOffset$1
},
rightTop: {
points: ["tl", "tr"],
overflow: autoAdjustOverflowLeftRight,
offset: [4, 0],
targetOffset: targetOffset$1
},
bottomRight: {
points: ["tr", "br"],
overflow: autoAdjustOverflowTopBottom,
offset: [0, 4],
targetOffset: targetOffset$1
},
rightBottom: {
points: ["bl", "br"],
overflow: autoAdjustOverflowLeftRight,
offset: [4, 0],
targetOffset: targetOffset$1
},
bottomLeft: {
points: ["tl", "bl"],
overflow: autoAdjustOverflowTopBottom,
offset: [0, 4],
targetOffset: targetOffset$1
},
leftBottom: {
points: ["br", "bl"],
overflow: autoAdjustOverflowLeftRight,
offset: [-4, 0],
targetOffset: targetOffset$1
}
};
var _excluded$q = ["overlayClassName", "trigger", "mouseEnterDelay", "mouseLeaveDelay", "overlayStyle", "prefixCls", "children", "onVisibleChange", "afterVisibleChange", "transitionName", "animation", "motion", "placement", "align", "destroyTooltipOnHide", "defaultVisible", "getTooltipContainer", "overlayInnerStyle", "arrowContent", "overlay", "id", "showArrow"];
var Tooltip$1 = function Tooltip(props, ref) {
var overlayClassName = props.overlayClassName, _props$trigger = props.trigger, trigger2 = _props$trigger === void 0 ? ["hover"] : _props$trigger, _props$mouseEnterDela = props.mouseEnterDelay, mouseEnterDelay = _props$mouseEnterDela === void 0 ? 0 : _props$mouseEnterDela, _props$mouseLeaveDela = props.mouseLeaveDelay, mouseLeaveDelay = _props$mouseLeaveDela === void 0 ? 0.1 : _props$mouseLeaveDela, overlayStyle = props.overlayStyle, _props$prefixCls = props.prefixCls, prefixCls = _props$prefixCls === void 0 ? "rc-tooltip" : _props$prefixCls, children = props.children, onVisibleChange = props.onVisibleChange, afterVisibleChange = props.afterVisibleChange, transitionName = props.transitionName, animation = props.animation, motion = props.motion, _props$placement = props.placement, placement = _props$placement === void 0 ? "right" : _props$placement, _props$align = props.align, align = _props$align === void 0 ? {} : _props$align, _props$destroyTooltip = props.destroyTooltipOnHide, destroyTooltipOnHide = _props$destroyTooltip === void 0 ? false : _props$destroyTooltip, defaultVisible = props.defaultVisible, getTooltipContainer = props.getTooltipContainer, overlayInnerStyle = props.overlayInnerStyle;
props.arrowContent;
var overlay = props.overlay, id2 = props.id, _props$showArrow = props.showArrow, showArrow = _props$showArrow === void 0 ? true : _props$showArrow, restProps = _objectWithoutProperties(props, _excluded$q);
var triggerRef = reactExports.useRef(null);
reactExports.useImperativeHandle(ref, function() {
return triggerRef.current;
});
var extraProps = _objectSpread2$1({}, restProps);
if ("visible" in props) {
extraProps.popupVisible = props.visible;
}
var getPopupElement = function getPopupElement2() {
return /* @__PURE__ */ reactExports.createElement(Popup, {
key: "content",
prefixCls,
id: id2,
overlayInnerStyle
}, overlay);
};
return /* @__PURE__ */ reactExports.createElement(Trigger, _extends$2({
popupClassName: overlayClassName,
prefixCls,
popup: getPopupElement,
action: trigger2,
builtinPlacements: placements$2,
popupPlacement: placement,
ref: triggerRef,
popupAlign: align,
getPopupContainer: getTooltipContainer,
onPopupVisibleChange: onVisibleChange,
afterPopupVisibleChange: afterVisibleChange,
popupTransitionName: transitionName,
popupAnimation: animation,
popupMotion: motion,
defaultPopupVisible: defaultVisible,
autoDestroy: destroyTooltipOnHide,
mouseLeaveDelay,
popupStyle: overlayStyle,
mouseEnterDelay,
arrow: showArrow
}, extraProps), children);
};
const Tooltip$2 = /* @__PURE__ */ reactExports.forwardRef(Tooltip$1);
function getArrowToken(token2) {
const {
sizePopupArrow,
borderRadiusXS,
borderRadiusOuter
} = token2;
const unitWidth = sizePopupArrow / 2;
const ax = 0;
const ay = unitWidth;
const bx = borderRadiusOuter * 1 / Math.sqrt(2);
const by = unitWidth - borderRadiusOuter * (1 - 1 / Math.sqrt(2));
const cx = unitWidth - borderRadiusXS * (1 / Math.sqrt(2));
const cy = borderRadiusOuter * (Math.sqrt(2) - 1) + borderRadiusXS * (1 / Math.sqrt(2));
const dx = 2 * unitWidth - cx;
const dy = cy;
const ex = 2 * unitWidth - bx;
const ey = by;
const fx = 2 * unitWidth - ax;
const fy = ay;
const shadowWidth = unitWidth * Math.sqrt(2) + borderRadiusOuter * (Math.sqrt(2) - 2);
const polygonOffset = borderRadiusOuter * (Math.sqrt(2) - 1);
const arrowPolygon = `polygon(${polygonOffset}px 100%, 50% ${polygonOffset}px, ${2 * unitWidth - polygonOffset}px 100%, ${polygonOffset}px 100%)`;
const arrowPath = `path('M ${ax} ${ay} A ${borderRadiusOuter} ${borderRadiusOuter} 0 0 0 ${bx} ${by} L ${cx} ${cy} A ${borderRadiusXS} ${borderRadiusXS} 0 0 1 ${dx} ${dy} L ${ex} ${ey} A ${borderRadiusOuter} ${borderRadiusOuter} 0 0 0 ${fx} ${fy} Z')`;
return {
arrowShadowWidth: shadowWidth,
arrowPath,
arrowPolygon
};
}
const genRoundedArrow = (token2, bgColor, boxShadow) => {
const {
sizePopupArrow,
arrowPolygon,
arrowPath,
arrowShadowWidth,
borderRadiusXS,
calc
} = token2;
return {
pointerEvents: "none",
width: sizePopupArrow,
height: sizePopupArrow,
overflow: "hidden",
"&::before": {
position: "absolute",
bottom: 0,
insetInlineStart: 0,
width: sizePopupArrow,
height: calc(sizePopupArrow).div(2).equal(),
background: bgColor,
clipPath: {
_multi_value_: true,
value: [arrowPolygon, arrowPath]
},
content: '""'
},
"&::after": {
content: '""',
position: "absolute",
width: arrowShadowWidth,
height: arrowShadowWidth,
bottom: 0,
insetInline: 0,
margin: "auto",
borderRadius: {
_skip_check_: true,
value: `0 0 ${unit$1(borderRadiusXS)} 0`
},
transform: "translateY(50%) rotate(-135deg)",
boxShadow,
zIndex: 0,
background: "transparent"
}
};
};
const MAX_VERTICAL_CONTENT_RADIUS = 8;
function getArrowOffsetToken(options) {
const {
contentRadius,
limitVerticalRadius
} = options;
const arrowOffset = contentRadius > 12 ? contentRadius + 2 : 12;
const arrowOffsetVertical = limitVerticalRadius ? MAX_VERTICAL_CONTENT_RADIUS : arrowOffset;
return {
arrowOffsetHorizontal: arrowOffset,
arrowOffsetVertical
};
}
function isInject(valid, code) {
if (!valid) {
return {};
}
return code;
}
function getArrowStyle(token2, colorBg, options) {
const {
componentCls,
boxShadowPopoverArrow,
arrowOffsetVertical,
arrowOffsetHorizontal
} = token2;
const {
arrowDistance = 0,
arrowPlacement = {
left: true,
right: true,
top: true,
bottom: true
}
} = options || {};
return {
[componentCls]: Object.assign(Object.assign(Object.assign(Object.assign({
// ============================ Basic ============================
[`${componentCls}-arrow`]: [Object.assign(Object.assign({
position: "absolute",
zIndex: 1,
display: "block"
}, genRoundedArrow(token2, colorBg, boxShadowPopoverArrow)), {
"&:before": {
background: colorBg
}
})]
}, isInject(!!arrowPlacement.top, {
[[`&-placement-top > ${componentCls}-arrow`, `&-placement-topLeft > ${componentCls}-arrow`, `&-placement-topRight > ${componentCls}-arrow`].join(",")]: {
bottom: arrowDistance,
transform: "translateY(100%) rotate(180deg)"
},
[`&-placement-top > ${componentCls}-arrow`]: {
left: {
_skip_check_: true,
value: "50%"
},
transform: "translateX(-50%) translateY(100%) rotate(180deg)"
},
"&-placement-topLeft": {
"--arrow-offset-horizontal": arrowOffsetHorizontal,
[`> ${componentCls}-arrow`]: {
left: {
_skip_check_: true,
value: arrowOffsetHorizontal
}
}
},
"&-placement-topRight": {
"--arrow-offset-horizontal": `calc(100% - ${unit$1(arrowOffsetHorizontal)})`,
[`> ${componentCls}-arrow`]: {
right: {
_skip_check_: true,
value: arrowOffsetHorizontal
}
}
}
})), isInject(!!arrowPlacement.bottom, {
[[`&-placement-bottom > ${componentCls}-arrow`, `&-placement-bottomLeft > ${componentCls}-arrow`, `&-placement-bottomRight > ${componentCls}-arrow`].join(",")]: {
top: arrowDistance,
transform: `translateY(-100%)`
},
[`&-placement-bottom > ${componentCls}-arrow`]: {
left: {
_skip_check_: true,
value: "50%"
},
transform: `translateX(-50%) translateY(-100%)`
},
"&-placement-bottomLeft": {
"--arrow-offset-horizontal": arrowOffsetHorizontal,
[`> ${componentCls}-arrow`]: {
left: {
_skip_check_: true,
value: arrowOffsetHorizontal
}
}
},
"&-placement-bottomRight": {
"--arrow-offset-horizontal": `calc(100% - ${unit$1(arrowOffsetHorizontal)})`,
[`> ${componentCls}-arrow`]: {
right: {
_skip_check_: true,
value: arrowOffsetHorizontal
}
}
}
})), isInject(!!arrowPlacement.left, {
[[`&-placement-left > ${componentCls}-arrow`, `&-placement-leftTop > ${componentCls}-arrow`, `&-placement-leftBottom > ${componentCls}-arrow`].join(",")]: {
right: {
_skip_check_: true,
value: arrowDistance
},
transform: "translateX(100%) rotate(90deg)"
},
[`&-placement-left > ${componentCls}-arrow`]: {
top: {
_skip_check_: true,
value: "50%"
},
transform: "translateY(-50%) translateX(100%) rotate(90deg)"
},
[`&-placement-leftTop > ${componentCls}-arrow`]: {
top: arrowOffsetVertical
},
[`&-placement-leftBottom > ${componentCls}-arrow`]: {
bottom: arrowOffsetVertical
}
})), isInject(!!arrowPlacement.right, {
[[`&-placement-right > ${componentCls}-arrow`, `&-placement-rightTop > ${componentCls}-arrow`, `&-placement-rightBottom > ${componentCls}-arrow`].join(",")]: {
left: {
_skip_check_: true,
value: arrowDistance
},
transform: "translateX(-100%) rotate(-90deg)"
},
[`&-placement-right > ${componentCls}-arrow`]: {
top: {
_skip_check_: true,
value: "50%"
},
transform: "translateY(-50%) translateX(-100%) rotate(-90deg)"
},
[`&-placement-rightTop > ${componentCls}-arrow`]: {
top: arrowOffsetVertical
},
[`&-placement-rightBottom > ${componentCls}-arrow`]: {
bottom: arrowOffsetVertical
}
}))
};
}
function getOverflowOptions(placement, arrowOffset, arrowWidth, autoAdjustOverflow2) {
if (autoAdjustOverflow2 === false) {
return {
adjustX: false,
adjustY: false
};
}
const overflow = autoAdjustOverflow2 && typeof autoAdjustOverflow2 === "object" ? autoAdjustOverflow2 : {};
const baseOverflow = {};
switch (placement) {
case "top":
case "bottom":
baseOverflow.shiftX = arrowOffset.arrowOffsetHorizontal * 2 + arrowWidth;
baseOverflow.shiftY = true;
baseOverflow.adjustY = true;
break;
case "left":
case "right":
baseOverflow.shiftY = arrowOffset.arrowOffsetVertical * 2 + arrowWidth;
baseOverflow.shiftX = true;
baseOverflow.adjustX = true;
break;
}
const mergedOverflow = Object.assign(Object.assign({}, baseOverflow), overflow);
if (!mergedOverflow.shiftX) {
mergedOverflow.adjustX = true;
}
if (!mergedOverflow.shiftY) {
mergedOverflow.adjustY = true;
}
return mergedOverflow;
}
const PlacementAlignMap = {
left: {
points: ["cr", "cl"]
},
right: {
points: ["cl", "cr"]
},
top: {
points: ["bc", "tc"]
},
bottom: {
points: ["tc", "bc"]
},
topLeft: {
points: ["bl", "tl"]
},
leftTop: {
points: ["tr", "tl"]
},
topRight: {
points: ["br", "tr"]
},
rightTop: {
points: ["tl", "tr"]
},
bottomRight: {
points: ["tr", "br"]
},
rightBottom: {
points: ["bl", "br"]
},
bottomLeft: {
points: ["tl", "bl"]
},
leftBottom: {
points: ["br", "bl"]
}
};
const ArrowCenterPlacementAlignMap = {
topLeft: {
points: ["bl", "tc"]
},
leftTop: {
points: ["tr", "cl"]
},
topRight: {
points: ["br", "tc"]
},
rightTop: {
points: ["tl", "cr"]
},
bottomRight: {
points: ["tr", "bc"]
},
rightBottom: {
points: ["bl", "cr"]
},
bottomLeft: {
points: ["tl", "bc"]
},
leftBottom: {
points: ["br", "cl"]
}
};
const DisableAutoArrowList = /* @__PURE__ */ new Set(["topLeft", "topRight", "bottomLeft", "bottomRight", "leftTop", "leftBottom", "rightTop", "rightBottom"]);
function getPlacements(config) {
const {
arrowWidth,
autoAdjustOverflow: autoAdjustOverflow2,
arrowPointAtCenter,
offset: offset2,
borderRadius,
visibleFirst
} = config;
const halfArrowWidth = arrowWidth / 2;
const placementMap = {};
Object.keys(PlacementAlignMap).forEach((key) => {
const template = arrowPointAtCenter && ArrowCenterPlacementAlignMap[key] || PlacementAlignMap[key];
const placementInfo = Object.assign(Object.assign({}, template), {
offset: [0, 0],
dynamicInset: true
});
placementMap[key] = placementInfo;
if (DisableAutoArrowList.has(key)) {
placementInfo.autoArrow = false;
}
switch (key) {
case "top":
case "topLeft":
case "topRight":
placementInfo.offset[1] = -halfArrowWidth - offset2;
break;
case "bottom":
case "bottomLeft":
case "bottomRight":
placementInfo.offset[1] = halfArrowWidth + offset2;
break;
case "left":
case "leftTop":
case "leftBottom":
placementInfo.offset[0] = -halfArrowWidth - offset2;
break;
case "right":
case "rightTop":
case "rightBottom":
placementInfo.offset[0] = halfArrowWidth + offset2;
break;
}
const arrowOffset = getArrowOffsetToken({
contentRadius: borderRadius,
limitVerticalRadius: true
});
if (arrowPointAtCenter) {
switch (key) {
case "topLeft":
case "bottomLeft":
placementInfo.offset[0] = -arrowOffset.arrowOffsetHorizontal - halfArrowWidth;
break;
case "topRight":
case "bottomRight":
placementInfo.offset[0] = arrowOffset.arrowOffsetHorizontal + halfArrowWidth;
break;
case "leftTop":
case "rightTop":
placementInfo.offset[1] = -arrowOffset.arrowOffsetHorizontal * 2 + halfArrowWidth;
break;
case "leftBottom":
case "rightBottom":
placementInfo.offset[1] = arrowOffset.arrowOffsetHorizontal * 2 - halfArrowWidth;
break;
}
}
placementInfo.overflow = getOverflowOptions(key, arrowOffset, arrowWidth, autoAdjustOverflow2);
if (visibleFirst) {
placementInfo.htmlRegion = "visibleFirst";
}
});
return placementMap;
}
const genTooltipStyle = (token2) => {
const {
componentCls,
// ant-tooltip
tooltipMaxWidth,
tooltipColor,
tooltipBg,
tooltipBorderRadius,
zIndexPopup,
controlHeight,
boxShadowSecondary,
paddingSM,
paddingXS
} = token2;
return [
{
[componentCls]: Object.assign(Object.assign(Object.assign(Object.assign({}, resetComponent(token2)), {
position: "absolute",
zIndex: zIndexPopup,
display: "block",
width: "max-content",
maxWidth: tooltipMaxWidth,
visibility: "visible",
// When use `autoArrow`, origin will follow the arrow position
"--valid-offset-x": "var(--arrow-offset-horizontal, var(--arrow-x))",
transformOrigin: [`var(--valid-offset-x, 50%)`, `var(--arrow-y, 50%)`].join(" "),
"&-hidden": {
display: "none"
},
"--antd-arrow-background-color": tooltipBg,
// Wrapper for the tooltip content
[`${componentCls}-inner`]: {
minWidth: "1em",
minHeight: controlHeight,
padding: `${unit$1(token2.calc(paddingSM).div(2).equal())} ${unit$1(paddingXS)}`,
color: tooltipColor,
textAlign: "start",
textDecoration: "none",
wordWrap: "break-word",
backgroundColor: tooltipBg,
borderRadius: tooltipBorderRadius,
boxShadow: boxShadowSecondary,
boxSizing: "border-box"
},
// Limit left and right placement radius
[[`&-placement-left`, `&-placement-leftTop`, `&-placement-leftBottom`, `&-placement-right`, `&-placement-rightTop`, `&-placement-rightBottom`].join(",")]: {
[`${componentCls}-inner`]: {
borderRadius: token2.min(tooltipBorderRadius, MAX_VERTICAL_CONTENT_RADIUS)
}
},
[`${componentCls}-content`]: {
position: "relative"
}
}), genPresetColor(token2, (colorKey, _ref) => {
let {
darkColor
} = _ref;
return {
[`&${componentCls}-${colorKey}`]: {
[`${componentCls}-inner`]: {
backgroundColor: darkColor
},
[`${componentCls}-arrow`]: {
"--antd-arrow-background-color": darkColor
}
}
};
})), {
// RTL
"&-rtl": {
direction: "rtl"
}
})
},
// Arrow Style
getArrowStyle(token2, "var(--antd-arrow-background-color)"),
// Pure Render
{
[`${componentCls}-pure`]: {
position: "relative",
maxWidth: "none",
margin: token2.sizePopupArrow
}
}
];
};
const prepareComponentToken$a = (token2) => Object.assign(Object.assign({
zIndexPopup: token2.zIndexPopupBase + 70
}, getArrowOffsetToken({
contentRadius: token2.borderRadius,
limitVerticalRadius: true
})), getArrowToken(merge$1(token2, {
borderRadiusOuter: Math.min(token2.borderRadiusOuter, 4)
})));
const useStyle$d = function(prefixCls) {
let injectStyle = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;
const useStyle2 = genStyleHooks("Tooltip", (token2) => {
const {
borderRadius,
colorTextLightSolid,
colorBgSpotlight
} = token2;
const TooltipToken = merge$1(token2, {
// default variables
tooltipMaxWidth: 250,
tooltipColor: colorTextLightSolid,
tooltipBorderRadius: borderRadius,
tooltipBg: colorBgSpotlight
});
return [genTooltipStyle(TooltipToken), initZoomMotion(token2, "zoom-big-fast")];
}, prepareComponentToken$a, {
resetStyle: false,
// Popover use Tooltip as internal component. We do not need to handle this.
injectStyle
});
return useStyle2(prefixCls);
};
const inverseColors = PresetColors.map((color2) => `${color2}-inverse`);
function isPresetColor(color2) {
let includeInverse = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;
if (includeInverse) {
return [].concat(_toConsumableArray(inverseColors), _toConsumableArray(PresetColors)).includes(color2);
}
return PresetColors.includes(color2);
}
function parseColor(prefixCls, color2) {
const isInternalColor = isPresetColor(color2);
const className = cls({
[`${prefixCls}-${color2}`]: color2 && isInternalColor
});
const overlayStyle = {};
const arrowStyle = {};
if (color2 && !isInternalColor) {
overlayStyle.background = color2;
arrowStyle["--antd-arrow-background-color"] = color2;
}
return {
className,
overlayStyle,
arrowStyle
};
}
const PurePanel$3 = (props) => {
const {
prefixCls: customizePrefixCls,
className,
placement = "top",
title,
color: color2,
overlayInnerStyle
} = props;
const {
getPrefixCls
} = reactExports.useContext(ConfigContext);
const prefixCls = getPrefixCls("tooltip", customizePrefixCls);
const [wrapCSSVar, hashId, cssVarCls] = useStyle$d(prefixCls);
const colorInfo = parseColor(prefixCls, color2);
const arrowContentStyle = colorInfo.arrowStyle;
const formattedOverlayInnerStyle = Object.assign(Object.assign({}, overlayInnerStyle), colorInfo.overlayStyle);
const cls$1 = cls(hashId, cssVarCls, prefixCls, `${prefixCls}-pure`, `${prefixCls}-placement-${placement}`, className, colorInfo.className);
return wrapCSSVar(/* @__PURE__ */ reactExports.createElement("div", {
className: cls$1,
style: arrowContentStyle
}, /* @__PURE__ */ reactExports.createElement("div", {
className: `${prefixCls}-arrow`
}), /* @__PURE__ */ reactExports.createElement(Popup, Object.assign({}, props, {
className: hashId,
prefixCls,
overlayInnerStyle: formattedOverlayInnerStyle
}), title)));
};
var __rest$o = function(s, e2) {
var t2 = {};
for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0) t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i])) t2[p2[i]] = s[p2[i]];
}
return t2;
};
const InternalTooltip = /* @__PURE__ */ reactExports.forwardRef((props, ref) => {
var _a2, _b2;
const {
prefixCls: customizePrefixCls,
openClassName,
getTooltipContainer,
overlayClassName,
color: color2,
overlayInnerStyle,
children,
afterOpenChange,
afterVisibleChange,
destroyTooltipOnHide,
arrow = true,
title,
overlay,
builtinPlacements,
arrowPointAtCenter = false,
autoAdjustOverflow: autoAdjustOverflow2 = true
} = props;
const mergedShowArrow = !!arrow;
const [, token2] = useToken();
const {
getPopupContainer: getContextPopupContainer,
getPrefixCls,
direction
} = reactExports.useContext(ConfigContext);
const warning3 = devUseWarning();
const tooltipRef = reactExports.useRef(null);
const forceAlign = () => {
var _a22;
(_a22 = tooltipRef.current) === null || _a22 === void 0 ? void 0 : _a22.forceAlign();
};
reactExports.useImperativeHandle(ref, () => {
var _a22;
return {
forceAlign,
forcePopupAlign: () => {
warning3.deprecated(false, "forcePopupAlign", "forceAlign");
forceAlign();
},
nativeElement: (_a22 = tooltipRef.current) === null || _a22 === void 0 ? void 0 : _a22.nativeElement
};
});
const [open2, setOpen] = useMergedState(false, {
value: (_a2 = props.open) !== null && _a2 !== void 0 ? _a2 : props.visible,
defaultValue: (_b2 = props.defaultOpen) !== null && _b2 !== void 0 ? _b2 : props.defaultVisible
});
const noTitle = !title && !overlay && title !== 0;
const onOpenChange = (vis) => {
var _a22, _b22;
setOpen(noTitle ? false : vis);
if (!noTitle) {
(_a22 = props.onOpenChange) === null || _a22 === void 0 ? void 0 : _a22.call(props, vis);
(_b22 = props.onVisibleChange) === null || _b22 === void 0 ? void 0 : _b22.call(props, vis);
}
};
const tooltipPlacements = reactExports.useMemo(() => {
var _a22, _b22;
let mergedArrowPointAtCenter = arrowPointAtCenter;
if (typeof arrow === "object") {
mergedArrowPointAtCenter = (_b22 = (_a22 = arrow.pointAtCenter) !== null && _a22 !== void 0 ? _a22 : arrow.arrowPointAtCenter) !== null && _b22 !== void 0 ? _b22 : arrowPointAtCenter;
}
return builtinPlacements || getPlacements({
arrowPointAtCenter: mergedArrowPointAtCenter,
autoAdjustOverflow: autoAdjustOverflow2,
arrowWidth: mergedShowArrow ? token2.sizePopupArrow : 0,
borderRadius: token2.borderRadius,
offset: token2.marginXXS,
visibleFirst: true
});
}, [arrowPointAtCenter, arrow, builtinPlacements, token2]);
const memoOverlay = reactExports.useMemo(() => {
if (title === 0) {
return title;
}
return overlay || title || "";
}, [overlay, title]);
const memoOverlayWrapper = /* @__PURE__ */ reactExports.createElement(ContextIsolator, {
space: true
}, typeof memoOverlay === "function" ? memoOverlay() : memoOverlay);
const {
getPopupContainer,
placement = "top",
mouseEnterDelay = 0.1,
mouseLeaveDelay = 0.1,
overlayStyle,
rootClassName
} = props, otherProps = __rest$o(props, ["getPopupContainer", "placement", "mouseEnterDelay", "mouseLeaveDelay", "overlayStyle", "rootClassName"]);
const prefixCls = getPrefixCls("tooltip", customizePrefixCls);
const rootPrefixCls = getPrefixCls();
const injectFromPopover = props["data-popover-inject"];
let tempOpen = open2;
if (!("open" in props) && !("visible" in props) && noTitle) {
tempOpen = false;
}
const child = /* @__PURE__ */ reactExports.isValidElement(children) && !isFragment(children) ? children : /* @__PURE__ */ reactExports.createElement("span", null, children);
const childProps = child.props;
const childCls = !childProps.className || typeof childProps.className === "string" ? cls(childProps.className, openClassName || `${prefixCls}-open`) : childProps.className;
const [wrapCSSVar, hashId, cssVarCls] = useStyle$d(prefixCls, !injectFromPopover);
const colorInfo = parseColor(prefixCls, color2);
const arrowContentStyle = colorInfo.arrowStyle;
const formattedOverlayInnerStyle = Object.assign(Object.assign({}, overlayInnerStyle), colorInfo.overlayStyle);
const customOverlayClassName = cls(overlayClassName, {
[`${prefixCls}-rtl`]: direction === "rtl"
}, colorInfo.className, rootClassName, hashId, cssVarCls);
const [zIndex, contextZIndex] = useZIndex("Tooltip", otherProps.zIndex);
const content = /* @__PURE__ */ reactExports.createElement(Tooltip$2, Object.assign({}, otherProps, {
zIndex,
showArrow: mergedShowArrow,
placement,
mouseEnterDelay,
mouseLeaveDelay,
prefixCls,
overlayClassName: customOverlayClassName,
overlayStyle: Object.assign(Object.assign({}, arrowContentStyle), overlayStyle),
getTooltipContainer: getPopupContainer || getTooltipContainer || getContextPopupContainer,
ref: tooltipRef,
builtinPlacements: tooltipPlacements,
overlay: memoOverlayWrapper,
visible: tempOpen,
onVisibleChange: onOpenChange,
afterVisibleChange: afterOpenChange !== null && afterOpenChange !== void 0 ? afterOpenChange : afterVisibleChange,
overlayInnerStyle: formattedOverlayInnerStyle,
arrowContent: /* @__PURE__ */ reactExports.createElement("span", {
className: `${prefixCls}-arrow-content`
}),
motion: {
motionName: getTransitionName(rootPrefixCls, "zoom-big-fast", props.transitionName),
motionDeadline: 1e3
},
destroyTooltipOnHide: !!destroyTooltipOnHide
}), tempOpen ? cloneElement(child, {
className: childCls
}) : child);
return wrapCSSVar(/* @__PURE__ */ reactExports.createElement(zIndexContext.Provider, {
value: contextZIndex
}, content));
});
const Tooltip2 = InternalTooltip;
Tooltip2._InternalPanelDoNotUseOrYouWillBeFired = PurePanel$3;
const genBaseStyle$3 = (token2) => {
const {
componentCls,
popoverColor,
titleMinWidth,
fontWeightStrong,
innerPadding,
boxShadowSecondary,
colorTextHeading,
borderRadiusLG,
zIndexPopup,
titleMarginBottom,
colorBgElevated,
popoverBg,
titleBorderBottom,
innerContentPadding,
titlePadding
} = token2;
return [
{
[componentCls]: Object.assign(Object.assign({}, resetComponent(token2)), {
position: "absolute",
top: 0,
// use `left` to fix https://github.com/ant-design/ant-design/issues/39195
left: {
_skip_check_: true,
value: 0
},
zIndex: zIndexPopup,
fontWeight: "normal",
whiteSpace: "normal",
textAlign: "start",
cursor: "auto",
userSelect: "text",
// When use `autoArrow`, origin will follow the arrow position
"--valid-offset-x": "var(--arrow-offset-horizontal, var(--arrow-x))",
transformOrigin: [`var(--valid-offset-x, 50%)`, `var(--arrow-y, 50%)`].join(" "),
"--antd-arrow-background-color": colorBgElevated,
width: "max-content",
maxWidth: "100vw",
"&-rtl": {
direction: "rtl"
},
"&-hidden": {
display: "none"
},
[`${componentCls}-content`]: {
position: "relative"
},
[`${componentCls}-inner`]: {
backgroundColor: popoverBg,
backgroundClip: "padding-box",
borderRadius: borderRadiusLG,
boxShadow: boxShadowSecondary,
padding: innerPadding
},
[`${componentCls}-title`]: {
minWidth: titleMinWidth,
marginBottom: titleMarginBottom,
color: colorTextHeading,
fontWeight: fontWeightStrong,
borderBottom: titleBorderBottom,
padding: titlePadding
},
[`${componentCls}-inner-content`]: {
color: popoverColor,
padding: innerContentPadding
}
})
},
// Arrow Style
getArrowStyle(token2, "var(--antd-arrow-background-color)"),
// Pure Render
{
[`${componentCls}-pure`]: {
position: "relative",
maxWidth: "none",
margin: token2.sizePopupArrow,
display: "inline-block",
[`${componentCls}-content`]: {
display: "inline-block"
}
}
}
];
};
const genColorStyle = (token2) => {
const {
componentCls
} = token2;
return {
[componentCls]: PresetColors.map((colorKey) => {
const lightColor = token2[`${colorKey}6`];
return {
[`&${componentCls}-${colorKey}`]: {
"--antd-arrow-background-color": lightColor,
[`${componentCls}-inner`]: {
backgroundColor: lightColor
},
[`${componentCls}-arrow`]: {
background: "transparent"
}
}
};
})
};
};
const prepareComponentToken$9 = (token2) => {
const {
lineWidth,
controlHeight,
fontHeight,
padding,
wireframe,
zIndexPopupBase,
borderRadiusLG,
marginXS,
lineType,
colorSplit,
paddingSM
} = token2;
const titlePaddingBlockDist = controlHeight - fontHeight;
const popoverTitlePaddingBlockTop = titlePaddingBlockDist / 2;
const popoverTitlePaddingBlockBottom = titlePaddingBlockDist / 2 - lineWidth;
const popoverPaddingHorizontal = padding;
return Object.assign(Object.assign(Object.assign({
titleMinWidth: 177,
zIndexPopup: zIndexPopupBase + 30
}, getArrowToken(token2)), getArrowOffsetToken({
contentRadius: borderRadiusLG,
limitVerticalRadius: true
})), {
// internal
innerPadding: wireframe ? 0 : 12,
titleMarginBottom: wireframe ? 0 : marginXS,
titlePadding: wireframe ? `${popoverTitlePaddingBlockTop}px ${popoverPaddingHorizontal}px ${popoverTitlePaddingBlockBottom}px` : 0,
titleBorderBottom: wireframe ? `${lineWidth}px ${lineType} ${colorSplit}` : "none",
innerContentPadding: wireframe ? `${paddingSM}px ${popoverPaddingHorizontal}px` : 0
});
};
const useStyle$c = genStyleHooks("Popover", (token2) => {
const {
colorBgElevated,
colorText
} = token2;
const popoverToken = merge$1(token2, {
popoverBg: colorBgElevated,
popoverColor: colorText
});
return [genBaseStyle$3(popoverToken), genColorStyle(popoverToken), initZoomMotion(popoverToken, "zoom-big")];
}, prepareComponentToken$9, {
resetStyle: false,
deprecatedTokens: [["width", "titleMinWidth"], ["minWidth", "titleMinWidth"]]
});
var __rest$n = function(s, e2) {
var t2 = {};
for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0) t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i])) t2[p2[i]] = s[p2[i]];
}
return t2;
};
const Overlay$1 = (_ref) => {
let {
title,
content,
prefixCls
} = _ref;
if (!title && !content) {
return null;
}
return /* @__PURE__ */ reactExports.createElement(reactExports.Fragment, null, title && /* @__PURE__ */ reactExports.createElement("div", {
className: `${prefixCls}-title`
}, title), content && /* @__PURE__ */ reactExports.createElement("div", {
className: `${prefixCls}-inner-content`
}, content));
};
const RawPurePanel = (props) => {
const {
hashId,
prefixCls,
className,
style: style2,
placement = "top",
title,
content,
children
} = props;
const titleNode = getRenderPropValue(title);
const contentNode = getRenderPropValue(content);
const cls$1 = cls(hashId, prefixCls, `${prefixCls}-pure`, `${prefixCls}-placement-${placement}`, className);
return /* @__PURE__ */ reactExports.createElement("div", {
className: cls$1,
style: style2
}, /* @__PURE__ */ reactExports.createElement("div", {
className: `${prefixCls}-arrow`
}), /* @__PURE__ */ reactExports.createElement(Popup, Object.assign({}, props, {
className: hashId,
prefixCls
}), children || /* @__PURE__ */ reactExports.createElement(Overlay$1, {
prefixCls,
title: titleNode,
content: contentNode
})));
};
const PurePanel$2 = (props) => {
const {
prefixCls: customizePrefixCls,
className
} = props, restProps = __rest$n(props, ["prefixCls", "className"]);
const {
getPrefixCls
} = reactExports.useContext(ConfigContext);
const prefixCls = getPrefixCls("popover", customizePrefixCls);
const [wrapCSSVar, hashId, cssVarCls] = useStyle$c(prefixCls);
return wrapCSSVar(/* @__PURE__ */ reactExports.createElement(RawPurePanel, Object.assign({}, restProps, {
prefixCls,
hashId,
className: cls(className, cssVarCls)
})));
};
var __rest$m = function(s, e2) {
var t2 = {};
for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0) t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i])) t2[p2[i]] = s[p2[i]];
}
return t2;
};
const InternalPopover = /* @__PURE__ */ reactExports.forwardRef((props, ref) => {
var _a2, _b2;
const {
prefixCls: customizePrefixCls,
title,
content,
overlayClassName,
placement = "top",
trigger: trigger2 = "hover",
children,
mouseEnterDelay = 0.1,
mouseLeaveDelay = 0.1,
onOpenChange,
overlayStyle = {}
} = props, otherProps = __rest$m(props, ["prefixCls", "title", "content", "overlayClassName", "placement", "trigger", "children", "mouseEnterDelay", "mouseLeaveDelay", "onOpenChange", "overlayStyle"]);
const {
getPrefixCls
} = reactExports.useContext(ConfigContext);
const prefixCls = getPrefixCls("popover", customizePrefixCls);
const [wrapCSSVar, hashId, cssVarCls] = useStyle$c(prefixCls);
const rootPrefixCls = getPrefixCls();
const overlayCls = cls(overlayClassName, hashId, cssVarCls);
const [open2, setOpen] = useMergedState(false, {
value: (_a2 = props.open) !== null && _a2 !== void 0 ? _a2 : props.visible,
defaultValue: (_b2 = props.defaultOpen) !== null && _b2 !== void 0 ? _b2 : props.defaultVisible
});
const settingOpen = (value, e2) => {
setOpen(value, true);
onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(value, e2);
};
const onKeyDown2 = (e2) => {
if (e2.keyCode === KeyCode.ESC) {
settingOpen(false, e2);
}
};
const onInternalOpenChange = (value) => {
settingOpen(value);
};
const titleNode = getRenderPropValue(title);
const contentNode = getRenderPropValue(content);
return wrapCSSVar(/* @__PURE__ */ reactExports.createElement(Tooltip2, Object.assign({
placement,
trigger: trigger2,
mouseEnterDelay,
mouseLeaveDelay,
overlayStyle
}, otherProps, {
prefixCls,
overlayClassName: overlayCls,
ref,
open: open2,
onOpenChange: onInternalOpenChange,
overlay: titleNode || contentNode ? /* @__PURE__ */ reactExports.createElement(Overlay$1, {
prefixCls,
title: titleNode,
content: contentNode
}) : null,
transitionName: getTransitionName(rootPrefixCls, "zoom-big", otherProps.transitionName),
"data-popover-inject": true
}), cloneElement(children, {
onKeyDown: (e2) => {
var _a22, _b22;
if (/* @__PURE__ */ reactExports.isValidElement(children)) {
(_b22 = children === null || children === void 0 ? void 0 : (_a22 = children.props).onKeyDown) === null || _b22 === void 0 ? void 0 : _b22.call(_a22, e2);
}
onKeyDown2(e2);
}
})));
});
const Popover = InternalPopover;
Popover._InternalPanelDoNotUseOrYouWillBeFired = PurePanel$2;
var ESC$1 = KeyCode.ESC, TAB = KeyCode.TAB;
function useAccessibility$1(_ref) {
var visible = _ref.visible, triggerRef = _ref.triggerRef, onVisibleChange = _ref.onVisibleChange, autoFocus = _ref.autoFocus, overlayRef = _ref.overlayRef;
var focusMenuRef = reactExports.useRef(false);
var handleCloseMenuAndReturnFocus = function handleCloseMenuAndReturnFocus2() {
if (visible) {
var _triggerRef$current, _triggerRef$current$f;
(_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 || (_triggerRef$current$f = _triggerRef$current.focus) === null || _triggerRef$current$f === void 0 || _triggerRef$current$f.call(_triggerRef$current);
onVisibleChange === null || onVisibleChange === void 0 || onVisibleChange(false);
}
};
var focusMenu = function focusMenu2() {
var _overlayRef$current;
if ((_overlayRef$current = overlayRef.current) !== null && _overlayRef$current !== void 0 && _overlayRef$current.focus) {
overlayRef.current.focus();
focusMenuRef.current = true;
return true;
}
return false;
};
var handleKeyDown = function handleKeyDown2(event) {
switch (event.keyCode) {
case ESC$1:
handleCloseMenuAndReturnFocus();
break;
case TAB: {
var focusResult = false;
if (!focusMenuRef.current) {
focusResult = focusMenu();
}
if (focusResult) {
event.preventDefault();
} else {
handleCloseMenuAndReturnFocus();
}
break;
}
}
};
reactExports.useEffect(function() {
if (visible) {
window.addEventListener("keydown", handleKeyDown);
if (autoFocus) {
wrapperRaf(focusMenu, 3);
}
return function() {
window.removeEventListener("keydown", handleKeyDown);
focusMenuRef.current = false;
};
}
return function() {
focusMenuRef.current = false;
};
}, [visible]);
}
var Overlay = /* @__PURE__ */ reactExports.forwardRef(function(props, ref) {
var overlay = props.overlay, arrow = props.arrow, prefixCls = props.prefixCls;
var overlayNode = reactExports.useMemo(function() {
var overlayElement;
if (typeof overlay === "function") {
overlayElement = overlay();
} else {
overlayElement = overlay;
}
return overlayElement;
}, [overlay]);
var composedRef = composeRef(ref, overlayNode === null || overlayNode === void 0 ? void 0 : overlayNode.ref);
return /* @__PURE__ */ React.createElement(React.Fragment, null, arrow && /* @__PURE__ */ React.createElement("div", {
className: "".concat(prefixCls, "-arrow")
}), /* @__PURE__ */ React.cloneElement(overlayNode, {
ref: supportRef(overlayNode) ? composedRef : void 0
}));
});
var autoAdjustOverflow$1 = {
adjustX: 1,
adjustY: 1
};
var targetOffset = [0, 0];
var placements$1 = {
topLeft: {
points: ["bl", "tl"],
overflow: autoAdjustOverflow$1,
offset: [0, -4],
targetOffset
},
top: {
points: ["bc", "tc"],
overflow: autoAdjustOverflow$1,
offset: [0, -4],
targetOffset
},
topRight: {
points: ["br", "tr"],
overflow: autoAdjustOverflow$1,
offset: [0, -4],
targetOffset
},
bottomLeft: {
points: ["tl", "bl"],
overflow: autoAdjustOverflow$1,
offset: [0, 4],
targetOffset
},
bottom: {
points: ["tc", "bc"],
overflow: autoAdjustOverflow$1,
offset: [0, 4],
targetOffset
},
bottomRight: {
points: ["tr", "br"],
overflow: autoAdjustOverflow$1,
offset: [0, 4],
targetOffset
}
};
var _excluded$p = ["arrow", "prefixCls", "transitionName", "animation", "align", "placement", "placements", "getPopupContainer", "showAction", "hideAction", "overlayClassName", "overlayStyle", "visible", "trigger", "autoFocus", "overlay", "children", "onVisibleChange"];
function Dropdown$2(props, ref) {
var _children$props;
var _props$arrow = props.arrow, arrow = _props$arrow === void 0 ? false : _props$arrow, _props$prefixCls = props.prefixCls, prefixCls = _props$prefixCls === void 0 ? "rc-dropdown" : _props$prefixCls, transitionName = props.transitionName, animation = props.animation, align = props.align, _props$placement = props.placement, placement = _props$placement === void 0 ? "bottomLeft" : _props$placement, _props$placements = props.placements, placements2 = _props$placements === void 0 ? placements$1 : _props$placements, getPopupContainer = props.getPopupContainer, showAction = props.showAction, hideAction = props.hideAction, overlayClassName = props.overlayClassName, overlayStyle = props.overlayStyle, visible = props.visible, _props$trigger = props.trigger, trigger2 = _props$trigger === void 0 ? ["hover"] : _props$trigger, autoFocus = props.autoFocus, overlay = props.overlay, children = props.children, onVisibleChange = props.onVisibleChange, otherProps = _objectWithoutProperties(props, _excluded$p);
var _React$useState = React.useState(), _React$useState2 = _slicedToArray(_React$useState, 2), triggerVisible = _React$useState2[0], setTriggerVisible = _React$useState2[1];
var mergedVisible = "visible" in props ? visible : triggerVisible;
var triggerRef = React.useRef(null);
var overlayRef = React.useRef(null);
var childRef = React.useRef(null);
React.useImperativeHandle(ref, function() {
return triggerRef.current;
});
var handleVisibleChange = function handleVisibleChange2(newVisible) {
setTriggerVisible(newVisible);
onVisibleChange === null || onVisibleChange === void 0 || onVisibleChange(newVisible);
};
useAccessibility$1({
visible: mergedVisible,
triggerRef: childRef,
onVisibleChange: handleVisibleChange,
autoFocus,
overlayRef
});
var onClick = function onClick2(e2) {
var onOverlayClick = props.onOverlayClick;
setTriggerVisible(false);
if (onOverlayClick) {
onOverlayClick(e2);
}
};
var getMenuElement = function getMenuElement2() {
return /* @__PURE__ */ React.createElement(Overlay, {
ref: overlayRef,
overlay,
prefixCls,
arrow
});
};
var getMenuElementOrLambda = function getMenuElementOrLambda2() {
if (typeof overlay === "function") {
return getMenuElement;
}
return getMenuElement();
};
var getMinOverlayWidthMatchTrigger = function getMinOverlayWidthMatchTrigger2() {
var minOverlayWidthMatchTrigger = props.minOverlayWidthMatchTrigger, alignPoint = props.alignPoint;
if ("minOverlayWidthMatchTrigger" in props) {
return minOverlayWidthMatchTrigger;
}
return !alignPoint;
};
var getOpenClassName = function getOpenClassName2() {
var openClassName = props.openClassName;
if (openClassName !== void 0) {
return openClassName;
}
return "".concat(prefixCls, "-open");
};
var childrenNode = /* @__PURE__ */ React.cloneElement(children, {
className: cls((_children$props = children.props) === null || _children$props === void 0 ? void 0 : _children$props.className, mergedVisible && getOpenClassName()),
ref: supportRef(children) ? composeRef(childRef, children.ref) : void 0
});
var triggerHideAction = hideAction;
if (!triggerHideAction && trigger2.indexOf("contextMenu") !== -1) {
triggerHideAction = ["click"];
}
return /* @__PURE__ */ React.createElement(Trigger, _extends$2({
builtinPlacements: placements2
}, otherProps, {
prefixCls,
ref: triggerRef,
popupClassName: cls(overlayClassName, _defineProperty({}, "".concat(prefixCls, "-show-arrow"), arrow)),
popupStyle: overlayStyle,
action: trigger2,
showAction,
hideAction: triggerHideAction,
popupPlacement: placement,
popupAlign: align,
popupTransitionName: transitionName,
popupAnimation: animation,
popupVisible: mergedVisible,
stretch: getMinOverlayWidthMatchTrigger() ? "minWidth" : "",
popup: getMenuElementOrLambda(),
onPopupVisibleChange: handleVisibleChange,
onPopupClick: onClick,
getPopupContainer
}), childrenNode);
}
const Dropdown$3 = /* @__PURE__ */ React.forwardRef(Dropdown$2);
var IdContext = /* @__PURE__ */ reactExports.createContext(null);
function getMenuId(uuid2, eventKey) {
if (uuid2 === void 0) {
return null;
}
return "".concat(uuid2, "-").concat(eventKey);
}
function useMenuId(eventKey) {
var id2 = reactExports.useContext(IdContext);
return getMenuId(id2, eventKey);
}
var _excluded$o = ["children", "locked"];
var MenuContext$1 = /* @__PURE__ */ reactExports.createContext(null);
function mergeProps(origin, target) {
var clone3 = _objectSpread2$1({}, origin);
Object.keys(target).forEach(function(key) {
var value = target[key];
if (value !== void 0) {
clone3[key] = value;
}
});
return clone3;
}
function InheritableContextProvider(_ref) {
var children = _ref.children, locked = _ref.locked, restProps = _objectWithoutProperties(_ref, _excluded$o);
var context = reactExports.useContext(MenuContext$1);
var inheritableContext = useMemo(function() {
return mergeProps(context, restProps);
}, [context, restProps], function(prev2, next2) {
return !locked && (prev2[0] !== next2[0] || !isEqual$1(prev2[1], next2[1], true));
});
return /* @__PURE__ */ reactExports.createElement(MenuContext$1.Provider, {
value: inheritableContext
}, children);
}
var EmptyList = [];
var PathRegisterContext = /* @__PURE__ */ reactExports.createContext(null);
function useMeasure() {
return reactExports.useContext(PathRegisterContext);
}
var PathTrackerContext = /* @__PURE__ */ reactExports.createContext(EmptyList);
function useFullPath(eventKey) {
var parentKeyPath = reactExports.useContext(PathTrackerContext);
return reactExports.useMemo(function() {
return eventKey !== void 0 ? [].concat(_toConsumableArray(parentKeyPath), [eventKey]) : parentKeyPath;
}, [parentKeyPath, eventKey]);
}
var PathUserContext = /* @__PURE__ */ reactExports.createContext(null);
var PrivateContext = /* @__PURE__ */ reactExports.createContext({});
function focusable(node2) {
var includePositive = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
if (isVisible(node2)) {
var nodeName = node2.nodeName.toLowerCase();
var isFocusableElement = (
// Focusable element
["input", "select", "textarea", "button"].includes(nodeName) || // Editable element
node2.isContentEditable || // Anchor with href element
nodeName === "a" && !!node2.getAttribute("href")
);
var tabIndexAttr = node2.getAttribute("tabindex");
var tabIndexNum = Number(tabIndexAttr);
var tabIndex = null;
if (tabIndexAttr && !Number.isNaN(tabIndexNum)) {
tabIndex = tabIndexNum;
} else if (isFocusableElement && tabIndex === null) {
tabIndex = 0;
}
if (isFocusableElement && node2.disabled) {
tabIndex = null;
}
return tabIndex !== null && (tabIndex >= 0 || includePositive && tabIndex < 0);
}
return false;
}
function getFocusNodeList(node2) {
var includePositive = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
var res = _toConsumableArray(node2.querySelectorAll("*")).filter(function(child) {
return focusable(child, includePositive);
});
if (focusable(node2, includePositive)) {
res.unshift(node2);
}
return res;
}
var LEFT = KeyCode.LEFT, RIGHT = KeyCode.RIGHT, UP = KeyCode.UP, DOWN = KeyCode.DOWN, ENTER = KeyCode.ENTER, ESC = KeyCode.ESC, HOME = KeyCode.HOME, END = KeyCode.END;
var ArrowKeys = [UP, DOWN, LEFT, RIGHT];
function getOffset$1(mode, isRootLevel, isRtl, which) {
var _offsets;
var prev2 = "prev";
var next2 = "next";
var children = "children";
var parent = "parent";
if (mode === "inline" && which === ENTER) {
return {
inlineTrigger: true
};
}
var inline2 = _defineProperty(_defineProperty({}, UP, prev2), DOWN, next2);
var horizontal = _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, LEFT, isRtl ? next2 : prev2), RIGHT, isRtl ? prev2 : next2), DOWN, children), ENTER, children);
var vertical = _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, UP, prev2), DOWN, next2), ENTER, children), ESC, parent), LEFT, isRtl ? children : parent), RIGHT, isRtl ? parent : children);
var offsets = {
inline: inline2,
horizontal,
vertical,
inlineSub: inline2,
horizontalSub: vertical,
verticalSub: vertical
};
var type4 = (_offsets = offsets["".concat(mode).concat(isRootLevel ? "" : "Sub")]) === null || _offsets === void 0 ? void 0 : _offsets[which];
switch (type4) {
case prev2:
return {
offset: -1,
sibling: true
};
case next2:
return {
offset: 1,
sibling: true
};
case parent:
return {
offset: -1,
sibling: false
};
case children:
return {
offset: 1,
sibling: false
};
default:
return null;
}
}
function findContainerUL(element) {
var current = element;
while (current) {
if (current.getAttribute("data-menu-list")) {
return current;
}
current = current.parentElement;
}
return null;
}
function getFocusElement(activeElement, elements) {
var current = activeElement || document.activeElement;
while (current) {
if (elements.has(current)) {
return current;
}
current = current.parentElement;
}
return null;
}
function getFocusableElements(container, elements) {
var list = getFocusNodeList(container, true);
return list.filter(function(ele) {
return elements.has(ele);
});
}
function getNextFocusElement(parentQueryContainer, elements, focusMenuElement) {
var offset2 = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 1;
if (!parentQueryContainer) {
return null;
}
var sameLevelFocusableMenuElementList = getFocusableElements(parentQueryContainer, elements);
var count2 = sameLevelFocusableMenuElementList.length;
var focusIndex = sameLevelFocusableMenuElementList.findIndex(function(ele) {
return focusMenuElement === ele;
});
if (offset2 < 0) {
if (focusIndex === -1) {
focusIndex = count2 - 1;
} else {
focusIndex -= 1;
}
} else if (offset2 > 0) {
focusIndex += 1;
}
focusIndex = (focusIndex + count2) % count2;
return sameLevelFocusableMenuElementList[focusIndex];
}
var refreshElements = function refreshElements2(keys2, id2) {
var elements = /* @__PURE__ */ new Set();
var key2element = /* @__PURE__ */ new Map();
var element2key = /* @__PURE__ */ new Map();
keys2.forEach(function(key) {
var element = document.querySelector("[data-menu-id='".concat(getMenuId(id2, key), "']"));
if (element) {
elements.add(element);
element2key.set(element, key);
key2element.set(key, element);
}
});
return {
elements,
key2element,
element2key
};
};
function useAccessibility(mode, activeKey, isRtl, id2, containerRef, getKeys, getKeyPath, triggerActiveKey, triggerAccessibilityOpen, originOnKeyDown) {
var rafRef = reactExports.useRef();
var activeRef = reactExports.useRef();
activeRef.current = activeKey;
var cleanRaf = function cleanRaf2() {
wrapperRaf.cancel(rafRef.current);
};
reactExports.useEffect(function() {
return function() {
cleanRaf();
};
}, []);
return function(e2) {
var which = e2.which;
if ([].concat(ArrowKeys, [ENTER, ESC, HOME, END]).includes(which)) {
var keys2 = getKeys();
var refreshedElements = refreshElements(keys2, id2);
var _refreshedElements = refreshedElements, elements = _refreshedElements.elements, key2element = _refreshedElements.key2element, element2key = _refreshedElements.element2key;
var activeElement = key2element.get(activeKey);
var focusMenuElement = getFocusElement(activeElement, elements);
var focusMenuKey = element2key.get(focusMenuElement);
var offsetObj = getOffset$1(mode, getKeyPath(focusMenuKey, true).length === 1, isRtl, which);
if (!offsetObj && which !== HOME && which !== END) {
return;
}
if (ArrowKeys.includes(which) || [HOME, END].includes(which)) {
e2.preventDefault();
}
var tryFocus = function tryFocus2(menuElement) {
if (menuElement) {
var focusTargetElement = menuElement;
var link = menuElement.querySelector("a");
if (link !== null && link !== void 0 && link.getAttribute("href")) {
focusTargetElement = link;
}
var targetKey = element2key.get(menuElement);
triggerActiveKey(targetKey);
cleanRaf();
rafRef.current = wrapperRaf(function() {
if (activeRef.current === targetKey) {
focusTargetElement.focus();
}
});
}
};
if ([HOME, END].includes(which) || offsetObj.sibling || !focusMenuElement) {
var parentQueryContainer;
if (!focusMenuElement || mode === "inline") {
parentQueryContainer = containerRef.current;
} else {
parentQueryContainer = findContainerUL(focusMenuElement);
}
var targetElement;
var focusableElements = getFocusableElements(parentQueryContainer, elements);
if (which === HOME) {
targetElement = focusableElements[0];
} else if (which === END) {
targetElement = focusableElements[focusableElements.length - 1];
} else {
targetElement = getNextFocusElement(parentQueryContainer, elements, focusMenuElement, offsetObj.offset);
}
tryFocus(targetElement);
} else if (offsetObj.inlineTrigger) {
triggerAccessibilityOpen(focusMenuKey);
} else if (offsetObj.offset > 0) {
triggerAccessibilityOpen(focusMenuKey, true);
cleanRaf();
rafRef.current = wrapperRaf(function() {
refreshedElements = refreshElements(keys2, id2);
var controlId = focusMenuElement.getAttribute("aria-controls");
var subQueryContainer = document.getElementById(controlId);
var targetElement2 = getNextFocusElement(subQueryContainer, refreshedElements.elements);
tryFocus(targetElement2);
}, 5);
} else if (offsetObj.offset < 0) {
var keyPath = getKeyPath(focusMenuKey, true);
var parentKey = keyPath[keyPath.length - 2];
var parentMenuElement = key2element.get(parentKey);
triggerAccessibilityOpen(parentKey, false);
tryFocus(parentMenuElement);
}
}
originOnKeyDown === null || originOnKeyDown === void 0 || originOnKeyDown(e2);
};
}
function nextSlice(callback) {
Promise.resolve().then(callback);
}
var PATH_SPLIT = "__RC_UTIL_PATH_SPLIT__";
var getPathStr = function getPathStr2(keyPath) {
return keyPath.join(PATH_SPLIT);
};
var getPathKeys = function getPathKeys2(keyPathStr) {
return keyPathStr.split(PATH_SPLIT);
};
var OVERFLOW_KEY = "rc-menu-more";
function useKeyRecords() {
var _React$useState = reactExports.useState({}), _React$useState2 = _slicedToArray(_React$useState, 2), internalForceUpdate = _React$useState2[1];
var key2pathRef = reactExports.useRef(/* @__PURE__ */ new Map());
var path2keyRef = reactExports.useRef(/* @__PURE__ */ new Map());
var _React$useState3 = reactExports.useState([]), _React$useState4 = _slicedToArray(_React$useState3, 2), overflowKeys = _React$useState4[0], setOverflowKeys = _React$useState4[1];
var updateRef = reactExports.useRef(0);
var destroyRef = reactExports.useRef(false);
var forceUpdate = function forceUpdate2() {
if (!destroyRef.current) {
internalForceUpdate({});
}
};
var registerPath = reactExports.useCallback(function(key, keyPath) {
var connectedPath = getPathStr(keyPath);
path2keyRef.current.set(connectedPath, key);
key2pathRef.current.set(key, connectedPath);
updateRef.current += 1;
var id2 = updateRef.current;
nextSlice(function() {
if (id2 === updateRef.current) {
forceUpdate();
}
});
}, []);
var unregisterPath = reactExports.useCallback(function(key, keyPath) {
var connectedPath = getPathStr(keyPath);
path2keyRef.current.delete(connectedPath);
key2pathRef.current.delete(key);
}, []);
var refreshOverflowKeys = reactExports.useCallback(function(keys2) {
setOverflowKeys(keys2);
}, []);
var getKeyPath = reactExports.useCallback(function(eventKey, includeOverflow) {
var fullPath = key2pathRef.current.get(eventKey) || "";
var keys2 = getPathKeys(fullPath);
if (includeOverflow && overflowKeys.includes(keys2[0])) {
keys2.unshift(OVERFLOW_KEY);
}
return keys2;
}, [overflowKeys]);
var isSubPathKey = reactExports.useCallback(function(pathKeys, eventKey) {
return pathKeys.filter(function(item) {
return item !== void 0;
}).some(function(pathKey2) {
var pathKeyList = getKeyPath(pathKey2, true);
return pathKeyList.includes(eventKey);
});
}, [getKeyPath]);
var getKeys = function getKeys2() {
var keys2 = _toConsumableArray(key2pathRef.current.keys());
if (overflowKeys.length) {
keys2.push(OVERFLOW_KEY);
}
return keys2;
};
var getSubPathKeys = reactExports.useCallback(function(key) {
var connectedPath = "".concat(key2pathRef.current.get(key)).concat(PATH_SPLIT);
var pathKeys = /* @__PURE__ */ new Set();
_toConsumableArray(path2keyRef.current.keys()).forEach(function(pathKey2) {
if (pathKey2.startsWith(connectedPath)) {
pathKeys.add(path2keyRef.current.get(pathKey2));
}
});
return pathKeys;
}, []);
reactExports.useEffect(function() {
return function() {
destroyRef.current = true;
};
}, []);
return {
// Register
registerPath,
unregisterPath,
refreshOverflowKeys,
// Util
isSubPathKey,
getKeyPath,
getKeys,
getSubPathKeys
};
}
function useMemoCallback(func) {
var funRef = reactExports.useRef(func);
funRef.current = func;
var callback = reactExports.useCallback(function() {
var _funRef$current;
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return (_funRef$current = funRef.current) === null || _funRef$current === void 0 ? void 0 : _funRef$current.call.apply(_funRef$current, [funRef].concat(args));
}, []);
return func ? callback : void 0;
}
var uniquePrefix = Math.random().toFixed(5).toString().slice(2);
var internalId = 0;
function useUUID(id2) {
var _useMergedState = useMergedState(id2, {
value: id2
}), _useMergedState2 = _slicedToArray(_useMergedState, 2), uuid2 = _useMergedState2[0], setUUID = _useMergedState2[1];
reactExports.useEffect(function() {
internalId += 1;
var newId = "".concat(uniquePrefix, "-").concat(internalId);
setUUID("rc-menu-uuid-".concat(newId));
}, []);
return uuid2;
}
function useActive$1(eventKey, disabled, onMouseEnter, onMouseLeave) {
var _React$useContext = reactExports.useContext(MenuContext$1), activeKey = _React$useContext.activeKey, onActive = _React$useContext.onActive, onInactive = _React$useContext.onInactive;
var ret = {
active: activeKey === eventKey
};
if (!disabled) {
ret.onMouseEnter = function(domEvent) {
onMouseEnter === null || onMouseEnter === void 0 || onMouseEnter({
key: eventKey,
domEvent
});
onActive(eventKey);
};
ret.onMouseLeave = function(domEvent) {
onMouseLeave === null || onMouseLeave === void 0 || onMouseLeave({
key: eventKey,
domEvent
});
onInactive(eventKey);
};
}
return ret;
}
function useDirectionStyle(level) {
var _React$useContext = reactExports.useContext(MenuContext$1), mode = _React$useContext.mode, rtl = _React$useContext.rtl, inlineIndent = _React$useContext.inlineIndent;
if (mode !== "inline") {
return null;
}
var len2 = level;
return rtl ? {
paddingRight: len2 * inlineIndent
} : {
paddingLeft: len2 * inlineIndent
};
}
function Icon(_ref) {
var icon = _ref.icon, props = _ref.props, children = _ref.children;
var iconNode;
if (icon === null || icon === false) {
return null;
}
if (typeof icon === "function") {
iconNode = /* @__PURE__ */ reactExports.createElement(icon, _objectSpread2$1({}, props));
} else if (typeof icon !== "boolean") {
iconNode = icon;
}
return iconNode || children || null;
}
var _excluded$n = ["item"];
function warnItemProp(_ref) {
var item = _ref.item, restInfo = _objectWithoutProperties(_ref, _excluded$n);
Object.defineProperty(restInfo, "item", {
get: function get2() {
warningOnce(false, "`info.item` is deprecated since we will move to function component that not provides React Node instance in future.");
return item;
}
});
return restInfo;
}
var _excluded$m = ["title", "attribute", "elementRef"], _excluded2$2 = ["style", "className", "eventKey", "warnKey", "disabled", "itemIcon", "children", "role", "onMouseEnter", "onMouseLeave", "onClick", "onKeyDown", "onFocus"], _excluded3 = ["active"];
var LegacyMenuItem = /* @__PURE__ */ function(_React$Component) {
_inherits(LegacyMenuItem2, _React$Component);
var _super = _createSuper(LegacyMenuItem2);
function LegacyMenuItem2() {
_classCallCheck(this, LegacyMenuItem2);
return _super.apply(this, arguments);
}
_createClass(LegacyMenuItem2, [{
key: "render",
value: function render2() {
var _this$props = this.props, title = _this$props.title, attribute = _this$props.attribute, elementRef = _this$props.elementRef, restProps = _objectWithoutProperties(_this$props, _excluded$m);
var passedProps = omit(restProps, ["eventKey", "popupClassName", "popupOffset", "onTitleClick"]);
warningOnce(!attribute, "`attribute` of Menu.Item is deprecated. Please pass attribute directly.");
return /* @__PURE__ */ reactExports.createElement(ForwardOverflow.Item, _extends$2({}, attribute, {
title: typeof title === "string" ? title : void 0
}, passedProps, {
ref: elementRef
}));
}
}]);
return LegacyMenuItem2;
}(reactExports.Component);
var InternalMenuItem = /* @__PURE__ */ reactExports.forwardRef(function(props, ref) {
var style2 = props.style, className = props.className, eventKey = props.eventKey;
props.warnKey;
var disabled = props.disabled, itemIcon = props.itemIcon, children = props.children, role = props.role, onMouseEnter = props.onMouseEnter, onMouseLeave = props.onMouseLeave, onClick = props.onClick, onKeyDown2 = props.onKeyDown, onFocus = props.onFocus, restProps = _objectWithoutProperties(props, _excluded2$2);
var domDataId = useMenuId(eventKey);
var _React$useContext = reactExports.useContext(MenuContext$1), prefixCls = _React$useContext.prefixCls, onItemClick = _React$useContext.onItemClick, contextDisabled = _React$useContext.disabled, overflowDisabled = _React$useContext.overflowDisabled, contextItemIcon = _React$useContext.itemIcon, selectedKeys = _React$useContext.selectedKeys, onActive = _React$useContext.onActive;
var _React$useContext2 = reactExports.useContext(PrivateContext), _internalRenderMenuItem = _React$useContext2._internalRenderMenuItem;
var itemCls = "".concat(prefixCls, "-item");
var legacyMenuItemRef = reactExports.useRef();
var elementRef = reactExports.useRef();
var mergedDisabled = contextDisabled || disabled;
var mergedEleRef = useComposeRef(ref, elementRef);
var connectedKeys = useFullPath(eventKey);
var getEventInfo = function getEventInfo2(e2) {
return {
key: eventKey,
// Note: For legacy code is reversed which not like other antd component
keyPath: _toConsumableArray(connectedKeys).reverse(),
item: legacyMenuItemRef.current,
domEvent: e2
};
};
var mergedItemIcon = itemIcon || contextItemIcon;
var _useActive = useActive$1(eventKey, mergedDisabled, onMouseEnter, onMouseLeave), active = _useActive.active, activeProps = _objectWithoutProperties(_useActive, _excluded3);
var selected = selectedKeys.includes(eventKey);
var directionStyle = useDirectionStyle(connectedKeys.length);
var onInternalClick = function onInternalClick2(e2) {
if (mergedDisabled) {
return;
}
var info = getEventInfo(e2);
onClick === null || onClick === void 0 || onClick(warnItemProp(info));
onItemClick(info);
};
var onInternalKeyDown = function onInternalKeyDown2(e2) {
onKeyDown2 === null || onKeyDown2 === void 0 || onKeyDown2(e2);
if (e2.which === KeyCode.ENTER) {
var info = getEventInfo(e2);
onClick === null || onClick === void 0 || onClick(warnItemProp(info));
onItemClick(info);
}
};
var onInternalFocus = function onInternalFocus2(e2) {
onActive(eventKey);
onFocus === null || onFocus === void 0 || onFocus(e2);
};
var optionRoleProps = {};
if (props.role === "option") {
optionRoleProps["aria-selected"] = selected;
}
var renderNode2 = /* @__PURE__ */ reactExports.createElement(LegacyMenuItem, _extends$2({
ref: legacyMenuItemRef,
elementRef: mergedEleRef,
role: role === null ? "none" : role || "menuitem",
tabIndex: disabled ? null : -1,
"data-menu-id": overflowDisabled && domDataId ? null : domDataId
}, restProps, activeProps, optionRoleProps, {
component: "li",
"aria-disabled": disabled,
style: _objectSpread2$1(_objectSpread2$1({}, directionStyle), style2),
className: cls(itemCls, _defineProperty(_defineProperty(_defineProperty({}, "".concat(itemCls, "-active"), active), "".concat(itemCls, "-selected"), selected), "".concat(itemCls, "-disabled"), mergedDisabled), className),
onClick: onInternalClick,
onKeyDown: onInternalKeyDown,
onFocus: onInternalFocus
}), children, /* @__PURE__ */ reactExports.createElement(Icon, {
props: _objectSpread2$1(_objectSpread2$1({}, props), {}, {
isSelected: selected
}),
icon: mergedItemIcon
}));
if (_internalRenderMenuItem) {
renderNode2 = _internalRenderMenuItem(renderNode2, props, {
selected
});
}
return renderNode2;
});
function MenuItem$1(props, ref) {
var eventKey = props.eventKey;
var measure = useMeasure();
var connectedKeyPath = useFullPath(eventKey);
reactExports.useEffect(function() {
if (measure) {
measure.registerPath(eventKey, connectedKeyPath);
return function() {
measure.unregisterPath(eventKey, connectedKeyPath);
};
}
}, [connectedKeyPath]);
if (measure) {
return null;
}
return /* @__PURE__ */ reactExports.createElement(InternalMenuItem, _extends$2({}, props, {
ref
}));
}
const MenuItem$2 = /* @__PURE__ */ reactExports.forwardRef(MenuItem$1);
var _excluded$l = ["className", "children"];
var InternalSubMenuList = function InternalSubMenuList2(_ref, ref) {
var className = _ref.className, children = _ref.children, restProps = _objectWithoutProperties(_ref, _excluded$l);
var _React$useContext = reactExports.useContext(MenuContext$1), prefixCls = _React$useContext.prefixCls, mode = _React$useContext.mode, rtl = _React$useContext.rtl;
return /* @__PURE__ */ reactExports.createElement("ul", _extends$2({
className: cls(prefixCls, rtl && "".concat(prefixCls, "-rtl"), "".concat(prefixCls, "-sub"), "".concat(prefixCls, "-").concat(mode === "inline" ? "inline" : "vertical"), className),
role: "menu"
}, restProps, {
"data-menu-list": true,
ref
}), children);
};
var SubMenuList = /* @__PURE__ */ reactExports.forwardRef(InternalSubMenuList);
SubMenuList.displayName = "SubMenuList";
function parseChildren(children, keyPath) {
return toArray$4(children).map(function(child, index2) {
if (/* @__PURE__ */ reactExports.isValidElement(child)) {
var _eventKey, _child$props;
var key = child.key;
var eventKey = (_eventKey = (_child$props = child.props) === null || _child$props === void 0 ? void 0 : _child$props.eventKey) !== null && _eventKey !== void 0 ? _eventKey : key;
var emptyKey = eventKey === null || eventKey === void 0;
if (emptyKey) {
eventKey = "tmp_key-".concat([].concat(_toConsumableArray(keyPath), [index2]).join("-"));
}
var cloneProps = {
key: eventKey,
eventKey
};
return /* @__PURE__ */ reactExports.cloneElement(child, cloneProps);
}
return child;
});
}
var autoAdjustOverflow = {
adjustX: 1,
adjustY: 1
};
var placements = {
topLeft: {
points: ["bl", "tl"],
overflow: autoAdjustOverflow
},
topRight: {
points: ["br", "tr"],
overflow: autoAdjustOverflow
},
bottomLeft: {
points: ["tl", "bl"],
overflow: autoAdjustOverflow
},
bottomRight: {
points: ["tr", "br"],
overflow: autoAdjustOverflow
},
leftTop: {
points: ["tr", "tl"],
overflow: autoAdjustOverflow
},
leftBottom: {
points: ["br", "bl"],
overflow: autoAdjustOverflow
},
rightTop: {
points: ["tl", "tr"],
overflow: autoAdjustOverflow
},
rightBottom: {
points: ["bl", "br"],
overflow: autoAdjustOverflow
}
};
var placementsRtl = {
topLeft: {
points: ["bl", "tl"],
overflow: autoAdjustOverflow
},
topRight: {
points: ["br", "tr"],
overflow: autoAdjustOverflow
},
bottomLeft: {
points: ["tl", "bl"],
overflow: autoAdjustOverflow
},
bottomRight: {
points: ["tr", "br"],
overflow: autoAdjustOverflow
},
rightTop: {
points: ["tr", "tl"],
overflow: autoAdjustOverflow
},
rightBottom: {
points: ["br", "bl"],
overflow: autoAdjustOverflow
},
leftTop: {
points: ["tl", "tr"],
overflow: autoAdjustOverflow
},
leftBottom: {
points: ["bl", "br"],
overflow: autoAdjustOverflow
}
};
function getMotion(mode, motion, defaultMotions) {
if (motion) {
return motion;
}
if (defaultMotions) {
return defaultMotions[mode] || defaultMotions.other;
}
return void 0;
}
var popupPlacementMap = {
horizontal: "bottomLeft",
vertical: "rightTop",
"vertical-left": "rightTop",
"vertical-right": "leftTop"
};
function PopupTrigger(_ref) {
var prefixCls = _ref.prefixCls, visible = _ref.visible, children = _ref.children, popup = _ref.popup, popupStyle = _ref.popupStyle, popupClassName = _ref.popupClassName, popupOffset = _ref.popupOffset, disabled = _ref.disabled, mode = _ref.mode, onVisibleChange = _ref.onVisibleChange;
var _React$useContext = reactExports.useContext(MenuContext$1), getPopupContainer = _React$useContext.getPopupContainer, rtl = _React$useContext.rtl, subMenuOpenDelay = _React$useContext.subMenuOpenDelay, subMenuCloseDelay = _React$useContext.subMenuCloseDelay, builtinPlacements = _React$useContext.builtinPlacements, triggerSubMenuAction = _React$useContext.triggerSubMenuAction, forceSubMenuRender = _React$useContext.forceSubMenuRender, rootClassName = _React$useContext.rootClassName, motion = _React$useContext.motion, defaultMotions = _React$useContext.defaultMotions;
var _React$useState = reactExports.useState(false), _React$useState2 = _slicedToArray(_React$useState, 2), innerVisible = _React$useState2[0], setInnerVisible = _React$useState2[1];
var placement = rtl ? _objectSpread2$1(_objectSpread2$1({}, placementsRtl), builtinPlacements) : _objectSpread2$1(_objectSpread2$1({}, placements), builtinPlacements);
var popupPlacement = popupPlacementMap[mode];
var targetMotion = getMotion(mode, motion, defaultMotions);
var targetMotionRef = reactExports.useRef(targetMotion);
if (mode !== "inline") {
targetMotionRef.current = targetMotion;
}
var mergedMotion = _objectSpread2$1(_objectSpread2$1({}, targetMotionRef.current), {}, {
leavedClassName: "".concat(prefixCls, "-hidden"),
removeOnLeave: false,
motionAppear: true
});
var visibleRef = reactExports.useRef();
reactExports.useEffect(function() {
visibleRef.current = wrapperRaf(function() {
setInnerVisible(visible);
});
return function() {
wrapperRaf.cancel(visibleRef.current);
};
}, [visible]);
return /* @__PURE__ */ reactExports.createElement(Trigger, {
prefixCls,
popupClassName: cls("".concat(prefixCls, "-popup"), _defineProperty({}, "".concat(prefixCls, "-rtl"), rtl), popupClassName, rootClassName),
stretch: mode === "horizontal" ? "minWidth" : null,
getPopupContainer,
builtinPlacements: placement,
popupPlacement,
popupVisible: innerVisible,
popup,
popupStyle,
popupAlign: popupOffset && {
offset: popupOffset
},
action: disabled ? [] : [triggerSubMenuAction],
mouseEnterDelay: subMenuOpenDelay,
mouseLeaveDelay: subMenuCloseDelay,
onPopupVisibleChange: onVisibleChange,
forceRender: forceSubMenuRender,
popupMotion: mergedMotion,
fresh: true
}, children);
}
function InlineSubMenuList(_ref) {
var id2 = _ref.id, open2 = _ref.open, keyPath = _ref.keyPath, children = _ref.children;
var fixedMode = "inline";
var _React$useContext = reactExports.useContext(MenuContext$1), prefixCls = _React$useContext.prefixCls, forceSubMenuRender = _React$useContext.forceSubMenuRender, motion = _React$useContext.motion, defaultMotions = _React$useContext.defaultMotions, mode = _React$useContext.mode;
var sameModeRef = reactExports.useRef(false);
sameModeRef.current = mode === fixedMode;
var _React$useState = reactExports.useState(!sameModeRef.current), _React$useState2 = _slicedToArray(_React$useState, 2), destroy2 = _React$useState2[0], setDestroy = _React$useState2[1];
var mergedOpen = sameModeRef.current ? open2 : false;
reactExports.useEffect(function() {
if (sameModeRef.current) {
setDestroy(false);
}
}, [mode]);
var mergedMotion = _objectSpread2$1({}, getMotion(fixedMode, motion, defaultMotions));
if (keyPath.length > 1) {
mergedMotion.motionAppear = false;
}
var originOnVisibleChanged = mergedMotion.onVisibleChanged;
mergedMotion.onVisibleChanged = function(newVisible) {
if (!sameModeRef.current && !newVisible) {
setDestroy(true);
}
return originOnVisibleChanged === null || originOnVisibleChanged === void 0 ? void 0 : originOnVisibleChanged(newVisible);
};
if (destroy2) {
return null;
}
return /* @__PURE__ */ reactExports.createElement(InheritableContextProvider, {
mode: fixedMode,
locked: !sameModeRef.current
}, /* @__PURE__ */ reactExports.createElement(CSSMotion, _extends$2({
visible: mergedOpen
}, mergedMotion, {
forceRender: forceSubMenuRender,
removeOnLeave: false,
leavedClassName: "".concat(prefixCls, "-hidden")
}), function(_ref2) {
var motionClassName = _ref2.className, motionStyle = _ref2.style;
return /* @__PURE__ */ reactExports.createElement(SubMenuList, {
id: id2,
className: motionClassName,
style: motionStyle
}, children);
}));
}
var _excluded$k = ["style", "className", "title", "eventKey", "warnKey", "disabled", "internalPopupClose", "children", "itemIcon", "expandIcon", "popupClassName", "popupOffset", "popupStyle", "onClick", "onMouseEnter", "onMouseLeave", "onTitleClick", "onTitleMouseEnter", "onTitleMouseLeave"], _excluded2$1 = ["active"];
var InternalSubMenu = /* @__PURE__ */ reactExports.forwardRef(function(props, ref) {
var style2 = props.style, className = props.className, title = props.title, eventKey = props.eventKey;
props.warnKey;
var disabled = props.disabled, internalPopupClose = props.internalPopupClose, children = props.children, itemIcon = props.itemIcon, expandIcon = props.expandIcon, popupClassName = props.popupClassName, popupOffset = props.popupOffset, popupStyle = props.popupStyle, onClick = props.onClick, onMouseEnter = props.onMouseEnter, onMouseLeave = props.onMouseLeave, onTitleClick = props.onTitleClick, onTitleMouseEnter = props.onTitleMouseEnter, onTitleMouseLeave = props.onTitleMouseLeave, restProps = _objectWithoutProperties(props, _excluded$k);
var domDataId = useMenuId(eventKey);
var _React$useContext = reactExports.useContext(MenuContext$1), prefixCls = _React$useContext.prefixCls, mode = _React$useContext.mode, openKeys = _React$useContext.openKeys, contextDisabled = _React$useContext.disabled, overflowDisabled = _React$useContext.overflowDisabled, activeKey = _React$useContext.activeKey, selectedKeys = _React$useContext.selectedKeys, contextItemIcon = _React$useContext.itemIcon, contextExpandIcon = _React$useContext.expandIcon, onItemClick = _React$useContext.onItemClick, onOpenChange = _React$useContext.onOpenChange, onActive = _React$useContext.onActive;
var _React$useContext2 = reactExports.useContext(PrivateContext), _internalRenderSubMenuItem = _React$useContext2._internalRenderSubMenuItem;
var _React$useContext3 = reactExports.useContext(PathUserContext), isSubPathKey = _React$useContext3.isSubPathKey;
var connectedPath = useFullPath();
var subMenuPrefixCls = "".concat(prefixCls, "-submenu");
var mergedDisabled = contextDisabled || disabled;
var elementRef = reactExports.useRef();
var popupRef = reactExports.useRef();
var mergedItemIcon = itemIcon !== null && itemIcon !== void 0 ? itemIcon : contextItemIcon;
var mergedExpandIcon = expandIcon !== null && expandIcon !== void 0 ? expandIcon : contextExpandIcon;
var originOpen = openKeys.includes(eventKey);
var open2 = !overflowDisabled && originOpen;
var childrenSelected = isSubPathKey(selectedKeys, eventKey);
var _useActive = useActive$1(eventKey, mergedDisabled, onTitleMouseEnter, onTitleMouseLeave), active = _useActive.active, activeProps = _objectWithoutProperties(_useActive, _excluded2$1);
var _React$useState = reactExports.useState(false), _React$useState2 = _slicedToArray(_React$useState, 2), childrenActive = _React$useState2[0], setChildrenActive = _React$useState2[1];
var triggerChildrenActive = function triggerChildrenActive2(newActive) {
if (!mergedDisabled) {
setChildrenActive(newActive);
}
};
var onInternalMouseEnter = function onInternalMouseEnter2(domEvent) {
triggerChildrenActive(true);
onMouseEnter === null || onMouseEnter === void 0 || onMouseEnter({
key: eventKey,
domEvent
});
};
var onInternalMouseLeave = function onInternalMouseLeave2(domEvent) {
triggerChildrenActive(false);
onMouseLeave === null || onMouseLeave === void 0 || onMouseLeave({
key: eventKey,
domEvent
});
};
var mergedActive = reactExports.useMemo(function() {
if (active) {
return active;
}
if (mode !== "inline") {
return childrenActive || isSubPathKey([activeKey], eventKey);
}
return false;
}, [mode, active, activeKey, childrenActive, eventKey, isSubPathKey]);
var directionStyle = useDirectionStyle(connectedPath.length);
var onInternalTitleClick = function onInternalTitleClick2(e2) {
if (mergedDisabled) {
return;
}
onTitleClick === null || onTitleClick === void 0 || onTitleClick({
key: eventKey,
domEvent: e2
});
if (mode === "inline") {
onOpenChange(eventKey, !originOpen);
}
};
var onMergedItemClick = useMemoCallback(function(info) {
onClick === null || onClick === void 0 || onClick(warnItemProp(info));
onItemClick(info);
});
var onPopupVisibleChange = function onPopupVisibleChange2(newVisible) {
if (mode !== "inline") {
onOpenChange(eventKey, newVisible);
}
};
var onInternalFocus = function onInternalFocus2() {
onActive(eventKey);
};
var popupId = domDataId && "".concat(domDataId, "-popup");
var titleNode = /* @__PURE__ */ reactExports.createElement("div", _extends$2({
role: "menuitem",
style: directionStyle,
className: "".concat(subMenuPrefixCls, "-title"),
tabIndex: mergedDisabled ? null : -1,
ref: elementRef,
title: typeof title === "string" ? title : null,
"data-menu-id": overflowDisabled && domDataId ? null : domDataId,
"aria-expanded": open2,
"aria-haspopup": true,
"aria-controls": popupId,
"aria-disabled": mergedDisabled,
onClick: onInternalTitleClick,
onFocus: onInternalFocus
}, activeProps), title, /* @__PURE__ */ reactExports.createElement(Icon, {
icon: mode !== "horizontal" ? mergedExpandIcon : void 0,
props: _objectSpread2$1(_objectSpread2$1({}, props), {}, {
isOpen: open2,
// [Legacy] Not sure why need this mark
isSubMenu: true
})
}, /* @__PURE__ */ reactExports.createElement("i", {
className: "".concat(subMenuPrefixCls, "-arrow")
})));
var triggerModeRef = reactExports.useRef(mode);
if (mode !== "inline" && connectedPath.length > 1) {
triggerModeRef.current = "vertical";
} else {
triggerModeRef.current = mode;
}
if (!overflowDisabled) {
var triggerMode = triggerModeRef.current;
titleNode = /* @__PURE__ */ reactExports.createElement(PopupTrigger, {
mode: triggerMode,
prefixCls: subMenuPrefixCls,
visible: !internalPopupClose && open2 && mode !== "inline",
popupClassName,
popupOffset,
popupStyle,
popup: /* @__PURE__ */ reactExports.createElement(
InheritableContextProvider,
{
mode: triggerMode === "horizontal" ? "vertical" : triggerMode
},
/* @__PURE__ */ reactExports.createElement(SubMenuList, {
id: popupId,
ref: popupRef
}, children)
),
disabled: mergedDisabled,
onVisibleChange: onPopupVisibleChange
}, titleNode);
}
var listNode = /* @__PURE__ */ reactExports.createElement(ForwardOverflow.Item, _extends$2({
ref,
role: "none"
}, restProps, {
component: "li",
style: style2,
className: cls(subMenuPrefixCls, "".concat(subMenuPrefixCls, "-").concat(mode), className, _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "".concat(subMenuPrefixCls, "-open"), open2), "".concat(subMenuPrefixCls, "-active"), mergedActive), "".concat(subMenuPrefixCls, "-selected"), childrenSelected), "".concat(subMenuPrefixCls, "-disabled"), mergedDisabled)),
onMouseEnter: onInternalMouseEnter,
onMouseLeave: onInternalMouseLeave
}), titleNode, !overflowDisabled && /* @__PURE__ */ reactExports.createElement(InlineSubMenuList, {
id: popupId,
open: open2,
keyPath: connectedPath
}, children));
if (_internalRenderSubMenuItem) {
listNode = _internalRenderSubMenuItem(listNode, props, {
selected: childrenSelected,
active: mergedActive,
open: open2,
disabled: mergedDisabled
});
}
return /* @__PURE__ */ reactExports.createElement(InheritableContextProvider, {
onItemClick: onMergedItemClick,
mode: mode === "horizontal" ? "vertical" : mode,
itemIcon: mergedItemIcon,
expandIcon: mergedExpandIcon
}, listNode);
});
var SubMenu$1 = /* @__PURE__ */ reactExports.forwardRef(function(props, ref) {
var eventKey = props.eventKey, children = props.children;
var connectedKeyPath = useFullPath(eventKey);
var childList = parseChildren(children, connectedKeyPath);
var measure = useMeasure();
reactExports.useEffect(function() {
if (measure) {
measure.registerPath(eventKey, connectedKeyPath);
return function() {
measure.unregisterPath(eventKey, connectedKeyPath);
};
}
}, [connectedKeyPath]);
var renderNode2;
if (measure) {
renderNode2 = childList;
} else {
renderNode2 = /* @__PURE__ */ reactExports.createElement(InternalSubMenu, _extends$2({
ref
}, props), childList);
}
return /* @__PURE__ */ reactExports.createElement(PathTrackerContext.Provider, {
value: connectedKeyPath
}, renderNode2);
});
function Divider(_ref) {
var className = _ref.className, style2 = _ref.style;
var _React$useContext = reactExports.useContext(MenuContext$1), prefixCls = _React$useContext.prefixCls;
var measure = useMeasure();
if (measure) {
return null;
}
return /* @__PURE__ */ reactExports.createElement("li", {
role: "separator",
className: cls("".concat(prefixCls, "-item-divider"), className),
style: style2
});
}
var _excluded$j = ["className", "title", "eventKey", "children"];
var InternalMenuItemGroup = /* @__PURE__ */ reactExports.forwardRef(function(props, ref) {
var className = props.className, title = props.title;
props.eventKey;
var children = props.children, restProps = _objectWithoutProperties(props, _excluded$j);
var _React$useContext = reactExports.useContext(MenuContext$1), prefixCls = _React$useContext.prefixCls;
var groupPrefixCls = "".concat(prefixCls, "-item-group");
return /* @__PURE__ */ reactExports.createElement("li", _extends$2({
ref,
role: "presentation"
}, restProps, {
onClick: function onClick(e2) {
return e2.stopPropagation();
},
className: cls(groupPrefixCls, className)
}), /* @__PURE__ */ reactExports.createElement("div", {
role: "presentation",
className: "".concat(groupPrefixCls, "-title"),
title: typeof title === "string" ? title : void 0
}, title), /* @__PURE__ */ reactExports.createElement("ul", {
role: "group",
className: "".concat(groupPrefixCls, "-list")
}, children));
});
var MenuItemGroup = /* @__PURE__ */ reactExports.forwardRef(function(props, ref) {
var eventKey = props.eventKey, children = props.children;
var connectedKeyPath = useFullPath(eventKey);
var childList = parseChildren(children, connectedKeyPath);
var measure = useMeasure();
if (measure) {
return childList;
}
return /* @__PURE__ */ reactExports.createElement(InternalMenuItemGroup, _extends$2({
ref
}, omit(props, ["warnKey"])), childList);
});
var _excluded$i = ["label", "children", "key", "type", "extra"];
function convertItemsToNodes(list, components, prefixCls) {
var MergedMenuItem = components.item, MergedMenuItemGroup = components.group, MergedSubMenu = components.submenu, MergedDivider = components.divider;
return (list || []).map(function(opt, index2) {
if (opt && _typeof$2(opt) === "object") {
var _ref = opt, label = _ref.label, children = _ref.children, key = _ref.key, type4 = _ref.type, extra = _ref.extra, restProps = _objectWithoutProperties(_ref, _excluded$i);
var mergedKey = key !== null && key !== void 0 ? key : "tmp-".concat(index2);
if (children || type4 === "group") {
if (type4 === "group") {
return /* @__PURE__ */ reactExports.createElement(MergedMenuItemGroup, _extends$2({
key: mergedKey
}, restProps, {
title: label
}), convertItemsToNodes(children, components, prefixCls));
}
return /* @__PURE__ */ reactExports.createElement(MergedSubMenu, _extends$2({
key: mergedKey
}, restProps, {
title: label
}), convertItemsToNodes(children, components, prefixCls));
}
if (type4 === "divider") {
return /* @__PURE__ */ reactExports.createElement(MergedDivider, _extends$2({
key: mergedKey
}, restProps));
}
return /* @__PURE__ */ reactExports.createElement(MergedMenuItem, _extends$2({
key: mergedKey
}, restProps), label, (!!extra || extra === 0) && /* @__PURE__ */ reactExports.createElement("span", {
className: "".concat(prefixCls, "-item-extra")
}, extra));
}
return null;
}).filter(function(opt) {
return opt;
});
}
function parseItems(children, items, keyPath, components, prefixCls) {
var childNodes = children;
var mergedComponents = _objectSpread2$1({
divider: Divider,
item: MenuItem$2,
group: MenuItemGroup,
submenu: SubMenu$1
}, components);
if (items) {
childNodes = convertItemsToNodes(items, mergedComponents, prefixCls);
}
return parseChildren(childNodes, keyPath);
}
var _excluded$h = ["prefixCls", "rootClassName", "style", "className", "tabIndex", "items", "children", "direction", "id", "mode", "inlineCollapsed", "disabled", "disabledOverflow", "subMenuOpenDelay", "subMenuCloseDelay", "forceSubMenuRender", "defaultOpenKeys", "openKeys", "activeKey", "defaultActiveFirst", "selectable", "multiple", "defaultSelectedKeys", "selectedKeys", "onSelect", "onDeselect", "inlineIndent", "motion", "defaultMotions", "triggerSubMenuAction", "builtinPlacements", "itemIcon", "expandIcon", "overflowedIndicator", "overflowedIndicatorPopupClassName", "getPopupContainer", "onClick", "onOpenChange", "onKeyDown", "openAnimation", "openTransitionName", "_internalRenderMenuItem", "_internalRenderSubMenuItem", "_internalComponents"];
var EMPTY_LIST$2 = [];
var Menu$1 = /* @__PURE__ */ reactExports.forwardRef(function(props, ref) {
var _childList$;
var _ref = props, _ref$prefixCls = _ref.prefixCls, prefixCls = _ref$prefixCls === void 0 ? "rc-menu" : _ref$prefixCls, rootClassName = _ref.rootClassName, style2 = _ref.style, className = _ref.className, _ref$tabIndex = _ref.tabIndex, tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex, items = _ref.items, children = _ref.children, direction = _ref.direction, id2 = _ref.id, _ref$mode = _ref.mode, mode = _ref$mode === void 0 ? "vertical" : _ref$mode, inlineCollapsed = _ref.inlineCollapsed, disabled = _ref.disabled, disabledOverflow = _ref.disabledOverflow, _ref$subMenuOpenDelay = _ref.subMenuOpenDelay, subMenuOpenDelay = _ref$subMenuOpenDelay === void 0 ? 0.1 : _ref$subMenuOpenDelay, _ref$subMenuCloseDela = _ref.subMenuCloseDelay, subMenuCloseDelay = _ref$subMenuCloseDela === void 0 ? 0.1 : _ref$subMenuCloseDela, forceSubMenuRender = _ref.forceSubMenuRender, defaultOpenKeys = _ref.defaultOpenKeys, openKeys = _ref.openKeys, activeKey = _ref.activeKey, defaultActiveFirst = _ref.defaultActiveFirst, _ref$selectable = _ref.selectable, selectable = _ref$selectable === void 0 ? true : _ref$selectable, _ref$multiple = _ref.multiple, multiple = _ref$multiple === void 0 ? false : _ref$multiple, defaultSelectedKeys = _ref.defaultSelectedKeys, selectedKeys = _ref.selectedKeys, onSelect = _ref.onSelect, onDeselect = _ref.onDeselect, _ref$inlineIndent = _ref.inlineIndent, inlineIndent = _ref$inlineIndent === void 0 ? 24 : _ref$inlineIndent, motion = _ref.motion, defaultMotions = _ref.defaultMotions, _ref$triggerSubMenuAc = _ref.triggerSubMenuAction, triggerSubMenuAction = _ref$triggerSubMenuAc === void 0 ? "hover" : _ref$triggerSubMenuAc, builtinPlacements = _ref.builtinPlacements, itemIcon = _ref.itemIcon, expandIcon = _ref.expandIcon, _ref$overflowedIndica = _ref.overflowedIndicator, overflowedIndicator = _ref$overflowedIndica === void 0 ? "..." : _ref$overflowedIndica, overflowedIndicatorPopupClassName = _ref.overflowedIndicatorPopupClassName, getPopupContainer = _ref.getPopupContainer, onClick = _ref.onClick, onOpenChange = _ref.onOpenChange, onKeyDown2 = _ref.onKeyDown;
_ref.openAnimation;
_ref.openTransitionName;
var _internalRenderMenuItem = _ref._internalRenderMenuItem, _internalRenderSubMenuItem = _ref._internalRenderSubMenuItem, _internalComponents = _ref._internalComponents, restProps = _objectWithoutProperties(_ref, _excluded$h);
var _React$useMemo = reactExports.useMemo(function() {
return [parseItems(children, items, EMPTY_LIST$2, _internalComponents, prefixCls), parseItems(children, items, EMPTY_LIST$2, {}, prefixCls)];
}, [children, items, _internalComponents]), _React$useMemo2 = _slicedToArray(_React$useMemo, 2), childList = _React$useMemo2[0], measureChildList = _React$useMemo2[1];
var _React$useState = reactExports.useState(false), _React$useState2 = _slicedToArray(_React$useState, 2), mounted = _React$useState2[0], setMounted = _React$useState2[1];
var containerRef = reactExports.useRef();
var uuid2 = useUUID(id2);
var isRtl = direction === "rtl";
var _useMergedState = useMergedState(defaultOpenKeys, {
value: openKeys,
postState: function postState(keys2) {
return keys2 || EMPTY_LIST$2;
}
}), _useMergedState2 = _slicedToArray(_useMergedState, 2), mergedOpenKeys = _useMergedState2[0], setMergedOpenKeys = _useMergedState2[1];
var triggerOpenKeys = function triggerOpenKeys2(keys2) {
var forceFlush = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
function doUpdate() {
setMergedOpenKeys(keys2);
onOpenChange === null || onOpenChange === void 0 || onOpenChange(keys2);
}
if (forceFlush) {
reactDomExports.flushSync(doUpdate);
} else {
doUpdate();
}
};
var _React$useState3 = reactExports.useState(mergedOpenKeys), _React$useState4 = _slicedToArray(_React$useState3, 2), inlineCacheOpenKeys = _React$useState4[0], setInlineCacheOpenKeys = _React$useState4[1];
var mountRef = reactExports.useRef(false);
var _React$useMemo3 = reactExports.useMemo(function() {
if ((mode === "inline" || mode === "vertical") && inlineCollapsed) {
return ["vertical", inlineCollapsed];
}
return [mode, false];
}, [mode, inlineCollapsed]), _React$useMemo4 = _slicedToArray(_React$useMemo3, 2), mergedMode = _React$useMemo4[0], mergedInlineCollapsed = _React$useMemo4[1];
var isInlineMode = mergedMode === "inline";
var _React$useState5 = reactExports.useState(mergedMode), _React$useState6 = _slicedToArray(_React$useState5, 2), internalMode = _React$useState6[0], setInternalMode = _React$useState6[1];
var _React$useState7 = reactExports.useState(mergedInlineCollapsed), _React$useState8 = _slicedToArray(_React$useState7, 2), internalInlineCollapsed = _React$useState8[0], setInternalInlineCollapsed = _React$useState8[1];
reactExports.useEffect(function() {
setInternalMode(mergedMode);
setInternalInlineCollapsed(mergedInlineCollapsed);
if (!mountRef.current) {
return;
}
if (isInlineMode) {
setMergedOpenKeys(inlineCacheOpenKeys);
} else {
triggerOpenKeys(EMPTY_LIST$2);
}
}, [mergedMode, mergedInlineCollapsed]);
var _React$useState9 = reactExports.useState(0), _React$useState10 = _slicedToArray(_React$useState9, 2), lastVisibleIndex = _React$useState10[0], setLastVisibleIndex = _React$useState10[1];
var allVisible = lastVisibleIndex >= childList.length - 1 || internalMode !== "horizontal" || disabledOverflow;
reactExports.useEffect(function() {
if (isInlineMode) {
setInlineCacheOpenKeys(mergedOpenKeys);
}
}, [mergedOpenKeys]);
reactExports.useEffect(function() {
mountRef.current = true;
return function() {
mountRef.current = false;
};
}, []);
var _useKeyRecords = useKeyRecords(), registerPath = _useKeyRecords.registerPath, unregisterPath = _useKeyRecords.unregisterPath, refreshOverflowKeys = _useKeyRecords.refreshOverflowKeys, isSubPathKey = _useKeyRecords.isSubPathKey, getKeyPath = _useKeyRecords.getKeyPath, getKeys = _useKeyRecords.getKeys, getSubPathKeys = _useKeyRecords.getSubPathKeys;
var registerPathContext = reactExports.useMemo(function() {
return {
registerPath,
unregisterPath
};
}, [registerPath, unregisterPath]);
var pathUserContext = reactExports.useMemo(function() {
return {
isSubPathKey
};
}, [isSubPathKey]);
reactExports.useEffect(function() {
refreshOverflowKeys(allVisible ? EMPTY_LIST$2 : childList.slice(lastVisibleIndex + 1).map(function(child) {
return child.key;
}));
}, [lastVisibleIndex, allVisible]);
var _useMergedState3 = useMergedState(activeKey || defaultActiveFirst && ((_childList$ = childList[0]) === null || _childList$ === void 0 ? void 0 : _childList$.key), {
value: activeKey
}), _useMergedState4 = _slicedToArray(_useMergedState3, 2), mergedActiveKey = _useMergedState4[0], setMergedActiveKey = _useMergedState4[1];
var onActive = useMemoCallback(function(key) {
setMergedActiveKey(key);
});
var onInactive = useMemoCallback(function() {
setMergedActiveKey(void 0);
});
reactExports.useImperativeHandle(ref, function() {
return {
list: containerRef.current,
focus: function focus(options) {
var _childList$find;
var keys2 = getKeys();
var _refreshElements = refreshElements(keys2, uuid2), elements = _refreshElements.elements, key2element = _refreshElements.key2element, element2key = _refreshElements.element2key;
var focusableElements = getFocusableElements(containerRef.current, elements);
var shouldFocusKey = mergedActiveKey !== null && mergedActiveKey !== void 0 ? mergedActiveKey : focusableElements[0] ? element2key.get(focusableElements[0]) : (_childList$find = childList.find(function(node2) {
return !node2.props.disabled;
})) === null || _childList$find === void 0 ? void 0 : _childList$find.key;
var elementToFocus = key2element.get(shouldFocusKey);
if (shouldFocusKey && elementToFocus) {
var _elementToFocus$focus;
elementToFocus === null || elementToFocus === void 0 || (_elementToFocus$focus = elementToFocus.focus) === null || _elementToFocus$focus === void 0 || _elementToFocus$focus.call(elementToFocus, options);
}
}
};
});
var _useMergedState5 = useMergedState(defaultSelectedKeys || [], {
value: selectedKeys,
// Legacy convert key to array
postState: function postState(keys2) {
if (Array.isArray(keys2)) {
return keys2;
}
if (keys2 === null || keys2 === void 0) {
return EMPTY_LIST$2;
}
return [keys2];
}
}), _useMergedState6 = _slicedToArray(_useMergedState5, 2), mergedSelectKeys = _useMergedState6[0], setMergedSelectKeys = _useMergedState6[1];
var triggerSelection = function triggerSelection2(info) {
if (selectable) {
var targetKey = info.key;
var exist = mergedSelectKeys.includes(targetKey);
var newSelectKeys;
if (multiple) {
if (exist) {
newSelectKeys = mergedSelectKeys.filter(function(key) {
return key !== targetKey;
});
} else {
newSelectKeys = [].concat(_toConsumableArray(mergedSelectKeys), [targetKey]);
}
} else {
newSelectKeys = [targetKey];
}
setMergedSelectKeys(newSelectKeys);
var selectInfo = _objectSpread2$1(_objectSpread2$1({}, info), {}, {
selectedKeys: newSelectKeys
});
if (exist) {
onDeselect === null || onDeselect === void 0 || onDeselect(selectInfo);
} else {
onSelect === null || onSelect === void 0 || onSelect(selectInfo);
}
}
if (!multiple && mergedOpenKeys.length && internalMode !== "inline") {
triggerOpenKeys(EMPTY_LIST$2);
}
};
var onInternalClick = useMemoCallback(function(info) {
onClick === null || onClick === void 0 || onClick(warnItemProp(info));
triggerSelection(info);
});
var onInternalOpenChange = useMemoCallback(function(key, open2) {
var newOpenKeys = mergedOpenKeys.filter(function(k2) {
return k2 !== key;
});
if (open2) {
newOpenKeys.push(key);
} else if (internalMode !== "inline") {
var subPathKeys = getSubPathKeys(key);
newOpenKeys = newOpenKeys.filter(function(k2) {
return !subPathKeys.has(k2);
});
}
if (!isEqual$1(mergedOpenKeys, newOpenKeys, true)) {
triggerOpenKeys(newOpenKeys, true);
}
});
var triggerAccessibilityOpen = function triggerAccessibilityOpen2(key, open2) {
var nextOpen = open2 !== null && open2 !== void 0 ? open2 : !mergedOpenKeys.includes(key);
onInternalOpenChange(key, nextOpen);
};
var onInternalKeyDown = useAccessibility(internalMode, mergedActiveKey, isRtl, uuid2, containerRef, getKeys, getKeyPath, setMergedActiveKey, triggerAccessibilityOpen, onKeyDown2);
reactExports.useEffect(function() {
setMounted(true);
}, []);
var privateContext = reactExports.useMemo(function() {
return {
_internalRenderMenuItem,
_internalRenderSubMenuItem
};
}, [_internalRenderMenuItem, _internalRenderSubMenuItem]);
var wrappedChildList = internalMode !== "horizontal" || disabledOverflow ? childList : (
// Need wrap for overflow dropdown that do not response for open
childList.map(function(child, index2) {
return (
// Always wrap provider to avoid sub node re-mount
/* @__PURE__ */ reactExports.createElement(InheritableContextProvider, {
key: child.key,
overflowDisabled: index2 > lastVisibleIndex
}, child)
);
})
);
var container = /* @__PURE__ */ reactExports.createElement(ForwardOverflow, _extends$2({
id: id2,
ref: containerRef,
prefixCls: "".concat(prefixCls, "-overflow"),
component: "ul",
itemComponent: MenuItem$2,
className: cls(prefixCls, "".concat(prefixCls, "-root"), "".concat(prefixCls, "-").concat(internalMode), className, _defineProperty(_defineProperty({}, "".concat(prefixCls, "-inline-collapsed"), internalInlineCollapsed), "".concat(prefixCls, "-rtl"), isRtl), rootClassName),
dir: direction,
style: style2,
role: "menu",
tabIndex,
data: wrappedChildList,
renderRawItem: function renderRawItem(node2) {
return node2;
},
renderRawRest: function renderRawRest(omitItems) {
var len2 = omitItems.length;
var originOmitItems = len2 ? childList.slice(-len2) : null;
return /* @__PURE__ */ reactExports.createElement(SubMenu$1, {
eventKey: OVERFLOW_KEY,
title: overflowedIndicator,
disabled: allVisible,
internalPopupClose: len2 === 0,
popupClassName: overflowedIndicatorPopupClassName
}, originOmitItems);
},
maxCount: internalMode !== "horizontal" || disabledOverflow ? ForwardOverflow.INVALIDATE : ForwardOverflow.RESPONSIVE,
ssr: "full",
"data-menu-list": true,
onVisibleChange: function onVisibleChange(newLastIndex) {
setLastVisibleIndex(newLastIndex);
},
onKeyDown: onInternalKeyDown
}, restProps));
return /* @__PURE__ */ reactExports.createElement(PrivateContext.Provider, {
value: privateContext
}, /* @__PURE__ */ reactExports.createElement(IdContext.Provider, {
value: uuid2
}, /* @__PURE__ */ reactExports.createElement(InheritableContextProvider, {
prefixCls,
rootClassName,
mode: internalMode,
openKeys: mergedOpenKeys,
rtl: isRtl,
disabled,
motion: mounted ? motion : null,
defaultMotions: mounted ? defaultMotions : null,
activeKey: mergedActiveKey,
onActive,
onInactive,
selectedKeys: mergedSelectKeys,
inlineIndent,
subMenuOpenDelay,
subMenuCloseDelay,
forceSubMenuRender,
builtinPlacements,
triggerSubMenuAction,
getPopupContainer,
itemIcon,
expandIcon,
onItemClick: onInternalClick,
onOpenChange: onInternalOpenChange
}, /* @__PURE__ */ reactExports.createElement(PathUserContext.Provider, {
value: pathUserContext
}, container), /* @__PURE__ */ reactExports.createElement("div", {
style: {
display: "none"
},
"aria-hidden": true
}, /* @__PURE__ */ reactExports.createElement(PathRegisterContext.Provider, {
value: registerPathContext
}, measureChildList)))));
});
var ExportMenu = Menu$1;
ExportMenu.Item = MenuItem$2;
ExportMenu.SubMenu = SubMenu$1;
ExportMenu.ItemGroup = MenuItemGroup;
ExportMenu.Divider = Divider;
const SiderContext = /* @__PURE__ */ reactExports.createContext({});
const MenuContext = /* @__PURE__ */ reactExports.createContext({
prefixCls: "",
firstLevel: true,
inlineCollapsed: false
});
var __rest$l = function(s, e2) {
var t2 = {};
for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0) t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i])) t2[p2[i]] = s[p2[i]];
}
return t2;
};
const MenuDivider = (props) => {
const {
prefixCls: customizePrefixCls,
className,
dashed
} = props, restProps = __rest$l(props, ["prefixCls", "className", "dashed"]);
const {
getPrefixCls
} = reactExports.useContext(ConfigContext);
const prefixCls = getPrefixCls("menu", customizePrefixCls);
const classString = cls({
[`${prefixCls}-item-divider-dashed`]: !!dashed
}, className);
return /* @__PURE__ */ reactExports.createElement(Divider, Object.assign({
className: classString
}, restProps));
};
const MenuItem = (props) => {
var _a2;
const {
className,
children,
icon,
title,
danger
} = props;
const {
prefixCls,
firstLevel,
direction,
disableMenuItemTitleTooltip,
inlineCollapsed: isInlineCollapsed
} = reactExports.useContext(MenuContext);
const renderItemChildren = (inlineCollapsed) => {
const label = children === null || children === void 0 ? void 0 : children[0];
const wrapNode = /* @__PURE__ */ reactExports.createElement("span", {
className: `${prefixCls}-title-content`
}, children);
if (!icon || /* @__PURE__ */ reactExports.isValidElement(children) && children.type === "span") {
if (children && inlineCollapsed && firstLevel && typeof label === "string") {
return /* @__PURE__ */ reactExports.createElement("div", {
className: `${prefixCls}-inline-collapsed-noicon`
}, label.charAt(0));
}
}
return wrapNode;
};
const {
siderCollapsed
} = reactExports.useContext(SiderContext);
let tooltipTitle = title;
if (typeof title === "undefined") {
tooltipTitle = firstLevel ? children : "";
} else if (title === false) {
tooltipTitle = "";
}
const tooltipProps = {
title: tooltipTitle
};
if (!siderCollapsed && !isInlineCollapsed) {
tooltipProps.title = null;
tooltipProps.open = false;
}
const childrenLength = toArray$4(children).length;
let returnNode = /* @__PURE__ */ reactExports.createElement(MenuItem$2, Object.assign({}, omit(props, ["title", "icon", "danger"]), {
className: cls({
[`${prefixCls}-item-danger`]: danger,
[`${prefixCls}-item-only-child`]: (icon ? childrenLength + 1 : childrenLength) === 1
}, className),
title: typeof title === "string" ? title : void 0
}), cloneElement(icon, {
className: cls(/* @__PURE__ */ reactExports.isValidElement(icon) ? (_a2 = icon.props) === null || _a2 === void 0 ? void 0 : _a2.className : "", `${prefixCls}-item-icon`)
}), renderItemChildren(isInlineCollapsed));
if (!disableMenuItemTitleTooltip) {
returnNode = /* @__PURE__ */ reactExports.createElement(Tooltip2, Object.assign({}, tooltipProps, {
placement: direction === "rtl" ? "left" : "right",
overlayClassName: `${prefixCls}-inline-collapsed-tooltip`
}), returnNode);
}
return returnNode;
};
var __rest$k = function(s, e2) {
var t2 = {};
for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0) t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i])) t2[p2[i]] = s[p2[i]];
}
return t2;
};
const OverrideContext = /* @__PURE__ */ reactExports.createContext(null);
const OverrideProvider = /* @__PURE__ */ reactExports.forwardRef((props, ref) => {
const {
children
} = props, restProps = __rest$k(props, ["children"]);
const override = reactExports.useContext(OverrideContext);
const context = reactExports.useMemo(() => Object.assign(Object.assign({}, override), restProps), [
override,
restProps.prefixCls,
// restProps.expandIcon, Not mark as deps since this is a ReactNode
restProps.mode,
restProps.selectable,
restProps.rootClassName
// restProps.validator, Not mark as deps since this is a function
]);
const canRef = supportNodeRef(children);
const mergedRef = useComposeRef(ref, canRef ? children.ref : null);
return /* @__PURE__ */ reactExports.createElement(OverrideContext.Provider, {
value: context
}, /* @__PURE__ */ reactExports.createElement(ContextIsolator, {
space: true
}, canRef ? /* @__PURE__ */ reactExports.cloneElement(children, {
ref: mergedRef
}) : children));
});
const getHorizontalStyle = (token2) => {
const {
componentCls,
motionDurationSlow,
horizontalLineHeight,
colorSplit,
lineWidth,
lineType,
itemPaddingInline
} = token2;
return {
[`${componentCls}-horizontal`]: {
lineHeight: horizontalLineHeight,
border: 0,
borderBottom: `${unit$1(lineWidth)} ${lineType} ${colorSplit}`,
boxShadow: "none",
"&::after": {
display: "block",
clear: "both",
height: 0,
content: '"\\20"'
},
// ======================= Item =======================
[`${componentCls}-item, ${componentCls}-submenu`]: {
position: "relative",
display: "inline-block",
verticalAlign: "bottom",
paddingInline: itemPaddingInline
},
[`> ${componentCls}-item:hover,
> ${componentCls}-item-active,
> ${componentCls}-submenu ${componentCls}-submenu-title:hover`]: {
backgroundColor: "transparent"
},
[`${componentCls}-item, ${componentCls}-submenu-title`]: {
transition: [`border-color ${motionDurationSlow}`, `background ${motionDurationSlow}`].join(",")
},
// ===================== Sub Menu =====================
[`${componentCls}-submenu-arrow`]: {
display: "none"
}
}
};
};
const getRTLStyle = (_ref) => {
let {
componentCls,
menuArrowOffset,
calc
} = _ref;
return {
[`${componentCls}-rtl`]: {
direction: "rtl"
},
[`${componentCls}-submenu-rtl`]: {
transformOrigin: "100% 0"
},
// Vertical Arrow
[`${componentCls}-rtl${componentCls}-vertical,
${componentCls}-submenu-rtl ${componentCls}-vertical`]: {
[`${componentCls}-submenu-arrow`]: {
"&::before": {
transform: `rotate(-45deg) translateY(${unit$1(calc(menuArrowOffset).mul(-1).equal())})`
},
"&::after": {
transform: `rotate(45deg) translateY(${unit$1(menuArrowOffset)})`
}
}
}
};
};
const accessibilityFocus = (token2) => Object.assign({}, genFocusOutline(token2));
const getThemeStyle = (token2, themeSuffix) => {
const {
componentCls,
itemColor,
itemSelectedColor,
groupTitleColor,
itemBg,
subMenuItemBg,
itemSelectedBg,
activeBarHeight,
activeBarWidth,
activeBarBorderWidth,
motionDurationSlow,
motionEaseInOut,
motionEaseOut,
itemPaddingInline,
motionDurationMid,
itemHoverColor,
lineType,
colorSplit,
// Disabled
itemDisabledColor,
// Danger
dangerItemColor,
dangerItemHoverColor,
dangerItemSelectedColor,
dangerItemActiveBg,
dangerItemSelectedBg,
// Bg
popupBg,
itemHoverBg,
itemActiveBg,
menuSubMenuBg,
// Horizontal
horizontalItemSelectedColor,
horizontalItemSelectedBg,
horizontalItemBorderRadius,
horizontalItemHoverBg
} = token2;
return {
[`${componentCls}-${themeSuffix}, ${componentCls}-${themeSuffix} > ${componentCls}`]: {
color: itemColor,
background: itemBg,
[`&${componentCls}-root:focus-visible`]: Object.assign({}, accessibilityFocus(token2)),
// ======================== Item ========================
[`${componentCls}-item-group-title`]: {
color: groupTitleColor
},
[`${componentCls}-submenu-selected`]: {
[`> ${componentCls}-submenu-title`]: {
color: itemSelectedColor
}
},
[`${componentCls}-item, ${componentCls}-submenu-title`]: {
color: itemColor,
[`&:not(${componentCls}-item-disabled):focus-visible`]: Object.assign({}, accessibilityFocus(token2))
},
// Disabled
[`${componentCls}-item-disabled, ${componentCls}-submenu-disabled`]: {
color: `${itemDisabledColor} !important`
},
// Hover
[`${componentCls}-item:not(${componentCls}-item-selected):not(${componentCls}-submenu-selected)`]: {
[`&:hover, > ${componentCls}-submenu-title:hover`]: {
color: itemHoverColor
}
},
[`&:not(${componentCls}-horizontal)`]: {
[`${componentCls}-item:not(${componentCls}-item-selected)`]: {
"&:hover": {
backgroundColor: itemHoverBg
},
"&:active": {
backgroundColor: itemActiveBg
}
},
[`${componentCls}-submenu-title`]: {
"&:hover": {
backgroundColor: itemHoverBg
},
"&:active": {
backgroundColor: itemActiveBg
}
}
},
// Danger - only Item has
[`${componentCls}-item-danger`]: {
color: dangerItemColor,
[`&${componentCls}-item:hover`]: {
[`&:not(${componentCls}-item-selected):not(${componentCls}-submenu-selected)`]: {
color: dangerItemHoverColor
}
},
[`&${componentCls}-item:active`]: {
background: dangerItemActiveBg
}
},
[`${componentCls}-item a`]: {
"&, &:hover": {
color: "inherit"
}
},
[`${componentCls}-item-selected`]: {
color: itemSelectedColor,
// Danger
[`&${componentCls}-item-danger`]: {
color: dangerItemSelectedColor
},
"a, a:hover": {
color: "inherit"
}
},
[`& ${componentCls}-item-selected`]: {
backgroundColor: itemSelectedBg,
// Danger
[`&${componentCls}-item-danger`]: {
backgroundColor: dangerItemSelectedBg
}
},
[`&${componentCls}-submenu > ${componentCls}`]: {
backgroundColor: menuSubMenuBg
},
// ===== 设置浮层的颜色 =======
// !dark 模式会被popupBg 会被rest 为 darkPopupBg
[`&${componentCls}-popup > ${componentCls}`]: {
backgroundColor: popupBg
},
[`&${componentCls}-submenu-popup > ${componentCls}`]: {
backgroundColor: popupBg
},
// ===== 设置浮层的颜色 end =======
// ====================== Horizontal ======================
[`&${componentCls}-horizontal`]: Object.assign(Object.assign({}, themeSuffix === "dark" ? {
borderBottom: 0
} : {}), {
[`> ${componentCls}-item, > ${componentCls}-submenu`]: {
top: activeBarBorderWidth,
marginTop: token2.calc(activeBarBorderWidth).mul(-1).equal(),
marginBottom: 0,
borderRadius: horizontalItemBorderRadius,
"&::after": {
position: "absolute",
insetInline: itemPaddingInline,
bottom: 0,
borderBottom: `${unit$1(activeBarHeight)} solid transparent`,
transition: `border-color ${motionDurationSlow} ${motionEaseInOut}`,
content: '""'
},
"&:hover, &-active, &-open": {
background: horizontalItemHoverBg,
"&::after": {
borderBottomWidth: activeBarHeight,
borderBottomColor: horizontalItemSelectedColor
}
},
"&-selected": {
color: horizontalItemSelectedColor,
backgroundColor: horizontalItemSelectedBg,
"&:hover": {
backgroundColor: horizontalItemSelectedBg
},
"&::after": {
borderBottomWidth: activeBarHeight,
borderBottomColor: horizontalItemSelectedColor
}
}
}
}),
// ================== Inline & Vertical ===================
//
[`&${componentCls}-root`]: {
[`&${componentCls}-inline, &${componentCls}-vertical`]: {
borderInlineEnd: `${unit$1(activeBarBorderWidth)} ${lineType} ${colorSplit}`
}
},
// ======================== Inline ========================
[`&${componentCls}-inline`]: {
// Sub
[`${componentCls}-sub${componentCls}-inline`]: {
background: subMenuItemBg
},
[`${componentCls}-item`]: {
position: "relative",
"&::after": {
position: "absolute",
insetBlock: 0,
insetInlineEnd: 0,
borderInlineEnd: `${unit$1(activeBarWidth)} solid ${itemSelectedColor}`,
transform: "scaleY(0.0001)",
opacity: 0,
transition: [`transform ${motionDurationMid} ${motionEaseOut}`, `opacity ${motionDurationMid} ${motionEaseOut}`].join(","),
content: '""'
},
// Danger
[`&${componentCls}-item-danger`]: {
"&::after": {
borderInlineEndColor: dangerItemSelectedColor
}
}
},
[`${componentCls}-selected, ${componentCls}-item-selected`]: {
"&::after": {
transform: "scaleY(1)",
opacity: 1,
transition: [`transform ${motionDurationMid} ${motionEaseInOut}`, `opacity ${motionDurationMid} ${motionEaseInOut}`].join(",")
}
}
}
}
};
};
const getVerticalInlineStyle = (token2) => {
const {
componentCls,
itemHeight,
itemMarginInline,
padding,
menuArrowSize,
marginXS,
itemMarginBlock,
itemWidth,
itemPaddingInline
} = token2;
const paddingWithArrow = token2.calc(menuArrowSize).add(padding).add(marginXS).equal();
return {
[`${componentCls}-item`]: {
position: "relative",
overflow: "hidden"
},
[`${componentCls}-item, ${componentCls}-submenu-title`]: {
height: itemHeight,
lineHeight: unit$1(itemHeight),
paddingInline: itemPaddingInline,
overflow: "hidden",
textOverflow: "ellipsis",
marginInline: itemMarginInline,
marginBlock: itemMarginBlock,
width: itemWidth
},
[`> ${componentCls}-item,
> ${componentCls}-submenu > ${componentCls}-submenu-title`]: {
height: itemHeight,
lineHeight: unit$1(itemHeight)
},
[`${componentCls}-item-group-list ${componentCls}-submenu-title,
${componentCls}-submenu-title`]: {
paddingInlineEnd: paddingWithArrow
}
};
};
const getVerticalStyle = (token2) => {
const {
componentCls,
iconCls,
itemHeight,
colorTextLightSolid,
dropdownWidth,
controlHeightLG,
motionEaseOut,
paddingXL,
itemMarginInline,
fontSizeLG,
motionDurationFast,
motionDurationSlow,
paddingXS,
boxShadowSecondary,
collapsedWidth,
collapsedIconSize
} = token2;
const inlineItemStyle = {
height: itemHeight,
lineHeight: unit$1(itemHeight),
listStylePosition: "inside",
listStyleType: "disc"
};
return [
{
[componentCls]: {
"&-inline, &-vertical": Object.assign({
[`&${componentCls}-root`]: {
boxShadow: "none"
}
}, getVerticalInlineStyle(token2))
},
[`${componentCls}-submenu-popup`]: {
[`${componentCls}-vertical`]: Object.assign(Object.assign({}, getVerticalInlineStyle(token2)), {
boxShadow: boxShadowSecondary
})
}
},
// Vertical only
{
[`${componentCls}-submenu-popup ${componentCls}-vertical${componentCls}-sub`]: {
minWidth: dropdownWidth,
maxHeight: `calc(100vh - ${unit$1(token2.calc(controlHeightLG).mul(2.5).equal())})`,
padding: "0",
overflow: "hidden",
borderInlineEnd: 0,
// https://github.com/ant-design/ant-design/issues/22244
// https://github.com/ant-design/ant-design/issues/26812
"&:not([class*='-active'])": {
overflowX: "hidden",
overflowY: "auto"
}
}
},
// Inline Only
{
[`${componentCls}-inline`]: {
width: "100%",
// Motion enhance for first level
[`&${componentCls}-root`]: {
[`${componentCls}-item, ${componentCls}-submenu-title`]: {
display: "flex",
alignItems: "center",
transition: [`border-color ${motionDurationSlow}`, `background ${motionDurationSlow}`, `padding ${motionDurationFast} ${motionEaseOut}`].join(","),
[`> ${componentCls}-title-content`]: {
flex: "auto",
minWidth: 0,
overflow: "hidden",
textOverflow: "ellipsis"
},
"> *": {
flex: "none"
}
}
},
// >>>>> Sub
[`${componentCls}-sub${componentCls}-inline`]: {
padding: 0,
border: 0,
borderRadius: 0,
boxShadow: "none",
[`& > ${componentCls}-submenu > ${componentCls}-submenu-title`]: inlineItemStyle,
[`& ${componentCls}-item-group-title`]: {
paddingInlineStart: paddingXL
}
},
// >>>>> Item
[`${componentCls}-item`]: inlineItemStyle
}
},
// Inline Collapse Only
{
[`${componentCls}-inline-collapsed`]: {
width: collapsedWidth,
[`&${componentCls}-root`]: {
[`${componentCls}-item, ${componentCls}-submenu ${componentCls}-submenu-title`]: {
[`> ${componentCls}-inline-collapsed-noicon`]: {
fontSize: fontSizeLG,
textAlign: "center"
}
}
},
[`> ${componentCls}-item,
> ${componentCls}-item-group > ${componentCls}-item-group-list > ${componentCls}-item,
> ${componentCls}-item-group > ${componentCls}-item-group-list > ${componentCls}-submenu > ${componentCls}-submenu-title,
> ${componentCls}-submenu > ${componentCls}-submenu-title`]: {
insetInlineStart: 0,
paddingInline: `calc(50% - ${unit$1(token2.calc(fontSizeLG).div(2).equal())} - ${unit$1(itemMarginInline)})`,
textOverflow: "clip",
[`
${componentCls}-submenu-arrow,
${componentCls}-submenu-expand-icon
`]: {
opacity: 0
},
[`${componentCls}-item-icon, ${iconCls}`]: {
margin: 0,
fontSize: collapsedIconSize,
lineHeight: unit$1(itemHeight),
"+ span": {
display: "inline-block",
opacity: 0
}
}
},
[`${componentCls}-item-icon, ${iconCls}`]: {
display: "inline-block"
},
"&-tooltip": {
pointerEvents: "none",
[`${componentCls}-item-icon, ${iconCls}`]: {
display: "none"
},
"a, a:hover": {
color: colorTextLightSolid
}
},
[`${componentCls}-item-group-title`]: Object.assign(Object.assign({}, textEllipsis), {
paddingInline: paddingXS
})
}
}
];
};
const genMenuItemStyle = (token2) => {
const {
componentCls,
motionDurationSlow,
motionDurationMid,
motionEaseInOut,
motionEaseOut,
iconCls,
iconSize,
iconMarginInlineEnd
} = token2;
return {
// >>>>> Item
[`${componentCls}-item, ${componentCls}-submenu-title`]: {
position: "relative",
display: "block",
margin: 0,
whiteSpace: "nowrap",
cursor: "pointer",
transition: [`border-color ${motionDurationSlow}`, `background ${motionDurationSlow}`, `padding calc(${motionDurationSlow} + 0.1s) ${motionEaseInOut}`].join(","),
[`${componentCls}-item-icon, ${iconCls}`]: {
minWidth: iconSize,
fontSize: iconSize,
transition: [`font-size ${motionDurationMid} ${motionEaseOut}`, `margin ${motionDurationSlow} ${motionEaseInOut}`, `color ${motionDurationSlow}`].join(","),
"+ span": {
marginInlineStart: iconMarginInlineEnd,
opacity: 1,
transition: [`opacity ${motionDurationSlow} ${motionEaseInOut}`, `margin ${motionDurationSlow}`, `color ${motionDurationSlow}`].join(",")
}
},
[`${componentCls}-item-icon`]: Object.assign({}, resetIcon()),
[`&${componentCls}-item-only-child`]: {
[`> ${iconCls}, > ${componentCls}-item-icon`]: {
marginInlineEnd: 0
}
}
},
// Disabled state sets text to gray and nukes hover/tab effects
[`${componentCls}-item-disabled, ${componentCls}-submenu-disabled`]: {
background: "none !important",
cursor: "not-allowed",
"&::after": {
borderColor: "transparent !important"
},
a: {
color: "inherit !important"
},
[`> ${componentCls}-submenu-title`]: {
color: "inherit !important",
cursor: "not-allowed"
}
}
};
};
const genSubMenuArrowStyle = (token2) => {
const {
componentCls,
motionDurationSlow,
motionEaseInOut,
borderRadius,
menuArrowSize,
menuArrowOffset
} = token2;
return {
[`${componentCls}-submenu`]: {
"&-expand-icon, &-arrow": {
position: "absolute",
top: "50%",
insetInlineEnd: token2.margin,
width: menuArrowSize,
color: "currentcolor",
transform: "translateY(-50%)",
transition: `transform ${motionDurationSlow} ${motionEaseInOut}, opacity ${motionDurationSlow}`
},
"&-arrow": {
// →
"&::before, &::after": {
position: "absolute",
width: token2.calc(menuArrowSize).mul(0.6).equal(),
height: token2.calc(menuArrowSize).mul(0.15).equal(),
backgroundColor: "currentcolor",
borderRadius,
transition: [`background ${motionDurationSlow} ${motionEaseInOut}`, `transform ${motionDurationSlow} ${motionEaseInOut}`, `top ${motionDurationSlow} ${motionEaseInOut}`, `color ${motionDurationSlow} ${motionEaseInOut}`].join(","),
content: '""'
},
"&::before": {
transform: `rotate(45deg) translateY(${unit$1(token2.calc(menuArrowOffset).mul(-1).equal())})`
},
"&::after": {
transform: `rotate(-45deg) translateY(${unit$1(menuArrowOffset)})`
}
}
}
};
};
const getBaseStyle = (token2) => {
const {
antCls,
componentCls,
fontSize,
motionDurationSlow,
motionDurationMid,
motionEaseInOut,
paddingXS,
padding,
colorSplit,
lineWidth,
zIndexPopup,
borderRadiusLG,
subMenuItemBorderRadius,
menuArrowSize,
menuArrowOffset,
lineType,
groupTitleLineHeight,
groupTitleFontSize
} = token2;
return [
// Misc
{
"": {
[componentCls]: Object.assign(Object.assign({}, clearFix()), {
// Hidden
"&-hidden": {
display: "none"
}
})
},
[`${componentCls}-submenu-hidden`]: {
display: "none"
}
},
{
[componentCls]: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, resetComponent(token2)), clearFix()), {
marginBottom: 0,
paddingInlineStart: 0,
// Override default ul/ol
fontSize,
lineHeight: 0,
listStyle: "none",
outline: "none",
// Magic cubic here but smooth transition
transition: `width ${motionDurationSlow} cubic-bezier(0.2, 0, 0, 1) 0s`,
"ul, ol": {
margin: 0,
padding: 0,
listStyle: "none"
},
// Overflow ellipsis
"&-overflow": {
display: "flex",
[`${componentCls}-item`]: {
flex: "none"
}
},
[`${componentCls}-item, ${componentCls}-submenu, ${componentCls}-submenu-title`]: {
borderRadius: token2.itemBorderRadius
},
[`${componentCls}-item-group-title`]: {
padding: `${unit$1(paddingXS)} ${unit$1(padding)}`,
fontSize: groupTitleFontSize,
lineHeight: groupTitleLineHeight,
transition: `all ${motionDurationSlow}`
},
[`&-horizontal ${componentCls}-submenu`]: {
transition: [`border-color ${motionDurationSlow} ${motionEaseInOut}`, `background ${motionDurationSlow} ${motionEaseInOut}`].join(",")
},
[`${componentCls}-submenu, ${componentCls}-submenu-inline`]: {
transition: [`border-color ${motionDurationSlow} ${motionEaseInOut}`, `background ${motionDurationSlow} ${motionEaseInOut}`, `padding ${motionDurationMid} ${motionEaseInOut}`].join(",")
},
[`${componentCls}-submenu ${componentCls}-sub`]: {
cursor: "initial",
transition: [`background ${motionDurationSlow} ${motionEaseInOut}`, `padding ${motionDurationSlow} ${motionEaseInOut}`].join(",")
},
[`${componentCls}-title-content`]: {
display: "inline-flex",
alignItems: "center",
transition: `color ${motionDurationSlow}`,
"> a:first-child": {
flexGrow: 1
},
// https://github.com/ant-design/ant-design/issues/41143
[`> ${antCls}-typography-ellipsis-single-line`]: {
display: "inline",
verticalAlign: "unset"
},
[`${componentCls}-item-extra`]: {
marginInlineStart: "auto",
paddingInlineStart: token2.padding,
fontSize: token2.fontSizeSM,
color: token2.colorTextDescription
}
},
[`${componentCls}-item a`]: {
"&::before": {
position: "absolute",
inset: 0,
backgroundColor: "transparent",
content: '""'
}
},
// Removed a Badge related style seems it's safe
// https://github.com/ant-design/ant-design/issues/19809
// >>>>> Divider
[`${componentCls}-item-divider`]: {
overflow: "hidden",
lineHeight: 0,
borderColor: colorSplit,
borderStyle: lineType,
borderWidth: 0,
borderTopWidth: lineWidth,
marginBlock: lineWidth,
padding: 0,
"&-dashed": {
borderStyle: "dashed"
}
}
}), genMenuItemStyle(token2)), {
[`${componentCls}-item-group`]: {
[`${componentCls}-item-group-list`]: {
margin: 0,
padding: 0,
[`${componentCls}-item, ${componentCls}-submenu-title`]: {
paddingInline: `${unit$1(token2.calc(fontSize).mul(2).equal())} ${unit$1(padding)}`
}
}
},
// ======================= Sub Menu =======================
"&-submenu": {
"&-popup": {
position: "absolute",
zIndex: zIndexPopup,
borderRadius: borderRadiusLG,
boxShadow: "none",
transformOrigin: "0 0",
[`&${componentCls}-submenu`]: {
background: "transparent"
},
// https://github.com/ant-design/ant-design/issues/13955
"&::before": {
position: "absolute",
inset: 0,
zIndex: -1,
width: "100%",
height: "100%",
opacity: 0,
content: '""'
},
[`> ${componentCls}`]: Object.assign(Object.assign(Object.assign({
borderRadius: borderRadiusLG
}, genMenuItemStyle(token2)), genSubMenuArrowStyle(token2)), {
[`${componentCls}-item, ${componentCls}-submenu > ${componentCls}-submenu-title`]: {
borderRadius: subMenuItemBorderRadius
},
[`${componentCls}-submenu-title::after`]: {
transition: `transform ${motionDurationSlow} ${motionEaseInOut}`
}
})
},
[`
&-placement-leftTop,
&-placement-bottomRight,
`]: {
transformOrigin: "100% 0"
},
[`
&-placement-leftBottom,
&-placement-topRight,
`]: {
transformOrigin: "100% 100%"
},
[`
&-placement-rightBottom,
&-placement-topLeft,
`]: {
transformOrigin: "0 100%"
},
[`
&-placement-bottomLeft,
&-placement-rightTop,
`]: {
transformOrigin: "0 0"
},
[`
&-placement-leftTop,
&-placement-leftBottom
`]: {
paddingInlineEnd: token2.paddingXS
},
[`
&-placement-rightTop,
&-placement-rightBottom
`]: {
paddingInlineStart: token2.paddingXS
},
[`
&-placement-topRight,
&-placement-topLeft
`]: {
paddingBottom: token2.paddingXS
},
[`
&-placement-bottomRight,
&-placement-bottomLeft
`]: {
paddingTop: token2.paddingXS
}
}
}), genSubMenuArrowStyle(token2)), {
[`&-inline-collapsed ${componentCls}-submenu-arrow,
&-inline ${componentCls}-submenu-arrow`]: {
// ↓
"&::before": {
transform: `rotate(-45deg) translateX(${unit$1(menuArrowOffset)})`
},
"&::after": {
transform: `rotate(45deg) translateX(${unit$1(token2.calc(menuArrowOffset).mul(-1).equal())})`
}
},
[`${componentCls}-submenu-open${componentCls}-submenu-inline > ${componentCls}-submenu-title > ${componentCls}-submenu-arrow`]: {
// ↑
transform: `translateY(${unit$1(token2.calc(menuArrowSize).mul(0.2).mul(-1).equal())})`,
"&::after": {
transform: `rotate(-45deg) translateX(${unit$1(token2.calc(menuArrowOffset).mul(-1).equal())})`
},
"&::before": {
transform: `rotate(45deg) translateX(${unit$1(menuArrowOffset)})`
}
}
})
},
// Integration with header element so menu items have the same height
{
[`${antCls}-layout-header`]: {
[componentCls]: {
lineHeight: "inherit"
}
}
}
];
};
const prepareComponentToken$8 = (token2) => {
var _a2, _b2, _c2;
const {
colorPrimary,
colorError,
colorTextDisabled,
colorErrorBg,
colorText,
colorTextDescription,
colorBgContainer,
colorFillAlter,
colorFillContent,
lineWidth,
lineWidthBold,
controlItemBgActive,
colorBgTextHover,
controlHeightLG,
lineHeight,
colorBgElevated,
marginXXS,
padding,
fontSize,
controlHeightSM,
fontSizeLG,
colorTextLightSolid,
colorErrorHover
} = token2;
const activeBarWidth = (_a2 = token2.activeBarWidth) !== null && _a2 !== void 0 ? _a2 : 0;
const activeBarBorderWidth = (_b2 = token2.activeBarBorderWidth) !== null && _b2 !== void 0 ? _b2 : lineWidth;
const itemMarginInline = (_c2 = token2.itemMarginInline) !== null && _c2 !== void 0 ? _c2 : token2.marginXXS;
const colorTextDark = new TinyColor(colorTextLightSolid).setAlpha(0.65).toRgbString();
return {
dropdownWidth: 160,
zIndexPopup: token2.zIndexPopupBase + 50,
radiusItem: token2.borderRadiusLG,
itemBorderRadius: token2.borderRadiusLG,
radiusSubMenuItem: token2.borderRadiusSM,
subMenuItemBorderRadius: token2.borderRadiusSM,
colorItemText: colorText,
itemColor: colorText,
colorItemTextHover: colorText,
itemHoverColor: colorText,
colorItemTextHoverHorizontal: colorPrimary,
horizontalItemHoverColor: colorPrimary,
colorGroupTitle: colorTextDescription,
groupTitleColor: colorTextDescription,
colorItemTextSelected: colorPrimary,
itemSelectedColor: colorPrimary,
colorItemTextSelectedHorizontal: colorPrimary,
horizontalItemSelectedColor: colorPrimary,
colorItemBg: colorBgContainer,
itemBg: colorBgContainer,
colorItemBgHover: colorBgTextHover,
itemHoverBg: colorBgTextHover,
colorItemBgActive: colorFillContent,
itemActiveBg: controlItemBgActive,
colorSubItemBg: colorFillAlter,
subMenuItemBg: colorFillAlter,
colorItemBgSelected: controlItemBgActive,
itemSelectedBg: controlItemBgActive,
colorItemBgSelectedHorizontal: "transparent",
horizontalItemSelectedBg: "transparent",
colorActiveBarWidth: 0,
activeBarWidth,
colorActiveBarHeight: lineWidthBold,
activeBarHeight: lineWidthBold,
colorActiveBarBorderSize: lineWidth,
activeBarBorderWidth,
// Disabled
colorItemTextDisabled: colorTextDisabled,
itemDisabledColor: colorTextDisabled,
// Danger
colorDangerItemText: colorError,
dangerItemColor: colorError,
colorDangerItemTextHover: colorError,
dangerItemHoverColor: colorError,
colorDangerItemTextSelected: colorError,
dangerItemSelectedColor: colorError,
colorDangerItemBgActive: colorErrorBg,
dangerItemActiveBg: colorErrorBg,
colorDangerItemBgSelected: colorErrorBg,
dangerItemSelectedBg: colorErrorBg,
itemMarginInline,
horizontalItemBorderRadius: 0,
horizontalItemHoverBg: "transparent",
itemHeight: controlHeightLG,
groupTitleLineHeight: lineHeight,
collapsedWidth: controlHeightLG * 2,
popupBg: colorBgElevated,
itemMarginBlock: marginXXS,
itemPaddingInline: padding,
horizontalLineHeight: `${controlHeightLG * 1.15}px`,
iconSize: fontSize,
iconMarginInlineEnd: controlHeightSM - fontSize,
collapsedIconSize: fontSizeLG,
groupTitleFontSize: fontSize,
// Disabled
darkItemDisabledColor: new TinyColor(colorTextLightSolid).setAlpha(0.25).toRgbString(),
// Dark
darkItemColor: colorTextDark,
darkDangerItemColor: colorError,
darkItemBg: "#001529",
darkPopupBg: "#001529",
darkSubMenuItemBg: "#000c17",
darkItemSelectedColor: colorTextLightSolid,
darkItemSelectedBg: colorPrimary,
darkDangerItemSelectedBg: colorError,
darkItemHoverBg: "transparent",
darkGroupTitleColor: colorTextDark,
darkItemHoverColor: colorTextLightSolid,
darkDangerItemHoverColor: colorErrorHover,
darkDangerItemSelectedColor: colorTextLightSolid,
darkDangerItemActiveBg: colorError,
// internal
itemWidth: activeBarWidth ? `calc(100% + ${activeBarBorderWidth}px)` : `calc(100% - ${itemMarginInline * 2}px)`
};
};
const useStyle$b = function(prefixCls) {
let rootCls = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : prefixCls;
let injectStyle = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : true;
const useStyle2 = genStyleHooks("Menu", (token2) => {
const {
colorBgElevated,
controlHeightLG,
fontSize,
darkItemColor,
darkDangerItemColor,
darkItemBg,
darkSubMenuItemBg,
darkItemSelectedColor,
darkItemSelectedBg,
darkDangerItemSelectedBg,
darkItemHoverBg,
darkGroupTitleColor,
darkItemHoverColor,
darkItemDisabledColor,
darkDangerItemHoverColor,
darkDangerItemSelectedColor,
darkDangerItemActiveBg,
popupBg,
darkPopupBg
} = token2;
const menuArrowSize = token2.calc(fontSize).div(7).mul(5).equal();
const menuToken = merge$1(token2, {
menuArrowSize,
menuHorizontalHeight: token2.calc(controlHeightLG).mul(1.15).equal(),
menuArrowOffset: token2.calc(menuArrowSize).mul(0.25).equal(),
menuSubMenuBg: colorBgElevated,
calc: token2.calc,
popupBg
});
const menuDarkToken = merge$1(menuToken, {
itemColor: darkItemColor,
itemHoverColor: darkItemHoverColor,
groupTitleColor: darkGroupTitleColor,
itemSelectedColor: darkItemSelectedColor,
itemBg: darkItemBg,
popupBg: darkPopupBg,
subMenuItemBg: darkSubMenuItemBg,
itemActiveBg: "transparent",
itemSelectedBg: darkItemSelectedBg,
activeBarHeight: 0,
activeBarBorderWidth: 0,
itemHoverBg: darkItemHoverBg,
// Disabled
itemDisabledColor: darkItemDisabledColor,
// Danger
dangerItemColor: darkDangerItemColor,
dangerItemHoverColor: darkDangerItemHoverColor,
dangerItemSelectedColor: darkDangerItemSelectedColor,
dangerItemActiveBg: darkDangerItemActiveBg,
dangerItemSelectedBg: darkDangerItemSelectedBg,
menuSubMenuBg: darkSubMenuItemBg,
// Horizontal
horizontalItemSelectedColor: darkItemSelectedColor,
horizontalItemSelectedBg: darkItemSelectedBg
});
return [
// Basic
getBaseStyle(menuToken),
// Horizontal
getHorizontalStyle(menuToken),
// Hard code for some light style
// Vertical
getVerticalStyle(menuToken),
// Hard code for some light style
// Theme
getThemeStyle(menuToken, "light"),
getThemeStyle(menuDarkToken, "dark"),
// RTL
getRTLStyle(menuToken),
// Motion
genCollapseMotion(menuToken),
initSlideMotion(menuToken, "slide-up"),
initSlideMotion(menuToken, "slide-down"),
initZoomMotion(menuToken, "zoom-big")
];
}, prepareComponentToken$8, {
deprecatedTokens: [["colorGroupTitle", "groupTitleColor"], ["radiusItem", "itemBorderRadius"], ["radiusSubMenuItem", "subMenuItemBorderRadius"], ["colorItemText", "itemColor"], ["colorItemTextHover", "itemHoverColor"], ["colorItemTextHoverHorizontal", "horizontalItemHoverColor"], ["colorItemTextSelected", "itemSelectedColor"], ["colorItemTextSelectedHorizontal", "horizontalItemSelectedColor"], ["colorItemTextDisabled", "itemDisabledColor"], ["colorDangerItemText", "dangerItemColor"], ["colorDangerItemTextHover", "dangerItemHoverColor"], ["colorDangerItemTextSelected", "dangerItemSelectedColor"], ["colorDangerItemBgActive", "dangerItemActiveBg"], ["colorDangerItemBgSelected", "dangerItemSelectedBg"], ["colorItemBg", "itemBg"], ["colorItemBgHover", "itemHoverBg"], ["colorSubItemBg", "subMenuItemBg"], ["colorItemBgActive", "itemActiveBg"], ["colorItemBgSelectedHorizontal", "horizontalItemSelectedBg"], ["colorActiveBarWidth", "activeBarWidth"], ["colorActiveBarHeight", "activeBarHeight"], ["colorActiveBarBorderSize", "activeBarBorderWidth"], ["colorItemBgSelected", "itemSelectedBg"]],
// Dropdown will handle menu style self. We do not need to handle this.
injectStyle,
unitless: {
groupTitleLineHeight: true
}
});
return useStyle2(prefixCls, rootCls);
};
const SubMenu = (props) => {
var _a2;
const {
popupClassName,
icon,
title,
theme: customTheme
} = props;
const context = reactExports.useContext(MenuContext);
const {
prefixCls,
inlineCollapsed,
theme: contextTheme
} = context;
const parentPath = useFullPath();
let titleNode;
if (!icon) {
titleNode = inlineCollapsed && !parentPath.length && title && typeof title === "string" ? /* @__PURE__ */ reactExports.createElement("div", {
className: `${prefixCls}-inline-collapsed-noicon`
}, title.charAt(0)) : /* @__PURE__ */ reactExports.createElement("span", {
className: `${prefixCls}-title-content`
}, title);
} else {
const titleIsSpan = /* @__PURE__ */ reactExports.isValidElement(title) && title.type === "span";
titleNode = /* @__PURE__ */ reactExports.createElement(reactExports.Fragment, null, cloneElement(icon, {
className: cls(/* @__PURE__ */ reactExports.isValidElement(icon) ? (_a2 = icon.props) === null || _a2 === void 0 ? void 0 : _a2.className : "", `${prefixCls}-item-icon`)
}), titleIsSpan ? title : /* @__PURE__ */ reactExports.createElement("span", {
className: `${prefixCls}-title-content`
}, title));
}
const contextValue = reactExports.useMemo(() => Object.assign(Object.assign({}, context), {
firstLevel: false
}), [context]);
const [zIndex] = useZIndex("Menu");
return /* @__PURE__ */ reactExports.createElement(MenuContext.Provider, {
value: contextValue
}, /* @__PURE__ */ reactExports.createElement(SubMenu$1, Object.assign({}, omit(props, ["icon"]), {
title: titleNode,
popupClassName: cls(prefixCls, popupClassName, `${prefixCls}-${customTheme || contextTheme}`),
popupStyle: Object.assign({
zIndex
}, props.popupStyle)
})));
};
var __rest$j = function(s, e2) {
var t2 = {};
for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0) t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i])) t2[p2[i]] = s[p2[i]];
}
return t2;
};
function isEmptyIcon(icon) {
return icon === null || icon === false;
}
const MENU_COMPONENTS = {
item: MenuItem,
submenu: SubMenu,
divider: MenuDivider
};
const InternalMenu = /* @__PURE__ */ reactExports.forwardRef((props, ref) => {
var _a2;
const override = reactExports.useContext(OverrideContext);
const overrideObj = override || {};
const {
getPrefixCls,
getPopupContainer,
direction,
menu
} = reactExports.useContext(ConfigContext);
const rootPrefixCls = getPrefixCls();
const {
prefixCls: customizePrefixCls,
className,
style: style2,
theme: theme2 = "light",
expandIcon,
_internalDisableMenuItemTitleTooltip,
inlineCollapsed,
siderCollapsed,
rootClassName,
mode,
selectable,
onClick,
overflowedIndicatorPopupClassName
} = props, restProps = __rest$j(props, ["prefixCls", "className", "style", "theme", "expandIcon", "_internalDisableMenuItemTitleTooltip", "inlineCollapsed", "siderCollapsed", "rootClassName", "mode", "selectable", "onClick", "overflowedIndicatorPopupClassName"]);
const passedProps = omit(restProps, ["collapsedWidth"]);
(_a2 = overrideObj.validator) === null || _a2 === void 0 ? void 0 : _a2.call(overrideObj, {
mode
});
const onItemClick = useEvent(function() {
var _a22;
onClick === null || onClick === void 0 ? void 0 : onClick.apply(void 0, arguments);
(_a22 = overrideObj.onClick) === null || _a22 === void 0 ? void 0 : _a22.call(overrideObj);
});
const mergedMode = overrideObj.mode || mode;
const mergedSelectable = selectable !== null && selectable !== void 0 ? selectable : overrideObj.selectable;
const mergedInlineCollapsed = reactExports.useMemo(() => {
if (siderCollapsed !== void 0) {
return siderCollapsed;
}
return inlineCollapsed;
}, [inlineCollapsed, siderCollapsed]);
const defaultMotions = {
horizontal: {
motionName: `${rootPrefixCls}-slide-up`
},
inline: initCollapseMotion(rootPrefixCls),
other: {
motionName: `${rootPrefixCls}-zoom-big`
}
};
const prefixCls = getPrefixCls("menu", customizePrefixCls || overrideObj.prefixCls);
const rootCls = useCSSVarCls(prefixCls);
const [wrapCSSVar, hashId, cssVarCls] = useStyle$b(prefixCls, rootCls, !override);
const menuClassName = cls(`${prefixCls}-${theme2}`, menu === null || menu === void 0 ? void 0 : menu.className, className);
const mergedExpandIcon = reactExports.useMemo(() => {
var _a22, _b2;
if (typeof expandIcon === "function" || isEmptyIcon(expandIcon)) {
return expandIcon || null;
}
if (typeof overrideObj.expandIcon === "function" || isEmptyIcon(overrideObj.expandIcon)) {
return overrideObj.expandIcon || null;
}
if (typeof (menu === null || menu === void 0 ? void 0 : menu.expandIcon) === "function" || isEmptyIcon(menu === null || menu === void 0 ? void 0 : menu.expandIcon)) {
return (menu === null || menu === void 0 ? void 0 : menu.expandIcon) || null;
}
const mergedIcon = (_a22 = expandIcon !== null && expandIcon !== void 0 ? expandIcon : overrideObj === null || overrideObj === void 0 ? void 0 : overrideObj.expandIcon) !== null && _a22 !== void 0 ? _a22 : menu === null || menu === void 0 ? void 0 : menu.expandIcon;
return cloneElement(mergedIcon, {
className: cls(`${prefixCls}-submenu-expand-icon`, /* @__PURE__ */ reactExports.isValidElement(mergedIcon) ? (_b2 = mergedIcon.props) === null || _b2 === void 0 ? void 0 : _b2.className : void 0)
});
}, [expandIcon, overrideObj === null || overrideObj === void 0 ? void 0 : overrideObj.expandIcon, menu === null || menu === void 0 ? void 0 : menu.expandIcon, prefixCls]);
const contextValue = reactExports.useMemo(() => ({
prefixCls,
inlineCollapsed: mergedInlineCollapsed || false,
direction,
firstLevel: true,
theme: theme2,
mode: mergedMode,
disableMenuItemTitleTooltip: _internalDisableMenuItemTitleTooltip
}), [prefixCls, mergedInlineCollapsed, direction, _internalDisableMenuItemTitleTooltip, theme2]);
return wrapCSSVar(/* @__PURE__ */ reactExports.createElement(OverrideContext.Provider, {
value: null
}, /* @__PURE__ */ reactExports.createElement(MenuContext.Provider, {
value: contextValue
}, /* @__PURE__ */ reactExports.createElement(ExportMenu, Object.assign({
getPopupContainer,
overflowedIndicator: /* @__PURE__ */ reactExports.createElement(RefIcon$f, null),
overflowedIndicatorPopupClassName: cls(prefixCls, `${prefixCls}-${theme2}`, overflowedIndicatorPopupClassName),
mode: mergedMode,
selectable: mergedSelectable,
onClick: onItemClick
}, passedProps, {
inlineCollapsed: mergedInlineCollapsed,
style: Object.assign(Object.assign({}, menu === null || menu === void 0 ? void 0 : menu.style), style2),
className: menuClassName,
prefixCls,
direction,
defaultMotions,
expandIcon: mergedExpandIcon,
ref,
rootClassName: cls(rootClassName, hashId, overrideObj.rootClassName, cssVarCls, rootCls),
_internalComponents: MENU_COMPONENTS
})))));
});
const Menu = /* @__PURE__ */ reactExports.forwardRef((props, ref) => {
const menuRef = reactExports.useRef(null);
const context = reactExports.useContext(SiderContext);
reactExports.useImperativeHandle(ref, () => ({
menu: menuRef.current,
focus: (options) => {
var _a2;
(_a2 = menuRef.current) === null || _a2 === void 0 ? void 0 : _a2.focus(options);
}
}));
return /* @__PURE__ */ reactExports.createElement(InternalMenu, Object.assign({
ref: menuRef
}, props, context));
});
Menu.Item = MenuItem;
Menu.SubMenu = SubMenu;
Menu.Divider = MenuDivider;
Menu.ItemGroup = MenuItemGroup;
const genStatusStyle = (token2) => {
const {
componentCls,
menuCls,
colorError,
colorTextLightSolid
} = token2;
const itemCls = `${menuCls}-item`;
return {
[`${componentCls}, ${componentCls}-menu-submenu`]: {
[`${menuCls} ${itemCls}`]: {
[`&${itemCls}-danger:not(${itemCls}-disabled)`]: {
color: colorError,
"&:hover": {
color: colorTextLightSolid,
backgroundColor: colorError
}
}
}
}
};
};
const genBaseStyle$2 = (token2) => {
const {
componentCls,
menuCls,
zIndexPopup,
dropdownArrowDistance,
sizePopupArrow,
antCls,
iconCls,
motionDurationMid,
paddingBlock,
fontSize,
dropdownEdgeChildPadding,
colorTextDisabled,
fontSizeIcon,
controlPaddingHorizontal,
colorBgElevated
} = token2;
return [
{
[componentCls]: {
position: "absolute",
top: -9999,
left: {
_skip_check_: true,
value: -9999
},
zIndex: zIndexPopup,
display: "block",
// A placeholder out of dropdown visible range to avoid close when user moving
"&::before": {
position: "absolute",
insetBlock: token2.calc(sizePopupArrow).div(2).sub(dropdownArrowDistance).equal(),
// insetInlineStart: -7, // FIXME: Seems not work for hidden element
zIndex: -9999,
opacity: 1e-4,
content: '""'
},
// Makes vertical dropdowns have a scrollbar once they become taller than the viewport.
"&-menu-vertical": {
maxHeight: "100vh",
overflowY: "auto"
},
[`&-trigger${antCls}-btn`]: {
[`& > ${iconCls}-down, & > ${antCls}-btn-icon > ${iconCls}-down`]: {
fontSize: fontSizeIcon
}
},
[`${componentCls}-wrap`]: {
position: "relative",
[`${antCls}-btn > ${iconCls}-down`]: {
fontSize: fontSizeIcon
},
[`${iconCls}-down::before`]: {
transition: `transform ${motionDurationMid}`
}
},
[`${componentCls}-wrap-open`]: {
[`${iconCls}-down::before`]: {
transform: `rotate(180deg)`
}
},
[`
&-hidden,
&-menu-hidden,
&-menu-submenu-hidden
`]: {
display: "none"
},
// =============================================================
// == Motion ==
// =============================================================
// When position is not enough for dropdown, the placement will revert.
// We will handle this with revert motion name.
[`&${antCls}-slide-down-enter${antCls}-slide-down-enter-active${componentCls}-placement-bottomLeft,
&${antCls}-slide-down-appear${antCls}-slide-down-appear-active${componentCls}-placement-bottomLeft,
&${antCls}-slide-down-enter${antCls}-slide-down-enter-active${componentCls}-placement-bottom,
&${antCls}-slide-down-appear${antCls}-slide-down-appear-active${componentCls}-placement-bottom,
&${antCls}-slide-down-enter${antCls}-slide-down-enter-active${componentCls}-placement-bottomRight,
&${antCls}-slide-down-appear${antCls}-slide-down-appear-active${componentCls}-placement-bottomRight`]: {
animationName: slideUpIn
},
[`&${antCls}-slide-up-enter${antCls}-slide-up-enter-active${componentCls}-placement-topLeft,
&${antCls}-slide-up-appear${antCls}-slide-up-appear-active${componentCls}-placement-topLeft,
&${antCls}-slide-up-enter${antCls}-slide-up-enter-active${componentCls}-placement-top,
&${antCls}-slide-up-appear${antCls}-slide-up-appear-active${componentCls}-placement-top,
&${antCls}-slide-up-enter${antCls}-slide-up-enter-active${componentCls}-placement-topRight,
&${antCls}-slide-up-appear${antCls}-slide-up-appear-active${componentCls}-placement-topRight`]: {
animationName: slideDownIn
},
[`&${antCls}-slide-down-leave${antCls}-slide-down-leave-active${componentCls}-placement-bottomLeft,
&${antCls}-slide-down-leave${antCls}-slide-down-leave-active${componentCls}-placement-bottom,
&${antCls}-slide-down-leave${antCls}-slide-down-leave-active${componentCls}-placement-bottomRight`]: {
animationName: slideUpOut
},
[`&${antCls}-slide-up-leave${antCls}-slide-up-leave-active${componentCls}-placement-topLeft,
&${antCls}-slide-up-leave${antCls}-slide-up-leave-active${componentCls}-placement-top,
&${antCls}-slide-up-leave${antCls}-slide-up-leave-active${componentCls}-placement-topRight`]: {
animationName: slideDownOut
}
}
},
// =============================================================
// == Arrow style ==
// =============================================================
getArrowStyle(token2, colorBgElevated, {
arrowPlacement: {
top: true,
bottom: true
}
}),
{
// =============================================================
// == Menu ==
// =============================================================
[`${componentCls} ${menuCls}`]: {
position: "relative",
margin: 0
},
[`${menuCls}-submenu-popup`]: {
position: "absolute",
zIndex: zIndexPopup,
background: "transparent",
boxShadow: "none",
transformOrigin: "0 0",
"ul, li": {
listStyle: "none",
margin: 0
}
},
[`${componentCls}, ${componentCls}-menu-submenu`]: Object.assign(Object.assign({}, resetComponent(token2)), {
[menuCls]: Object.assign(Object.assign({
padding: dropdownEdgeChildPadding,
listStyleType: "none",
backgroundColor: colorBgElevated,
backgroundClip: "padding-box",
borderRadius: token2.borderRadiusLG,
outline: "none",
boxShadow: token2.boxShadowSecondary
}, genFocusStyle(token2)), {
"&:empty": {
padding: 0,
boxShadow: "none"
},
[`${menuCls}-item-group-title`]: {
padding: `${unit$1(paddingBlock)} ${unit$1(controlPaddingHorizontal)}`,
color: token2.colorTextDescription,
transition: `all ${motionDurationMid}`
},
// ======================= Item Content =======================
[`${menuCls}-item`]: {
position: "relative",
display: "flex",
alignItems: "center"
},
[`${menuCls}-item-icon`]: {
minWidth: fontSize,
marginInlineEnd: token2.marginXS,
fontSize: token2.fontSizeSM
},
[`${menuCls}-title-content`]: {
display: "flex",
alignItems: "center",
flex: "auto",
"> a": {
color: "inherit",
transition: `all ${motionDurationMid}`,
"&:hover": {
color: "inherit"
},
"&::after": {
position: "absolute",
inset: 0,
content: '""'
}
},
[`${menuCls}-item-extra`]: {
paddingInlineStart: token2.padding,
marginInlineStart: "auto",
fontSize: token2.fontSizeSM,
color: token2.colorTextDescription
}
},
// =========================== Item ===========================
[`${menuCls}-item, ${menuCls}-submenu-title`]: Object.assign(Object.assign({
display: "flex",
margin: 0,
padding: `${unit$1(paddingBlock)} ${unit$1(controlPaddingHorizontal)}`,
color: token2.colorText,
fontWeight: "normal",
fontSize,
lineHeight: token2.lineHeight,
cursor: "pointer",
transition: `all ${motionDurationMid}`,
borderRadius: token2.borderRadiusSM,
"&:hover, &-active": {
backgroundColor: token2.controlItemBgHover
}
}, genFocusStyle(token2)), {
"&-selected": {
color: token2.colorPrimary,
backgroundColor: token2.controlItemBgActive,
"&:hover, &-active": {
backgroundColor: token2.controlItemBgActiveHover
}
},
"&-disabled": {
color: colorTextDisabled,
cursor: "not-allowed",
"&:hover": {
color: colorTextDisabled,
backgroundColor: colorBgElevated,
cursor: "not-allowed"
},
a: {
pointerEvents: "none"
}
},
"&-divider": {
height: 1,
// By design
margin: `${unit$1(token2.marginXXS)} 0`,
overflow: "hidden",
lineHeight: 0,
backgroundColor: token2.colorSplit
},
[`${componentCls}-menu-submenu-expand-icon`]: {
position: "absolute",
insetInlineEnd: token2.paddingXS,
[`${componentCls}-menu-submenu-arrow-icon`]: {
marginInlineEnd: "0 !important",
color: token2.colorTextDescription,
fontSize: fontSizeIcon,
fontStyle: "normal"
}
}
}),
[`${menuCls}-item-group-list`]: {
margin: `0 ${unit$1(token2.marginXS)}`,
padding: 0,
listStyle: "none"
},
[`${menuCls}-submenu-title`]: {
paddingInlineEnd: token2.calc(controlPaddingHorizontal).add(token2.fontSizeSM).equal()
},
[`${menuCls}-submenu-vertical`]: {
position: "relative"
},
[`${menuCls}-submenu${menuCls}-submenu-disabled ${componentCls}-menu-submenu-title`]: {
[`&, ${componentCls}-menu-submenu-arrow-icon`]: {
color: colorTextDisabled,
backgroundColor: colorBgElevated,
cursor: "not-allowed"
}
},
// https://github.com/ant-design/ant-design/issues/19264
[`${menuCls}-submenu-selected ${componentCls}-menu-submenu-title`]: {
color: token2.colorPrimary
}
})
})
},
// Follow code may reuse in other components
[initSlideMotion(token2, "slide-up"), initSlideMotion(token2, "slide-down"), initMoveMotion(token2, "move-up"), initMoveMotion(token2, "move-down"), initZoomMotion(token2, "zoom-big")]
];
};
const prepareComponentToken$7 = (token2) => Object.assign(Object.assign({
zIndexPopup: token2.zIndexPopupBase + 50,
paddingBlock: (token2.controlHeight - token2.fontSize * token2.lineHeight) / 2
}, getArrowOffsetToken({
contentRadius: token2.borderRadiusLG,
limitVerticalRadius: true
})), getArrowToken(token2));
const useStyle$a = genStyleHooks("Dropdown", (token2) => {
const {
marginXXS,
sizePopupArrow,
paddingXXS,
componentCls
} = token2;
const dropdownToken = merge$1(token2, {
menuCls: `${componentCls}-menu`,
dropdownArrowDistance: token2.calc(sizePopupArrow).div(2).add(marginXXS).equal(),
dropdownEdgeChildPadding: paddingXXS
});
return [genBaseStyle$2(dropdownToken), genStatusStyle(dropdownToken)];
}, prepareComponentToken$7, {
resetStyle: false
});
const Dropdown$1 = (props) => {
var _a2;
const {
menu,
arrow,
prefixCls: customizePrefixCls,
children,
trigger: trigger2,
disabled,
dropdownRender,
getPopupContainer,
overlayClassName,
rootClassName,
overlayStyle,
open: open2,
onOpenChange,
// Deprecated
visible,
onVisibleChange,
mouseEnterDelay = 0.15,
mouseLeaveDelay = 0.1,
autoAdjustOverflow: autoAdjustOverflow2 = true,
placement = "",
overlay,
transitionName
} = props;
const {
getPopupContainer: getContextPopupContainer,
getPrefixCls,
direction,
dropdown
} = reactExports.useContext(ConfigContext);
devUseWarning();
const memoTransitionName = reactExports.useMemo(() => {
const rootPrefixCls = getPrefixCls();
if (transitionName !== void 0) {
return transitionName;
}
if (placement.includes("top")) {
return `${rootPrefixCls}-slide-down`;
}
return `${rootPrefixCls}-slide-up`;
}, [getPrefixCls, placement, transitionName]);
const memoPlacement = reactExports.useMemo(() => {
if (!placement) {
return direction === "rtl" ? "bottomRight" : "bottomLeft";
}
if (placement.includes("Center")) {
return placement.slice(0, placement.indexOf("Center"));
}
return placement;
}, [placement, direction]);
const prefixCls = getPrefixCls("dropdown", customizePrefixCls);
const rootCls = useCSSVarCls(prefixCls);
const [wrapCSSVar, hashId, cssVarCls] = useStyle$a(prefixCls, rootCls);
const [, token2] = useToken();
const child = reactExports.Children.only(children);
const dropdownTrigger = cloneElement(child, {
className: cls(`${prefixCls}-trigger`, {
[`${prefixCls}-rtl`]: direction === "rtl"
}, child.props.className),
disabled: (_a2 = child.props.disabled) !== null && _a2 !== void 0 ? _a2 : disabled
});
const triggerActions = disabled ? [] : trigger2;
const alignPoint = !!(triggerActions === null || triggerActions === void 0 ? void 0 : triggerActions.includes("contextMenu"));
const [mergedOpen, setOpen] = useMergedState(false, {
value: open2 !== null && open2 !== void 0 ? open2 : visible
});
const onInnerOpenChange = useEvent((nextOpen) => {
onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(nextOpen, {
source: "trigger"
});
onVisibleChange === null || onVisibleChange === void 0 ? void 0 : onVisibleChange(nextOpen);
setOpen(nextOpen);
});
const overlayClassNameCustomized = cls(overlayClassName, rootClassName, hashId, cssVarCls, rootCls, dropdown === null || dropdown === void 0 ? void 0 : dropdown.className, {
[`${prefixCls}-rtl`]: direction === "rtl"
});
const builtinPlacements = getPlacements({
arrowPointAtCenter: typeof arrow === "object" && arrow.pointAtCenter,
autoAdjustOverflow: autoAdjustOverflow2,
offset: token2.marginXXS,
arrowWidth: arrow ? token2.sizePopupArrow : 0,
borderRadius: token2.borderRadius
});
const onMenuClick = reactExports.useCallback(() => {
if ((menu === null || menu === void 0 ? void 0 : menu.selectable) && (menu === null || menu === void 0 ? void 0 : menu.multiple)) {
return;
}
onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(false, {
source: "menu"
});
setOpen(false);
}, [menu === null || menu === void 0 ? void 0 : menu.selectable, menu === null || menu === void 0 ? void 0 : menu.multiple]);
const renderOverlay = () => {
let overlayNode;
if (menu === null || menu === void 0 ? void 0 : menu.items) {
overlayNode = /* @__PURE__ */ reactExports.createElement(Menu, Object.assign({}, menu));
} else if (typeof overlay === "function") {
overlayNode = overlay();
} else {
overlayNode = overlay;
}
if (dropdownRender) {
overlayNode = dropdownRender(overlayNode);
}
overlayNode = reactExports.Children.only(typeof overlayNode === "string" ? /* @__PURE__ */ reactExports.createElement("span", null, overlayNode) : overlayNode);
return /* @__PURE__ */ reactExports.createElement(OverrideProvider, {
prefixCls: `${prefixCls}-menu`,
rootClassName: cls(cssVarCls, rootCls),
expandIcon: /* @__PURE__ */ reactExports.createElement("span", {
className: `${prefixCls}-menu-submenu-arrow`
}, /* @__PURE__ */ reactExports.createElement(RefIcon$1, {
className: `${prefixCls}-menu-submenu-arrow-icon`
})),
mode: "vertical",
selectable: false,
onClick: onMenuClick,
validator: (_ref3) => {
}
}, overlayNode);
};
const [zIndex, contextZIndex] = useZIndex("Dropdown", overlayStyle === null || overlayStyle === void 0 ? void 0 : overlayStyle.zIndex);
let renderNode2 = /* @__PURE__ */ reactExports.createElement(Dropdown$3, Object.assign({
alignPoint
}, omit(props, ["rootClassName"]), {
mouseEnterDelay,
mouseLeaveDelay,
visible: mergedOpen,
builtinPlacements,
arrow: !!arrow,
overlayClassName: overlayClassNameCustomized,
prefixCls,
getPopupContainer: getPopupContainer || getContextPopupContainer,
transitionName: memoTransitionName,
trigger: triggerActions,
overlay: renderOverlay,
placement: memoPlacement,
onVisibleChange: onInnerOpenChange,
overlayStyle: Object.assign(Object.assign(Object.assign({}, dropdown === null || dropdown === void 0 ? void 0 : dropdown.style), overlayStyle), {
zIndex
})
}), dropdownTrigger);
if (zIndex) {
renderNode2 = /* @__PURE__ */ reactExports.createElement(zIndexContext.Provider, {
value: contextZIndex
}, renderNode2);
}
return wrapCSSVar(renderNode2);
};
function postPureProps(props) {
return Object.assign(Object.assign({}, props), {
align: {
overflow: {
adjustX: false,
adjustY: false
}
}
});
}
const PurePanel$1 = genPurePanel(Dropdown$1, "dropdown", (prefixCls) => prefixCls, postPureProps);
const WrapPurePanel = (props) => /* @__PURE__ */ reactExports.createElement(PurePanel$1, Object.assign({}, props), /* @__PURE__ */ reactExports.createElement("span", null));
Dropdown$1._InternalPanelDoNotUseOrYouWillBeFired = WrapPurePanel;
const RadioGroupContext = /* @__PURE__ */ reactExports.createContext(null);
const RadioGroupContextProvider = RadioGroupContext.Provider;
const RadioOptionTypeContext = /* @__PURE__ */ reactExports.createContext(null);
const RadioOptionTypeContextProvider = RadioOptionTypeContext.Provider;
var _excluded$g = ["prefixCls", "className", "style", "checked", "disabled", "defaultChecked", "type", "title", "onChange"];
var Checkbox$3 = /* @__PURE__ */ reactExports.forwardRef(function(props, ref) {
var _props$prefixCls = props.prefixCls, prefixCls = _props$prefixCls === void 0 ? "rc-checkbox" : _props$prefixCls, className = props.className, style2 = props.style, checked = props.checked, disabled = props.disabled, _props$defaultChecked = props.defaultChecked, defaultChecked = _props$defaultChecked === void 0 ? false : _props$defaultChecked, _props$type = props.type, type4 = _props$type === void 0 ? "checkbox" : _props$type, title = props.title, onChange = props.onChange, inputProps = _objectWithoutProperties(props, _excluded$g);
var inputRef = reactExports.useRef(null);
var holderRef = reactExports.useRef(null);
var _useMergedState = useMergedState(defaultChecked, {
value: checked
}), _useMergedState2 = _slicedToArray(_useMergedState, 2), rawValue = _useMergedState2[0], setRawValue = _useMergedState2[1];
reactExports.useImperativeHandle(ref, function() {
return {
focus: function focus(options) {
var _inputRef$current;
(_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 || _inputRef$current.focus(options);
},
blur: function blur() {
var _inputRef$current2;
(_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 || _inputRef$current2.blur();
},
input: inputRef.current,
nativeElement: holderRef.current
};
});
var classString = cls(prefixCls, className, _defineProperty(_defineProperty({}, "".concat(prefixCls, "-checked"), rawValue), "".concat(prefixCls, "-disabled"), disabled));
var handleChange = function handleChange2(e2) {
if (disabled) {
return;
}
if (!("checked" in props)) {
setRawValue(e2.target.checked);
}
onChange === null || onChange === void 0 || onChange({
target: _objectSpread2$1(_objectSpread2$1({}, props), {}, {
type: type4,
checked: e2.target.checked
}),
stopPropagation: function stopPropagation() {
e2.stopPropagation();
},
preventDefault: function preventDefault2() {
e2.preventDefault();
},
nativeEvent: e2.nativeEvent
});
};
return /* @__PURE__ */ reactExports.createElement("span", {
className: classString,
title,
style: style2,
ref: holderRef
}, /* @__PURE__ */ reactExports.createElement("input", _extends$2({}, inputProps, {
className: "".concat(prefixCls, "-input"),
ref: inputRef,
onChange: handleChange,
disabled,
checked: !!rawValue,
type: type4
})), /* @__PURE__ */ reactExports.createElement("span", {
className: "".concat(prefixCls, "-inner")
}));
});
const getGroupRadioStyle = (token2) => {
const {
componentCls,
antCls
} = token2;
const groupPrefixCls = `${componentCls}-group`;
return {
[groupPrefixCls]: Object.assign(Object.assign({}, resetComponent(token2)), {
display: "inline-block",
fontSize: 0,
// RTL
[`&${groupPrefixCls}-rtl`]: {
direction: "rtl"
},
[`&${groupPrefixCls}-block`]: {
display: "flex"
},
[`${antCls}-badge ${antCls}-badge-count`]: {
zIndex: 1
},
[`> ${antCls}-badge:not(:first-child) > ${antCls}-button-wrapper`]: {
borderInlineStart: "none"
}
})
};
};
const getRadioBasicStyle = (token2) => {
const {
componentCls,
wrapperMarginInlineEnd,
colorPrimary,
radioSize,
motionDurationSlow,
motionDurationMid,
motionEaseInOutCirc,
colorBgContainer,
colorBorder,
lineWidth,
colorBgContainerDisabled,
colorTextDisabled,
paddingXS,
dotColorDisabled,
lineType,
radioColor,
radioBgColor,
calc
} = token2;
const radioInnerPrefixCls = `${componentCls}-inner`;
const dotPadding = 4;
const radioDotDisabledSize = calc(radioSize).sub(calc(dotPadding).mul(2));
const radioSizeCalc = calc(1).mul(radioSize).equal({
unit: true
});
return {
[`${componentCls}-wrapper`]: Object.assign(Object.assign({}, resetComponent(token2)), {
display: "inline-flex",
alignItems: "baseline",
marginInlineStart: 0,
marginInlineEnd: wrapperMarginInlineEnd,
cursor: "pointer",
// RTL
[`&${componentCls}-wrapper-rtl`]: {
direction: "rtl"
},
"&-disabled": {
cursor: "not-allowed",
color: token2.colorTextDisabled
},
"&::after": {
display: "inline-block",
width: 0,
overflow: "hidden",
content: '"\\a0"'
},
"&-block": {
flex: 1,
justifyContent: "center"
},
// hashId 在 wrapper 上,只能铺平
[`${componentCls}-checked::after`]: {
position: "absolute",
insetBlockStart: 0,
insetInlineStart: 0,
width: "100%",
height: "100%",
border: `${unit$1(lineWidth)} ${lineType} ${colorPrimary}`,
borderRadius: "50%",
visibility: "hidden",
opacity: 0,
content: '""'
},
[componentCls]: Object.assign(Object.assign({}, resetComponent(token2)), {
position: "relative",
display: "inline-block",
outline: "none",
cursor: "pointer",
alignSelf: "center",
borderRadius: "50%"
}),
[`${componentCls}-wrapper:hover &,
&:hover ${radioInnerPrefixCls}`]: {
borderColor: colorPrimary
},
[`${componentCls}-input:focus-visible + ${radioInnerPrefixCls}`]: Object.assign({}, genFocusOutline(token2)),
[`${componentCls}:hover::after, ${componentCls}-wrapper:hover &::after`]: {
visibility: "visible"
},
[`${componentCls}-inner`]: {
"&::after": {
boxSizing: "border-box",
position: "absolute",
insetBlockStart: "50%",
insetInlineStart: "50%",
display: "block",
width: radioSizeCalc,
height: radioSizeCalc,
marginBlockStart: calc(1).mul(radioSize).div(-2).equal({
unit: true
}),
marginInlineStart: calc(1).mul(radioSize).div(-2).equal({
unit: true
}),
backgroundColor: radioColor,
borderBlockStart: 0,
borderInlineStart: 0,
borderRadius: radioSizeCalc,
transform: "scale(0)",
opacity: 0,
transition: `all ${motionDurationSlow} ${motionEaseInOutCirc}`,
content: '""'
},
boxSizing: "border-box",
position: "relative",
insetBlockStart: 0,
insetInlineStart: 0,
display: "block",
width: radioSizeCalc,
height: radioSizeCalc,
backgroundColor: colorBgContainer,
borderColor: colorBorder,
borderStyle: "solid",
borderWidth: lineWidth,
borderRadius: "50%",
transition: `all ${motionDurationMid}`
},
[`${componentCls}-input`]: {
position: "absolute",
inset: 0,
zIndex: 1,
cursor: "pointer",
opacity: 0
},
// 选中状态
[`${componentCls}-checked`]: {
[radioInnerPrefixCls]: {
borderColor: colorPrimary,
backgroundColor: radioBgColor,
"&::after": {
transform: `scale(${token2.calc(token2.dotSize).div(radioSize).equal()})`,
opacity: 1,
transition: `all ${motionDurationSlow} ${motionEaseInOutCirc}`
}
}
},
[`${componentCls}-disabled`]: {
cursor: "not-allowed",
[radioInnerPrefixCls]: {
backgroundColor: colorBgContainerDisabled,
borderColor: colorBorder,
cursor: "not-allowed",
"&::after": {
backgroundColor: dotColorDisabled
}
},
[`${componentCls}-input`]: {
cursor: "not-allowed"
},
[`${componentCls}-disabled + span`]: {
color: colorTextDisabled,
cursor: "not-allowed"
},
[`&${componentCls}-checked`]: {
[radioInnerPrefixCls]: {
"&::after": {
transform: `scale(${calc(radioDotDisabledSize).div(radioSize).equal()})`
}
}
}
},
[`span${componentCls} + *`]: {
paddingInlineStart: paddingXS,
paddingInlineEnd: paddingXS
}
})
};
};
const getRadioButtonStyle = (token2) => {
const {
buttonColor,
controlHeight,
componentCls,
lineWidth,
lineType,
colorBorder,
motionDurationSlow,
motionDurationMid,
buttonPaddingInline,
fontSize,
buttonBg,
fontSizeLG,
controlHeightLG,
controlHeightSM,
paddingXS,
borderRadius,
borderRadiusSM,
borderRadiusLG,
buttonCheckedBg,
buttonSolidCheckedColor,
colorTextDisabled,
colorBgContainerDisabled,
buttonCheckedBgDisabled,
buttonCheckedColorDisabled,
colorPrimary,
colorPrimaryHover,
colorPrimaryActive,
buttonSolidCheckedBg,
buttonSolidCheckedHoverBg,
buttonSolidCheckedActiveBg,
calc
} = token2;
return {
[`${componentCls}-button-wrapper`]: {
position: "relative",
display: "inline-block",
height: controlHeight,
margin: 0,
paddingInline: buttonPaddingInline,
paddingBlock: 0,
color: buttonColor,
fontSize,
lineHeight: unit$1(calc(controlHeight).sub(calc(lineWidth).mul(2)).equal()),
background: buttonBg,
border: `${unit$1(lineWidth)} ${lineType} ${colorBorder}`,
// strange align fix for chrome but works
// https://gw.alipayobjects.com/zos/rmsportal/VFTfKXJuogBAXcvfAUWJ.gif
borderBlockStartWidth: calc(lineWidth).add(0.02).equal(),
borderInlineStartWidth: 0,
borderInlineEndWidth: lineWidth,
cursor: "pointer",
transition: [`color ${motionDurationMid}`, `background ${motionDurationMid}`, `box-shadow ${motionDurationMid}`].join(","),
a: {
color: buttonColor
},
[`> ${componentCls}-button`]: {
position: "absolute",
insetBlockStart: 0,
insetInlineStart: 0,
zIndex: -1,
width: "100%",
height: "100%"
},
"&:not(:first-child)": {
"&::before": {
position: "absolute",
insetBlockStart: calc(lineWidth).mul(-1).equal(),
insetInlineStart: calc(lineWidth).mul(-1).equal(),
display: "block",
boxSizing: "content-box",
width: 1,
height: "100%",
paddingBlock: lineWidth,
paddingInline: 0,
backgroundColor: colorBorder,
transition: `background-color ${motionDurationSlow}`,
content: '""'
}
},
"&:first-child": {
borderInlineStart: `${unit$1(lineWidth)} ${lineType} ${colorBorder}`,
borderStartStartRadius: borderRadius,
borderEndStartRadius: borderRadius
},
"&:last-child": {
borderStartEndRadius: borderRadius,
borderEndEndRadius: borderRadius
},
"&:first-child:last-child": {
borderRadius
},
[`${componentCls}-group-large &`]: {
height: controlHeightLG,
fontSize: fontSizeLG,
lineHeight: unit$1(calc(controlHeightLG).sub(calc(lineWidth).mul(2)).equal()),
"&:first-child": {
borderStartStartRadius: borderRadiusLG,
borderEndStartRadius: borderRadiusLG
},
"&:last-child": {
borderStartEndRadius: borderRadiusLG,
borderEndEndRadius: borderRadiusLG
}
},
[`${componentCls}-group-small &`]: {
height: controlHeightSM,
paddingInline: calc(paddingXS).sub(lineWidth).equal(),
paddingBlock: 0,
lineHeight: unit$1(calc(controlHeightSM).sub(calc(lineWidth).mul(2)).equal()),
"&:first-child": {
borderStartStartRadius: borderRadiusSM,
borderEndStartRadius: borderRadiusSM
},
"&:last-child": {
borderStartEndRadius: borderRadiusSM,
borderEndEndRadius: borderRadiusSM
}
},
"&:hover": {
position: "relative",
color: colorPrimary
},
"&:has(:focus-visible)": Object.assign({}, genFocusOutline(token2)),
[`${componentCls}-inner, input[type='checkbox'], input[type='radio']`]: {
width: 0,
height: 0,
opacity: 0,
pointerEvents: "none"
},
[`&-checked:not(${componentCls}-button-wrapper-disabled)`]: {
zIndex: 1,
color: colorPrimary,
background: buttonCheckedBg,
borderColor: colorPrimary,
"&::before": {
backgroundColor: colorPrimary
},
"&:first-child": {
borderColor: colorPrimary
},
"&:hover": {
color: colorPrimaryHover,
borderColor: colorPrimaryHover,
"&::before": {
backgroundColor: colorPrimaryHover
}
},
"&:active": {
color: colorPrimaryActive,
borderColor: colorPrimaryActive,
"&::before": {
backgroundColor: colorPrimaryActive
}
}
},
[`${componentCls}-group-solid &-checked:not(${componentCls}-button-wrapper-disabled)`]: {
color: buttonSolidCheckedColor,
background: buttonSolidCheckedBg,
borderColor: buttonSolidCheckedBg,
"&:hover": {
color: buttonSolidCheckedColor,
background: buttonSolidCheckedHoverBg,
borderColor: buttonSolidCheckedHoverBg
},
"&:active": {
color: buttonSolidCheckedColor,
background: buttonSolidCheckedActiveBg,
borderColor: buttonSolidCheckedActiveBg
}
},
"&-disabled": {
color: colorTextDisabled,
backgroundColor: colorBgContainerDisabled,
borderColor: colorBorder,
cursor: "not-allowed",
"&:first-child, &:hover": {
color: colorTextDisabled,
backgroundColor: colorBgContainerDisabled,
borderColor: colorBorder
}
},
[`&-disabled${componentCls}-button-wrapper-checked`]: {
color: buttonCheckedColorDisabled,
backgroundColor: buttonCheckedBgDisabled,
borderColor: colorBorder,
boxShadow: "none"
},
"&-block": {
flex: 1,
textAlign: "center"
}
}
};
};
const prepareComponentToken$6 = (token2) => {
const {
wireframe,
padding,
marginXS,
lineWidth,
fontSizeLG,
colorText,
colorBgContainer,
colorTextDisabled,
controlItemBgActiveDisabled,
colorTextLightSolid,
colorPrimary,
colorPrimaryHover,
colorPrimaryActive,
colorWhite
} = token2;
const dotPadding = 4;
const radioSize = fontSizeLG;
const radioDotSize = wireframe ? radioSize - dotPadding * 2 : radioSize - (dotPadding + lineWidth) * 2;
return {
// Radio
radioSize,
dotSize: radioDotSize,
dotColorDisabled: colorTextDisabled,
// Radio buttons
buttonSolidCheckedColor: colorTextLightSolid,
buttonSolidCheckedBg: colorPrimary,
buttonSolidCheckedHoverBg: colorPrimaryHover,
buttonSolidCheckedActiveBg: colorPrimaryActive,
buttonBg: colorBgContainer,
buttonCheckedBg: colorBgContainer,
buttonColor: colorText,
buttonCheckedBgDisabled: controlItemBgActiveDisabled,
buttonCheckedColorDisabled: colorTextDisabled,
buttonPaddingInline: padding - lineWidth,
wrapperMarginInlineEnd: marginXS,
// internal
radioColor: wireframe ? colorPrimary : colorWhite,
radioBgColor: wireframe ? colorBgContainer : colorPrimary
};
};
const useStyle$9 = genStyleHooks("Radio", (token2) => {
const {
controlOutline,
controlOutlineWidth
} = token2;
const radioFocusShadow = `0 0 0 ${unit$1(controlOutlineWidth)} ${controlOutline}`;
const radioButtonFocusShadow = radioFocusShadow;
const radioToken = merge$1(token2, {
radioFocusShadow,
radioButtonFocusShadow
});
return [getGroupRadioStyle(radioToken), getRadioBasicStyle(radioToken), getRadioButtonStyle(radioToken)];
}, prepareComponentToken$6, {
unitless: {
radioSize: true,
dotSize: true
}
});
var __rest$i = function(s, e2) {
var t2 = {};
for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0) t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i])) t2[p2[i]] = s[p2[i]];
}
return t2;
};
const InternalRadio = (props, ref) => {
var _a2, _b2;
const groupContext = reactExports.useContext(RadioGroupContext);
const radioOptionTypeContext = reactExports.useContext(RadioOptionTypeContext);
const {
getPrefixCls,
direction,
radio
} = reactExports.useContext(ConfigContext);
const innerRef = reactExports.useRef(null);
const mergedRef = composeRef(ref, innerRef);
const {
isFormItemInput
} = reactExports.useContext(FormItemInputContext);
const onChange = (e2) => {
var _a22, _b22;
(_a22 = props.onChange) === null || _a22 === void 0 ? void 0 : _a22.call(props, e2);
(_b22 = groupContext === null || groupContext === void 0 ? void 0 : groupContext.onChange) === null || _b22 === void 0 ? void 0 : _b22.call(groupContext, e2);
};
const {
prefixCls: customizePrefixCls,
className,
rootClassName,
children,
style: style2,
title
} = props, restProps = __rest$i(props, ["prefixCls", "className", "rootClassName", "children", "style", "title"]);
const radioPrefixCls = getPrefixCls("radio", customizePrefixCls);
const isButtonType = ((groupContext === null || groupContext === void 0 ? void 0 : groupContext.optionType) || radioOptionTypeContext) === "button";
const prefixCls = isButtonType ? `${radioPrefixCls}-button` : radioPrefixCls;
const rootCls = useCSSVarCls(radioPrefixCls);
const [wrapCSSVar, hashId, cssVarCls] = useStyle$9(radioPrefixCls, rootCls);
const radioProps = Object.assign({}, restProps);
const disabled = reactExports.useContext(DisabledContext);
if (groupContext) {
radioProps.name = groupContext.name;
radioProps.onChange = onChange;
radioProps.checked = props.value === groupContext.value;
radioProps.disabled = (_a2 = radioProps.disabled) !== null && _a2 !== void 0 ? _a2 : groupContext.disabled;
}
radioProps.disabled = (_b2 = radioProps.disabled) !== null && _b2 !== void 0 ? _b2 : disabled;
const wrapperClassString = cls(`${prefixCls}-wrapper`, {
[`${prefixCls}-wrapper-checked`]: radioProps.checked,
[`${prefixCls}-wrapper-disabled`]: radioProps.disabled,
[`${prefixCls}-wrapper-rtl`]: direction === "rtl",
[`${prefixCls}-wrapper-in-form-item`]: isFormItemInput,
[`${prefixCls}-wrapper-block`]: !!(groupContext === null || groupContext === void 0 ? void 0 : groupContext.block)
}, radio === null || radio === void 0 ? void 0 : radio.className, className, rootClassName, hashId, cssVarCls, rootCls);
return wrapCSSVar(/* @__PURE__ */ reactExports.createElement(Wave, {
component: "Radio",
disabled: radioProps.disabled
}, /* @__PURE__ */ reactExports.createElement("label", {
className: wrapperClassString,
style: Object.assign(Object.assign({}, radio === null || radio === void 0 ? void 0 : radio.style), style2),
onMouseEnter: props.onMouseEnter,
onMouseLeave: props.onMouseLeave,
title
}, /* @__PURE__ */ reactExports.createElement(Checkbox$3, Object.assign({}, radioProps, {
className: cls(radioProps.className, {
[TARGET_CLS]: !isButtonType
}),
type: "radio",
prefixCls,
ref: mergedRef
})), children !== void 0 ? /* @__PURE__ */ reactExports.createElement("span", null, children) : null)));
};
const Radio$1 = /* @__PURE__ */ reactExports.forwardRef(InternalRadio);
const RadioGroup = /* @__PURE__ */ reactExports.forwardRef((props, ref) => {
const {
getPrefixCls,
direction
} = reactExports.useContext(ConfigContext);
const {
prefixCls: customizePrefixCls,
className,
rootClassName,
options,
buttonStyle = "outline",
disabled,
children,
size: customizeSize,
style: style2,
id: id2,
optionType,
name,
defaultValue,
value: customizedValue,
block = false,
onChange,
onMouseEnter,
onMouseLeave,
onFocus,
onBlur
} = props;
const [value, setValue] = useMergedState(defaultValue, {
value: customizedValue
});
const onRadioChange = reactExports.useCallback((event) => {
const lastValue = value;
const val = event.target.value;
if (!("value" in props)) {
setValue(val);
}
if (val !== lastValue) {
onChange === null || onChange === void 0 ? void 0 : onChange(event);
}
}, [value, setValue, onChange]);
const prefixCls = getPrefixCls("radio", customizePrefixCls);
const groupPrefixCls = `${prefixCls}-group`;
const rootCls = useCSSVarCls(prefixCls);
const [wrapCSSVar, hashId, cssVarCls] = useStyle$9(prefixCls, rootCls);
let childrenToRender = children;
if (options && options.length > 0) {
childrenToRender = options.map((option) => {
if (typeof option === "string" || typeof option === "number") {
return /* @__PURE__ */ reactExports.createElement(Radio$1, {
key: option.toString(),
prefixCls,
disabled,
value: option,
checked: value === option
}, option);
}
return /* @__PURE__ */ reactExports.createElement(Radio$1, {
key: `radio-group-value-options-${option.value}`,
prefixCls,
disabled: option.disabled || disabled,
value: option.value,
checked: value === option.value,
title: option.title,
style: option.style,
id: option.id,
required: option.required
}, option.label);
});
}
const mergedSize = useSize(customizeSize);
const classString = cls(groupPrefixCls, `${groupPrefixCls}-${buttonStyle}`, {
[`${groupPrefixCls}-${mergedSize}`]: mergedSize,
[`${groupPrefixCls}-rtl`]: direction === "rtl",
[`${groupPrefixCls}-block`]: block
}, className, rootClassName, hashId, cssVarCls, rootCls);
const memoizedValue = reactExports.useMemo(() => ({
onChange: onRadioChange,
value,
disabled,
name,
optionType,
block
}), [onRadioChange, value, disabled, name, optionType, block]);
return wrapCSSVar(/* @__PURE__ */ reactExports.createElement("div", Object.assign({}, pickAttrs(props, {
aria: true,
data: true
}), {
className: classString,
style: style2,
onMouseEnter,
onMouseLeave,
onFocus,
onBlur,
id: id2,
ref
}), /* @__PURE__ */ reactExports.createElement(RadioGroupContextProvider, {
value: memoizedValue
}, childrenToRender)));
});
const Group$5 = /* @__PURE__ */ reactExports.memo(RadioGroup);
var __rest$h = function(s, e2) {
var t2 = {};
for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0) t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i])) t2[p2[i]] = s[p2[i]];
}
return t2;
};
const RadioButton = (props, ref) => {
const {
getPrefixCls
} = reactExports.useContext(ConfigContext);
const {
prefixCls: customizePrefixCls
} = props, radioProps = __rest$h(props, ["prefixCls"]);
const prefixCls = getPrefixCls("radio", customizePrefixCls);
return /* @__PURE__ */ reactExports.createElement(RadioOptionTypeContextProvider, {
value: "button"
}, /* @__PURE__ */ reactExports.createElement(Radio$1, Object.assign({
prefixCls
}, radioProps, {
type: "radio",
ref
})));
};
const Button = /* @__PURE__ */ reactExports.forwardRef(RadioButton);
const Radio = Radio$1;
Radio.Button = Button;
Radio.Group = Group$5;
Radio.__ANT_RADIO = true;
function initInputToken(token2) {
return merge$1(token2, {
inputAffixPadding: token2.paddingXXS
});
}
const initComponentToken$1 = (token2) => {
const {
controlHeight,
fontSize,
lineHeight,
lineWidth,
controlHeightSM,
controlHeightLG,
fontSizeLG,
lineHeightLG,
paddingSM,
controlPaddingHorizontalSM,
controlPaddingHorizontal,
colorFillAlter,
colorPrimaryHover,
colorPrimary,
controlOutlineWidth,
controlOutline,
colorErrorOutline,
colorWarningOutline,
colorBgContainer
} = token2;
return {
paddingBlock: Math.max(Math.round((controlHeight - fontSize * lineHeight) / 2 * 10) / 10 - lineWidth, 0),
paddingBlockSM: Math.max(Math.round((controlHeightSM - fontSize * lineHeight) / 2 * 10) / 10 - lineWidth, 0),
paddingBlockLG: Math.ceil((controlHeightLG - fontSizeLG * lineHeightLG) / 2 * 10) / 10 - lineWidth,
paddingInline: paddingSM - lineWidth,
paddingInlineSM: controlPaddingHorizontalSM - lineWidth,
paddingInlineLG: controlPaddingHorizontal - lineWidth,
addonBg: colorFillAlter,
activeBorderColor: colorPrimary,
hoverBorderColor: colorPrimaryHover,
activeShadow: `0 0 0 ${controlOutlineWidth}px ${controlOutline}`,
errorActiveShadow: `0 0 0 ${controlOutlineWidth}px ${colorErrorOutline}`,
warningActiveShadow: `0 0 0 ${controlOutlineWidth}px ${colorWarningOutline}`,
hoverBg: colorBgContainer,
activeBg: colorBgContainer,
inputFontSize: fontSize,
inputFontSizeLG: fontSizeLG,
inputFontSizeSM: fontSize
};
};
const genHoverStyle = (token2) => ({
borderColor: token2.hoverBorderColor,
backgroundColor: token2.hoverBg
});
const genDisabledStyle = (token2) => ({
color: token2.colorTextDisabled,
backgroundColor: token2.colorBgContainerDisabled,
borderColor: token2.colorBorder,
boxShadow: "none",
cursor: "not-allowed",
opacity: 1,
"input[disabled], textarea[disabled]": {
cursor: "not-allowed"
},
"&:hover:not([disabled])": Object.assign({}, genHoverStyle(merge$1(token2, {
hoverBorderColor: token2.colorBorder,
hoverBg: token2.colorBgContainerDisabled
})))
});
const genBaseOutlinedStyle = (token2, options) => ({
background: token2.colorBgContainer,
borderWidth: token2.lineWidth,
borderStyle: token2.lineType,
borderColor: options.borderColor,
"&:hover": {
borderColor: options.hoverBorderColor,
backgroundColor: token2.hoverBg
},
"&:focus, &:focus-within": {
borderColor: options.activeBorderColor,
boxShadow: options.activeShadow,
outline: 0,
backgroundColor: token2.activeBg
}
});
const genOutlinedStatusStyle = (token2, options) => ({
[`&${token2.componentCls}-status-${options.status}:not(${token2.componentCls}-disabled)`]: Object.assign(Object.assign({}, genBaseOutlinedStyle(token2, options)), {
[`${token2.componentCls}-prefix, ${token2.componentCls}-suffix`]: {
color: options.affixColor
}
}),
[`&${token2.componentCls}-status-${options.status}${token2.componentCls}-disabled`]: {
borderColor: options.borderColor
}
});
const genOutlinedStyle = (token2, extraStyles) => ({
"&-outlined": Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, genBaseOutlinedStyle(token2, {
borderColor: token2.colorBorder,
hoverBorderColor: token2.hoverBorderColor,
activeBorderColor: token2.activeBorderColor,
activeShadow: token2.activeShadow
})), {
[`&${token2.componentCls}-disabled, &[disabled]`]: Object.assign({}, genDisabledStyle(token2))
}), genOutlinedStatusStyle(token2, {
status: "error",
borderColor: token2.colorError,
hoverBorderColor: token2.colorErrorBorderHover,
activeBorderColor: token2.colorError,
activeShadow: token2.errorActiveShadow,
affixColor: token2.colorError
})), genOutlinedStatusStyle(token2, {
status: "warning",
borderColor: token2.colorWarning,
hoverBorderColor: token2.colorWarningBorderHover,
activeBorderColor: token2.colorWarning,
activeShadow: token2.warningActiveShadow,
affixColor: token2.colorWarning
})), extraStyles)
});
const genOutlinedGroupStatusStyle = (token2, options) => ({
[`&${token2.componentCls}-group-wrapper-status-${options.status}`]: {
[`${token2.componentCls}-group-addon`]: {
borderColor: options.addonBorderColor,
color: options.addonColor
}
}
});
const genOutlinedGroupStyle = (token2) => ({
"&-outlined": Object.assign(Object.assign(Object.assign({
[`${token2.componentCls}-group`]: {
"&-addon": {
background: token2.addonBg,
border: `${unit$1(token2.lineWidth)} ${token2.lineType} ${token2.colorBorder}`
},
"&-addon:first-child": {
borderInlineEnd: 0
},
"&-addon:last-child": {
borderInlineStart: 0
}
}
}, genOutlinedGroupStatusStyle(token2, {
status: "error",
addonBorderColor: token2.colorError,
addonColor: token2.colorErrorText
})), genOutlinedGroupStatusStyle(token2, {
status: "warning",
addonBorderColor: token2.colorWarning,
addonColor: token2.colorWarningText
})), {
[`&${token2.componentCls}-group-wrapper-disabled`]: {
[`${token2.componentCls}-group-addon`]: Object.assign({}, genDisabledStyle(token2))
}
})
});
const genBorderlessStyle = (token2, extraStyles) => {
const {
componentCls
} = token2;
return {
"&-borderless": Object.assign({
background: "transparent",
border: "none",
"&:focus, &:focus-within": {
outline: "none"
},
// >>>>> Disabled
[`&${componentCls}-disabled, &[disabled]`]: {
color: token2.colorTextDisabled
},
// >>>>> Status
[`&${componentCls}-status-error`]: {
"&, & input, & textarea": {
color: token2.colorError
}
},
[`&${componentCls}-status-warning`]: {
"&, & input, & textarea": {
color: token2.colorWarning
}
}
}, extraStyles)
};
};
const genBaseFilledStyle = (token2, options) => ({
background: options.bg,
borderWidth: token2.lineWidth,
borderStyle: token2.lineType,
borderColor: "transparent",
"input&, & input, textarea&, & textarea": {
color: options === null || options === void 0 ? void 0 : options.inputColor
},
"&:hover": {
background: options.hoverBg
},
"&:focus, &:focus-within": {
outline: 0,
borderColor: options.activeBorderColor,
backgroundColor: token2.activeBg
}
});
const genFilledStatusStyle = (token2, options) => ({
[`&${token2.componentCls}-status-${options.status}:not(${token2.componentCls}-disabled)`]: Object.assign(Object.assign({}, genBaseFilledStyle(token2, options)), {
[`${token2.componentCls}-prefix, ${token2.componentCls}-suffix`]: {
color: options.affixColor
}
})
});
const genFilledStyle = (token2, extraStyles) => ({
"&-filled": Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, genBaseFilledStyle(token2, {
bg: token2.colorFillTertiary,
hoverBg: token2.colorFillSecondary,
activeBorderColor: token2.activeBorderColor
})), {
[`&${token2.componentCls}-disabled, &[disabled]`]: Object.assign({}, genDisabledStyle(token2))
}), genFilledStatusStyle(token2, {
status: "error",
bg: token2.colorErrorBg,
hoverBg: token2.colorErrorBgHover,
activeBorderColor: token2.colorError,
inputColor: token2.colorErrorText,
affixColor: token2.colorError
})), genFilledStatusStyle(token2, {
status: "warning",
bg: token2.colorWarningBg,
hoverBg: token2.colorWarningBgHover,
activeBorderColor: token2.colorWarning,
inputColor: token2.colorWarningText,
affixColor: token2.colorWarning
})), extraStyles)
});
const genFilledGroupStatusStyle = (token2, options) => ({
[`&${token2.componentCls}-group-wrapper-status-${options.status}`]: {
[`${token2.componentCls}-group-addon`]: {
background: options.addonBg,
color: options.addonColor
}
}
});
const genFilledGroupStyle = (token2) => ({
"&-filled": Object.assign(Object.assign(Object.assign({
[`${token2.componentCls}-group`]: {
"&-addon": {
background: token2.colorFillTertiary
},
[`${token2.componentCls}-filled:not(:focus):not(:focus-within)`]: {
"&:not(:first-child)": {
borderInlineStart: `${unit$1(token2.lineWidth)} ${token2.lineType} ${token2.colorSplit}`
},
"&:not(:last-child)": {
borderInlineEnd: `${unit$1(token2.lineWidth)} ${token2.lineType} ${token2.colorSplit}`
}
}
}
}, genFilledGroupStatusStyle(token2, {
status: "error",
addonBg: token2.colorErrorBg,
addonColor: token2.colorErrorText
})), genFilledGroupStatusStyle(token2, {
status: "warning",
addonBg: token2.colorWarningBg,
addonColor: token2.colorWarningText
})), {
[`&${token2.componentCls}-group-wrapper-disabled`]: {
[`${token2.componentCls}-group`]: {
"&-addon": {
background: token2.colorFillTertiary,
color: token2.colorTextDisabled
},
"&-addon:first-child": {
borderInlineStart: `${unit$1(token2.lineWidth)} ${token2.lineType} ${token2.colorBorder}`,
borderTop: `${unit$1(token2.lineWidth)} ${token2.lineType} ${token2.colorBorder}`,
borderBottom: `${unit$1(token2.lineWidth)} ${token2.lineType} ${token2.colorBorder}`
},
"&-addon:last-child": {
borderInlineEnd: `${unit$1(token2.lineWidth)} ${token2.lineType} ${token2.colorBorder}`,
borderTop: `${unit$1(token2.lineWidth)} ${token2.lineType} ${token2.colorBorder}`,
borderBottom: `${unit$1(token2.lineWidth)} ${token2.lineType} ${token2.colorBorder}`
}
}
}
})
});
const genPlaceholderStyle = (color2) => ({
// Firefox
"&::-moz-placeholder": {
opacity: 1
},
"&::placeholder": {
color: color2,
userSelect: "none"
// https://github.com/ant-design/ant-design/pull/32639
},
"&:placeholder-shown": {
textOverflow: "ellipsis"
}
});
const genInputLargeStyle = (token2) => {
const {
paddingBlockLG,
lineHeightLG,
borderRadiusLG,
paddingInlineLG
} = token2;
return {
padding: `${unit$1(paddingBlockLG)} ${unit$1(paddingInlineLG)}`,
fontSize: token2.inputFontSizeLG,
lineHeight: lineHeightLG,
borderRadius: borderRadiusLG
};
};
const genInputSmallStyle = (token2) => ({
padding: `${unit$1(token2.paddingBlockSM)} ${unit$1(token2.paddingInlineSM)}`,
fontSize: token2.inputFontSizeSM,
borderRadius: token2.borderRadiusSM
});
const genBasicInputStyle = (token2) => Object.assign(Object.assign({
position: "relative",
display: "inline-block",
width: "100%",
minWidth: 0,
padding: `${unit$1(token2.paddingBlock)} ${unit$1(token2.paddingInline)}`,
color: token2.colorText,
fontSize: token2.inputFontSize,
lineHeight: token2.lineHeight,
borderRadius: token2.borderRadius,
transition: `all ${token2.motionDurationMid}`
}, genPlaceholderStyle(token2.colorTextPlaceholder)), {
// Reset height for `textarea`s
"textarea&": {
maxWidth: "100%",
// prevent textarea resize from coming out of its container
height: "auto",
minHeight: token2.controlHeight,
lineHeight: token2.lineHeight,
verticalAlign: "bottom",
transition: `all ${token2.motionDurationSlow}, height 0s`,
resize: "vertical"
},
// Size
"&-lg": Object.assign({}, genInputLargeStyle(token2)),
"&-sm": Object.assign({}, genInputSmallStyle(token2)),
// RTL
"&-rtl, &-textarea-rtl": {
direction: "rtl"
}
});
const genInputGroupStyle = (token2) => {
const {
componentCls,
antCls
} = token2;
return {
position: "relative",
display: "table",
width: "100%",
borderCollapse: "separate",
borderSpacing: 0,
// Undo padding and float of grid classes
"&[class*='col-']": {
paddingInlineEnd: token2.paddingXS,
"&:last-child": {
paddingInlineEnd: 0
}
},
// Sizing options
[`&-lg ${componentCls}, &-lg > ${componentCls}-group-addon`]: Object.assign({}, genInputLargeStyle(token2)),
[`&-sm ${componentCls}, &-sm > ${componentCls}-group-addon`]: Object.assign({}, genInputSmallStyle(token2)),
// Fix https://github.com/ant-design/ant-design/issues/5754
[`&-lg ${antCls}-select-single ${antCls}-select-selector`]: {
height: token2.controlHeightLG
},
[`&-sm ${antCls}-select-single ${antCls}-select-selector`]: {
height: token2.controlHeightSM
},
[`> ${componentCls}`]: {
display: "table-cell",
"&:not(:first-child):not(:last-child)": {
borderRadius: 0
}
},
[`${componentCls}-group`]: {
"&-addon, &-wrap": {
display: "table-cell",
width: 1,
whiteSpace: "nowrap",
verticalAlign: "middle",
"&:not(:first-child):not(:last-child)": {
borderRadius: 0
}
},
"&-wrap > *": {
display: "block !important"
},
"&-addon": {
position: "relative",
padding: `0 ${unit$1(token2.paddingInline)}`,
color: token2.colorText,
fontWeight: "normal",
fontSize: token2.inputFontSize,
textAlign: "center",
borderRadius: token2.borderRadius,
transition: `all ${token2.motionDurationSlow}`,
lineHeight: 1,
// Reset Select's style in addon
[`${antCls}-select`]: {
margin: `${unit$1(token2.calc(token2.paddingBlock).add(1).mul(-1).equal())} ${unit$1(token2.calc(token2.paddingInline).mul(-1).equal())}`,
[`&${antCls}-select-single:not(${antCls}-select-customize-input):not(${antCls}-pagination-size-changer)`]: {
[`${antCls}-select-selector`]: {
backgroundColor: "inherit",
border: `${unit$1(token2.lineWidth)} ${token2.lineType} transparent`,
boxShadow: "none"
}
}
},
// https://github.com/ant-design/ant-design/issues/31333
[`${antCls}-cascader-picker`]: {
margin: `-9px ${unit$1(token2.calc(token2.paddingInline).mul(-1).equal())}`,
backgroundColor: "transparent",
[`${antCls}-cascader-input`]: {
textAlign: "start",
border: 0,
boxShadow: "none"
}
}
}
},
[componentCls]: {
width: "100%",
marginBottom: 0,
textAlign: "inherit",
"&:focus": {
zIndex: 1,
// Fix https://gw.alipayobjects.com/zos/rmsportal/DHNpoqfMXSfrSnlZvhsJ.png
borderInlineEndWidth: 1
},
"&:hover": {
zIndex: 1,
borderInlineEndWidth: 1,
[`${componentCls}-search-with-button &`]: {
zIndex: 0
}
}
},
// Reset rounded corners
[`> ${componentCls}:first-child, ${componentCls}-group-addon:first-child`]: {
borderStartEndRadius: 0,
borderEndEndRadius: 0,
// Reset Select's style in addon
[`${antCls}-select ${antCls}-select-selector`]: {
borderStartEndRadius: 0,
borderEndEndRadius: 0
}
},
[`> ${componentCls}-affix-wrapper`]: {
[`&:not(:first-child) ${componentCls}`]: {
borderStartStartRadius: 0,
borderEndStartRadius: 0
},
[`&:not(:last-child) ${componentCls}`]: {
borderStartEndRadius: 0,
borderEndEndRadius: 0
}
},
[`> ${componentCls}:last-child, ${componentCls}-group-addon:last-child`]: {
borderStartStartRadius: 0,
borderEndStartRadius: 0,
// Reset Select's style in addon
[`${antCls}-select ${antCls}-select-selector`]: {
borderStartStartRadius: 0,
borderEndStartRadius: 0
}
},
[`${componentCls}-affix-wrapper`]: {
"&:not(:last-child)": {
borderStartEndRadius: 0,
borderEndEndRadius: 0,
[`${componentCls}-search &`]: {
borderStartStartRadius: token2.borderRadius,
borderEndStartRadius: token2.borderRadius
}
},
[`&:not(:first-child), ${componentCls}-search &:not(:first-child)`]: {
borderStartStartRadius: 0,
borderEndStartRadius: 0
}
},
[`&${componentCls}-group-compact`]: Object.assign(Object.assign({
display: "block"
}, clearFix()), {
[`${componentCls}-group-addon, ${componentCls}-group-wrap, > ${componentCls}`]: {
"&:not(:first-child):not(:last-child)": {
borderInlineEndWidth: token2.lineWidth,
"&:hover, &:focus": {
zIndex: 1
}
}
},
"& > *": {
display: "inline-flex",
float: "none",
verticalAlign: "top",
// https://github.com/ant-design/ant-design-pro/issues/139
borderRadius: 0
},
[`
& > ${componentCls}-affix-wrapper,
& > ${componentCls}-number-affix-wrapper,
& > ${antCls}-picker-range
`]: {
display: "inline-flex"
},
"& > *:not(:last-child)": {
marginInlineEnd: token2.calc(token2.lineWidth).mul(-1).equal(),
borderInlineEndWidth: token2.lineWidth
},
// Undo float for .ant-input-group .ant-input
[componentCls]: {
float: "none"
},
// reset border for Select, DatePicker, AutoComplete, Cascader, Mention, TimePicker, Input
[`& > ${antCls}-select > ${antCls}-select-selector,
& > ${antCls}-select-auto-complete ${componentCls},
& > ${antCls}-cascader-picker ${componentCls},
& > ${componentCls}-group-wrapper ${componentCls}`]: {
borderInlineEndWidth: token2.lineWidth,
borderRadius: 0,
"&:hover, &:focus": {
zIndex: 1
}
},
[`& > ${antCls}-select-focused`]: {
zIndex: 1
},
// update z-index for arrow icon
[`& > ${antCls}-select > ${antCls}-select-arrow`]: {
zIndex: 1
// https://github.com/ant-design/ant-design/issues/20371
},
[`& > *:first-child,
& > ${antCls}-select:first-child > ${antCls}-select-selector,
& > ${antCls}-select-auto-complete:first-child ${componentCls},
& > ${antCls}-cascader-picker:first-child ${componentCls}`]: {
borderStartStartRadius: token2.borderRadius,
borderEndStartRadius: token2.borderRadius
},
[`& > *:last-child,
& > ${antCls}-select:last-child > ${antCls}-select-selector,
& > ${antCls}-cascader-picker:last-child ${componentCls},
& > ${antCls}-cascader-picker-focused:last-child ${componentCls}`]: {
borderInlineEndWidth: token2.lineWidth,
borderStartEndRadius: token2.borderRadius,
borderEndEndRadius: token2.borderRadius
},
// https://github.com/ant-design/ant-design/issues/12493
[`& > ${antCls}-select-auto-complete ${componentCls}`]: {
verticalAlign: "top"
},
[`${componentCls}-group-wrapper + ${componentCls}-group-wrapper`]: {
marginInlineStart: token2.calc(token2.lineWidth).mul(-1).equal(),
[`${componentCls}-affix-wrapper`]: {
borderRadius: 0
}
},
[`${componentCls}-group-wrapper:not(:last-child)`]: {
[`&${componentCls}-search > ${componentCls}-group`]: {
[`& > ${componentCls}-group-addon > ${componentCls}-search-button`]: {
borderRadius: 0
},
[`& > ${componentCls}`]: {
borderStartStartRadius: token2.borderRadius,
borderStartEndRadius: 0,
borderEndEndRadius: 0,
borderEndStartRadius: token2.borderRadius
}
}
}
})
};
};
const genInputStyle = (token2) => {
const {
componentCls,
controlHeightSM,
lineWidth,
calc
} = token2;
const FIXED_CHROME_COLOR_HEIGHT = 16;
const colorSmallPadding = calc(controlHeightSM).sub(calc(lineWidth).mul(2)).sub(FIXED_CHROME_COLOR_HEIGHT).div(2).equal();
return {
[componentCls]: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, resetComponent(token2)), genBasicInputStyle(token2)), genOutlinedStyle(token2)), genFilledStyle(token2)), genBorderlessStyle(token2)), {
'&[type="color"]': {
height: token2.controlHeight,
[`&${componentCls}-lg`]: {
height: token2.controlHeightLG
},
[`&${componentCls}-sm`]: {
height: controlHeightSM,
paddingTop: colorSmallPadding,
paddingBottom: colorSmallPadding
}
},
'&[type="search"]::-webkit-search-cancel-button, &[type="search"]::-webkit-search-decoration': {
"-webkit-appearance": "none"
}
})
};
};
const genAllowClearStyle = (token2) => {
const {
componentCls
} = token2;
return {
// ========================= Input =========================
[`${componentCls}-clear-icon`]: {
margin: 0,
color: token2.colorTextQuaternary,
fontSize: token2.fontSizeIcon,
verticalAlign: -1,
// https://github.com/ant-design/ant-design/pull/18151
// https://codesandbox.io/s/wizardly-sun-u10br
cursor: "pointer",
transition: `color ${token2.motionDurationSlow}`,
"&:hover": {
color: token2.colorTextTertiary
},
"&:active": {
color: token2.colorText
},
"&-hidden": {
visibility: "hidden"
},
"&-has-suffix": {
margin: `0 ${unit$1(token2.inputAffixPadding)}`
}
}
};
};
const genAffixStyle = (token2) => {
const {
componentCls,
inputAffixPadding,
colorTextDescription,
motionDurationSlow,
colorIcon,
colorIconHover,
iconCls
} = token2;
const affixCls = `${componentCls}-affix-wrapper`;
const affixClsDisabled = `${componentCls}-affix-wrapper-disabled`;
return {
[affixCls]: Object.assign(Object.assign(Object.assign(Object.assign({}, genBasicInputStyle(token2)), {
display: "inline-flex",
[`&:not(${componentCls}-disabled):hover`]: {
zIndex: 1,
[`${componentCls}-search-with-button &`]: {
zIndex: 0
}
},
"&-focused, &:focus": {
zIndex: 1
},
[`> input${componentCls}`]: {
padding: 0
},
[`> input${componentCls}, > textarea${componentCls}`]: {
fontSize: "inherit",
border: "none",
borderRadius: 0,
outline: "none",
background: "transparent",
color: "inherit",
"&::-ms-reveal": {
display: "none"
},
"&:focus": {
boxShadow: "none !important"
}
},
"&::before": {
display: "inline-block",
width: 0,
visibility: "hidden",
content: '"\\a0"'
},
[componentCls]: {
"&-prefix, &-suffix": {
display: "flex",
flex: "none",
alignItems: "center",
"> *:not(:last-child)": {
marginInlineEnd: token2.paddingXS
}
},
"&-show-count-suffix": {
color: colorTextDescription
},
"&-show-count-has-suffix": {
marginInlineEnd: token2.paddingXXS
},
"&-prefix": {
marginInlineEnd: inputAffixPadding
},
"&-suffix": {
marginInlineStart: inputAffixPadding
}
}
}), genAllowClearStyle(token2)), {
// password
[`${iconCls}${componentCls}-password-icon`]: {
color: colorIcon,
cursor: "pointer",
transition: `all ${motionDurationSlow}`,
"&:hover": {
color: colorIconHover
}
}
}),
[affixClsDisabled]: {
// password disabled
[`${iconCls}${componentCls}-password-icon`]: {
color: colorIcon,
cursor: "not-allowed",
"&:hover": {
color: colorIcon
}
}
}
};
};
const genGroupStyle = (token2) => {
const {
componentCls,
borderRadiusLG,
borderRadiusSM
} = token2;
return {
[`${componentCls}-group`]: Object.assign(Object.assign(Object.assign({}, resetComponent(token2)), genInputGroupStyle(token2)), {
"&-rtl": {
direction: "rtl"
},
"&-wrapper": Object.assign(Object.assign(Object.assign({
display: "inline-block",
width: "100%",
textAlign: "start",
verticalAlign: "top",
"&-rtl": {
direction: "rtl"
},
// Size
"&-lg": {
[`${componentCls}-group-addon`]: {
borderRadius: borderRadiusLG,
fontSize: token2.inputFontSizeLG
}
},
"&-sm": {
[`${componentCls}-group-addon`]: {
borderRadius: borderRadiusSM
}
}
}, genOutlinedGroupStyle(token2)), genFilledGroupStyle(token2)), {
// '&-disabled': {
// [`${componentCls}-group-addon`]: {
// ...genDisabledStyle(token),
// },
// },
// Fix the issue of using icons in Space Compact mode
// https://github.com/ant-design/ant-design/issues/42122
[`&:not(${componentCls}-compact-first-item):not(${componentCls}-compact-last-item)${componentCls}-compact-item`]: {
[`${componentCls}, ${componentCls}-group-addon`]: {
borderRadius: 0
}
},
[`&:not(${componentCls}-compact-last-item)${componentCls}-compact-first-item`]: {
[`${componentCls}, ${componentCls}-group-addon`]: {
borderStartEndRadius: 0,
borderEndEndRadius: 0
}
},
[`&:not(${componentCls}-compact-first-item)${componentCls}-compact-last-item`]: {
[`${componentCls}, ${componentCls}-group-addon`]: {
borderStartStartRadius: 0,
borderEndStartRadius: 0
}
},
// Fix the issue of input use show-count param in space compact mode
// https://github.com/ant-design/ant-design/issues/46872
[`&:not(${componentCls}-compact-last-item)${componentCls}-compact-item`]: {
[`${componentCls}-affix-wrapper`]: {
borderStartEndRadius: 0,
borderEndEndRadius: 0
}
}
})
})
};
};
const genSearchInputStyle = (token2) => {
const {
componentCls,
antCls
} = token2;
const searchPrefixCls = `${componentCls}-search`;
return {
[searchPrefixCls]: {
[componentCls]: {
"&:hover, &:focus": {
borderColor: token2.colorPrimaryHover,
[`+ ${componentCls}-group-addon ${searchPrefixCls}-button:not(${antCls}-btn-primary)`]: {
borderInlineStartColor: token2.colorPrimaryHover
}
}
},
[`${componentCls}-affix-wrapper`]: {
height: token2.controlHeight,
borderRadius: 0
},
// fix slight height diff in Firefox:
// https://ant.design/components/auto-complete-cn/#auto-complete-demo-certain-category
[`${componentCls}-lg`]: {
lineHeight: token2.calc(token2.lineHeightLG).sub(2e-4).equal()
},
[`> ${componentCls}-group`]: {
[`> ${componentCls}-group-addon:last-child`]: {
insetInlineStart: -1,
padding: 0,
border: 0,
[`${searchPrefixCls}-button`]: {
// Fix https://github.com/ant-design/ant-design/issues/47150
marginInlineEnd: -1,
paddingTop: 0,
paddingBottom: 0,
borderStartStartRadius: 0,
borderEndStartRadius: 0,
boxShadow: "none"
},
[`${searchPrefixCls}-button:not(${antCls}-btn-primary)`]: {
color: token2.colorTextDescription,
"&:hover": {
color: token2.colorPrimaryHover
},
"&:active": {
color: token2.colorPrimaryActive
},
[`&${antCls}-btn-loading::before`]: {
insetInlineStart: 0,
insetInlineEnd: 0,
insetBlockStart: 0,
insetBlockEnd: 0
}
}
}
},
[`${searchPrefixCls}-button`]: {
height: token2.controlHeight,
"&:hover, &:focus": {
zIndex: 1
}
},
"&-large": {
[`${componentCls}-affix-wrapper, ${searchPrefixCls}-button`]: {
height: token2.controlHeightLG
}
},
"&-small": {
[`${componentCls}-affix-wrapper, ${searchPrefixCls}-button`]: {
height: token2.controlHeightSM
}
},
"&-rtl": {
direction: "rtl"
},
// ===================== Compact Item Customized Styles =====================
[`&${componentCls}-compact-item`]: {
[`&:not(${componentCls}-compact-last-item)`]: {
[`${componentCls}-group-addon`]: {
[`${componentCls}-search-button`]: {
marginInlineEnd: token2.calc(token2.lineWidth).mul(-1).equal(),
borderRadius: 0
}
}
},
[`&:not(${componentCls}-compact-first-item)`]: {
[`${componentCls},${componentCls}-affix-wrapper`]: {
borderRadius: 0
}
},
[`> ${componentCls}-group-addon ${componentCls}-search-button,
> ${componentCls},
${componentCls}-affix-wrapper`]: {
"&:hover, &:focus, &:active": {
zIndex: 2
}
},
[`> ${componentCls}-affix-wrapper-focused`]: {
zIndex: 2
}
}
}
};
};
const genTextAreaStyle = (token2) => {
const {
componentCls,
paddingLG
} = token2;
const textareaPrefixCls = `${componentCls}-textarea`;
return {
[textareaPrefixCls]: {
position: "relative",
"&-show-count": {
// https://github.com/ant-design/ant-design/issues/33049
[`> ${componentCls}`]: {
height: "100%"
},
[`${componentCls}-data-count`]: {
position: "absolute",
bottom: token2.calc(token2.fontSize).mul(token2.lineHeight).mul(-1).equal(),
insetInlineEnd: 0,
color: token2.colorTextDescription,
whiteSpace: "nowrap",
pointerEvents: "none"
}
},
[`
&-allow-clear > ${componentCls},
&-affix-wrapper${textareaPrefixCls}-has-feedback ${componentCls}
`]: {
paddingInlineEnd: paddingLG
},
[`&-affix-wrapper${componentCls}-affix-wrapper`]: {
padding: 0,
[`> textarea${componentCls}`]: {
fontSize: "inherit",
border: "none",
outline: "none",
background: "transparent",
"&:focus": {
boxShadow: "none !important"
}
},
[`${componentCls}-suffix`]: {
margin: 0,
"> *:not(:last-child)": {
marginInline: 0
},
// Clear Icon
[`${componentCls}-clear-icon`]: {
position: "absolute",
insetInlineEnd: token2.paddingInline,
insetBlockStart: token2.paddingXS
},
// Feedback Icon
[`${textareaPrefixCls}-suffix`]: {
position: "absolute",
top: 0,
insetInlineEnd: token2.paddingInline,
bottom: 0,
zIndex: 1,
display: "inline-flex",
alignItems: "center",
margin: "auto",
pointerEvents: "none"
}
}
},
[`&-affix-wrapper${componentCls}-affix-wrapper-sm`]: {
[`${componentCls}-suffix`]: {
[`${componentCls}-clear-icon`]: {
insetInlineEnd: token2.paddingInlineSM
}
}
}
}
};
};
const genRangeStyle = (token2) => {
const {
componentCls
} = token2;
return {
[`${componentCls}-out-of-range`]: {
[`&, & input, & textarea, ${componentCls}-show-count-suffix, ${componentCls}-data-count`]: {
color: token2.colorError
}
}
};
};
const useStyle$8 = genStyleHooks("Input", (token2) => {
const inputToken = merge$1(token2, initInputToken(token2));
return [
genInputStyle(inputToken),
genTextAreaStyle(inputToken),
genAffixStyle(inputToken),
genGroupStyle(inputToken),
genSearchInputStyle(inputToken),
genRangeStyle(inputToken),
// =====================================================
// == Space Compact ==
// =====================================================
genCompactItemStyle(inputToken)
];
}, initComponentToken$1, {
resetFont: false
});
function throttle$1(delay, callback, options) {
var _ref = options || {}, _ref$noTrailing = _ref.noTrailing, noTrailing = _ref$noTrailing === void 0 ? false : _ref$noTrailing, _ref$noLeading = _ref.noLeading, noLeading = _ref$noLeading === void 0 ? false : _ref$noLeading, _ref$debounceMode = _ref.debounceMode, debounceMode = _ref$debounceMode === void 0 ? void 0 : _ref$debounceMode;
var timeoutID;
var cancelled = false;
var lastExec = 0;
function clearExistingTimeout() {
if (timeoutID) {
clearTimeout(timeoutID);
}
}
function cancel(options2) {
var _ref2 = options2 || {}, _ref2$upcomingOnly = _ref2.upcomingOnly, upcomingOnly = _ref2$upcomingOnly === void 0 ? false : _ref2$upcomingOnly;
clearExistingTimeout();
cancelled = !upcomingOnly;
}
function wrapper() {
for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {
arguments_[_key] = arguments[_key];
}
var self2 = this;
var elapsed = Date.now() - lastExec;
if (cancelled) {
return;
}
function exec() {
lastExec = Date.now();
callback.apply(self2, arguments_);
}
function clear3() {
timeoutID = void 0;
}
if (!noLeading && debounceMode && !timeoutID) {
exec();
}
clearExistingTimeout();
if (debounceMode === void 0 && elapsed > delay) {
if (noLeading) {
lastExec = Date.now();
if (!noTrailing) {
timeoutID = setTimeout(debounceMode ? clear3 : exec, delay);
}
} else {
exec();
}
} else if (noTrailing !== true) {
timeoutID = setTimeout(debounceMode ? clear3 : exec, debounceMode === void 0 ? delay - elapsed : delay);
}
}
wrapper.cancel = cancel;
return wrapper;
}
function debounce$1(delay, callback, options) {
var _ref = {}, _ref$atBegin = _ref.atBegin, atBegin = _ref$atBegin === void 0 ? false : _ref$atBegin;
return throttle$1(delay, callback, {
debounceMode: atBegin !== false
});
}
var CascaderContext = /* @__PURE__ */ reactExports.createContext({});
var SEARCH_MARK = "__rc_cascader_search_mark__";
var defaultFilter = function defaultFilter2(search, options, _ref) {
var _ref$label = _ref.label, label = _ref$label === void 0 ? "" : _ref$label;
return options.some(function(opt) {
return String(opt[label]).toLowerCase().includes(search.toLowerCase());
});
};
var defaultRender = function defaultRender2(inputValue, path, prefixCls, fieldNames) {
return path.map(function(opt) {
return opt[fieldNames.label];
}).join(" / ");
};
var useSearchOptions = function useSearchOptions2(search, options, fieldNames, prefixCls, config, enableHalfPath) {
var _config$filter = config.filter, filter2 = _config$filter === void 0 ? defaultFilter : _config$filter, _config$render = config.render, render2 = _config$render === void 0 ? defaultRender : _config$render, _config$limit = config.limit, limit = _config$limit === void 0 ? 50 : _config$limit, sort2 = config.sort;
return reactExports.useMemo(function() {
var filteredOptions = [];
if (!search) {
return [];
}
function dig(list, pathOptions) {
var parentDisabled = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
list.forEach(function(option) {
if (!sort2 && limit !== false && limit > 0 && filteredOptions.length >= limit) {
return;
}
var connectedPathOptions = [].concat(_toConsumableArray(pathOptions), [option]);
var children = option[fieldNames.children];
var mergedDisabled = parentDisabled || option.disabled;
if (
// If is leaf option
!children || children.length === 0 || // If is changeOnSelect or multiple
enableHalfPath
) {
if (filter2(search, connectedPathOptions, {
label: fieldNames.label
})) {
var _objectSpread22;
filteredOptions.push(_objectSpread2$1(_objectSpread2$1({}, option), {}, (_objectSpread22 = {
disabled: mergedDisabled
}, _defineProperty(_objectSpread22, fieldNames.label, render2(search, connectedPathOptions, prefixCls, fieldNames)), _defineProperty(_objectSpread22, SEARCH_MARK, connectedPathOptions), _defineProperty(_objectSpread22, fieldNames.children, void 0), _objectSpread22)));
}
}
if (children) {
dig(option[fieldNames.children], connectedPathOptions, mergedDisabled);
}
});
}
dig(options, []);
if (sort2) {
filteredOptions.sort(function(a, b2) {
return sort2(a[SEARCH_MARK], b2[SEARCH_MARK], search, fieldNames);
});
}
return limit !== false && limit > 0 ? filteredOptions.slice(0, limit) : filteredOptions;
}, [search, options, fieldNames, prefixCls, render2, enableHalfPath, filter2, sort2, limit]);
};
var VALUE_SPLIT = "__RC_CASCADER_SPLIT__";
var SHOW_PARENT$1 = "SHOW_PARENT";
var SHOW_CHILD$1 = "SHOW_CHILD";
function toPathKey(value) {
return value.join(VALUE_SPLIT);
}
function toPathKeys(value) {
return value.map(toPathKey);
}
function toPathValueStr(pathKey2) {
return pathKey2.split(VALUE_SPLIT);
}
function fillFieldNames$1(fieldNames) {
var _ref = fieldNames || {}, label = _ref.label, value = _ref.value, children = _ref.children;
var val = value || "value";
return {
label: label || "label",
value: val,
key: val,
children: children || "children"
};
}
function isLeaf(option, fieldNames) {
var _option$isLeaf, _option;
return (_option$isLeaf = option.isLeaf) !== null && _option$isLeaf !== void 0 ? _option$isLeaf : !((_option = option[fieldNames.children]) !== null && _option !== void 0 && _option.length);
}
function scrollIntoParentView(element) {
var parent = element.parentElement;
if (!parent) {
return;
}
var elementToParent = element.offsetTop - parent.offsetTop;
if (elementToParent - parent.scrollTop < 0) {
parent.scrollTo({
top: elementToParent
});
} else if (elementToParent + element.offsetHeight - parent.scrollTop > parent.offsetHeight) {
parent.scrollTo({
top: elementToParent + element.offsetHeight - parent.offsetHeight
});
}
}
function getFullPathKeys(options, fieldNames) {
return options.map(function(item) {
var _item$SEARCH_MARK;
return (_item$SEARCH_MARK = item[SEARCH_MARK]) === null || _item$SEARCH_MARK === void 0 ? void 0 : _item$SEARCH_MARK.map(function(opt) {
return opt[fieldNames.value];
});
});
}
function isMultipleValue(value) {
return Array.isArray(value) && Array.isArray(value[0]);
}
function toRawValues(value) {
if (!value) {
return [];
}
if (isMultipleValue(value)) {
return value;
}
return (value.length === 0 ? [] : [value]).map(function(val) {
return Array.isArray(val) ? val : [val];
});
}
function formatStrategyValues(pathKeys, getKeyPathEntities, showCheckedStrategy) {
var valueSet = new Set(pathKeys);
var keyPathEntities = getKeyPathEntities();
return pathKeys.filter(function(key) {
var entity = keyPathEntities[key];
var parent = entity ? entity.parent : null;
var children = entity ? entity.children : null;
if (entity && entity.node.disabled) {
return true;
}
return showCheckedStrategy === SHOW_CHILD$1 ? !(children && children.some(function(child) {
return child.key && valueSet.has(child.key);
})) : !(parent && !parent.node.disabled && valueSet.has(parent.key));
});
}
function toPathOptions(valueCells, options, fieldNames) {
var stringMode = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : false;
var currentList = options;
var valueOptions = [];
var _loop = function _loop2() {
var _currentList, _currentList2, _foundOption$fieldNam;
var valueCell = valueCells[i];
var foundIndex = (_currentList = currentList) === null || _currentList === void 0 ? void 0 : _currentList.findIndex(function(option) {
var val = option[fieldNames.value];
return stringMode ? String(val) === String(valueCell) : val === valueCell;
});
var foundOption = foundIndex !== -1 ? (_currentList2 = currentList) === null || _currentList2 === void 0 ? void 0 : _currentList2[foundIndex] : null;
valueOptions.push({
value: (_foundOption$fieldNam = foundOption === null || foundOption === void 0 ? void 0 : foundOption[fieldNames.value]) !== null && _foundOption$fieldNam !== void 0 ? _foundOption$fieldNam : valueCell,
index: foundIndex,
option: foundOption
});
currentList = foundOption === null || foundOption === void 0 ? void 0 : foundOption[fieldNames.children];
};
for (var i = 0; i < valueCells.length; i += 1) {
_loop();
}
return valueOptions;
}
const useDisplayValues = function(rawValues, options, fieldNames, multiple, displayRender) {
return reactExports.useMemo(function() {
var mergedDisplayRender = displayRender || // Default displayRender
function(labels) {
var mergedLabels = multiple ? labels.slice(-1) : labels;
var SPLIT2 = " / ";
if (mergedLabels.every(function(label) {
return ["string", "number"].includes(_typeof$2(label));
})) {
return mergedLabels.join(SPLIT2);
}
return mergedLabels.reduce(function(list, label, index2) {
var keyedLabel = /* @__PURE__ */ reactExports.isValidElement(label) ? /* @__PURE__ */ reactExports.cloneElement(label, {
key: index2
}) : label;
if (index2 === 0) {
return [keyedLabel];
}
return [].concat(_toConsumableArray(list), [SPLIT2, keyedLabel]);
}, []);
};
return rawValues.map(function(valueCells) {
var _valueOptions, _valueOptions$option;
var valueOptions = toPathOptions(valueCells, options, fieldNames);
var label = mergedDisplayRender(valueOptions.map(function(_ref) {
var _option$fieldNames$la;
var option = _ref.option, value2 = _ref.value;
return (_option$fieldNames$la = option === null || option === void 0 ? void 0 : option[fieldNames.label]) !== null && _option$fieldNames$la !== void 0 ? _option$fieldNames$la : value2;
}), valueOptions.map(function(_ref2) {
var option = _ref2.option;
return option;
}));
var value = toPathKey(valueCells);
return {
label,
value,
key: value,
valueCells,
disabled: (_valueOptions = valueOptions[valueOptions.length - 1]) === null || _valueOptions === void 0 ? void 0 : (_valueOptions$option = _valueOptions.option) === null || _valueOptions$option === void 0 ? void 0 : _valueOptions$option.disabled
};
});
}, [rawValues, options, fieldNames, displayRender, multiple]);
};
function useMissingValues(options, fieldNames) {
return reactExports.useCallback(function(rawValues) {
var missingValues = [];
var existsValues = [];
rawValues.forEach(function(valueCell) {
var pathOptions = toPathOptions(valueCell, options, fieldNames);
if (pathOptions.every(function(opt) {
return opt.option;
})) {
existsValues.push(valueCell);
} else {
missingValues.push(valueCell);
}
});
return [existsValues, missingValues];
}, [options, fieldNames]);
}
function getEntity(keyEntities, key) {
return keyEntities[key];
}
var _excluded$f = ["children"];
function getPosition(level, index2) {
return "".concat(level, "-").concat(index2);
}
function isTreeNode(node2) {
return node2 && node2.type && node2.type.isTreeNode;
}
function getKey$1(key, pos) {
if (key !== null && key !== void 0) {
return key;
}
return pos;
}
function fillFieldNames(fieldNames) {
var _ref = fieldNames || {}, title = _ref.title, _title = _ref._title, key = _ref.key, children = _ref.children;
var mergedTitle = title || "title";
return {
title: mergedTitle,
_title: _title || [mergedTitle],
key: key || "key",
children: children || "children"
};
}
function convertTreeToData(rootNodes) {
function dig(node2) {
var treeNodes = toArray$4(node2);
return treeNodes.map(function(treeNode) {
if (!isTreeNode(treeNode)) {
warningOnce(!treeNode, "Tree/TreeNode can only accept TreeNode as children.");
return null;
}
var key = treeNode.key;
var _treeNode$props = treeNode.props, children = _treeNode$props.children, rest = _objectWithoutProperties(_treeNode$props, _excluded$f);
var dataNode = _objectSpread2$1({
key
}, rest);
var parsedChildren = dig(children);
if (parsedChildren.length) {
dataNode.children = parsedChildren;
}
return dataNode;
}).filter(function(dataNode) {
return dataNode;
});
}
return dig(rootNodes);
}
function flattenTreeData(treeNodeList, expandedKeys, fieldNames) {
var _fillFieldNames = fillFieldNames(fieldNames), fieldTitles = _fillFieldNames._title, fieldKey = _fillFieldNames.key, fieldChildren = _fillFieldNames.children;
var expandedKeySet = new Set(expandedKeys === true ? [] : expandedKeys);
var flattenList = [];
function dig(list) {
var parent = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null;
return list.map(function(treeNode, index2) {
var pos = getPosition(parent ? parent.pos : "0", index2);
var mergedKey = getKey$1(treeNode[fieldKey], pos);
var mergedTitle;
for (var i = 0; i < fieldTitles.length; i += 1) {
var fieldTitle = fieldTitles[i];
if (treeNode[fieldTitle] !== void 0) {
mergedTitle = treeNode[fieldTitle];
break;
}
}
var flattenNode = Object.assign(omit(treeNode, [].concat(_toConsumableArray(fieldTitles), [fieldKey, fieldChildren])), {
title: mergedTitle,
key: mergedKey,
parent,
pos,
children: null,
data: treeNode,
isStart: [].concat(_toConsumableArray(parent ? parent.isStart : []), [index2 === 0]),
isEnd: [].concat(_toConsumableArray(parent ? parent.isEnd : []), [index2 === list.length - 1])
});
flattenList.push(flattenNode);
if (expandedKeys === true || expandedKeySet.has(mergedKey)) {
flattenNode.children = dig(treeNode[fieldChildren] || [], flattenNode);
} else {
flattenNode.children = [];
}
return flattenNode;
});
}
dig(treeNodeList);
return flattenList;
}
function traverseDataNodes(dataNodes, callback, config) {
var mergedConfig = {};
if (_typeof$2(config) === "object") {
mergedConfig = config;
} else {
mergedConfig = {
externalGetKey: config
};
}
mergedConfig = mergedConfig || {};
var _mergedConfig = mergedConfig, childrenPropName = _mergedConfig.childrenPropName, externalGetKey = _mergedConfig.externalGetKey, fieldNames = _mergedConfig.fieldNames;
var _fillFieldNames2 = fillFieldNames(fieldNames), fieldKey = _fillFieldNames2.key, fieldChildren = _fillFieldNames2.children;
var mergeChildrenPropName = childrenPropName || fieldChildren;
var syntheticGetKey;
if (externalGetKey) {
if (typeof externalGetKey === "string") {
syntheticGetKey = function syntheticGetKey2(node2) {
return node2[externalGetKey];
};
} else if (typeof externalGetKey === "function") {
syntheticGetKey = function syntheticGetKey2(node2) {
return externalGetKey(node2);
};
}
} else {
syntheticGetKey = function syntheticGetKey2(node2, pos) {
return getKey$1(node2[fieldKey], pos);
};
}
function processNode(node2, index2, parent, pathNodes) {
var children = node2 ? node2[mergeChildrenPropName] : dataNodes;
var pos = node2 ? getPosition(parent.pos, index2) : "0";
var connectNodes = node2 ? [].concat(_toConsumableArray(pathNodes), [node2]) : [];
if (node2) {
var key = syntheticGetKey(node2, pos);
var _data = {
node: node2,
index: index2,
pos,
key,
parentPos: parent.node ? parent.pos : null,
level: parent.level + 1,
nodes: connectNodes
};
callback(_data);
}
if (children) {
children.forEach(function(subNode, subIndex) {
processNode(subNode, subIndex, {
node: node2,
pos,
level: parent ? parent.level + 1 : -1
}, connectNodes);
});
}
}
processNode(null);
}
function convertDataToEntities(dataNodes) {
var _ref2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, initWrapper = _ref2.initWrapper, processEntity = _ref2.processEntity, onProcessFinished = _ref2.onProcessFinished, externalGetKey = _ref2.externalGetKey, childrenPropName = _ref2.childrenPropName, fieldNames = _ref2.fieldNames;
var legacyExternalGetKey = arguments.length > 2 ? arguments[2] : void 0;
var mergedExternalGetKey = externalGetKey || legacyExternalGetKey;
var posEntities = {};
var keyEntities = {};
var wrapper = {
posEntities,
keyEntities
};
if (initWrapper) {
wrapper = initWrapper(wrapper) || wrapper;
}
traverseDataNodes(dataNodes, function(item) {
var node2 = item.node, index2 = item.index, pos = item.pos, key = item.key, parentPos = item.parentPos, level = item.level, nodes = item.nodes;
var entity = {
node: node2,
nodes,
index: index2,
key,
pos,
level
};
var mergedKey = getKey$1(key, pos);
posEntities[pos] = entity;
keyEntities[mergedKey] = entity;
entity.parent = posEntities[parentPos];
if (entity.parent) {
entity.parent.children = entity.parent.children || [];
entity.parent.children.push(entity);
}
if (processEntity) {
processEntity(entity, wrapper);
}
}, {
externalGetKey: mergedExternalGetKey,
childrenPropName,
fieldNames
});
if (onProcessFinished) {
onProcessFinished(wrapper);
}
return wrapper;
}
function getTreeNodeProps(key, _ref3) {
var expandedKeys = _ref3.expandedKeys, selectedKeys = _ref3.selectedKeys, loadedKeys = _ref3.loadedKeys, loadingKeys = _ref3.loadingKeys, checkedKeys = _ref3.checkedKeys, halfCheckedKeys = _ref3.halfCheckedKeys, dragOverNodeKey = _ref3.dragOverNodeKey, dropPosition = _ref3.dropPosition, keyEntities = _ref3.keyEntities;
var entity = getEntity(keyEntities, key);
var treeNodeProps = {
eventKey: key,
expanded: expandedKeys.indexOf(key) !== -1,
selected: selectedKeys.indexOf(key) !== -1,
loaded: loadedKeys.indexOf(key) !== -1,
loading: loadingKeys.indexOf(key) !== -1,
checked: checkedKeys.indexOf(key) !== -1,
halfChecked: halfCheckedKeys.indexOf(key) !== -1,
pos: String(entity ? entity.pos : ""),
// [Legacy] Drag props
// Since the interaction of drag is changed, the semantic of the props are
// not accuracy, I think it should be finally removed
dragOver: dragOverNodeKey === key && dropPosition === 0,
dragOverGapTop: dragOverNodeKey === key && dropPosition === -1,
dragOverGapBottom: dragOverNodeKey === key && dropPosition === 1
};
return treeNodeProps;
}
function convertNodePropsToEventData(props) {
var data = props.data, expanded = props.expanded, selected = props.selected, checked = props.checked, loaded = props.loaded, loading = props.loading, halfChecked = props.halfChecked, dragOver = props.dragOver, dragOverGapTop = props.dragOverGapTop, dragOverGapBottom = props.dragOverGapBottom, pos = props.pos, active = props.active, eventKey = props.eventKey;
var eventData = _objectSpread2$1(_objectSpread2$1({}, data), {}, {
expanded,
selected,
checked,
loaded,
loading,
halfChecked,
dragOver,
dragOverGapTop,
dragOverGapBottom,
pos,
active,
key: eventKey
});
if (!("props" in eventData)) {
Object.defineProperty(eventData, "props", {
get: function get2() {
warningOnce(false, "Second param return from event is node data instead of TreeNode instance. Please read value directly instead of reading from `props`.");
return props;
}
});
}
return eventData;
}
const useEntities = function(options, fieldNames) {
var cacheRef = reactExports.useRef({
options: [],
info: {
keyEntities: {},
pathKeyEntities: {}
}
});
var getEntities = reactExports.useCallback(function() {
if (cacheRef.current.options !== options) {
cacheRef.current.options = options;
cacheRef.current.info = convertDataToEntities(options, {
fieldNames,
initWrapper: function initWrapper(wrapper) {
return _objectSpread2$1(_objectSpread2$1({}, wrapper), {}, {
pathKeyEntities: {}
});
},
processEntity: function processEntity(entity, wrapper) {
var pathKey2 = entity.nodes.map(function(node2) {
return node2[fieldNames.value];
}).join(VALUE_SPLIT);
wrapper.pathKeyEntities[pathKey2] = entity;
entity.key = pathKey2;
}
});
}
return cacheRef.current.info.pathKeyEntities;
}, [fieldNames, options]);
return getEntities;
};
function useOptions2(mergedFieldNames, options) {
var mergedOptions = reactExports.useMemo(function() {
return options || [];
}, [options]);
var getPathKeyEntities = useEntities(mergedOptions, mergedFieldNames);
var getValueByKeyPath = reactExports.useCallback(function(pathKeys) {
var keyPathEntities = getPathKeyEntities();
return pathKeys.map(function(pathKey2) {
var nodes = keyPathEntities[pathKey2].nodes;
return nodes.map(function(node2) {
return node2[mergedFieldNames.value];
});
});
}, [getPathKeyEntities, mergedFieldNames]);
return [mergedOptions, getPathKeyEntities, getValueByKeyPath];
}
function useSearchConfig(showSearch) {
return reactExports.useMemo(function() {
if (!showSearch) {
return [false, {}];
}
var searchConfig = {
matchInputWidth: true,
limit: 50
};
if (showSearch && _typeof$2(showSearch) === "object") {
searchConfig = _objectSpread2$1(_objectSpread2$1({}, searchConfig), showSearch);
}
if (searchConfig.limit <= 0) {
delete searchConfig.limit;
}
return [true, searchConfig];
}, [showSearch]);
}
function removeFromCheckedKeys(halfCheckedKeys, checkedKeys) {
var filteredKeys = /* @__PURE__ */ new Set();
halfCheckedKeys.forEach(function(key) {
if (!checkedKeys.has(key)) {
filteredKeys.add(key);
}
});
return filteredKeys;
}
function isCheckDisabled(node2) {
var _ref = node2 || {}, disabled = _ref.disabled, disableCheckbox = _ref.disableCheckbox, checkable = _ref.checkable;
return !!(disabled || disableCheckbox) || checkable === false;
}
function fillConductCheck(keys2, levelEntities, maxLevel, syntheticGetCheckDisabled) {
var checkedKeys = new Set(keys2);
var halfCheckedKeys = /* @__PURE__ */ new Set();
for (var level = 0; level <= maxLevel; level += 1) {
var entities = levelEntities.get(level) || /* @__PURE__ */ new Set();
entities.forEach(function(entity) {
var key = entity.key, node2 = entity.node, _entity$children = entity.children, children = _entity$children === void 0 ? [] : _entity$children;
if (checkedKeys.has(key) && !syntheticGetCheckDisabled(node2)) {
children.filter(function(childEntity) {
return !syntheticGetCheckDisabled(childEntity.node);
}).forEach(function(childEntity) {
checkedKeys.add(childEntity.key);
});
}
});
}
var visitedKeys = /* @__PURE__ */ new Set();
for (var _level = maxLevel; _level >= 0; _level -= 1) {
var _entities = levelEntities.get(_level) || /* @__PURE__ */ new Set();
_entities.forEach(function(entity) {
var parent = entity.parent, node2 = entity.node;
if (syntheticGetCheckDisabled(node2) || !entity.parent || visitedKeys.has(entity.parent.key)) {
return;
}
if (syntheticGetCheckDisabled(entity.parent.node)) {
visitedKeys.add(parent.key);
return;
}
var allChecked = true;
var partialChecked = false;
(parent.children || []).filter(function(childEntity) {
return !syntheticGetCheckDisabled(childEntity.node);
}).forEach(function(_ref2) {
var key = _ref2.key;
var checked = checkedKeys.has(key);
if (allChecked && !checked) {
allChecked = false;
}
if (!partialChecked && (checked || halfCheckedKeys.has(key))) {
partialChecked = true;
}
});
if (allChecked) {
checkedKeys.add(parent.key);
}
if (partialChecked) {
halfCheckedKeys.add(parent.key);
}
visitedKeys.add(parent.key);
});
}
return {
checkedKeys: Array.from(checkedKeys),
halfCheckedKeys: Array.from(removeFromCheckedKeys(halfCheckedKeys, checkedKeys))
};
}
function cleanConductCheck(keys2, halfKeys, levelEntities, maxLevel, syntheticGetCheckDisabled) {
var checkedKeys = new Set(keys2);
var halfCheckedKeys = new Set(halfKeys);
for (var level = 0; level <= maxLevel; level += 1) {
var entities = levelEntities.get(level) || /* @__PURE__ */ new Set();
entities.forEach(function(entity) {
var key = entity.key, node2 = entity.node, _entity$children2 = entity.children, children = _entity$children2 === void 0 ? [] : _entity$children2;
if (!checkedKeys.has(key) && !halfCheckedKeys.has(key) && !syntheticGetCheckDisabled(node2)) {
children.filter(function(childEntity) {
return !syntheticGetCheckDisabled(childEntity.node);
}).forEach(function(childEntity) {
checkedKeys.delete(childEntity.key);
});
}
});
}
halfCheckedKeys = /* @__PURE__ */ new Set();
var visitedKeys = /* @__PURE__ */ new Set();
for (var _level2 = maxLevel; _level2 >= 0; _level2 -= 1) {
var _entities2 = levelEntities.get(_level2) || /* @__PURE__ */ new Set();
_entities2.forEach(function(entity) {
var parent = entity.parent, node2 = entity.node;
if (syntheticGetCheckDisabled(node2) || !entity.parent || visitedKeys.has(entity.parent.key)) {
return;
}
if (syntheticGetCheckDisabled(entity.parent.node)) {
visitedKeys.add(parent.key);
return;
}
var allChecked = true;
var partialChecked = false;
(parent.children || []).filter(function(childEntity) {
return !syntheticGetCheckDisabled(childEntity.node);
}).forEach(function(_ref3) {
var key = _ref3.key;
var checked = checkedKeys.has(key);
if (allChecked && !checked) {
allChecked = false;
}
if (!partialChecked && (checked || halfCheckedKeys.has(key))) {
partialChecked = true;
}
});
if (!allChecked) {
checkedKeys.delete(parent.key);
}
if (partialChecked) {
halfCheckedKeys.add(parent.key);
}
visitedKeys.add(parent.key);
});
}
return {
checkedKeys: Array.from(checkedKeys),
halfCheckedKeys: Array.from(removeFromCheckedKeys(halfCheckedKeys, checkedKeys))
};
}
function conductCheck(keyList, checked, keyEntities, getCheckDisabled) {
var warningMissKeys = [];
var syntheticGetCheckDisabled;
if (getCheckDisabled) {
syntheticGetCheckDisabled = getCheckDisabled;
} else {
syntheticGetCheckDisabled = isCheckDisabled;
}
var keys2 = new Set(keyList.filter(function(key) {
var hasEntity = !!getEntity(keyEntities, key);
if (!hasEntity) {
warningMissKeys.push(key);
}
return hasEntity;
}));
var levelEntities = /* @__PURE__ */ new Map();
var maxLevel = 0;
Object.keys(keyEntities).forEach(function(key) {
var entity = keyEntities[key];
var level = entity.level;
var levelSet = levelEntities.get(level);
if (!levelSet) {
levelSet = /* @__PURE__ */ new Set();
levelEntities.set(level, levelSet);
}
levelSet.add(entity);
maxLevel = Math.max(maxLevel, level);
});
warningOnce(!warningMissKeys.length, "Tree missing follow keys: ".concat(warningMissKeys.slice(0, 100).map(function(key) {
return "'".concat(key, "'");
}).join(", ")));
var result;
if (checked === true) {
result = fillConductCheck(keys2, levelEntities, maxLevel, syntheticGetCheckDisabled);
} else {
result = cleanConductCheck(keys2, checked.halfCheckedKeys, levelEntities, maxLevel, syntheticGetCheckDisabled);
}
return result;
}
function useSelect(multiple, triggerChange, checkedValues, halfCheckedValues, missingCheckedValues, getPathKeyEntities, getValueByKeyPath, showCheckedStrategy) {
return function(valuePath) {
if (!multiple) {
triggerChange(valuePath);
} else {
var pathKey2 = toPathKey(valuePath);
var checkedPathKeys = toPathKeys(checkedValues);
var halfCheckedPathKeys = toPathKeys(halfCheckedValues);
var existInChecked = checkedPathKeys.includes(pathKey2);
var existInMissing = missingCheckedValues.some(function(valueCells) {
return toPathKey(valueCells) === pathKey2;
});
var nextCheckedValues = checkedValues;
var nextMissingValues = missingCheckedValues;
if (existInMissing && !existInChecked) {
nextMissingValues = missingCheckedValues.filter(function(valueCells) {
return toPathKey(valueCells) !== pathKey2;
});
} else {
var nextRawCheckedKeys = existInChecked ? checkedPathKeys.filter(function(key) {
return key !== pathKey2;
}) : [].concat(_toConsumableArray(checkedPathKeys), [pathKey2]);
var pathKeyEntities = getPathKeyEntities();
var checkedKeys;
if (existInChecked) {
var _conductCheck = conductCheck(nextRawCheckedKeys, {
checked: false,
halfCheckedKeys: halfCheckedPathKeys
}, pathKeyEntities);
checkedKeys = _conductCheck.checkedKeys;
} else {
var _conductCheck2 = conductCheck(nextRawCheckedKeys, true, pathKeyEntities);
checkedKeys = _conductCheck2.checkedKeys;
}
var deDuplicatedKeys = formatStrategyValues(checkedKeys, getPathKeyEntities, showCheckedStrategy);
nextCheckedValues = getValueByKeyPath(deDuplicatedKeys);
}
triggerChange([].concat(_toConsumableArray(nextMissingValues), _toConsumableArray(nextCheckedValues)));
}
};
}
function useValues(multiple, rawValues, getPathKeyEntities, getValueByKeyPath, getMissingValues) {
return reactExports.useMemo(function() {
var _getMissingValues = getMissingValues(rawValues), _getMissingValues2 = _slicedToArray(_getMissingValues, 2), existValues = _getMissingValues2[0], missingValues = _getMissingValues2[1];
if (!multiple || !rawValues.length) {
return [existValues, [], missingValues];
}
var keyPathValues = toPathKeys(existValues);
var keyPathEntities = getPathKeyEntities();
var _conductCheck = conductCheck(keyPathValues, true, keyPathEntities), checkedKeys = _conductCheck.checkedKeys, halfCheckedKeys = _conductCheck.halfCheckedKeys;
return [getValueByKeyPath(checkedKeys), getValueByKeyPath(halfCheckedKeys), missingValues];
}, [multiple, rawValues, getPathKeyEntities, getValueByKeyPath, getMissingValues]);
}
var CacheContent = /* @__PURE__ */ reactExports.memo(function(_ref) {
var children = _ref.children;
return children;
}, function(_, next2) {
return !next2.open;
});
function Checkbox$2(_ref) {
var _classNames;
var prefixCls = _ref.prefixCls, checked = _ref.checked, halfChecked = _ref.halfChecked, disabled = _ref.disabled, onClick = _ref.onClick, disableCheckbox = _ref.disableCheckbox;
var _React$useContext = reactExports.useContext(CascaderContext), checkable = _React$useContext.checkable;
var customCheckbox = typeof checkable !== "boolean" ? checkable : null;
return /* @__PURE__ */ reactExports.createElement("span", {
className: cls("".concat(prefixCls), (_classNames = {}, _defineProperty(_classNames, "".concat(prefixCls, "-checked"), checked), _defineProperty(_classNames, "".concat(prefixCls, "-indeterminate"), !checked && halfChecked), _defineProperty(_classNames, "".concat(prefixCls, "-disabled"), disabled || disableCheckbox), _classNames)),
onClick
}, customCheckbox);
}
var FIX_LABEL = "__cascader_fix_label__";
function Column$2(_ref) {
var prefixCls = _ref.prefixCls, multiple = _ref.multiple, options = _ref.options, activeValue = _ref.activeValue, prevValuePath = _ref.prevValuePath, onToggleOpen = _ref.onToggleOpen, onSelect = _ref.onSelect, onActive = _ref.onActive, checkedSet = _ref.checkedSet, halfCheckedSet = _ref.halfCheckedSet, loadingKeys = _ref.loadingKeys, isSelectable = _ref.isSelectable;
var menuPrefixCls = "".concat(prefixCls, "-menu");
var menuItemPrefixCls = "".concat(prefixCls, "-menu-item");
var _React$useContext = reactExports.useContext(CascaderContext), fieldNames = _React$useContext.fieldNames, changeOnSelect = _React$useContext.changeOnSelect, expandTrigger = _React$useContext.expandTrigger, expandIcon = _React$useContext.expandIcon, loadingIcon = _React$useContext.loadingIcon, dropdownMenuColumnStyle = _React$useContext.dropdownMenuColumnStyle, optionRender = _React$useContext.optionRender;
var hoverOpen = expandTrigger === "hover";
var optionInfoList = reactExports.useMemo(function() {
return options.map(function(option) {
var _option$FIX_LABEL;
var disabled = option.disabled, disableCheckbox = option.disableCheckbox;
var searchOptions = option[SEARCH_MARK];
var label = (_option$FIX_LABEL = option[FIX_LABEL]) !== null && _option$FIX_LABEL !== void 0 ? _option$FIX_LABEL : option[fieldNames.label];
var value = option[fieldNames.value];
var isMergedLeaf = isLeaf(option, fieldNames);
var fullPath = searchOptions ? searchOptions.map(function(opt) {
return opt[fieldNames.value];
}) : [].concat(_toConsumableArray(prevValuePath), [value]);
var fullPathKey = toPathKey(fullPath);
var isLoading = loadingKeys.includes(fullPathKey);
var checked = checkedSet.has(fullPathKey);
var halfChecked = halfCheckedSet.has(fullPathKey);
return {
disabled,
label,
value,
isLeaf: isMergedLeaf,
isLoading,
checked,
halfChecked,
option,
disableCheckbox,
fullPath,
fullPathKey
};
});
}, [options, checkedSet, fieldNames, halfCheckedSet, loadingKeys, prevValuePath]);
return /* @__PURE__ */ reactExports.createElement("ul", {
className: menuPrefixCls,
role: "menu"
}, optionInfoList.map(function(_ref2) {
var _classNames;
var disabled = _ref2.disabled, label = _ref2.label, value = _ref2.value, isMergedLeaf = _ref2.isLeaf, isLoading = _ref2.isLoading, checked = _ref2.checked, halfChecked = _ref2.halfChecked, option = _ref2.option, fullPath = _ref2.fullPath, fullPathKey = _ref2.fullPathKey, disableCheckbox = _ref2.disableCheckbox;
var triggerOpenPath = function triggerOpenPath2() {
if (disabled) {
return;
}
var nextValueCells = _toConsumableArray(fullPath);
if (hoverOpen && isMergedLeaf) {
nextValueCells.pop();
}
onActive(nextValueCells);
};
var triggerSelect = function triggerSelect2() {
if (isSelectable(option)) {
onSelect(fullPath, isMergedLeaf);
}
};
var title;
if (typeof option.title === "string") {
title = option.title;
} else if (typeof label === "string") {
title = label;
}
return /* @__PURE__ */ reactExports.createElement("li", {
key: fullPathKey,
className: cls(menuItemPrefixCls, (_classNames = {}, _defineProperty(_classNames, "".concat(menuItemPrefixCls, "-expand"), !isMergedLeaf), _defineProperty(_classNames, "".concat(menuItemPrefixCls, "-active"), activeValue === value || activeValue === fullPathKey), _defineProperty(_classNames, "".concat(menuItemPrefixCls, "-disabled"), disabled), _defineProperty(_classNames, "".concat(menuItemPrefixCls, "-loading"), isLoading), _classNames)),
style: dropdownMenuColumnStyle,
role: "menuitemcheckbox",
title,
"aria-checked": checked,
"data-path-key": fullPathKey,
onClick: function onClick() {
triggerOpenPath();
if (disableCheckbox) {
return;
}
if (!multiple || isMergedLeaf) {
triggerSelect();
}
},
onDoubleClick: function onDoubleClick() {
if (changeOnSelect) {
onToggleOpen(false);
}
},
onMouseEnter: function onMouseEnter() {
if (hoverOpen) {
triggerOpenPath();
}
},
onMouseDown: function onMouseDown(e2) {
e2.preventDefault();
}
}, multiple && /* @__PURE__ */ reactExports.createElement(Checkbox$2, {
prefixCls: "".concat(prefixCls, "-checkbox"),
checked,
halfChecked,
disabled: disabled || disableCheckbox,
disableCheckbox,
onClick: function onClick(e2) {
if (disableCheckbox) {
return;
}
e2.stopPropagation();
triggerSelect();
}
}), /* @__PURE__ */ reactExports.createElement("div", {
className: "".concat(menuItemPrefixCls, "-content")
}, optionRender ? optionRender(option) : label), !isLoading && expandIcon && !isMergedLeaf && /* @__PURE__ */ reactExports.createElement("div", {
className: "".concat(menuItemPrefixCls, "-expand-icon")
}, expandIcon), isLoading && loadingIcon && /* @__PURE__ */ reactExports.createElement("div", {
className: "".concat(menuItemPrefixCls, "-loading-icon")
}, loadingIcon));
}));
}
var useActive = function useActive2(multiple, open2) {
var _React$useContext = reactExports.useContext(CascaderContext), values = _React$useContext.values;
var firstValueCells = values[0];
var _React$useState = reactExports.useState([]), _React$useState2 = _slicedToArray(_React$useState, 2), activeValueCells = _React$useState2[0], setActiveValueCells = _React$useState2[1];
reactExports.useEffect(
function() {
if (!multiple) {
setActiveValueCells(firstValueCells || []);
}
},
/* eslint-disable react-hooks/exhaustive-deps */
[open2, firstValueCells]
/* eslint-enable react-hooks/exhaustive-deps */
);
return [activeValueCells, setActiveValueCells];
};
const useKeyboard = function(ref, options, fieldNames, activeValueCells, setActiveValueCells, onKeyBoardSelect, contextProps) {
var direction = contextProps.direction, searchValue = contextProps.searchValue, toggleOpen = contextProps.toggleOpen, open2 = contextProps.open;
var rtl = direction === "rtl";
var _React$useMemo = reactExports.useMemo(function() {
var activeIndex = -1;
var currentOptions = options;
var mergedActiveIndexes = [];
var mergedActiveValueCells = [];
var len2 = activeValueCells.length;
var pathKeys = getFullPathKeys(options, fieldNames);
var _loop = function _loop2(i2) {
var nextActiveIndex = currentOptions.findIndex(function(option, index2) {
return (pathKeys[index2] ? toPathKey(pathKeys[index2]) : option[fieldNames.value]) === activeValueCells[i2];
});
if (nextActiveIndex === -1) {
return "break";
}
activeIndex = nextActiveIndex;
mergedActiveIndexes.push(activeIndex);
mergedActiveValueCells.push(activeValueCells[i2]);
currentOptions = currentOptions[activeIndex][fieldNames.children];
};
for (var i = 0; i < len2 && currentOptions; i += 1) {
var _ret = _loop(i);
if (_ret === "break") break;
}
var activeOptions = options;
for (var _i = 0; _i < mergedActiveIndexes.length - 1; _i += 1) {
activeOptions = activeOptions[mergedActiveIndexes[_i]][fieldNames.children];
}
return [mergedActiveValueCells, activeIndex, activeOptions, pathKeys];
}, [activeValueCells, fieldNames, options]), _React$useMemo2 = _slicedToArray(_React$useMemo, 4), validActiveValueCells = _React$useMemo2[0], lastActiveIndex = _React$useMemo2[1], lastActiveOptions = _React$useMemo2[2], fullPathKeys = _React$useMemo2[3];
var internalSetActiveValueCells = function internalSetActiveValueCells2(next2) {
setActiveValueCells(next2);
};
var offsetActiveOption = function offsetActiveOption2(offset2) {
var len2 = lastActiveOptions.length;
var currentIndex = lastActiveIndex;
if (currentIndex === -1 && offset2 < 0) {
currentIndex = len2;
}
for (var i = 0; i < len2; i += 1) {
currentIndex = (currentIndex + offset2 + len2) % len2;
var _option = lastActiveOptions[currentIndex];
if (_option && !_option.disabled) {
var nextActiveCells = validActiveValueCells.slice(0, -1).concat(fullPathKeys[currentIndex] ? toPathKey(fullPathKeys[currentIndex]) : _option[fieldNames.value]);
internalSetActiveValueCells(nextActiveCells);
return;
}
}
};
var prevColumn = function prevColumn2() {
if (validActiveValueCells.length > 1) {
var nextActiveCells = validActiveValueCells.slice(0, -1);
internalSetActiveValueCells(nextActiveCells);
} else {
toggleOpen(false);
}
};
var nextColumn = function nextColumn2() {
var _lastActiveOptions$la;
var nextOptions = ((_lastActiveOptions$la = lastActiveOptions[lastActiveIndex]) === null || _lastActiveOptions$la === void 0 ? void 0 : _lastActiveOptions$la[fieldNames.children]) || [];
var nextOption = nextOptions.find(function(option) {
return !option.disabled;
});
if (nextOption) {
var nextActiveCells = [].concat(_toConsumableArray(validActiveValueCells), [nextOption[fieldNames.value]]);
internalSetActiveValueCells(nextActiveCells);
}
};
reactExports.useImperativeHandle(ref, function() {
return {
// scrollTo: treeRef.current?.scrollTo,
onKeyDown: function onKeyDown2(event) {
var which = event.which;
switch (which) {
case KeyCode.UP:
case KeyCode.DOWN: {
var offset2 = 0;
if (which === KeyCode.UP) {
offset2 = -1;
} else if (which === KeyCode.DOWN) {
offset2 = 1;
}
if (offset2 !== 0) {
offsetActiveOption(offset2);
}
break;
}
case KeyCode.LEFT: {
if (searchValue) {
break;
}
if (rtl) {
nextColumn();
} else {
prevColumn();
}
break;
}
case KeyCode.RIGHT: {
if (searchValue) {
break;
}
if (rtl) {
prevColumn();
} else {
nextColumn();
}
break;
}
case KeyCode.BACKSPACE: {
if (!searchValue) {
prevColumn();
}
break;
}
case KeyCode.ENTER: {
if (validActiveValueCells.length) {
var _option2 = lastActiveOptions[lastActiveIndex];
var originOptions = (_option2 === null || _option2 === void 0 ? void 0 : _option2[SEARCH_MARK]) || [];
if (originOptions.length) {
onKeyBoardSelect(originOptions.map(function(opt) {
return opt[fieldNames.value];
}), originOptions[originOptions.length - 1]);
} else {
onKeyBoardSelect(validActiveValueCells, lastActiveOptions[lastActiveIndex]);
}
}
break;
}
case KeyCode.ESC: {
toggleOpen(false);
if (open2) {
event.stopPropagation();
}
}
}
},
onKeyUp: function onKeyUp() {
}
};
});
};
var RawOptionList = /* @__PURE__ */ reactExports.forwardRef(function(props, ref) {
var _optionColumns$, _optionColumns$$optio, _ref3, _classNames;
var prefixCls = props.prefixCls, multiple = props.multiple, searchValue = props.searchValue, toggleOpen = props.toggleOpen, notFoundContent = props.notFoundContent, direction = props.direction, open2 = props.open;
var containerRef = reactExports.useRef(null);
var rtl = direction === "rtl";
var _React$useContext = reactExports.useContext(CascaderContext), options = _React$useContext.options, values = _React$useContext.values, halfValues = _React$useContext.halfValues, fieldNames = _React$useContext.fieldNames, changeOnSelect = _React$useContext.changeOnSelect, onSelect = _React$useContext.onSelect, searchOptions = _React$useContext.searchOptions, dropdownPrefixCls = _React$useContext.dropdownPrefixCls, loadData = _React$useContext.loadData, expandTrigger = _React$useContext.expandTrigger;
var mergedPrefixCls = dropdownPrefixCls || prefixCls;
var _React$useState = reactExports.useState([]), _React$useState2 = _slicedToArray(_React$useState, 2), loadingKeys = _React$useState2[0], setLoadingKeys = _React$useState2[1];
var internalLoadData = function internalLoadData2(valueCells) {
if (!loadData || searchValue) {
return;
}
var optionList = toPathOptions(valueCells, options, fieldNames);
var rawOptions = optionList.map(function(_ref) {
var option = _ref.option;
return option;
});
var lastOption = rawOptions[rawOptions.length - 1];
if (lastOption && !isLeaf(lastOption, fieldNames)) {
var pathKey2 = toPathKey(valueCells);
setLoadingKeys(function(keys2) {
return [].concat(_toConsumableArray(keys2), [pathKey2]);
});
loadData(rawOptions);
}
};
reactExports.useEffect(function() {
if (loadingKeys.length) {
loadingKeys.forEach(function(loadingKey) {
var valueStrCells = toPathValueStr(loadingKey);
var optionList = toPathOptions(valueStrCells, options, fieldNames, true).map(function(_ref2) {
var option = _ref2.option;
return option;
});
var lastOption = optionList[optionList.length - 1];
if (!lastOption || lastOption[fieldNames.children] || isLeaf(lastOption, fieldNames)) {
setLoadingKeys(function(keys2) {
return keys2.filter(function(key) {
return key !== loadingKey;
});
});
}
});
}
}, [options, loadingKeys, fieldNames]);
var checkedSet = reactExports.useMemo(function() {
return new Set(toPathKeys(values));
}, [values]);
var halfCheckedSet = reactExports.useMemo(function() {
return new Set(toPathKeys(halfValues));
}, [halfValues]);
var _useActive = useActive(multiple, open2), _useActive2 = _slicedToArray(_useActive, 2), activeValueCells = _useActive2[0], setActiveValueCells = _useActive2[1];
var onPathOpen = function onPathOpen2(nextValueCells) {
setActiveValueCells(nextValueCells);
internalLoadData(nextValueCells);
};
var isSelectable = function isSelectable2(option) {
var disabled = option.disabled;
var isMergedLeaf = isLeaf(option, fieldNames);
return !disabled && (isMergedLeaf || changeOnSelect || multiple);
};
var onPathSelect = function onPathSelect2(valuePath, leaf) {
var fromKeyboard = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
onSelect(valuePath);
if (!multiple && (leaf || changeOnSelect && (expandTrigger === "hover" || fromKeyboard))) {
toggleOpen(false);
}
};
var mergedOptions = reactExports.useMemo(function() {
if (searchValue) {
return searchOptions;
}
return options;
}, [searchValue, searchOptions, options]);
var optionColumns = reactExports.useMemo(function() {
var optionList = [{
options: mergedOptions
}];
var currentList = mergedOptions;
var fullPathKeys = getFullPathKeys(currentList, fieldNames);
var _loop = function _loop2() {
var activeValueCell = activeValueCells[i];
var currentOption = currentList.find(function(option, index2) {
return (fullPathKeys[index2] ? toPathKey(fullPathKeys[index2]) : option[fieldNames.value]) === activeValueCell;
});
var subOptions = currentOption === null || currentOption === void 0 ? void 0 : currentOption[fieldNames.children];
if (!(subOptions !== null && subOptions !== void 0 && subOptions.length)) {
return "break";
}
currentList = subOptions;
optionList.push({
options: subOptions
});
};
for (var i = 0; i < activeValueCells.length; i += 1) {
var _ret = _loop();
if (_ret === "break") break;
}
return optionList;
}, [mergedOptions, activeValueCells, fieldNames]);
var onKeyboardSelect = function onKeyboardSelect2(selectValueCells, option) {
if (isSelectable(option)) {
onPathSelect(selectValueCells, isLeaf(option, fieldNames), true);
}
};
useKeyboard(ref, mergedOptions, fieldNames, activeValueCells, onPathOpen, onKeyboardSelect, {
direction,
searchValue,
toggleOpen,
open: open2
});
reactExports.useEffect(function() {
if (searchValue) {
return;
}
for (var i = 0; i < activeValueCells.length; i += 1) {
var _containerRef$current;
var cellPath = activeValueCells.slice(0, i + 1);
var cellKeyPath = toPathKey(cellPath);
var ele = (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.querySelector(
'li[data-path-key="'.concat(cellKeyPath.replace(/\\{0,2}"/g, '\\"'), '"]')
// matches unescaped double quotes
);
if (ele) {
scrollIntoParentView(ele);
}
}
}, [activeValueCells, searchValue]);
var isEmpty = !((_optionColumns$ = optionColumns[0]) !== null && _optionColumns$ !== void 0 && (_optionColumns$$optio = _optionColumns$.options) !== null && _optionColumns$$optio !== void 0 && _optionColumns$$optio.length);
var emptyList = [(_ref3 = {}, _defineProperty(_ref3, fieldNames.value, "__EMPTY__"), _defineProperty(_ref3, FIX_LABEL, notFoundContent), _defineProperty(_ref3, "disabled", true), _ref3)];
var columnProps = _objectSpread2$1(_objectSpread2$1({}, props), {}, {
multiple: !isEmpty && multiple,
onSelect: onPathSelect,
onActive: onPathOpen,
onToggleOpen: toggleOpen,
checkedSet,
halfCheckedSet,
loadingKeys,
isSelectable
});
var mergedOptionColumns = isEmpty ? [{
options: emptyList
}] : optionColumns;
var columnNodes = mergedOptionColumns.map(function(col, index2) {
var prevValuePath = activeValueCells.slice(0, index2);
var activeValue = activeValueCells[index2];
return /* @__PURE__ */ reactExports.createElement(Column$2, _extends$2({
key: index2
}, columnProps, {
prefixCls: mergedPrefixCls,
options: col.options,
prevValuePath,
activeValue
}));
});
return /* @__PURE__ */ reactExports.createElement(CacheContent, {
open: open2
}, /* @__PURE__ */ reactExports.createElement("div", {
className: cls("".concat(mergedPrefixCls, "-menus"), (_classNames = {}, _defineProperty(_classNames, "".concat(mergedPrefixCls, "-menu-empty"), isEmpty), _defineProperty(_classNames, "".concat(mergedPrefixCls, "-rtl"), rtl), _classNames)),
ref: containerRef
}, columnNodes));
});
var RefOptionList = /* @__PURE__ */ reactExports.forwardRef(function(props, ref) {
var baseProps = useBaseProps();
return /* @__PURE__ */ reactExports.createElement(RawOptionList, _extends$2({}, props, baseProps, {
ref
}));
});
function noop$3() {
}
function Panel$1(props) {
var _classNames;
var _ref = props, _ref$prefixCls = _ref.prefixCls, prefixCls = _ref$prefixCls === void 0 ? "rc-cascader" : _ref$prefixCls, style2 = _ref.style, className = _ref.className, options = _ref.options, checkable = _ref.checkable, defaultValue = _ref.defaultValue, value = _ref.value, fieldNames = _ref.fieldNames, changeOnSelect = _ref.changeOnSelect, onChange = _ref.onChange, showCheckedStrategy = _ref.showCheckedStrategy, loadData = _ref.loadData, expandTrigger = _ref.expandTrigger, _ref$expandIcon = _ref.expandIcon, expandIcon = _ref$expandIcon === void 0 ? ">" : _ref$expandIcon, loadingIcon = _ref.loadingIcon, direction = _ref.direction, _ref$notFoundContent = _ref.notFoundContent, notFoundContent = _ref$notFoundContent === void 0 ? "Not Found" : _ref$notFoundContent;
var multiple = !!checkable;
var _useMergedState = useMergedState(defaultValue, {
value,
postState: toRawValues
}), _useMergedState2 = _slicedToArray(_useMergedState, 2), rawValues = _useMergedState2[0], setRawValues = _useMergedState2[1];
var mergedFieldNames = reactExports.useMemo(
function() {
return fillFieldNames$1(fieldNames);
},
/* eslint-disable react-hooks/exhaustive-deps */
[JSON.stringify(fieldNames)]
/* eslint-enable react-hooks/exhaustive-deps */
);
var _useOptions = useOptions2(mergedFieldNames, options), _useOptions2 = _slicedToArray(_useOptions, 3), mergedOptions = _useOptions2[0], getPathKeyEntities = _useOptions2[1], getValueByKeyPath = _useOptions2[2];
var getMissingValues = useMissingValues(mergedOptions, mergedFieldNames);
var _useValues = useValues(multiple, rawValues, getPathKeyEntities, getValueByKeyPath, getMissingValues), _useValues2 = _slicedToArray(_useValues, 3), checkedValues = _useValues2[0], halfCheckedValues = _useValues2[1], missingCheckedValues = _useValues2[2];
var triggerChange = useEvent(function(nextValues) {
setRawValues(nextValues);
if (onChange) {
var nextRawValues = toRawValues(nextValues);
var valueOptions = nextRawValues.map(function(valueCells) {
return toPathOptions(valueCells, mergedOptions, mergedFieldNames).map(function(valueOpt) {
return valueOpt.option;
});
});
var triggerValues = multiple ? nextRawValues : nextRawValues[0];
var triggerOptions = multiple ? valueOptions : valueOptions[0];
onChange(triggerValues, triggerOptions);
}
});
var handleSelection = useSelect(multiple, triggerChange, checkedValues, halfCheckedValues, missingCheckedValues, getPathKeyEntities, getValueByKeyPath, showCheckedStrategy);
var onInternalSelect = useEvent(function(valuePath) {
handleSelection(valuePath);
});
var cascaderContext = reactExports.useMemo(function() {
return {
options: mergedOptions,
fieldNames: mergedFieldNames,
values: checkedValues,
halfValues: halfCheckedValues,
changeOnSelect,
onSelect: onInternalSelect,
checkable,
searchOptions: [],
dropdownPrefixCls: void 0,
loadData,
expandTrigger,
expandIcon,
loadingIcon,
dropdownMenuColumnStyle: void 0
};
}, [mergedOptions, mergedFieldNames, checkedValues, halfCheckedValues, changeOnSelect, onInternalSelect, checkable, loadData, expandTrigger, expandIcon, loadingIcon]);
var panelPrefixCls = "".concat(prefixCls, "-panel");
var isEmpty = !mergedOptions.length;
return /* @__PURE__ */ reactExports.createElement(CascaderContext.Provider, {
value: cascaderContext
}, /* @__PURE__ */ reactExports.createElement("div", {
className: cls(panelPrefixCls, (_classNames = {}, _defineProperty(_classNames, "".concat(panelPrefixCls, "-rtl"), direction === "rtl"), _defineProperty(_classNames, "".concat(panelPrefixCls, "-empty"), isEmpty), _classNames), className),
style: style2
}, isEmpty ? notFoundContent : /* @__PURE__ */ reactExports.createElement(RawOptionList, {
prefixCls,
searchValue: "",
multiple,
toggleOpen: noop$3,
open: true,
direction
})));
}
var _excluded$e = ["id", "prefixCls", "fieldNames", "defaultValue", "value", "changeOnSelect", "onChange", "displayRender", "checkable", "autoClearSearchValue", "searchValue", "onSearch", "showSearch", "expandTrigger", "options", "dropdownPrefixCls", "loadData", "popupVisible", "open", "popupClassName", "dropdownClassName", "dropdownMenuColumnStyle", "dropdownStyle", "popupPlacement", "placement", "onDropdownVisibleChange", "onPopupVisibleChange", "expandIcon", "loadingIcon", "children", "dropdownMatchSelectWidth", "showCheckedStrategy", "optionRender"];
var Cascader$1 = /* @__PURE__ */ reactExports.forwardRef(function(props, ref) {
var id2 = props.id, _props$prefixCls = props.prefixCls, prefixCls = _props$prefixCls === void 0 ? "rc-cascader" : _props$prefixCls, fieldNames = props.fieldNames, defaultValue = props.defaultValue, value = props.value, changeOnSelect = props.changeOnSelect, onChange = props.onChange, displayRender = props.displayRender, checkable = props.checkable, _props$autoClearSearc = props.autoClearSearchValue, autoClearSearchValue = _props$autoClearSearc === void 0 ? true : _props$autoClearSearc, searchValue = props.searchValue, onSearch = props.onSearch, showSearch = props.showSearch, expandTrigger = props.expandTrigger, options = props.options, dropdownPrefixCls = props.dropdownPrefixCls, loadData = props.loadData, popupVisible = props.popupVisible, open2 = props.open, popupClassName = props.popupClassName, dropdownClassName = props.dropdownClassName, dropdownMenuColumnStyle = props.dropdownMenuColumnStyle, customDropdownStyle = props.dropdownStyle, popupPlacement = props.popupPlacement, placement = props.placement, onDropdownVisibleChange = props.onDropdownVisibleChange, onPopupVisibleChange = props.onPopupVisibleChange, _props$expandIcon = props.expandIcon, expandIcon = _props$expandIcon === void 0 ? ">" : _props$expandIcon, loadingIcon = props.loadingIcon, children = props.children, _props$dropdownMatchS = props.dropdownMatchSelectWidth, dropdownMatchSelectWidth = _props$dropdownMatchS === void 0 ? false : _props$dropdownMatchS, _props$showCheckedStr = props.showCheckedStrategy, showCheckedStrategy = _props$showCheckedStr === void 0 ? SHOW_PARENT$1 : _props$showCheckedStr, optionRender = props.optionRender, restProps = _objectWithoutProperties(props, _excluded$e);
var mergedId = useId2(id2);
var multiple = !!checkable;
var _useMergedState = useMergedState(defaultValue, {
value,
postState: toRawValues
}), _useMergedState2 = _slicedToArray(_useMergedState, 2), rawValues = _useMergedState2[0], setRawValues = _useMergedState2[1];
var mergedFieldNames = reactExports.useMemo(
function() {
return fillFieldNames$1(fieldNames);
},
/* eslint-disable react-hooks/exhaustive-deps */
[JSON.stringify(fieldNames)]
/* eslint-enable react-hooks/exhaustive-deps */
);
var _useOptions = useOptions2(mergedFieldNames, options), _useOptions2 = _slicedToArray(_useOptions, 3), mergedOptions = _useOptions2[0], getPathKeyEntities = _useOptions2[1], getValueByKeyPath = _useOptions2[2];
var _useMergedState3 = useMergedState("", {
value: searchValue,
postState: function postState(search) {
return search || "";
}
}), _useMergedState4 = _slicedToArray(_useMergedState3, 2), mergedSearchValue = _useMergedState4[0], setSearchValue = _useMergedState4[1];
var onInternalSearch = function onInternalSearch2(searchText, info) {
setSearchValue(searchText);
if (info.source !== "blur" && onSearch) {
onSearch(searchText);
}
};
var _useSearchConfig = useSearchConfig(showSearch), _useSearchConfig2 = _slicedToArray(_useSearchConfig, 2), mergedShowSearch = _useSearchConfig2[0], searchConfig = _useSearchConfig2[1];
var searchOptions = useSearchOptions(mergedSearchValue, mergedOptions, mergedFieldNames, dropdownPrefixCls || prefixCls, searchConfig, changeOnSelect || multiple);
var getMissingValues = useMissingValues(mergedOptions, mergedFieldNames);
var _useValues = useValues(multiple, rawValues, getPathKeyEntities, getValueByKeyPath, getMissingValues), _useValues2 = _slicedToArray(_useValues, 3), checkedValues = _useValues2[0], halfCheckedValues = _useValues2[1], missingCheckedValues = _useValues2[2];
var deDuplicatedValues = reactExports.useMemo(function() {
var checkedKeys = toPathKeys(checkedValues);
var deduplicateKeys = formatStrategyValues(checkedKeys, getPathKeyEntities, showCheckedStrategy);
return [].concat(_toConsumableArray(missingCheckedValues), _toConsumableArray(getValueByKeyPath(deduplicateKeys)));
}, [checkedValues, getPathKeyEntities, getValueByKeyPath, missingCheckedValues, showCheckedStrategy]);
var displayValues = useDisplayValues(deDuplicatedValues, mergedOptions, mergedFieldNames, multiple, displayRender);
var triggerChange = useEvent(function(nextValues) {
setRawValues(nextValues);
if (onChange) {
var nextRawValues = toRawValues(nextValues);
var valueOptions = nextRawValues.map(function(valueCells) {
return toPathOptions(valueCells, mergedOptions, mergedFieldNames).map(function(valueOpt) {
return valueOpt.option;
});
});
var triggerValues = multiple ? nextRawValues : nextRawValues[0];
var triggerOptions = multiple ? valueOptions : valueOptions[0];
onChange(triggerValues, triggerOptions);
}
});
var handleSelection = useSelect(multiple, triggerChange, checkedValues, halfCheckedValues, missingCheckedValues, getPathKeyEntities, getValueByKeyPath, showCheckedStrategy);
var onInternalSelect = useEvent(function(valuePath) {
if (!multiple || autoClearSearchValue) {
setSearchValue("");
}
handleSelection(valuePath);
});
var onDisplayValuesChange = function onDisplayValuesChange2(_, info) {
if (info.type === "clear") {
triggerChange([]);
return;
}
var _ref = info.values[0], valueCells = _ref.valueCells;
onInternalSelect(valueCells);
};
var mergedOpen = open2 !== void 0 ? open2 : popupVisible;
var mergedDropdownClassName = dropdownClassName || popupClassName;
var mergedPlacement = placement || popupPlacement;
var onInternalDropdownVisibleChange = function onInternalDropdownVisibleChange2(nextVisible) {
onDropdownVisibleChange === null || onDropdownVisibleChange === void 0 ? void 0 : onDropdownVisibleChange(nextVisible);
onPopupVisibleChange === null || onPopupVisibleChange === void 0 ? void 0 : onPopupVisibleChange(nextVisible);
};
var cascaderContext = reactExports.useMemo(function() {
return {
options: mergedOptions,
fieldNames: mergedFieldNames,
values: checkedValues,
halfValues: halfCheckedValues,
changeOnSelect,
onSelect: onInternalSelect,
checkable,
searchOptions,
dropdownPrefixCls,
loadData,
expandTrigger,
expandIcon,
loadingIcon,
dropdownMenuColumnStyle,
optionRender
};
}, [mergedOptions, mergedFieldNames, checkedValues, halfCheckedValues, changeOnSelect, onInternalSelect, checkable, searchOptions, dropdownPrefixCls, loadData, expandTrigger, expandIcon, loadingIcon, dropdownMenuColumnStyle, optionRender]);
var emptyOptions = !(mergedSearchValue ? searchOptions : mergedOptions).length;
var dropdownStyle = (
// Search to match width
mergedSearchValue && searchConfig.matchInputWidth || // Empty keep the width
emptyOptions ? {} : {
minWidth: "auto"
}
);
return /* @__PURE__ */ reactExports.createElement(CascaderContext.Provider, {
value: cascaderContext
}, /* @__PURE__ */ reactExports.createElement(BaseSelect, _extends$2({}, restProps, {
// MISC
ref,
id: mergedId,
prefixCls,
autoClearSearchValue,
dropdownMatchSelectWidth,
dropdownStyle: _objectSpread2$1(_objectSpread2$1({}, dropdownStyle), customDropdownStyle),
displayValues,
onDisplayValuesChange,
mode: multiple ? "multiple" : void 0,
searchValue: mergedSearchValue,
onSearch: onInternalSearch,
showSearch: mergedShowSearch,
OptionList: RefOptionList,
emptyOptions,
open: mergedOpen,
dropdownClassName: mergedDropdownClassName,
placement: mergedPlacement,
onDropdownVisibleChange: onInternalDropdownVisibleChange,
getRawInputElement: function getRawInputElement() {
return children;
}
})));
});
Cascader$1.SHOW_PARENT = SHOW_PARENT$1;
Cascader$1.SHOW_CHILD = SHOW_CHILD$1;
Cascader$1.Panel = Panel$1;
function useBase(customizePrefixCls, direction) {
const {
getPrefixCls,
direction: rootDirection,
renderEmpty
} = reactExports.useContext(ConfigContext);
const mergedDirection = direction || rootDirection;
const prefixCls = getPrefixCls("select", customizePrefixCls);
const cascaderPrefixCls = getPrefixCls("cascader", customizePrefixCls);
return [prefixCls, cascaderPrefixCls, mergedDirection, renderEmpty];
}
function useCheckable(cascaderPrefixCls, multiple) {
return reactExports.useMemo(() => multiple ? /* @__PURE__ */ reactExports.createElement("span", {
className: `${cascaderPrefixCls}-checkbox-inner`
}) : false, [multiple]);
}
const useColumnIcons = (prefixCls, rtl, expandIcon) => {
let mergedExpandIcon = expandIcon;
if (!expandIcon) {
mergedExpandIcon = rtl ? /* @__PURE__ */ reactExports.createElement(RefIcon$5, null) : /* @__PURE__ */ reactExports.createElement(RefIcon$1, null);
}
const loadingIcon = /* @__PURE__ */ reactExports.createElement("span", {
className: `${prefixCls}-menu-item-loading-icon`
}, /* @__PURE__ */ reactExports.createElement(RefIcon$4, {
spin: true
}));
return reactExports.useMemo(() => [mergedExpandIcon, loadingIcon], [mergedExpandIcon]);
};
const genCheckboxStyle = (token2) => {
const {
checkboxCls
} = token2;
const wrapperCls = `${checkboxCls}-wrapper`;
return [
// ===================== Basic =====================
{
// Group
[`${checkboxCls}-group`]: Object.assign(Object.assign({}, resetComponent(token2)), {
display: "inline-flex",
flexWrap: "wrap",
columnGap: token2.marginXS,
// Group > Grid
[`> ${token2.antCls}-row`]: {
flex: 1
}
}),
// Wrapper
[wrapperCls]: Object.assign(Object.assign({}, resetComponent(token2)), {
display: "inline-flex",
alignItems: "baseline",
cursor: "pointer",
// Fix checkbox & radio in flex align #30260
"&:after": {
display: "inline-block",
width: 0,
overflow: "hidden",
content: "'\\a0'"
},
// Checkbox near checkbox
[`& + ${wrapperCls}`]: {
marginInlineStart: 0
},
[`&${wrapperCls}-in-form-item`]: {
'input[type="checkbox"]': {
width: 14,
// FIXME: magic
height: 14
// FIXME: magic
}
}
}),
// Wrapper > Checkbox
[checkboxCls]: Object.assign(Object.assign({}, resetComponent(token2)), {
position: "relative",
whiteSpace: "nowrap",
lineHeight: 1,
cursor: "pointer",
borderRadius: token2.borderRadiusSM,
// To make alignment right when `controlHeight` is changed
// Ref: https://github.com/ant-design/ant-design/issues/41564
alignSelf: "center",
// Wrapper > Checkbox > input
[`${checkboxCls}-input`]: {
position: "absolute",
// Since baseline align will get additional space offset,
// we need to move input to top to make it align with text.
// Ref: https://github.com/ant-design/ant-design/issues/38926#issuecomment-1486137799
inset: 0,
zIndex: 1,
cursor: "pointer",
opacity: 0,
margin: 0,
[`&:focus-visible + ${checkboxCls}-inner`]: Object.assign({}, genFocusOutline(token2))
},
// Wrapper > Checkbox > inner
[`${checkboxCls}-inner`]: {
boxSizing: "border-box",
display: "block",
width: token2.checkboxSize,
height: token2.checkboxSize,
direction: "ltr",
backgroundColor: token2.colorBgContainer,
border: `${unit$1(token2.lineWidth)} ${token2.lineType} ${token2.colorBorder}`,
borderRadius: token2.borderRadiusSM,
borderCollapse: "separate",
transition: `all ${token2.motionDurationSlow}`,
"&:after": {
boxSizing: "border-box",
position: "absolute",
top: "50%",
insetInlineStart: "25%",
display: "table",
width: token2.calc(token2.checkboxSize).div(14).mul(5).equal(),
height: token2.calc(token2.checkboxSize).div(14).mul(8).equal(),
border: `${unit$1(token2.lineWidthBold)} solid ${token2.colorWhite}`,
borderTop: 0,
borderInlineStart: 0,
transform: "rotate(45deg) scale(0) translate(-50%,-50%)",
opacity: 0,
content: '""',
transition: `all ${token2.motionDurationFast} ${token2.motionEaseInBack}, opacity ${token2.motionDurationFast}`
}
},
// Wrapper > Checkbox + Text
"& + span": {
paddingInlineStart: token2.paddingXS,
paddingInlineEnd: token2.paddingXS
}
})
},
// ===================== Hover =====================
{
// Wrapper & Wrapper > Checkbox
[`
${wrapperCls}:not(${wrapperCls}-disabled),
${checkboxCls}:not(${checkboxCls}-disabled)
`]: {
[`&:hover ${checkboxCls}-inner`]: {
borderColor: token2.colorPrimary
}
},
[`${wrapperCls}:not(${wrapperCls}-disabled)`]: {
[`&:hover ${checkboxCls}-checked:not(${checkboxCls}-disabled) ${checkboxCls}-inner`]: {
backgroundColor: token2.colorPrimaryHover,
borderColor: "transparent"
},
[`&:hover ${checkboxCls}-checked:not(${checkboxCls}-disabled):after`]: {
borderColor: token2.colorPrimaryHover
}
}
},
// ==================== Checked ====================
{
// Wrapper > Checkbox
[`${checkboxCls}-checked`]: {
[`${checkboxCls}-inner`]: {
backgroundColor: token2.colorPrimary,
borderColor: token2.colorPrimary,
"&:after": {
opacity: 1,
transform: "rotate(45deg) scale(1) translate(-50%,-50%)",
transition: `all ${token2.motionDurationMid} ${token2.motionEaseOutBack} ${token2.motionDurationFast}`
}
}
},
[`
${wrapperCls}-checked:not(${wrapperCls}-disabled),
${checkboxCls}-checked:not(${checkboxCls}-disabled)
`]: {
[`&:hover ${checkboxCls}-inner`]: {
backgroundColor: token2.colorPrimaryHover,
borderColor: "transparent"
}
}
},
// ================= Indeterminate =================
{
[checkboxCls]: {
"&-indeterminate": {
// Wrapper > Checkbox > inner
[`${checkboxCls}-inner`]: {
backgroundColor: `${token2.colorBgContainer} !important`,
borderColor: `${token2.colorBorder} !important`,
"&:after": {
top: "50%",
insetInlineStart: "50%",
width: token2.calc(token2.fontSizeLG).div(2).equal(),
height: token2.calc(token2.fontSizeLG).div(2).equal(),
backgroundColor: token2.colorPrimary,
border: 0,
transform: "translate(-50%, -50%) scale(1)",
opacity: 1,
content: '""'
}
},
// https://github.com/ant-design/ant-design/issues/50074
[`&:hover ${checkboxCls}-inner`]: {
backgroundColor: `${token2.colorBgContainer} !important`,
borderColor: `${token2.colorPrimary} !important`
}
}
}
},
// ==================== Disable ====================
{
// Wrapper
[`${wrapperCls}-disabled`]: {
cursor: "not-allowed"
},
// Wrapper > Checkbox
[`${checkboxCls}-disabled`]: {
// Wrapper > Checkbox > input
[`&, ${checkboxCls}-input`]: {
cursor: "not-allowed",
// Disabled for native input to enable Tooltip event handler
// ref: https://github.com/ant-design/ant-design/issues/39822#issuecomment-1365075901
pointerEvents: "none"
},
// Wrapper > Checkbox > inner
[`${checkboxCls}-inner`]: {
background: token2.colorBgContainerDisabled,
borderColor: token2.colorBorder,
"&:after": {
borderColor: token2.colorTextDisabled
}
},
"&:after": {
display: "none"
},
"& + span": {
color: token2.colorTextDisabled
},
[`&${checkboxCls}-indeterminate ${checkboxCls}-inner::after`]: {
background: token2.colorTextDisabled
}
}
}
];
};
function getStyle$1(prefixCls, token2) {
const checkboxToken = merge$1(token2, {
checkboxCls: `.${prefixCls}`,
checkboxSize: token2.controlInteractiveSize
});
return [genCheckboxStyle(checkboxToken)];
}
const useStyle$7 = genStyleHooks("Checkbox", (token2, _ref) => {
let {
prefixCls
} = _ref;
return [getStyle$1(prefixCls, token2)];
});
const getColumnsStyle = (token2) => {
const {
prefixCls,
componentCls
} = token2;
const cascaderMenuItemCls = `${componentCls}-menu-item`;
const iconCls = `
&${cascaderMenuItemCls}-expand ${cascaderMenuItemCls}-expand-icon,
${cascaderMenuItemCls}-loading-icon
`;
return [
// ==================== Checkbox ====================
getStyle$1(`${prefixCls}-checkbox`, token2),
{
[componentCls]: {
// ================== Checkbox ==================
"&-checkbox": {
top: 0,
marginInlineEnd: token2.paddingXS
},
// ==================== Menu ====================
// >>> Menus
"&-menus": {
display: "flex",
flexWrap: "nowrap",
alignItems: "flex-start",
[`&${componentCls}-menu-empty`]: {
[`${componentCls}-menu`]: {
width: "100%",
height: "auto",
[cascaderMenuItemCls]: {
color: token2.colorTextDisabled
}
}
}
},
// >>> Menu
"&-menu": {
flexGrow: 1,
flexShrink: 0,
minWidth: token2.controlItemWidth,
height: token2.dropdownHeight,
margin: 0,
padding: token2.menuPadding,
overflow: "auto",
verticalAlign: "top",
listStyle: "none",
"-ms-overflow-style": "-ms-autohiding-scrollbar",
// https://github.com/ant-design/ant-design/issues/11857
"&:not(:last-child)": {
borderInlineEnd: `${unit$1(token2.lineWidth)} ${token2.lineType} ${token2.colorSplit}`
},
"&-item": Object.assign(Object.assign({}, textEllipsis), {
display: "flex",
flexWrap: "nowrap",
alignItems: "center",
padding: token2.optionPadding,
lineHeight: token2.lineHeight,
cursor: "pointer",
transition: `all ${token2.motionDurationMid}`,
borderRadius: token2.borderRadiusSM,
"&:hover": {
background: token2.controlItemBgHover
},
"&-disabled": {
color: token2.colorTextDisabled,
cursor: "not-allowed",
"&:hover": {
background: "transparent"
},
[iconCls]: {
color: token2.colorTextDisabled
}
},
[`&-active:not(${cascaderMenuItemCls}-disabled)`]: {
"&, &:hover": {
fontWeight: token2.optionSelectedFontWeight,
backgroundColor: token2.optionSelectedBg
}
},
"&-content": {
flex: "auto"
},
[iconCls]: {
marginInlineStart: token2.paddingXXS,
color: token2.colorTextDescription,
fontSize: token2.fontSizeIcon
},
"&-keyword": {
color: token2.colorHighlight
}
})
}
}
}
];
};
const genBaseStyle$1 = (token2) => {
const {
componentCls,
antCls
} = token2;
return [
// =====================================================
// == Control ==
// =====================================================
{
[componentCls]: {
width: token2.controlWidth
}
},
// =====================================================
// == Popup ==
// =====================================================
{
[`${componentCls}-dropdown`]: [{
[`&${antCls}-select-dropdown`]: {
padding: 0
}
}, getColumnsStyle(token2)]
},
// =====================================================
// == RTL ==
// =====================================================
{
[`${componentCls}-dropdown-rtl`]: {
direction: "rtl"
}
},
// =====================================================
// == Space Compact ==
// =====================================================
genCompactItemStyle(token2)
];
};
const prepareComponentToken$5 = (token2) => {
const itemPaddingVertical = Math.round((token2.controlHeight - token2.fontSize * token2.lineHeight) / 2);
return {
controlWidth: 184,
controlItemWidth: 111,
dropdownHeight: 180,
optionSelectedBg: token2.controlItemBgActive,
optionSelectedFontWeight: token2.fontWeightStrong,
optionPadding: `${itemPaddingVertical}px ${token2.paddingSM}px`,
menuPadding: token2.paddingXXS
};
};
const useStyle$6 = genStyleHooks("Cascader", (token2) => [genBaseStyle$1(token2)], prepareComponentToken$5);
const genPanelStyle = (token2) => {
const {
componentCls
} = token2;
return {
[`${componentCls}-panel`]: [getColumnsStyle(token2), {
display: "inline-flex",
border: `${unit$1(token2.lineWidth)} ${token2.lineType} ${token2.colorSplit}`,
borderRadius: token2.borderRadiusLG,
overflowX: "auto",
maxWidth: "100%",
[`${componentCls}-menus`]: {
alignItems: "stretch"
},
[`${componentCls}-menu`]: {
height: "auto"
},
"&-empty": {
padding: token2.paddingXXS
}
}]
};
};
const usePanelStyle = genComponentStyleHook(["Cascader", "Panel"], (token2) => genPanelStyle(token2), prepareComponentToken$5);
function CascaderPanel(props) {
const {
prefixCls: customizePrefixCls,
className,
multiple,
rootClassName,
notFoundContent,
direction,
expandIcon
} = props;
const [prefixCls, cascaderPrefixCls, mergedDirection, renderEmpty] = useBase(customizePrefixCls, direction);
const rootCls = useCSSVarCls(cascaderPrefixCls);
const [wrapCSSVar, hashId, cssVarCls] = useStyle$6(cascaderPrefixCls, rootCls);
usePanelStyle(cascaderPrefixCls);
const isRtl = mergedDirection === "rtl";
const [mergedExpandIcon, loadingIcon] = useColumnIcons(prefixCls, isRtl, expandIcon);
const mergedNotFoundContent = notFoundContent || (renderEmpty === null || renderEmpty === void 0 ? void 0 : renderEmpty("Cascader")) || /* @__PURE__ */ reactExports.createElement(DefaultRenderEmpty, {
componentName: "Cascader"
});
const checkable = useCheckable(cascaderPrefixCls, multiple);
return wrapCSSVar(/* @__PURE__ */ reactExports.createElement(Panel$1, Object.assign({}, props, {
checkable,
prefixCls: cascaderPrefixCls,
className: cls(className, hashId, rootClassName, cssVarCls, rootCls),
notFoundContent: mergedNotFoundContent,
direction: mergedDirection,
expandIcon: mergedExpandIcon,
loadingIcon
})));
}
var __rest$g = function(s, e2) {
var t2 = {};
for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0) t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i])) t2[p2[i]] = s[p2[i]];
}
return t2;
};
const {
SHOW_CHILD,
SHOW_PARENT
} = Cascader$1;
function highlightKeyword(str, lowerKeyword, prefixCls) {
const cells = str.toLowerCase().split(lowerKeyword).reduce((list, cur, index2) => index2 === 0 ? [cur] : [].concat(_toConsumableArray(list), [lowerKeyword, cur]), []);
const fillCells = [];
let start2 = 0;
cells.forEach((cell, index2) => {
const end2 = start2 + cell.length;
let originWorld = str.slice(start2, end2);
start2 = end2;
if (index2 % 2 === 1) {
originWorld = // eslint-disable-next-line react/no-array-index-key
/* @__PURE__ */ reactExports.createElement("span", {
className: `${prefixCls}-menu-item-keyword`,
key: `separator-${index2}`
}, originWorld);
}
fillCells.push(originWorld);
});
return fillCells;
}
const defaultSearchRender = (inputValue, path, prefixCls, fieldNames) => {
const optionList = [];
const lower = inputValue.toLowerCase();
path.forEach((node2, index2) => {
if (index2 !== 0) {
optionList.push(" / ");
}
let label = node2[fieldNames.label];
const type4 = typeof label;
if (type4 === "string" || type4 === "number") {
label = highlightKeyword(String(label), lower, prefixCls);
}
optionList.push(label);
});
return optionList;
};
const Cascader = /* @__PURE__ */ reactExports.forwardRef((props, ref) => {
var _a2;
const {
prefixCls: customizePrefixCls,
size: customizeSize,
disabled: customDisabled,
className,
rootClassName,
multiple,
bordered = true,
transitionName,
choiceTransitionName = "",
popupClassName,
dropdownClassName,
expandIcon,
placement,
showSearch,
allowClear = true,
notFoundContent,
direction,
getPopupContainer,
status: customStatus,
showArrow,
builtinPlacements,
style: style2,
variant: customVariant
} = props, rest = __rest$g(props, ["prefixCls", "size", "disabled", "className", "rootClassName", "multiple", "bordered", "transitionName", "choiceTransitionName", "popupClassName", "dropdownClassName", "expandIcon", "placement", "showSearch", "allowClear", "notFoundContent", "direction", "getPopupContainer", "status", "showArrow", "builtinPlacements", "style", "variant"]);
const restProps = omit(rest, ["suffixIcon"]);
const {
getPopupContainer: getContextPopupContainer,
getPrefixCls,
popupOverflow,
cascader
} = reactExports.useContext(ConfigContext);
const {
status: contextStatus,
hasFeedback,
isFormItemInput,
feedbackIcon
} = reactExports.useContext(FormItemInputContext);
const mergedStatus = getMergedStatus(contextStatus, customStatus);
const [prefixCls, cascaderPrefixCls, mergedDirection, renderEmpty] = useBase(customizePrefixCls, direction);
const isRtl = mergedDirection === "rtl";
const rootPrefixCls = getPrefixCls();
const rootCls = useCSSVarCls(prefixCls);
const [wrapSelectCSSVar, hashId, cssVarCls] = useSelectStyle(prefixCls, rootCls);
const cascaderRootCls = useCSSVarCls(cascaderPrefixCls);
const [wrapCascaderCSSVar] = useStyle$6(cascaderPrefixCls, cascaderRootCls);
const {
compactSize,
compactItemClassnames
} = useCompactItemContext(prefixCls, direction);
const [variant, enableVariantCls] = useVariant("cascader", customVariant, bordered);
const mergedNotFoundContent = notFoundContent || (renderEmpty === null || renderEmpty === void 0 ? void 0 : renderEmpty("Cascader")) || /* @__PURE__ */ reactExports.createElement(DefaultRenderEmpty, {
componentName: "Cascader"
});
const mergedDropdownClassName = cls(popupClassName || dropdownClassName, `${cascaderPrefixCls}-dropdown`, {
[`${cascaderPrefixCls}-dropdown-rtl`]: mergedDirection === "rtl"
}, rootClassName, rootCls, cascaderRootCls, hashId, cssVarCls);
const mergedShowSearch = reactExports.useMemo(() => {
if (!showSearch) {
return showSearch;
}
let searchConfig = {
render: defaultSearchRender
};
if (typeof showSearch === "object") {
searchConfig = Object.assign(Object.assign({}, searchConfig), showSearch);
}
return searchConfig;
}, [showSearch]);
const mergedSize = useSize((ctx) => {
var _a22;
return (_a22 = customizeSize !== null && customizeSize !== void 0 ? customizeSize : compactSize) !== null && _a22 !== void 0 ? _a22 : ctx;
});
const disabled = reactExports.useContext(DisabledContext);
const mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;
const [mergedExpandIcon, loadingIcon] = useColumnIcons(prefixCls, isRtl, expandIcon);
const checkable = useCheckable(cascaderPrefixCls, multiple);
const showSuffixIcon = useShowArrow(props.suffixIcon, showArrow);
const {
suffixIcon,
removeIcon,
clearIcon
} = useIcons(Object.assign(Object.assign({}, props), {
hasFeedback,
feedbackIcon,
showSuffixIcon,
multiple,
prefixCls,
componentName: "Cascader"
}));
const memoPlacement = reactExports.useMemo(() => {
if (placement !== void 0) {
return placement;
}
return isRtl ? "bottomRight" : "bottomLeft";
}, [placement, isRtl]);
const mergedAllowClear = allowClear === true ? {
clearIcon
} : allowClear;
const [zIndex] = useZIndex("SelectLike", (_a2 = restProps.dropdownStyle) === null || _a2 === void 0 ? void 0 : _a2.zIndex);
const renderNode2 = /* @__PURE__ */ reactExports.createElement(Cascader$1, Object.assign({
prefixCls,
className: cls(!customizePrefixCls && cascaderPrefixCls, {
[`${prefixCls}-lg`]: mergedSize === "large",
[`${prefixCls}-sm`]: mergedSize === "small",
[`${prefixCls}-rtl`]: isRtl,
[`${prefixCls}-${variant}`]: enableVariantCls,
[`${prefixCls}-in-form-item`]: isFormItemInput
}, getStatusClassNames(prefixCls, mergedStatus, hasFeedback), compactItemClassnames, cascader === null || cascader === void 0 ? void 0 : cascader.className, className, rootClassName, rootCls, cascaderRootCls, hashId, cssVarCls),
disabled: mergedDisabled,
style: Object.assign(Object.assign({}, cascader === null || cascader === void 0 ? void 0 : cascader.style), style2)
}, restProps, {
builtinPlacements: mergedBuiltinPlacements(builtinPlacements, popupOverflow),
direction: mergedDirection,
placement: memoPlacement,
notFoundContent: mergedNotFoundContent,
allowClear: mergedAllowClear,
showSearch: mergedShowSearch,
expandIcon: mergedExpandIcon,
suffixIcon,
removeIcon,
loadingIcon,
checkable,
dropdownClassName: mergedDropdownClassName,
dropdownPrefixCls: customizePrefixCls || cascaderPrefixCls,
dropdownStyle: Object.assign(Object.assign({}, restProps.dropdownStyle), {
zIndex
}),
choiceTransitionName: getTransitionName(rootPrefixCls, "", choiceTransitionName),
transitionName: getTransitionName(rootPrefixCls, "slide-up", transitionName),
getPopupContainer: getPopupContainer || getContextPopupContainer,
ref
}));
return wrapCascaderCSSVar(wrapSelectCSSVar(renderNode2));
});
const PurePanel = genPurePanel(Cascader);
Cascader.SHOW_PARENT = SHOW_PARENT;
Cascader.SHOW_CHILD = SHOW_CHILD;
Cascader.Panel = CascaderPanel;
Cascader._InternalPanelDoNotUseOrYouWillBeFired = PurePanel;
const GroupContext = /* @__PURE__ */ React.createContext(null);
var __rest$f = function(s, e2) {
var t2 = {};
for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0) t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i])) t2[p2[i]] = s[p2[i]];
}
return t2;
};
const InternalCheckbox = (props, ref) => {
var _a2;
const {
prefixCls: customizePrefixCls,
className,
rootClassName,
children,
indeterminate = false,
style: style2,
onMouseEnter,
onMouseLeave,
skipGroup = false,
disabled
} = props, restProps = __rest$f(props, ["prefixCls", "className", "rootClassName", "children", "indeterminate", "style", "onMouseEnter", "onMouseLeave", "skipGroup", "disabled"]);
const {
getPrefixCls,
direction,
checkbox
} = reactExports.useContext(ConfigContext);
const checkboxGroup = reactExports.useContext(GroupContext);
const {
isFormItemInput
} = reactExports.useContext(FormItemInputContext);
const contextDisabled = reactExports.useContext(DisabledContext);
const mergedDisabled = (_a2 = (checkboxGroup === null || checkboxGroup === void 0 ? void 0 : checkboxGroup.disabled) || disabled) !== null && _a2 !== void 0 ? _a2 : contextDisabled;
const prevValue = reactExports.useRef(restProps.value);
reactExports.useEffect(() => {
checkboxGroup === null || checkboxGroup === void 0 ? void 0 : checkboxGroup.registerValue(restProps.value);
}, []);
reactExports.useEffect(() => {
if (skipGroup) {
return;
}
if (restProps.value !== prevValue.current) {
checkboxGroup === null || checkboxGroup === void 0 ? void 0 : checkboxGroup.cancelValue(prevValue.current);
checkboxGroup === null || checkboxGroup === void 0 ? void 0 : checkboxGroup.registerValue(restProps.value);
prevValue.current = restProps.value;
}
return () => checkboxGroup === null || checkboxGroup === void 0 ? void 0 : checkboxGroup.cancelValue(restProps.value);
}, [restProps.value]);
const prefixCls = getPrefixCls("checkbox", customizePrefixCls);
const rootCls = useCSSVarCls(prefixCls);
const [wrapCSSVar, hashId, cssVarCls] = useStyle$7(prefixCls, rootCls);
const checkboxProps = Object.assign({}, restProps);
if (checkboxGroup && !skipGroup) {
checkboxProps.onChange = function() {
if (restProps.onChange) {
restProps.onChange.apply(restProps, arguments);
}
if (checkboxGroup.toggleOption) {
checkboxGroup.toggleOption({
label: children,
value: restProps.value
});
}
};
checkboxProps.name = checkboxGroup.name;
checkboxProps.checked = checkboxGroup.value.includes(restProps.value);
}
const classString = cls(`${prefixCls}-wrapper`, {
[`${prefixCls}-rtl`]: direction === "rtl",
[`${prefixCls}-wrapper-checked`]: checkboxProps.checked,
[`${prefixCls}-wrapper-disabled`]: mergedDisabled,
[`${prefixCls}-wrapper-in-form-item`]: isFormItemInput
}, checkbox === null || checkbox === void 0 ? void 0 : checkbox.className, className, rootClassName, cssVarCls, rootCls, hashId);
const checkboxClass = cls({
[`${prefixCls}-indeterminate`]: indeterminate
}, TARGET_CLS, hashId);
const ariaChecked = indeterminate ? "mixed" : void 0;
return wrapCSSVar(/* @__PURE__ */ reactExports.createElement(Wave, {
component: "Checkbox",
disabled: mergedDisabled
}, /* @__PURE__ */ reactExports.createElement("label", {
className: classString,
style: Object.assign(Object.assign({}, checkbox === null || checkbox === void 0 ? void 0 : checkbox.style), style2),
onMouseEnter,
onMouseLeave
}, /* @__PURE__ */ reactExports.createElement(Checkbox$3, Object.assign({
"aria-checked": ariaChecked
}, checkboxProps, {
prefixCls,
className: checkboxClass,
disabled: mergedDisabled,
ref
})), children !== void 0 && /* @__PURE__ */ reactExports.createElement("span", null, children))));
};
const Checkbox$1 = /* @__PURE__ */ reactExports.forwardRef(InternalCheckbox);
var __rest$e = function(s, e2) {
var t2 = {};
for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0) t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i])) t2[p2[i]] = s[p2[i]];
}
return t2;
};
const CheckboxGroup = /* @__PURE__ */ reactExports.forwardRef((props, ref) => {
const {
defaultValue,
children,
options = [],
prefixCls: customizePrefixCls,
className,
rootClassName,
style: style2,
onChange
} = props, restProps = __rest$e(props, ["defaultValue", "children", "options", "prefixCls", "className", "rootClassName", "style", "onChange"]);
const {
getPrefixCls,
direction
} = reactExports.useContext(ConfigContext);
const [value, setValue] = reactExports.useState(restProps.value || defaultValue || []);
const [registeredValues, setRegisteredValues] = reactExports.useState([]);
reactExports.useEffect(() => {
if ("value" in restProps) {
setValue(restProps.value || []);
}
}, [restProps.value]);
const memoOptions = reactExports.useMemo(() => options.map((option) => {
if (typeof option === "string" || typeof option === "number") {
return {
label: option,
value: option
};
}
return option;
}), [options]);
const cancelValue = (val) => {
setRegisteredValues((prevValues) => prevValues.filter((v4) => v4 !== val));
};
const registerValue = (val) => {
setRegisteredValues((prevValues) => [].concat(_toConsumableArray(prevValues), [val]));
};
const toggleOption = (option) => {
const optionIndex = value.indexOf(option.value);
const newValue = _toConsumableArray(value);
if (optionIndex === -1) {
newValue.push(option.value);
} else {
newValue.splice(optionIndex, 1);
}
if (!("value" in restProps)) {
setValue(newValue);
}
onChange === null || onChange === void 0 ? void 0 : onChange(newValue.filter((val) => registeredValues.includes(val)).sort((a, b2) => {
const indexA = memoOptions.findIndex((opt) => opt.value === a);
const indexB = memoOptions.findIndex((opt) => opt.value === b2);
return indexA - indexB;
}));
};
const prefixCls = getPrefixCls("checkbox", customizePrefixCls);
const groupPrefixCls = `${prefixCls}-group`;
const rootCls = useCSSVarCls(prefixCls);
const [wrapCSSVar, hashId, cssVarCls] = useStyle$7(prefixCls, rootCls);
const domProps = omit(restProps, ["value", "disabled"]);
const childrenNode = options.length ? memoOptions.map((option) => /* @__PURE__ */ reactExports.createElement(Checkbox$1, {
prefixCls,
key: option.value.toString(),
disabled: "disabled" in option ? option.disabled : restProps.disabled,
value: option.value,
checked: value.includes(option.value),
onChange: option.onChange,
className: `${groupPrefixCls}-item`,
style: option.style,
title: option.title,
id: option.id,
required: option.required
}, option.label)) : children;
const context = {
toggleOption,
value,
disabled: restProps.disabled,
name: restProps.name,
// https://github.com/ant-design/ant-design/issues/16376
registerValue,
cancelValue
};
const classString = cls(groupPrefixCls, {
[`${groupPrefixCls}-rtl`]: direction === "rtl"
}, className, rootClassName, cssVarCls, rootCls, hashId);
return wrapCSSVar(/* @__PURE__ */ reactExports.createElement("div", Object.assign({
className: classString,
style: style2
}, domProps, {
ref
}), /* @__PURE__ */ reactExports.createElement(GroupContext.Provider, {
value: context
}, childrenNode)));
});
const Checkbox = Checkbox$1;
Checkbox.Group = CheckboxGroup;
Checkbox.__ANT_CHECKBOX = true;
function hasAddon(props) {
return !!(props.addonBefore || props.addonAfter);
}
function hasPrefixSuffix$1(props) {
return !!(props.prefix || props.suffix || props.allowClear);
}
function cloneEvent(event, target, value) {
var currentTarget = target.cloneNode(true);
var newEvent = Object.create(event, {
target: {
value: currentTarget
},
currentTarget: {
value: currentTarget
}
});
currentTarget.value = value;
if (typeof target.selectionStart === "number" && typeof target.selectionEnd === "number") {
currentTarget.selectionStart = target.selectionStart;
currentTarget.selectionEnd = target.selectionEnd;
}
currentTarget.setSelectionRange = function() {
target.setSelectionRange.apply(target, arguments);
};
return newEvent;
}
function resolveOnChange(target, e2, onChange, targetValue) {
if (!onChange) {
return;
}
var event = e2;
if (e2.type === "click") {
event = cloneEvent(e2, target, "");
onChange(event);
return;
}
if (target.type !== "file" && targetValue !== void 0) {
event = cloneEvent(e2, target, targetValue);
onChange(event);
return;
}
onChange(event);
}
function triggerFocus$1(element, option) {
if (!element) return;
element.focus(option);
var _ref = option || {}, cursor = _ref.cursor;
if (cursor) {
var len2 = element.value.length;
switch (cursor) {
case "start":
element.setSelectionRange(0, 0);
break;
case "end":
element.setSelectionRange(len2, len2);
break;
default:
element.setSelectionRange(0, len2);
}
}
}
var BaseInput = /* @__PURE__ */ React.forwardRef(function(props, ref) {
var _element$props, _element$props2;
var inputEl = props.inputElement, children = props.children, prefixCls = props.prefixCls, prefix = props.prefix, suffix = props.suffix, addonBefore = props.addonBefore, addonAfter = props.addonAfter, className = props.className, style2 = props.style, disabled = props.disabled, readOnly = props.readOnly, focused = props.focused, triggerFocus2 = props.triggerFocus, allowClear = props.allowClear, value = props.value, handleReset = props.handleReset, hidden = props.hidden, classes = props.classes, classNames = props.classNames, dataAttrs = props.dataAttrs, styles2 = props.styles, components = props.components, onClear = props.onClear;
var inputElement = children !== null && children !== void 0 ? children : inputEl;
var AffixWrapperComponent = (components === null || components === void 0 ? void 0 : components.affixWrapper) || "span";
var GroupWrapperComponent = (components === null || components === void 0 ? void 0 : components.groupWrapper) || "span";
var WrapperComponent = (components === null || components === void 0 ? void 0 : components.wrapper) || "span";
var GroupAddonComponent = (components === null || components === void 0 ? void 0 : components.groupAddon) || "span";
var containerRef = reactExports.useRef(null);
var onInputClick = function onInputClick2(e2) {
var _containerRef$current;
if ((_containerRef$current = containerRef.current) !== null && _containerRef$current !== void 0 && _containerRef$current.contains(e2.target)) {
triggerFocus2 === null || triggerFocus2 === void 0 || triggerFocus2();
}
};
var hasAffix = hasPrefixSuffix$1(props);
var element = /* @__PURE__ */ reactExports.cloneElement(inputElement, {
value,
className: cls(inputElement.props.className, !hasAffix && (classNames === null || classNames === void 0 ? void 0 : classNames.variant)) || null
});
var groupRef = reactExports.useRef(null);
React.useImperativeHandle(ref, function() {
return {
nativeElement: groupRef.current || containerRef.current
};
});
if (hasAffix) {
var clearIcon = null;
if (allowClear) {
var needClear = !disabled && !readOnly && value;
var clearIconCls = "".concat(prefixCls, "-clear-icon");
var iconNode = _typeof$2(allowClear) === "object" && allowClear !== null && allowClear !== void 0 && allowClear.clearIcon ? allowClear.clearIcon : "✖";
clearIcon = /* @__PURE__ */ React.createElement("span", {
onClick: function onClick(event) {
handleReset === null || handleReset === void 0 || handleReset(event);
onClear === null || onClear === void 0 || onClear();
},
onMouseDown: function onMouseDown(e2) {
return e2.preventDefault();
},
className: cls(clearIconCls, _defineProperty(_defineProperty({}, "".concat(clearIconCls, "-hidden"), !needClear), "".concat(clearIconCls, "-has-suffix"), !!suffix)),
role: "button",
tabIndex: -1
}, iconNode);
}
var affixWrapperPrefixCls = "".concat(prefixCls, "-affix-wrapper");
var affixWrapperCls = cls(affixWrapperPrefixCls, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "".concat(prefixCls, "-disabled"), disabled), "".concat(affixWrapperPrefixCls, "-disabled"), disabled), "".concat(affixWrapperPrefixCls, "-focused"), focused), "".concat(affixWrapperPrefixCls, "-readonly"), readOnly), "".concat(affixWrapperPrefixCls, "-input-with-clear-btn"), suffix && allowClear && value), classes === null || classes === void 0 ? void 0 : classes.affixWrapper, classNames === null || classNames === void 0 ? void 0 : classNames.affixWrapper, classNames === null || classNames === void 0 ? void 0 : classNames.variant);
var suffixNode = (suffix || allowClear) && /* @__PURE__ */ React.createElement("span", {
className: cls("".concat(prefixCls, "-suffix"), classNames === null || classNames === void 0 ? void 0 : classNames.suffix),
style: styles2 === null || styles2 === void 0 ? void 0 : styles2.suffix
}, clearIcon, suffix);
element = /* @__PURE__ */ React.createElement(AffixWrapperComponent, _extends$2({
className: affixWrapperCls,
style: styles2 === null || styles2 === void 0 ? void 0 : styles2.affixWrapper,
onClick: onInputClick
}, dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.affixWrapper, {
ref: containerRef
}), prefix && /* @__PURE__ */ React.createElement("span", {
className: cls("".concat(prefixCls, "-prefix"), classNames === null || classNames === void 0 ? void 0 : classNames.prefix),
style: styles2 === null || styles2 === void 0 ? void 0 : styles2.prefix
}, prefix), element, suffixNode);
}
if (hasAddon(props)) {
var wrapperCls = "".concat(prefixCls, "-group");
var addonCls = "".concat(wrapperCls, "-addon");
var groupWrapperCls = "".concat(wrapperCls, "-wrapper");
var mergedWrapperClassName = cls("".concat(prefixCls, "-wrapper"), wrapperCls, classes === null || classes === void 0 ? void 0 : classes.wrapper, classNames === null || classNames === void 0 ? void 0 : classNames.wrapper);
var mergedGroupClassName = cls(groupWrapperCls, _defineProperty({}, "".concat(groupWrapperCls, "-disabled"), disabled), classes === null || classes === void 0 ? void 0 : classes.group, classNames === null || classNames === void 0 ? void 0 : classNames.groupWrapper);
element = /* @__PURE__ */ React.createElement(GroupWrapperComponent, {
className: mergedGroupClassName,
ref: groupRef
}, /* @__PURE__ */ React.createElement(WrapperComponent, {
className: mergedWrapperClassName
}, addonBefore && /* @__PURE__ */ React.createElement(GroupAddonComponent, {
className: addonCls
}, addonBefore), element, addonAfter && /* @__PURE__ */ React.createElement(GroupAddonComponent, {
className: addonCls
}, addonAfter)));
}
return /* @__PURE__ */ React.cloneElement(element, {
className: cls((_element$props = element.props) === null || _element$props === void 0 ? void 0 : _element$props.className, className) || null,
style: _objectSpread2$1(_objectSpread2$1({}, (_element$props2 = element.props) === null || _element$props2 === void 0 ? void 0 : _element$props2.style), style2),
hidden
});
});
var _excluded$d = ["show"];
function useCount(count2, showCount) {
return reactExports.useMemo(function() {
var mergedConfig = {};
if (showCount) {
mergedConfig.show = _typeof$2(showCount) === "object" && showCount.formatter ? showCount.formatter : !!showCount;
}
mergedConfig = _objectSpread2$1(_objectSpread2$1({}, mergedConfig), count2);
var _ref = mergedConfig, show = _ref.show, rest = _objectWithoutProperties(_ref, _excluded$d);
return _objectSpread2$1(_objectSpread2$1({}, rest), {}, {
show: !!show,
showFormatter: typeof show === "function" ? show : void 0,
strategy: rest.strategy || function(value) {
return value.length;
}
});
}, [count2, showCount]);
}
var _excluded$c = ["autoComplete", "onChange", "onFocus", "onBlur", "onPressEnter", "onKeyDown", "onKeyUp", "prefixCls", "disabled", "htmlSize", "className", "maxLength", "suffix", "showCount", "count", "type", "classes", "classNames", "styles", "onCompositionStart", "onCompositionEnd"];
var Input$2 = /* @__PURE__ */ reactExports.forwardRef(function(props, ref) {
var autoComplete = props.autoComplete, onChange = props.onChange, onFocus = props.onFocus, onBlur = props.onBlur, onPressEnter = props.onPressEnter, onKeyDown2 = props.onKeyDown, onKeyUp = props.onKeyUp, _props$prefixCls = props.prefixCls, prefixCls = _props$prefixCls === void 0 ? "rc-input" : _props$prefixCls, disabled = props.disabled, htmlSize = props.htmlSize, className = props.className, maxLength = props.maxLength, suffix = props.suffix, showCount = props.showCount, count2 = props.count, _props$type = props.type, type4 = _props$type === void 0 ? "text" : _props$type, classes = props.classes, classNames = props.classNames, styles2 = props.styles, _onCompositionStart = props.onCompositionStart, onCompositionEnd = props.onCompositionEnd, rest = _objectWithoutProperties(props, _excluded$c);
var _useState = reactExports.useState(false), _useState2 = _slicedToArray(_useState, 2), focused = _useState2[0], setFocused = _useState2[1];
var compositionRef = reactExports.useRef(false);
var keyLockRef = reactExports.useRef(false);
var inputRef = reactExports.useRef(null);
var holderRef = reactExports.useRef(null);
var focus = function focus2(option) {
if (inputRef.current) {
triggerFocus$1(inputRef.current, option);
}
};
var _useMergedState = useMergedState(props.defaultValue, {
value: props.value
}), _useMergedState2 = _slicedToArray(_useMergedState, 2), value = _useMergedState2[0], setValue = _useMergedState2[1];
var formatValue = value === void 0 || value === null ? "" : String(value);
var _useState3 = reactExports.useState(null), _useState4 = _slicedToArray(_useState3, 2), selection = _useState4[0], setSelection = _useState4[1];
var countConfig = useCount(count2, showCount);
var mergedMax = countConfig.max || maxLength;
var valueLength = countConfig.strategy(formatValue);
var isOutOfRange = !!mergedMax && valueLength > mergedMax;
reactExports.useImperativeHandle(ref, function() {
var _holderRef$current;
return {
focus,
blur: function blur() {
var _inputRef$current;
(_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 || _inputRef$current.blur();
},
setSelectionRange: function setSelectionRange(start2, end2, direction) {
var _inputRef$current2;
(_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 || _inputRef$current2.setSelectionRange(start2, end2, direction);
},
select: function select() {
var _inputRef$current3;
(_inputRef$current3 = inputRef.current) === null || _inputRef$current3 === void 0 || _inputRef$current3.select();
},
input: inputRef.current,
nativeElement: ((_holderRef$current = holderRef.current) === null || _holderRef$current === void 0 ? void 0 : _holderRef$current.nativeElement) || inputRef.current
};
});
reactExports.useEffect(function() {
setFocused(function(prev2) {
return prev2 && disabled ? false : prev2;
});
}, [disabled]);
var triggerChange = function triggerChange2(e2, currentValue, info) {
var cutValue = currentValue;
if (!compositionRef.current && countConfig.exceedFormatter && countConfig.max && countConfig.strategy(currentValue) > countConfig.max) {
cutValue = countConfig.exceedFormatter(currentValue, {
max: countConfig.max
});
if (currentValue !== cutValue) {
var _inputRef$current4, _inputRef$current5;
setSelection([((_inputRef$current4 = inputRef.current) === null || _inputRef$current4 === void 0 ? void 0 : _inputRef$current4.selectionStart) || 0, ((_inputRef$current5 = inputRef.current) === null || _inputRef$current5 === void 0 ? void 0 : _inputRef$current5.selectionEnd) || 0]);
}
} else if (info.source === "compositionEnd") {
return;
}
setValue(cutValue);
if (inputRef.current) {
resolveOnChange(inputRef.current, e2, onChange, cutValue);
}
};
reactExports.useEffect(function() {
if (selection) {
var _inputRef$current6;
(_inputRef$current6 = inputRef.current) === null || _inputRef$current6 === void 0 || _inputRef$current6.setSelectionRange.apply(_inputRef$current6, _toConsumableArray(selection));
}
}, [selection]);
var onInternalChange = function onInternalChange2(e2) {
triggerChange(e2, e2.target.value, {
source: "change"
});
};
var onInternalCompositionEnd = function onInternalCompositionEnd2(e2) {
compositionRef.current = false;
triggerChange(e2, e2.currentTarget.value, {
source: "compositionEnd"
});
onCompositionEnd === null || onCompositionEnd === void 0 || onCompositionEnd(e2);
};
var handleKeyDown = function handleKeyDown2(e2) {
if (onPressEnter && e2.key === "Enter" && !keyLockRef.current) {
keyLockRef.current = true;
onPressEnter(e2);
}
onKeyDown2 === null || onKeyDown2 === void 0 || onKeyDown2(e2);
};
var handleKeyUp = function handleKeyUp2(e2) {
if (e2.key === "Enter") {
keyLockRef.current = false;
}
onKeyUp === null || onKeyUp === void 0 || onKeyUp(e2);
};
var handleFocus = function handleFocus2(e2) {
setFocused(true);
onFocus === null || onFocus === void 0 || onFocus(e2);
};
var handleBlur = function handleBlur2(e2) {
setFocused(false);
onBlur === null || onBlur === void 0 || onBlur(e2);
};
var handleReset = function handleReset2(e2) {
setValue("");
focus();
if (inputRef.current) {
resolveOnChange(inputRef.current, e2, onChange);
}
};
var outOfRangeCls = isOutOfRange && "".concat(prefixCls, "-out-of-range");
var getInputElement = function getInputElement2() {
var otherProps = omit(props, [
"prefixCls",
"onPressEnter",
"addonBefore",
"addonAfter",
"prefix",
"suffix",
"allowClear",
// Input elements must be either controlled or uncontrolled,
// specify either the value prop, or the defaultValue prop, but not both.
"defaultValue",
"showCount",
"count",
"classes",
"htmlSize",
"styles",
"classNames",
"onClear"
]);
return /* @__PURE__ */ React.createElement("input", _extends$2({
autoComplete
}, otherProps, {
onChange: onInternalChange,
onFocus: handleFocus,
onBlur: handleBlur,
onKeyDown: handleKeyDown,
onKeyUp: handleKeyUp,
className: cls(prefixCls, _defineProperty({}, "".concat(prefixCls, "-disabled"), disabled), classNames === null || classNames === void 0 ? void 0 : classNames.input),
style: styles2 === null || styles2 === void 0 ? void 0 : styles2.input,
ref: inputRef,
size: htmlSize,
type: type4,
onCompositionStart: function onCompositionStart(e2) {
compositionRef.current = true;
_onCompositionStart === null || _onCompositionStart === void 0 || _onCompositionStart(e2);
},
onCompositionEnd: onInternalCompositionEnd
}));
};
var getSuffix = function getSuffix2() {
var hasMaxLength = Number(mergedMax) > 0;
if (suffix || countConfig.show) {
var dataCount = countConfig.showFormatter ? countConfig.showFormatter({
value: formatValue,
count: valueLength,
maxLength: mergedMax
}) : "".concat(valueLength).concat(hasMaxLength ? " / ".concat(mergedMax) : "");
return /* @__PURE__ */ React.createElement(React.Fragment, null, countConfig.show && /* @__PURE__ */ React.createElement("span", {
className: cls("".concat(prefixCls, "-show-count-suffix"), _defineProperty({}, "".concat(prefixCls, "-show-count-has-suffix"), !!suffix), classNames === null || classNames === void 0 ? void 0 : classNames.count),
style: _objectSpread2$1({}, styles2 === null || styles2 === void 0 ? void 0 : styles2.count)
}, dataCount), suffix);
}
return null;
};
return /* @__PURE__ */ React.createElement(BaseInput, _extends$2({}, rest, {
prefixCls,
className: cls(className, outOfRangeCls),
handleReset,
value: formatValue,
focused,
triggerFocus: focus,
suffix: getSuffix(),
disabled,
classes,
classNames,
styles: styles2
}), getInputElement());
});
const Group$4 = (props) => {
const {
getPrefixCls,
direction
} = reactExports.useContext(ConfigContext);
const {
prefixCls: customizePrefixCls,
className
} = props;
const prefixCls = getPrefixCls("input-group", customizePrefixCls);
const inputPrefixCls = getPrefixCls("input");
const [wrapCSSVar, hashId] = useStyle$8(inputPrefixCls);
const cls$1 = cls(prefixCls, {
[`${prefixCls}-lg`]: props.size === "large",
[`${prefixCls}-sm`]: props.size === "small",
[`${prefixCls}-compact`]: props.compact,
[`${prefixCls}-rtl`]: direction === "rtl"
}, hashId, className);
const formItemContext = reactExports.useContext(FormItemInputContext);
const groupFormItemContext = reactExports.useMemo(() => Object.assign(Object.assign({}, formItemContext), {
isFormItemInput: false
}), [formItemContext]);
return wrapCSSVar(/* @__PURE__ */ reactExports.createElement("span", {
className: cls$1,
style: props.style,
onMouseEnter: props.onMouseEnter,
onMouseLeave: props.onMouseLeave,
onFocus: props.onFocus,
onBlur: props.onBlur
}, /* @__PURE__ */ reactExports.createElement(FormItemInputContext.Provider, {
value: groupFormItemContext
}, props.children)));
};
const getAllowClear = (allowClear) => {
let mergedAllowClear;
if (typeof allowClear === "object" && (allowClear === null || allowClear === void 0 ? void 0 : allowClear.clearIcon)) {
mergedAllowClear = allowClear;
} else if (allowClear) {
mergedAllowClear = {
clearIcon: /* @__PURE__ */ React.createElement(RefIcon$l, null)
};
}
return mergedAllowClear;
};
function useRemovePasswordTimeout(inputRef, triggerOnMount) {
const removePasswordTimeoutRef = reactExports.useRef([]);
const removePasswordTimeout = () => {
removePasswordTimeoutRef.current.push(setTimeout(() => {
var _a2, _b2, _c2, _d;
if (((_a2 = inputRef.current) === null || _a2 === void 0 ? void 0 : _a2.input) && ((_b2 = inputRef.current) === null || _b2 === void 0 ? void 0 : _b2.input.getAttribute("type")) === "password" && ((_c2 = inputRef.current) === null || _c2 === void 0 ? void 0 : _c2.input.hasAttribute("value"))) {
(_d = inputRef.current) === null || _d === void 0 ? void 0 : _d.input.removeAttribute("value");
}
}));
};
reactExports.useEffect(() => {
if (triggerOnMount) {
removePasswordTimeout();
}
return () => removePasswordTimeoutRef.current.forEach((timer) => {
if (timer) {
clearTimeout(timer);
}
});
}, []);
return removePasswordTimeout;
}
function hasPrefixSuffix(props) {
return !!(props.prefix || props.suffix || props.allowClear || props.showCount);
}
var __rest$d = function(s, e2) {
var t2 = {};
for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0) t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i])) t2[p2[i]] = s[p2[i]];
}
return t2;
};
function triggerFocus(element, option) {
if (!element) {
return;
}
element.focus(option);
const {
cursor
} = option || {};
if (cursor) {
const len2 = element.value.length;
switch (cursor) {
case "start":
element.setSelectionRange(0, 0);
break;
case "end":
element.setSelectionRange(len2, len2);
break;
default:
element.setSelectionRange(0, len2);
}
}
}
const Input$1 = /* @__PURE__ */ reactExports.forwardRef((props, ref) => {
var _a2;
const {
prefixCls: customizePrefixCls,
bordered = true,
status: customStatus,
size: customSize,
disabled: customDisabled,
onBlur,
onFocus,
suffix,
allowClear,
addonAfter,
addonBefore,
className,
style: style2,
styles: styles2,
rootClassName,
onChange,
classNames: classes,
variant: customVariant
} = props, rest = __rest$d(props, ["prefixCls", "bordered", "status", "size", "disabled", "onBlur", "onFocus", "suffix", "allowClear", "addonAfter", "addonBefore", "className", "style", "styles", "rootClassName", "onChange", "classNames", "variant"]);
const {
getPrefixCls,
direction,
input
} = React.useContext(ConfigContext);
const prefixCls = getPrefixCls("input", customizePrefixCls);
const inputRef = reactExports.useRef(null);
const rootCls = useCSSVarCls(prefixCls);
const [wrapCSSVar, hashId, cssVarCls] = useStyle$8(prefixCls, rootCls);
const {
compactSize,
compactItemClassnames
} = useCompactItemContext(prefixCls, direction);
const mergedSize = useSize((ctx) => {
var _a22;
return (_a22 = customSize !== null && customSize !== void 0 ? customSize : compactSize) !== null && _a22 !== void 0 ? _a22 : ctx;
});
const disabled = React.useContext(DisabledContext);
const mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;
const {
status: contextStatus,
hasFeedback,
feedbackIcon
} = reactExports.useContext(FormItemInputContext);
const mergedStatus = getMergedStatus(contextStatus, customStatus);
const inputHasPrefixSuffix = hasPrefixSuffix(props) || !!hasFeedback;
reactExports.useRef(inputHasPrefixSuffix);
const removePasswordTimeout = useRemovePasswordTimeout(inputRef, true);
const handleBlur = (e2) => {
removePasswordTimeout();
onBlur === null || onBlur === void 0 ? void 0 : onBlur(e2);
};
const handleFocus = (e2) => {
removePasswordTimeout();
onFocus === null || onFocus === void 0 ? void 0 : onFocus(e2);
};
const handleChange = (e2) => {
removePasswordTimeout();
onChange === null || onChange === void 0 ? void 0 : onChange(e2);
};
const suffixNode = (hasFeedback || suffix) && /* @__PURE__ */ React.createElement(React.Fragment, null, suffix, hasFeedback && feedbackIcon);
const mergedAllowClear = getAllowClear(allowClear !== null && allowClear !== void 0 ? allowClear : input === null || input === void 0 ? void 0 : input.allowClear);
const [variant, enableVariantCls] = useVariant("input", customVariant, bordered);
return wrapCSSVar(/* @__PURE__ */ React.createElement(Input$2, Object.assign({
ref: composeRef(ref, inputRef),
prefixCls,
autoComplete: input === null || input === void 0 ? void 0 : input.autoComplete
}, rest, {
disabled: mergedDisabled,
onBlur: handleBlur,
onFocus: handleFocus,
style: Object.assign(Object.assign({}, input === null || input === void 0 ? void 0 : input.style), style2),
styles: Object.assign(Object.assign({}, input === null || input === void 0 ? void 0 : input.styles), styles2),
suffix: suffixNode,
allowClear: mergedAllowClear,
className: cls(className, rootClassName, cssVarCls, rootCls, compactItemClassnames, input === null || input === void 0 ? void 0 : input.className),
onChange: handleChange,
addonBefore: addonBefore && /* @__PURE__ */ React.createElement(ContextIsolator, {
form: true,
space: true
}, addonBefore),
addonAfter: addonAfter && /* @__PURE__ */ React.createElement(ContextIsolator, {
form: true,
space: true
}, addonAfter),
classNames: Object.assign(Object.assign(Object.assign({}, classes), input === null || input === void 0 ? void 0 : input.classNames), {
input: cls({
[`${prefixCls}-sm`]: mergedSize === "small",
[`${prefixCls}-lg`]: mergedSize === "large",
[`${prefixCls}-rtl`]: direction === "rtl"
}, classes === null || classes === void 0 ? void 0 : classes.input, (_a2 = input === null || input === void 0 ? void 0 : input.classNames) === null || _a2 === void 0 ? void 0 : _a2.input, hashId),
variant: cls({
[`${prefixCls}-${variant}`]: enableVariantCls
}, getStatusClassNames(prefixCls, mergedStatus)),
affixWrapper: cls({
[`${prefixCls}-affix-wrapper-sm`]: mergedSize === "small",
[`${prefixCls}-affix-wrapper-lg`]: mergedSize === "large",
[`${prefixCls}-affix-wrapper-rtl`]: direction === "rtl"
}, hashId),
wrapper: cls({
[`${prefixCls}-group-rtl`]: direction === "rtl"
}, hashId),
groupWrapper: cls({
[`${prefixCls}-group-wrapper-sm`]: mergedSize === "small",
[`${prefixCls}-group-wrapper-lg`]: mergedSize === "large",
[`${prefixCls}-group-wrapper-rtl`]: direction === "rtl",
[`${prefixCls}-group-wrapper-${variant}`]: enableVariantCls
}, getStatusClassNames(`${prefixCls}-group-wrapper`, mergedStatus, hasFeedback), hashId)
})
})));
});
const genOTPStyle = (token2) => {
const {
componentCls,
paddingXS
} = token2;
return {
[componentCls]: {
display: "inline-flex",
alignItems: "center",
flexWrap: "nowrap",
columnGap: paddingXS,
"&-rtl": {
direction: "rtl"
},
[`${componentCls}-input`]: {
textAlign: "center",
paddingInline: token2.paddingXXS
},
// ================= Size =================
[`&${componentCls}-sm ${componentCls}-input`]: {
paddingInline: token2.calc(token2.paddingXXS).div(2).equal()
},
[`&${componentCls}-lg ${componentCls}-input`]: {
paddingInline: token2.paddingXS
}
}
};
};
const useStyle$5 = genStyleHooks(["Input", "OTP"], (token2) => {
const inputToken = merge$1(token2, initInputToken(token2));
return [genOTPStyle(inputToken)];
}, initComponentToken$1);
var __rest$c = function(s, e2) {
var t2 = {};
for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0) t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i])) t2[p2[i]] = s[p2[i]];
}
return t2;
};
const OTPInput = /* @__PURE__ */ reactExports.forwardRef((props, ref) => {
const {
value,
onChange,
onActiveChange,
index: index2,
mask
} = props, restProps = __rest$c(props, ["value", "onChange", "onActiveChange", "index", "mask"]);
const internalValue = value && typeof mask === "string" ? mask : value;
const onInternalChange = (e2) => {
onChange(index2, e2.target.value);
};
const inputRef = reactExports.useRef(null);
reactExports.useImperativeHandle(ref, () => inputRef.current);
const syncSelection = () => {
wrapperRaf(() => {
var _a2;
const inputEle = (_a2 = inputRef.current) === null || _a2 === void 0 ? void 0 : _a2.input;
if (document.activeElement === inputEle && inputEle) {
inputEle.select();
}
});
};
const onInternalKeyDown = (_ref) => {
let {
key
} = _ref;
if (key === "ArrowLeft") {
onActiveChange(index2 - 1);
} else if (key === "ArrowRight") {
onActiveChange(index2 + 1);
}
syncSelection();
};
const onInternalKeyUp = (e2) => {
if (e2.key === "Backspace" && !value) {
onActiveChange(index2 - 1);
}
syncSelection();
};
return /* @__PURE__ */ reactExports.createElement(Input$1, Object.assign({
type: mask === true ? "password" : "text"
}, restProps, {
ref: inputRef,
value: internalValue,
onInput: onInternalChange,
onFocus: syncSelection,
onKeyDown: onInternalKeyDown,
onKeyUp: onInternalKeyUp,
onMouseDown: syncSelection,
onMouseUp: syncSelection
}));
});
var __rest$b = function(s, e2) {
var t2 = {};
for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0) t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i])) t2[p2[i]] = s[p2[i]];
}
return t2;
};
function strToArr(str) {
return (str || "").split("");
}
const OTP = /* @__PURE__ */ reactExports.forwardRef((props, ref) => {
const {
prefixCls: customizePrefixCls,
length: length2 = 6,
size: customSize,
defaultValue,
value,
onChange,
formatter,
variant,
disabled,
status: customStatus,
autoFocus,
mask,
type: type4
} = props, restProps = __rest$b(props, ["prefixCls", "length", "size", "defaultValue", "value", "onChange", "formatter", "variant", "disabled", "status", "autoFocus", "mask", "type"]);
const {
getPrefixCls,
direction
} = reactExports.useContext(ConfigContext);
const prefixCls = getPrefixCls("otp", customizePrefixCls);
const domAttrs = pickAttrs(restProps, {
aria: true,
data: true,
attr: true
});
const rootCls = useCSSVarCls(prefixCls);
const [wrapCSSVar, hashId, cssVarCls] = useStyle$5(prefixCls, rootCls);
const mergedSize = useSize((ctx) => customSize !== null && customSize !== void 0 ? customSize : ctx);
const formContext = reactExports.useContext(FormItemInputContext);
const mergedStatus = getMergedStatus(formContext.status, customStatus);
const proxyFormContext = reactExports.useMemo(() => Object.assign(Object.assign({}, formContext), {
status: mergedStatus,
hasFeedback: false,
feedbackIcon: null
}), [formContext, mergedStatus]);
const containerRef = reactExports.useRef(null);
const refs = reactExports.useRef({});
reactExports.useImperativeHandle(ref, () => ({
focus: () => {
var _a2;
(_a2 = refs.current[0]) === null || _a2 === void 0 ? void 0 : _a2.focus();
},
blur: () => {
var _a2;
for (let i = 0; i < length2; i += 1) {
(_a2 = refs.current[i]) === null || _a2 === void 0 ? void 0 : _a2.blur();
}
},
nativeElement: containerRef.current
}));
const internalFormatter = (txt) => formatter ? formatter(txt) : txt;
const [valueCells, setValueCells] = reactExports.useState(strToArr(internalFormatter(defaultValue || "")));
reactExports.useEffect(() => {
if (value !== void 0) {
setValueCells(strToArr(value));
}
}, [value]);
const triggerValueCellsChange = useEvent((nextValueCells) => {
setValueCells(nextValueCells);
if (onChange && nextValueCells.length === length2 && nextValueCells.every((c2) => c2) && nextValueCells.some((c2, index2) => valueCells[index2] !== c2)) {
onChange(nextValueCells.join(""));
}
});
const patchValue = useEvent((index2, txt) => {
let nextCells = _toConsumableArray(valueCells);
for (let i = 0; i < index2; i += 1) {
if (!nextCells[i]) {
nextCells[i] = "";
}
}
if (txt.length <= 1) {
nextCells[index2] = txt;
} else {
nextCells = nextCells.slice(0, index2).concat(strToArr(txt));
}
nextCells = nextCells.slice(0, length2);
for (let i = nextCells.length - 1; i >= 0; i -= 1) {
if (nextCells[i]) {
break;
}
nextCells.pop();
}
const formattedValue = internalFormatter(nextCells.map((c2) => c2 || " ").join(""));
nextCells = strToArr(formattedValue).map((c2, i) => {
if (c2 === " " && !nextCells[i]) {
return nextCells[i];
}
return c2;
});
return nextCells;
});
const onInputChange = (index2, txt) => {
var _a2;
const nextCells = patchValue(index2, txt);
const nextIndex = Math.min(index2 + txt.length, length2 - 1);
if (nextIndex !== index2) {
(_a2 = refs.current[nextIndex]) === null || _a2 === void 0 ? void 0 : _a2.focus();
}
triggerValueCellsChange(nextCells);
};
const onInputActiveChange = (nextIndex) => {
var _a2;
(_a2 = refs.current[nextIndex]) === null || _a2 === void 0 ? void 0 : _a2.focus();
};
const inputSharedProps = {
variant,
disabled,
status: mergedStatus,
mask,
type: type4
};
return wrapCSSVar(/* @__PURE__ */ reactExports.createElement("div", Object.assign({}, domAttrs, {
ref: containerRef,
className: cls(prefixCls, {
[`${prefixCls}-sm`]: mergedSize === "small",
[`${prefixCls}-lg`]: mergedSize === "large",
[`${prefixCls}-rtl`]: direction === "rtl"
}, cssVarCls, hashId)
}), /* @__PURE__ */ reactExports.createElement(FormItemInputContext.Provider, {
value: proxyFormContext
}, Array.from({
length: length2
}).map((_, index2) => {
const key = `otp-${index2}`;
const singleValue = valueCells[index2] || "";
return /* @__PURE__ */ reactExports.createElement(OTPInput, Object.assign({
ref: (inputEle) => {
refs.current[index2] = inputEle;
},
key,
index: index2,
size: mergedSize,
htmlSize: 1,
className: `${prefixCls}-input`,
onChange: onInputChange,
value: singleValue,
onActiveChange: onInputActiveChange,
autoFocus: index2 === 0 && autoFocus
}, inputSharedProps));
}))));
});
var __rest$a = function(s, e2) {
var t2 = {};
for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0) t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i])) t2[p2[i]] = s[p2[i]];
}
return t2;
};
const defaultIconRender = (visible) => visible ? /* @__PURE__ */ reactExports.createElement(RefIcon$c, null) : /* @__PURE__ */ reactExports.createElement(RefIcon$d, null);
const actionMap = {
click: "onClick",
hover: "onMouseOver"
};
const Password = /* @__PURE__ */ reactExports.forwardRef((props, ref) => {
const {
disabled: customDisabled,
action = "click",
visibilityToggle = true,
iconRender = defaultIconRender
} = props;
const disabled = reactExports.useContext(DisabledContext);
const mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;
const visibilityControlled = typeof visibilityToggle === "object" && visibilityToggle.visible !== void 0;
const [visible, setVisible] = reactExports.useState(() => visibilityControlled ? visibilityToggle.visible : false);
const inputRef = reactExports.useRef(null);
reactExports.useEffect(() => {
if (visibilityControlled) {
setVisible(visibilityToggle.visible);
}
}, [visibilityControlled, visibilityToggle]);
const removePasswordTimeout = useRemovePasswordTimeout(inputRef);
const onVisibleChange = () => {
if (mergedDisabled) {
return;
}
if (visible) {
removePasswordTimeout();
}
setVisible((prevState) => {
var _a2;
const newState = !prevState;
if (typeof visibilityToggle === "object") {
(_a2 = visibilityToggle.onVisibleChange) === null || _a2 === void 0 ? void 0 : _a2.call(visibilityToggle, newState);
}
return newState;
});
};
const getIcon2 = (prefixCls2) => {
const iconTrigger = actionMap[action] || "";
const icon = iconRender(visible);
const iconProps = {
[iconTrigger]: onVisibleChange,
className: `${prefixCls2}-icon`,
key: "passwordIcon",
onMouseDown: (e2) => {
e2.preventDefault();
},
onMouseUp: (e2) => {
e2.preventDefault();
}
};
return /* @__PURE__ */ reactExports.cloneElement(/* @__PURE__ */ reactExports.isValidElement(icon) ? icon : /* @__PURE__ */ reactExports.createElement("span", null, icon), iconProps);
};
const {
className,
prefixCls: customizePrefixCls,
inputPrefixCls: customizeInputPrefixCls,
size
} = props, restProps = __rest$a(props, ["className", "prefixCls", "inputPrefixCls", "size"]);
const {
getPrefixCls
} = reactExports.useContext(ConfigContext);
const inputPrefixCls = getPrefixCls("input", customizeInputPrefixCls);
const prefixCls = getPrefixCls("input-password", customizePrefixCls);
const suffixIcon = visibilityToggle && getIcon2(prefixCls);
const inputClassName = cls(prefixCls, className, {
[`${prefixCls}-${size}`]: !!size
});
const omittedProps = Object.assign(Object.assign({}, omit(restProps, ["suffix", "iconRender", "visibilityToggle"])), {
type: visible ? "text" : "password",
className: inputClassName,
prefixCls: inputPrefixCls,
suffix: suffixIcon
});
if (size) {
omittedProps.size = size;
}
return /* @__PURE__ */ reactExports.createElement(Input$1, Object.assign({
ref: composeRef(ref, inputRef)
}, omittedProps));
});
var __rest$9 = function(s, e2) {
var t2 = {};
for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0) t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i])) t2[p2[i]] = s[p2[i]];
}
return t2;
};
const Search = /* @__PURE__ */ reactExports.forwardRef((props, ref) => {
const {
prefixCls: customizePrefixCls,
inputPrefixCls: customizeInputPrefixCls,
className,
size: customizeSize,
suffix,
enterButton = false,
addonAfter,
loading,
disabled,
onSearch: customOnSearch,
onChange: customOnChange,
onCompositionStart,
onCompositionEnd
} = props, restProps = __rest$9(props, ["prefixCls", "inputPrefixCls", "className", "size", "suffix", "enterButton", "addonAfter", "loading", "disabled", "onSearch", "onChange", "onCompositionStart", "onCompositionEnd"]);
const {
getPrefixCls,
direction
} = reactExports.useContext(ConfigContext);
const composedRef = reactExports.useRef(false);
const prefixCls = getPrefixCls("input-search", customizePrefixCls);
const inputPrefixCls = getPrefixCls("input", customizeInputPrefixCls);
const {
compactSize
} = useCompactItemContext(prefixCls, direction);
const size = useSize((ctx) => {
var _a2;
return (_a2 = customizeSize !== null && customizeSize !== void 0 ? customizeSize : compactSize) !== null && _a2 !== void 0 ? _a2 : ctx;
});
const inputRef = reactExports.useRef(null);
const onChange = (e2) => {
if ((e2 === null || e2 === void 0 ? void 0 : e2.target) && e2.type === "click" && customOnSearch) {
customOnSearch(e2.target.value, e2, {
source: "clear"
});
}
customOnChange === null || customOnChange === void 0 ? void 0 : customOnChange(e2);
};
const onMouseDown = (e2) => {
var _a2;
if (document.activeElement === ((_a2 = inputRef.current) === null || _a2 === void 0 ? void 0 : _a2.input)) {
e2.preventDefault();
}
};
const onSearch = (e2) => {
var _a2, _b2;
if (customOnSearch) {
customOnSearch((_b2 = (_a2 = inputRef.current) === null || _a2 === void 0 ? void 0 : _a2.input) === null || _b2 === void 0 ? void 0 : _b2.value, e2, {
source: "input"
});
}
};
const onPressEnter = (e2) => {
if (composedRef.current || loading) {
return;
}
onSearch(e2);
};
const searchIcon = typeof enterButton === "boolean" ? /* @__PURE__ */ reactExports.createElement(RefIcon, null) : null;
const btnClassName = `${prefixCls}-button`;
let button;
const enterButtonAsElement = enterButton || {};
const isAntdButton = enterButtonAsElement.type && enterButtonAsElement.type.__ANT_BUTTON === true;
if (isAntdButton || enterButtonAsElement.type === "button") {
button = cloneElement(enterButtonAsElement, Object.assign({
onMouseDown,
onClick: (e2) => {
var _a2, _b2;
(_b2 = (_a2 = enterButtonAsElement === null || enterButtonAsElement === void 0 ? void 0 : enterButtonAsElement.props) === null || _a2 === void 0 ? void 0 : _a2.onClick) === null || _b2 === void 0 ? void 0 : _b2.call(_a2, e2);
onSearch(e2);
},
key: "enterButton"
}, isAntdButton ? {
className: btnClassName,
size
} : {}));
} else {
button = /* @__PURE__ */ reactExports.createElement(Button$1, {
className: btnClassName,
type: enterButton ? "primary" : void 0,
size,
disabled,
key: "enterButton",
onMouseDown,
onClick: onSearch,
loading,
icon: searchIcon
}, enterButton);
}
if (addonAfter) {
button = [button, cloneElement(addonAfter, {
key: "addonAfter"
})];
}
const cls$1 = cls(prefixCls, {
[`${prefixCls}-rtl`]: direction === "rtl",
[`${prefixCls}-${size}`]: !!size,
[`${prefixCls}-with-button`]: !!enterButton
}, className);
const handleOnCompositionStart = (e2) => {
composedRef.current = true;
onCompositionStart === null || onCompositionStart === void 0 ? void 0 : onCompositionStart(e2);
};
const handleOnCompositionEnd = (e2) => {
composedRef.current = false;
onCompositionEnd === null || onCompositionEnd === void 0 ? void 0 : onCompositionEnd(e2);
};
return /* @__PURE__ */ reactExports.createElement(Input$1, Object.assign({
ref: composeRef(inputRef, ref),
onPressEnter
}, restProps, {
size,
onCompositionStart: handleOnCompositionStart,
onCompositionEnd: handleOnCompositionEnd,
prefixCls: inputPrefixCls,
addonAfter: button,
suffix,
onChange,
className: cls$1,
disabled
}));
});
var HIDDEN_TEXTAREA_STYLE = "\n min-height:0 !important;\n max-height:none !important;\n height:0 !important;\n visibility:hidden !important;\n overflow:hidden !important;\n position:absolute !important;\n z-index:-1000 !important;\n top:0 !important;\n right:0 !important;\n pointer-events: none !important;\n";
var SIZING_STYLE = ["letter-spacing", "line-height", "padding-top", "padding-bottom", "font-family", "font-weight", "font-size", "font-variant", "text-rendering", "text-transform", "width", "text-indent", "padding-left", "padding-right", "border-width", "box-sizing", "word-break", "white-space"];
var computedStyleCache = {};
var hiddenTextarea;
function calculateNodeStyling(node2) {
var useCache2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
var nodeRef = node2.getAttribute("id") || node2.getAttribute("data-reactid") || node2.getAttribute("name");
if (useCache2 && computedStyleCache[nodeRef]) {
return computedStyleCache[nodeRef];
}
var style2 = window.getComputedStyle(node2);
var boxSizing = style2.getPropertyValue("box-sizing") || style2.getPropertyValue("-moz-box-sizing") || style2.getPropertyValue("-webkit-box-sizing");
var paddingSize = parseFloat(style2.getPropertyValue("padding-bottom")) + parseFloat(style2.getPropertyValue("padding-top"));
var borderSize = parseFloat(style2.getPropertyValue("border-bottom-width")) + parseFloat(style2.getPropertyValue("border-top-width"));
var sizingStyle = SIZING_STYLE.map(function(name) {
return "".concat(name, ":").concat(style2.getPropertyValue(name));
}).join(";");
var nodeInfo = {
sizingStyle,
paddingSize,
borderSize,
boxSizing
};
if (useCache2 && nodeRef) {
computedStyleCache[nodeRef] = nodeInfo;
}
return nodeInfo;
}
function calculateAutoSizeStyle(uiTextNode) {
var useCache2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
var minRows = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null;
var maxRows = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : null;
if (!hiddenTextarea) {
hiddenTextarea = document.createElement("textarea");
hiddenTextarea.setAttribute("tab-index", "-1");
hiddenTextarea.setAttribute("aria-hidden", "true");
hiddenTextarea.setAttribute("name", "hiddenTextarea");
document.body.appendChild(hiddenTextarea);
}
if (uiTextNode.getAttribute("wrap")) {
hiddenTextarea.setAttribute("wrap", uiTextNode.getAttribute("wrap"));
} else {
hiddenTextarea.removeAttribute("wrap");
}
var _calculateNodeStyling = calculateNodeStyling(uiTextNode, useCache2), paddingSize = _calculateNodeStyling.paddingSize, borderSize = _calculateNodeStyling.borderSize, boxSizing = _calculateNodeStyling.boxSizing, sizingStyle = _calculateNodeStyling.sizingStyle;
hiddenTextarea.setAttribute("style", "".concat(sizingStyle, ";").concat(HIDDEN_TEXTAREA_STYLE));
hiddenTextarea.value = uiTextNode.value || uiTextNode.placeholder || "";
var minHeight = void 0;
var maxHeight = void 0;
var overflowY;
var height = hiddenTextarea.scrollHeight;
if (boxSizing === "border-box") {
height += borderSize;
} else if (boxSizing === "content-box") {
height -= paddingSize;
}
if (minRows !== null || maxRows !== null) {
hiddenTextarea.value = " ";
var singleRowHeight = hiddenTextarea.scrollHeight - paddingSize;
if (minRows !== null) {
minHeight = singleRowHeight * minRows;
if (boxSizing === "border-box") {
minHeight = minHeight + paddingSize + borderSize;
}
height = Math.max(minHeight, height);
}
if (maxRows !== null) {
maxHeight = singleRowHeight * maxRows;
if (boxSizing === "border-box") {
maxHeight = maxHeight + paddingSize + borderSize;
}
overflowY = height > maxHeight ? "" : "hidden";
height = Math.min(maxHeight, height);
}
}
var style2 = {
height,
overflowY,
resize: "none"
};
if (minHeight) {
style2.minHeight = minHeight;
}
if (maxHeight) {
style2.maxHeight = maxHeight;
}
return style2;
}
var _excluded$b = ["prefixCls", "defaultValue", "value", "autoSize", "onResize", "className", "style", "disabled", "onChange", "onInternalAutoSize"];
var RESIZE_START = 0;
var RESIZE_MEASURING = 1;
var RESIZE_STABLE = 2;
var ResizableTextArea = /* @__PURE__ */ reactExports.forwardRef(function(props, ref) {
var _ref = props, prefixCls = _ref.prefixCls, defaultValue = _ref.defaultValue, value = _ref.value, autoSize = _ref.autoSize, onResize2 = _ref.onResize, className = _ref.className, style2 = _ref.style, disabled = _ref.disabled, onChange = _ref.onChange;
_ref.onInternalAutoSize;
var restProps = _objectWithoutProperties(_ref, _excluded$b);
var _useMergedState = useMergedState(defaultValue, {
value,
postState: function postState(val) {
return val !== null && val !== void 0 ? val : "";
}
}), _useMergedState2 = _slicedToArray(_useMergedState, 2), mergedValue = _useMergedState2[0], setMergedValue = _useMergedState2[1];
var onInternalChange = function onInternalChange2(event) {
setMergedValue(event.target.value);
onChange === null || onChange === void 0 || onChange(event);
};
var textareaRef = reactExports.useRef();
reactExports.useImperativeHandle(ref, function() {
return {
textArea: textareaRef.current
};
});
var _React$useMemo = reactExports.useMemo(function() {
if (autoSize && _typeof$2(autoSize) === "object") {
return [autoSize.minRows, autoSize.maxRows];
}
return [];
}, [autoSize]), _React$useMemo2 = _slicedToArray(_React$useMemo, 2), minRows = _React$useMemo2[0], maxRows = _React$useMemo2[1];
var needAutoSize = !!autoSize;
var fixFirefoxAutoScroll = function fixFirefoxAutoScroll2() {
try {
if (document.activeElement === textareaRef.current) {
var _textareaRef$current = textareaRef.current, selectionStart = _textareaRef$current.selectionStart, selectionEnd = _textareaRef$current.selectionEnd, scrollTop = _textareaRef$current.scrollTop;
textareaRef.current.setSelectionRange(selectionStart, selectionEnd);
textareaRef.current.scrollTop = scrollTop;
}
} catch (e2) {
}
};
var _React$useState = reactExports.useState(RESIZE_STABLE), _React$useState2 = _slicedToArray(_React$useState, 2), resizeState = _React$useState2[0], setResizeState = _React$useState2[1];
var _React$useState3 = reactExports.useState(), _React$useState4 = _slicedToArray(_React$useState3, 2), autoSizeStyle = _React$useState4[0], setAutoSizeStyle = _React$useState4[1];
var startResize = function startResize2() {
setResizeState(RESIZE_START);
};
useLayoutEffect$1(function() {
if (needAutoSize) {
startResize();
}
}, [value, minRows, maxRows, needAutoSize]);
useLayoutEffect$1(function() {
if (resizeState === RESIZE_START) {
setResizeState(RESIZE_MEASURING);
} else if (resizeState === RESIZE_MEASURING) {
var textareaStyles = calculateAutoSizeStyle(textareaRef.current, false, minRows, maxRows);
setResizeState(RESIZE_STABLE);
setAutoSizeStyle(textareaStyles);
} else {
fixFirefoxAutoScroll();
}
}, [resizeState]);
var resizeRafRef = reactExports.useRef();
var cleanRaf = function cleanRaf2() {
wrapperRaf.cancel(resizeRafRef.current);
};
var onInternalResize = function onInternalResize2(size) {
if (resizeState === RESIZE_STABLE) {
onResize2 === null || onResize2 === void 0 || onResize2(size);
if (autoSize) {
cleanRaf();
resizeRafRef.current = wrapperRaf(function() {
startResize();
});
}
}
};
reactExports.useEffect(function() {
return cleanRaf;
}, []);
var mergedAutoSizeStyle = needAutoSize ? autoSizeStyle : null;
var mergedStyle = _objectSpread2$1(_objectSpread2$1({}, style2), mergedAutoSizeStyle);
if (resizeState === RESIZE_START || resizeState === RESIZE_MEASURING) {
mergedStyle.overflowY = "hidden";
mergedStyle.overflowX = "hidden";
}
return /* @__PURE__ */ reactExports.createElement(RefResizeObserver, {
onResize: onInternalResize,
disabled: !(autoSize || onResize2)
}, /* @__PURE__ */ reactExports.createElement("textarea", _extends$2({}, restProps, {
ref: textareaRef,
style: mergedStyle,
className: cls(prefixCls, className, _defineProperty({}, "".concat(prefixCls, "-disabled"), disabled)),
disabled,
value: mergedValue,
onChange: onInternalChange
})));
});
var _excluded$a = ["defaultValue", "value", "onFocus", "onBlur", "onChange", "allowClear", "maxLength", "onCompositionStart", "onCompositionEnd", "suffix", "prefixCls", "showCount", "count", "className", "style", "disabled", "hidden", "classNames", "styles", "onResize", "onClear", "onPressEnter", "readOnly", "autoSize", "onKeyDown"];
var TextArea$1 = /* @__PURE__ */ React.forwardRef(function(_ref, ref) {
var _countConfig$max;
var defaultValue = _ref.defaultValue, customValue = _ref.value, onFocus = _ref.onFocus, onBlur = _ref.onBlur, onChange = _ref.onChange, allowClear = _ref.allowClear, maxLength = _ref.maxLength, onCompositionStart = _ref.onCompositionStart, onCompositionEnd = _ref.onCompositionEnd, suffix = _ref.suffix, _ref$prefixCls = _ref.prefixCls, prefixCls = _ref$prefixCls === void 0 ? "rc-textarea" : _ref$prefixCls, showCount = _ref.showCount, count2 = _ref.count, className = _ref.className, style2 = _ref.style, disabled = _ref.disabled, hidden = _ref.hidden, classNames = _ref.classNames, styles2 = _ref.styles, onResize2 = _ref.onResize, onClear = _ref.onClear, onPressEnter = _ref.onPressEnter, readOnly = _ref.readOnly, autoSize = _ref.autoSize, onKeyDown2 = _ref.onKeyDown, rest = _objectWithoutProperties(_ref, _excluded$a);
var _useMergedState = useMergedState(defaultValue, {
value: customValue,
defaultValue
}), _useMergedState2 = _slicedToArray(_useMergedState, 2), value = _useMergedState2[0], setValue = _useMergedState2[1];
var formatValue = value === void 0 || value === null ? "" : String(value);
var _React$useState = React.useState(false), _React$useState2 = _slicedToArray(_React$useState, 2), focused = _React$useState2[0], setFocused = _React$useState2[1];
var compositionRef = React.useRef(false);
var _React$useState3 = React.useState(null), _React$useState4 = _slicedToArray(_React$useState3, 2), textareaResized = _React$useState4[0], setTextareaResized = _React$useState4[1];
var holderRef = reactExports.useRef(null);
var resizableTextAreaRef = reactExports.useRef(null);
var getTextArea = function getTextArea2() {
var _resizableTextAreaRef;
return (_resizableTextAreaRef = resizableTextAreaRef.current) === null || _resizableTextAreaRef === void 0 ? void 0 : _resizableTextAreaRef.textArea;
};
var focus = function focus2() {
getTextArea().focus();
};
reactExports.useImperativeHandle(ref, function() {
var _holderRef$current;
return {
resizableTextArea: resizableTextAreaRef.current,
focus,
blur: function blur() {
getTextArea().blur();
},
nativeElement: ((_holderRef$current = holderRef.current) === null || _holderRef$current === void 0 ? void 0 : _holderRef$current.nativeElement) || getTextArea()
};
});
reactExports.useEffect(function() {
setFocused(function(prev2) {
return !disabled && prev2;
});
}, [disabled]);
var _React$useState5 = React.useState(null), _React$useState6 = _slicedToArray(_React$useState5, 2), selection = _React$useState6[0], setSelection = _React$useState6[1];
React.useEffect(function() {
if (selection) {
var _getTextArea;
(_getTextArea = getTextArea()).setSelectionRange.apply(_getTextArea, _toConsumableArray(selection));
}
}, [selection]);
var countConfig = useCount(count2, showCount);
var mergedMax = (_countConfig$max = countConfig.max) !== null && _countConfig$max !== void 0 ? _countConfig$max : maxLength;
var hasMaxLength = Number(mergedMax) > 0;
var valueLength = countConfig.strategy(formatValue);
var isOutOfRange = !!mergedMax && valueLength > mergedMax;
var triggerChange = function triggerChange2(e2, currentValue) {
var cutValue = currentValue;
if (!compositionRef.current && countConfig.exceedFormatter && countConfig.max && countConfig.strategy(currentValue) > countConfig.max) {
cutValue = countConfig.exceedFormatter(currentValue, {
max: countConfig.max
});
if (currentValue !== cutValue) {
setSelection([getTextArea().selectionStart || 0, getTextArea().selectionEnd || 0]);
}
}
setValue(cutValue);
resolveOnChange(e2.currentTarget, e2, onChange, cutValue);
};
var onInternalCompositionStart = function onInternalCompositionStart2(e2) {
compositionRef.current = true;
onCompositionStart === null || onCompositionStart === void 0 || onCompositionStart(e2);
};
var onInternalCompositionEnd = function onInternalCompositionEnd2(e2) {
compositionRef.current = false;
triggerChange(e2, e2.currentTarget.value);
onCompositionEnd === null || onCompositionEnd === void 0 || onCompositionEnd(e2);
};
var onInternalChange = function onInternalChange2(e2) {
triggerChange(e2, e2.target.value);
};
var handleKeyDown = function handleKeyDown2(e2) {
if (e2.key === "Enter" && onPressEnter) {
onPressEnter(e2);
}
onKeyDown2 === null || onKeyDown2 === void 0 || onKeyDown2(e2);
};
var handleFocus = function handleFocus2(e2) {
setFocused(true);
onFocus === null || onFocus === void 0 || onFocus(e2);
};
var handleBlur = function handleBlur2(e2) {
setFocused(false);
onBlur === null || onBlur === void 0 || onBlur(e2);
};
var handleReset = function handleReset2(e2) {
setValue("");
focus();
resolveOnChange(getTextArea(), e2, onChange);
};
var suffixNode = suffix;
var dataCount;
if (countConfig.show) {
if (countConfig.showFormatter) {
dataCount = countConfig.showFormatter({
value: formatValue,
count: valueLength,
maxLength: mergedMax
});
} else {
dataCount = "".concat(valueLength).concat(hasMaxLength ? " / ".concat(mergedMax) : "");
}
suffixNode = /* @__PURE__ */ React.createElement(React.Fragment, null, suffixNode, /* @__PURE__ */ React.createElement("span", {
className: cls("".concat(prefixCls, "-data-count"), classNames === null || classNames === void 0 ? void 0 : classNames.count),
style: styles2 === null || styles2 === void 0 ? void 0 : styles2.count
}, dataCount));
}
var handleResize = function handleResize2(size) {
var _getTextArea2;
onResize2 === null || onResize2 === void 0 || onResize2(size);
if ((_getTextArea2 = getTextArea()) !== null && _getTextArea2 !== void 0 && _getTextArea2.style.height) {
setTextareaResized(true);
}
};
var isPureTextArea = !autoSize && !showCount && !allowClear;
return /* @__PURE__ */ React.createElement(BaseInput, {
ref: holderRef,
value: formatValue,
allowClear,
handleReset,
suffix: suffixNode,
prefixCls,
classNames: _objectSpread2$1(_objectSpread2$1({}, classNames), {}, {
affixWrapper: cls(classNames === null || classNames === void 0 ? void 0 : classNames.affixWrapper, _defineProperty(_defineProperty({}, "".concat(prefixCls, "-show-count"), showCount), "".concat(prefixCls, "-textarea-allow-clear"), allowClear))
}),
disabled,
focused,
className: cls(className, isOutOfRange && "".concat(prefixCls, "-out-of-range")),
style: _objectSpread2$1(_objectSpread2$1({}, style2), textareaResized && !isPureTextArea ? {
height: "auto"
} : {}),
dataAttrs: {
affixWrapper: {
"data-count": typeof dataCount === "string" ? dataCount : void 0
}
},
hidden,
readOnly,
onClear
}, /* @__PURE__ */ React.createElement(ResizableTextArea, _extends$2({}, rest, {
autoSize,
maxLength,
onKeyDown: handleKeyDown,
onChange: onInternalChange,
onFocus: handleFocus,
onBlur: handleBlur,
onCompositionStart: onInternalCompositionStart,
onCompositionEnd: onInternalCompositionEnd,
className: cls(classNames === null || classNames === void 0 ? void 0 : classNames.textarea),
style: _objectSpread2$1(_objectSpread2$1({}, styles2 === null || styles2 === void 0 ? void 0 : styles2.textarea), {}, {
resize: style2 === null || style2 === void 0 ? void 0 : style2.resize
}),
disabled,
prefixCls,
onResize: handleResize,
ref: resizableTextAreaRef,
readOnly
})));
});
var __rest$8 = function(s, e2) {
var t2 = {};
for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0) t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i])) t2[p2[i]] = s[p2[i]];
}
return t2;
};
const TextArea = /* @__PURE__ */ reactExports.forwardRef((props, ref) => {
var _a2, _b2;
const {
prefixCls: customizePrefixCls,
bordered = true,
size: customizeSize,
disabled: customDisabled,
status: customStatus,
allowClear,
classNames: classes,
rootClassName,
className,
style: style2,
styles: styles2,
variant: customVariant
} = props, rest = __rest$8(props, ["prefixCls", "bordered", "size", "disabled", "status", "allowClear", "classNames", "rootClassName", "className", "style", "styles", "variant"]);
const {
getPrefixCls,
direction,
textArea
} = reactExports.useContext(ConfigContext);
const mergedSize = useSize(customizeSize);
const disabled = reactExports.useContext(DisabledContext);
const mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;
const {
status: contextStatus,
hasFeedback,
feedbackIcon
} = reactExports.useContext(FormItemInputContext);
const mergedStatus = getMergedStatus(contextStatus, customStatus);
const innerRef = reactExports.useRef(null);
reactExports.useImperativeHandle(ref, () => {
var _a22;
return {
resizableTextArea: (_a22 = innerRef.current) === null || _a22 === void 0 ? void 0 : _a22.resizableTextArea,
focus: (option) => {
var _a3, _b22;
triggerFocus((_b22 = (_a3 = innerRef.current) === null || _a3 === void 0 ? void 0 : _a3.resizableTextArea) === null || _b22 === void 0 ? void 0 : _b22.textArea, option);
},
blur: () => {
var _a3;
return (_a3 = innerRef.current) === null || _a3 === void 0 ? void 0 : _a3.blur();
}
};
});
const prefixCls = getPrefixCls("input", customizePrefixCls);
const rootCls = useCSSVarCls(prefixCls);
const [wrapCSSVar, hashId, cssVarCls] = useStyle$8(prefixCls, rootCls);
const [variant, enableVariantCls] = useVariant("textArea", customVariant, bordered);
const mergedAllowClear = getAllowClear(allowClear !== null && allowClear !== void 0 ? allowClear : textArea === null || textArea === void 0 ? void 0 : textArea.allowClear);
return wrapCSSVar(/* @__PURE__ */ reactExports.createElement(TextArea$1, Object.assign({
autoComplete: textArea === null || textArea === void 0 ? void 0 : textArea.autoComplete
}, rest, {
style: Object.assign(Object.assign({}, textArea === null || textArea === void 0 ? void 0 : textArea.style), style2),
styles: Object.assign(Object.assign({}, textArea === null || textArea === void 0 ? void 0 : textArea.styles), styles2),
disabled: mergedDisabled,
allowClear: mergedAllowClear,
className: cls(cssVarCls, rootCls, className, rootClassName, textArea === null || textArea === void 0 ? void 0 : textArea.className),
classNames: Object.assign(Object.assign(Object.assign({}, classes), textArea === null || textArea === void 0 ? void 0 : textArea.classNames), {
textarea: cls({
[`${prefixCls}-sm`]: mergedSize === "small",
[`${prefixCls}-lg`]: mergedSize === "large"
}, hashId, classes === null || classes === void 0 ? void 0 : classes.textarea, (_a2 = textArea === null || textArea === void 0 ? void 0 : textArea.classNames) === null || _a2 === void 0 ? void 0 : _a2.textarea),
variant: cls({
[`${prefixCls}-${variant}`]: enableVariantCls
}, getStatusClassNames(prefixCls, mergedStatus)),
affixWrapper: cls(`${prefixCls}-textarea-affix-wrapper`, {
[`${prefixCls}-affix-wrapper-rtl`]: direction === "rtl",
[`${prefixCls}-affix-wrapper-sm`]: mergedSize === "small",
[`${prefixCls}-affix-wrapper-lg`]: mergedSize === "large",
[`${prefixCls}-textarea-show-count`]: props.showCount || ((_b2 = props.count) === null || _b2 === void 0 ? void 0 : _b2.show)
}, hashId)
}),
prefixCls,
suffix: hasFeedback && /* @__PURE__ */ reactExports.createElement("span", {
className: `${prefixCls}-textarea-suffix`
}, feedbackIcon),
ref: innerRef
})));
});
const Input = Input$1;
Input.Group = Group$4;
Input.Search = Search;
Input.TextArea = TextArea;
Input.Password = Password;
Input.OTP = OTP;
function isPresetSize(size) {
return ["small", "middle", "large"].includes(size);
}
function isValidGapNumber(size) {
if (!size) {
return false;
}
return typeof size === "number" && !Number.isNaN(size);
}
const SpaceContext = /* @__PURE__ */ React.createContext({
latestIndex: 0
});
const SpaceContextProvider = SpaceContext.Provider;
const Item = (_ref) => {
let {
className,
index: index2,
children,
split: split2,
style: style2
} = _ref;
const {
latestIndex
} = reactExports.useContext(SpaceContext);
if (children === null || children === void 0) {
return null;
}
return /* @__PURE__ */ reactExports.createElement(reactExports.Fragment, null, /* @__PURE__ */ reactExports.createElement("div", {
className,
style: style2
}, children), index2 < latestIndex && split2 && /* @__PURE__ */ reactExports.createElement("span", {
className: `${className}-split`
}, split2));
};
var __rest$7 = function(s, e2) {
var t2 = {};
for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0) t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i])) t2[p2[i]] = s[p2[i]];
}
return t2;
};
const InternalSpace = /* @__PURE__ */ reactExports.forwardRef((props, ref) => {
var _a2, _b2, _c2;
const {
getPrefixCls,
space,
direction: directionConfig
} = reactExports.useContext(ConfigContext);
const {
size = (_a2 = space === null || space === void 0 ? void 0 : space.size) !== null && _a2 !== void 0 ? _a2 : "small",
align,
className,
rootClassName,
children,
direction = "horizontal",
prefixCls: customizePrefixCls,
split: split2,
style: style2,
wrap = false,
classNames: customClassNames,
styles: styles2
} = props, otherProps = __rest$7(props, ["size", "align", "className", "rootClassName", "children", "direction", "prefixCls", "split", "style", "wrap", "classNames", "styles"]);
const [horizontalSize, verticalSize] = Array.isArray(size) ? size : [size, size];
const isPresetVerticalSize = isPresetSize(verticalSize);
const isPresetHorizontalSize = isPresetSize(horizontalSize);
const isValidVerticalSize = isValidGapNumber(verticalSize);
const isValidHorizontalSize = isValidGapNumber(horizontalSize);
const childNodes = toArray$4(children, {
keepEmpty: true
});
const mergedAlign = align === void 0 && direction === "horizontal" ? "center" : align;
const prefixCls = getPrefixCls("space", customizePrefixCls);
const [wrapCSSVar, hashId, cssVarCls] = useStyle$g(prefixCls);
const cls$1 = cls(prefixCls, space === null || space === void 0 ? void 0 : space.className, hashId, `${prefixCls}-${direction}`, {
[`${prefixCls}-rtl`]: directionConfig === "rtl",
[`${prefixCls}-align-${mergedAlign}`]: mergedAlign,
[`${prefixCls}-gap-row-${verticalSize}`]: isPresetVerticalSize,
[`${prefixCls}-gap-col-${horizontalSize}`]: isPresetHorizontalSize
}, className, rootClassName, cssVarCls);
const itemClassName = cls(`${prefixCls}-item`, (_b2 = customClassNames === null || customClassNames === void 0 ? void 0 : customClassNames.item) !== null && _b2 !== void 0 ? _b2 : (_c2 = space === null || space === void 0 ? void 0 : space.classNames) === null || _c2 === void 0 ? void 0 : _c2.item);
let latestIndex = 0;
const nodes = childNodes.map((child, i) => {
var _a22, _b22;
if (child !== null && child !== void 0) {
latestIndex = i;
}
const key = (child === null || child === void 0 ? void 0 : child.key) || `${itemClassName}-${i}`;
return /* @__PURE__ */ reactExports.createElement(Item, {
className: itemClassName,
key,
index: i,
split: split2,
style: (_a22 = styles2 === null || styles2 === void 0 ? void 0 : styles2.item) !== null && _a22 !== void 0 ? _a22 : (_b22 = space === null || space === void 0 ? void 0 : space.styles) === null || _b22 === void 0 ? void 0 : _b22.item
}, child);
});
const spaceContext = reactExports.useMemo(() => ({
latestIndex
}), [latestIndex]);
if (childNodes.length === 0) {
return null;
}
const gapStyle = {};
if (wrap) {
gapStyle.flexWrap = "wrap";
}
if (!isPresetHorizontalSize && isValidHorizontalSize) {
gapStyle.columnGap = horizontalSize;
}
if (!isPresetVerticalSize && isValidVerticalSize) {
gapStyle.rowGap = verticalSize;
}
return wrapCSSVar(/* @__PURE__ */ reactExports.createElement("div", Object.assign({
ref,
className: cls$1,
style: Object.assign(Object.assign(Object.assign({}, gapStyle), space === null || space === void 0 ? void 0 : space.style), style2)
}, otherProps), /* @__PURE__ */ reactExports.createElement(SpaceContextProvider, {
value: spaceContext
}, nodes)));
});
const Space = InternalSpace;
Space.Compact = Compact;
var __rest$6 = function(s, e2) {
var t2 = {};
for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0) t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i])) t2[p2[i]] = s[p2[i]];
}
return t2;
};
const DropdownButton = (props) => {
const {
getPopupContainer: getContextPopupContainer,
getPrefixCls,
direction
} = reactExports.useContext(ConfigContext);
const {
prefixCls: customizePrefixCls,
type: type4 = "default",
danger,
disabled,
loading,
onClick,
htmlType,
children,
className,
menu,
arrow,
autoFocus,
overlay,
trigger: trigger2,
align,
open: open2,
onOpenChange,
placement,
getPopupContainer,
href,
icon = /* @__PURE__ */ reactExports.createElement(RefIcon$f, null),
title,
buttonsRender = (buttons) => buttons,
mouseEnterDelay,
mouseLeaveDelay,
overlayClassName,
overlayStyle,
destroyPopupOnHide,
dropdownRender
} = props, restProps = __rest$6(props, ["prefixCls", "type", "danger", "disabled", "loading", "onClick", "htmlType", "children", "className", "menu", "arrow", "autoFocus", "overlay", "trigger", "align", "open", "onOpenChange", "placement", "getPopupContainer", "href", "icon", "title", "buttonsRender", "mouseEnterDelay", "mouseLeaveDelay", "overlayClassName", "overlayStyle", "destroyPopupOnHide", "dropdownRender"]);
const prefixCls = getPrefixCls("dropdown", customizePrefixCls);
const buttonPrefixCls = `${prefixCls}-button`;
const dropdownProps = {
menu,
arrow,
autoFocus,
align,
disabled,
trigger: disabled ? [] : trigger2,
onOpenChange,
getPopupContainer: getPopupContainer || getContextPopupContainer,
mouseEnterDelay,
mouseLeaveDelay,
overlayClassName,
overlayStyle,
destroyPopupOnHide,
dropdownRender
};
const {
compactSize,
compactItemClassnames
} = useCompactItemContext(prefixCls, direction);
const classes = cls(buttonPrefixCls, compactItemClassnames, className);
if ("overlay" in props) {
dropdownProps.overlay = overlay;
}
if ("open" in props) {
dropdownProps.open = open2;
}
if ("placement" in props) {
dropdownProps.placement = placement;
} else {
dropdownProps.placement = direction === "rtl" ? "bottomLeft" : "bottomRight";
}
const leftButton = /* @__PURE__ */ reactExports.createElement(Button$1, {
type: type4,
danger,
disabled,
loading,
onClick,
htmlType,
href,
title
}, children);
const rightButton = /* @__PURE__ */ reactExports.createElement(Button$1, {
type: type4,
danger,
icon
});
const [leftButtonToRender, rightButtonToRender] = buttonsRender([leftButton, rightButton]);
return /* @__PURE__ */ reactExports.createElement(Space.Compact, Object.assign({
className: classes,
size: compactSize,
block: true
}, restProps), leftButtonToRender, /* @__PURE__ */ reactExports.createElement(Dropdown$1, Object.assign({}, dropdownProps), rightButtonToRender));
};
DropdownButton.__ANT_BUTTON = true;
const Dropdown = Dropdown$1;
Dropdown.Button = DropdownButton;
function getOffset(node2) {
var box2 = node2.getBoundingClientRect();
var docElem = document.documentElement;
return {
left: box2.left + (window.pageXOffset || docElem.scrollLeft) - (docElem.clientLeft || document.body.clientLeft || 0),
top: box2.top + (window.pageYOffset || docElem.scrollTop) - (docElem.clientTop || document.body.clientTop || 0)
};
}
function addEventListenerWrap(target, eventType, cb2, option) {
var callback = ReactDOM.unstable_batchedUpdates ? function run(e2) {
ReactDOM.unstable_batchedUpdates(cb2, e2);
} : cb2;
if (target !== null && target !== void 0 && target.addEventListener) {
target.addEventListener(eventType, callback, option);
}
return {
remove: function remove() {
if (target !== null && target !== void 0 && target.removeEventListener) {
target.removeEventListener(eventType, callback, option);
}
}
};
}
const extendsObject = function() {
const result = Object.assign({}, arguments.length <= 0 ? void 0 : arguments[0]);
for (let i = 1; i < arguments.length; i++) {
const obj = i < 0 || arguments.length <= i ? void 0 : arguments[i];
if (obj) {
Object.keys(obj).forEach((key) => {
const val = obj[key];
if (val !== void 0) {
result[key] = val;
}
});
}
}
return result;
};
var locale$4 = {
// Options
items_per_page: "条/页",
jump_to: "跳至",
jump_to_confirm: "确定",
page: "页",
// Pagination
prev_page: "上一页",
next_page: "下一页",
prev_5: "向前 5 页",
next_5: "向后 5 页",
prev_3: "向前 3 页",
next_3: "向后 3 页",
page_size: "页码"
};
var defaultPageSizeOptions = ["10", "20", "50", "100"];
var Options = function Options2(props) {
var _props$pageSizeOption = props.pageSizeOptions, pageSizeOptions = _props$pageSizeOption === void 0 ? defaultPageSizeOptions : _props$pageSizeOption, locale2 = props.locale, changeSize = props.changeSize, pageSize = props.pageSize, goButton = props.goButton, quickGo = props.quickGo, rootPrefixCls = props.rootPrefixCls, Select2 = props.selectComponentClass, selectPrefixCls = props.selectPrefixCls, disabled = props.disabled, buildOptionText = props.buildOptionText, showSizeChanger = props.showSizeChanger;
var _React$useState = React.useState(""), _React$useState2 = _slicedToArray(_React$useState, 2), goInputText = _React$useState2[0], setGoInputText = _React$useState2[1];
var getValidValue = function getValidValue2() {
return !goInputText || Number.isNaN(goInputText) ? void 0 : Number(goInputText);
};
var mergeBuildOptionText = typeof buildOptionText === "function" ? buildOptionText : function(value) {
return "".concat(value, " ").concat(locale2.items_per_page);
};
var changeSizeHandle = function changeSizeHandle2(value, option) {
changeSize === null || changeSize === void 0 || changeSize(Number(value));
if (_typeof$2(showSizeChanger) === "object") {
var _showSizeChanger$onCh;
(_showSizeChanger$onCh = showSizeChanger.onChange) === null || _showSizeChanger$onCh === void 0 || _showSizeChanger$onCh.call(showSizeChanger, value, option);
}
};
var handleChange = function handleChange2(e2) {
setGoInputText(e2.target.value);
};
var handleBlur = function handleBlur2(e2) {
if (goButton || goInputText === "") {
return;
}
setGoInputText("");
if (e2.relatedTarget && (e2.relatedTarget.className.indexOf("".concat(rootPrefixCls, "-item-link")) >= 0 || e2.relatedTarget.className.indexOf("".concat(rootPrefixCls, "-item")) >= 0)) {
return;
}
quickGo === null || quickGo === void 0 || quickGo(getValidValue());
};
var go = function go2(e2) {
if (goInputText === "") {
return;
}
if (e2.keyCode === KeyCode.ENTER || e2.type === "click") {
setGoInputText("");
quickGo === null || quickGo === void 0 || quickGo(getValidValue());
}
};
var getPageSizeOptions = function getPageSizeOptions2() {
if (pageSizeOptions.some(function(option) {
return option.toString() === pageSize.toString();
})) {
return pageSizeOptions;
}
return pageSizeOptions.concat([pageSize.toString()]).sort(function(a, b2) {
var numberA = Number.isNaN(Number(a)) ? 0 : Number(a);
var numberB = Number.isNaN(Number(b2)) ? 0 : Number(b2);
return numberA - numberB;
});
};
var prefixCls = "".concat(rootPrefixCls, "-options");
if (!showSizeChanger && !quickGo) {
return null;
}
var changeSelect = null;
var goInput = null;
var gotoButton = null;
if (showSizeChanger && Select2) {
var _ref = _typeof$2(showSizeChanger) === "object" ? showSizeChanger : {}, showSizeChangerOptions = _ref.options, showSizeChangerClassName = _ref.className;
var options = showSizeChangerOptions ? void 0 : getPageSizeOptions().map(function(opt, i) {
return /* @__PURE__ */ React.createElement(Select2.Option, {
key: i,
value: opt.toString()
}, mergeBuildOptionText(opt));
});
changeSelect = /* @__PURE__ */ React.createElement(Select2, _extends$2({
disabled,
prefixCls: selectPrefixCls,
showSearch: false,
optionLabelProp: showSizeChangerOptions ? "label" : "children",
popupMatchSelectWidth: false,
value: (pageSize || pageSizeOptions[0]).toString(),
getPopupContainer: function getPopupContainer(triggerNode) {
return triggerNode.parentNode;
},
"aria-label": locale2.page_size,
defaultOpen: false
}, _typeof$2(showSizeChanger) === "object" ? showSizeChanger : null, {
className: cls("".concat(prefixCls, "-size-changer"), showSizeChangerClassName),
options: showSizeChangerOptions,
onChange: changeSizeHandle
}), options);
}
if (quickGo) {
if (goButton) {
gotoButton = typeof goButton === "boolean" ? /* @__PURE__ */ React.createElement("button", {
type: "button",
onClick: go,
onKeyUp: go,
disabled,
className: "".concat(prefixCls, "-quick-jumper-button")
}, locale2.jump_to_confirm) : /* @__PURE__ */ React.createElement("span", {
onClick: go,
onKeyUp: go
}, goButton);
}
goInput = /* @__PURE__ */ React.createElement("div", {
className: "".concat(prefixCls, "-quick-jumper")
}, locale2.jump_to, /* @__PURE__ */ React.createElement("input", {
disabled,
type: "text",
value: goInputText,
onChange: handleChange,
onKeyUp: go,
onBlur: handleBlur,
"aria-label": locale2.page
}), locale2.page, gotoButton);
}
return /* @__PURE__ */ React.createElement("li", {
className: prefixCls
}, changeSelect, goInput);
};
var Pager = function Pager2(props) {
var rootPrefixCls = props.rootPrefixCls, page = props.page, active = props.active, className = props.className, showTitle = props.showTitle, onClick = props.onClick, onKeyPress = props.onKeyPress, itemRender = props.itemRender;
var prefixCls = "".concat(rootPrefixCls, "-item");
var cls$1 = cls(prefixCls, "".concat(prefixCls, "-").concat(page), _defineProperty(_defineProperty({}, "".concat(prefixCls, "-active"), active), "".concat(prefixCls, "-disabled"), !page), className);
var handleClick = function handleClick2() {
onClick(page);
};
var handleKeyPress = function handleKeyPress2(e2) {
onKeyPress(e2, onClick, page);
};
var pager = itemRender(page, "page", /* @__PURE__ */ React.createElement("a", {
rel: "nofollow"
}, page));
return pager ? /* @__PURE__ */ React.createElement("li", {
title: showTitle ? String(page) : null,
className: cls$1,
onClick: handleClick,
onKeyDown: handleKeyPress,
tabIndex: 0
}, pager) : null;
};
var defaultItemRender = function defaultItemRender2(page, type4, element) {
return element;
};
function noop$2() {
}
function isInteger(v4) {
var value = Number(v4);
return typeof value === "number" && !Number.isNaN(value) && isFinite(value) && Math.floor(value) === value;
}
function calculatePage(p2, pageSize, total) {
var _pageSize = typeof p2 === "undefined" ? pageSize : p2;
return Math.floor((total - 1) / _pageSize) + 1;
}
var Pagination$1 = function Pagination2(props) {
var _props$prefixCls = props.prefixCls, prefixCls = _props$prefixCls === void 0 ? "rc-pagination" : _props$prefixCls, _props$selectPrefixCl = props.selectPrefixCls, selectPrefixCls = _props$selectPrefixCl === void 0 ? "rc-select" : _props$selectPrefixCl, className = props.className, selectComponentClass = props.selectComponentClass, currentProp = props.current, _props$defaultCurrent = props.defaultCurrent, defaultCurrent = _props$defaultCurrent === void 0 ? 1 : _props$defaultCurrent, _props$total = props.total, total = _props$total === void 0 ? 0 : _props$total, pageSizeProp = props.pageSize, _props$defaultPageSiz = props.defaultPageSize, defaultPageSize = _props$defaultPageSiz === void 0 ? 10 : _props$defaultPageSiz, _props$onChange = props.onChange, onChange = _props$onChange === void 0 ? noop$2 : _props$onChange, hideOnSinglePage = props.hideOnSinglePage, align = props.align, _props$showPrevNextJu = props.showPrevNextJumpers, showPrevNextJumpers = _props$showPrevNextJu === void 0 ? true : _props$showPrevNextJu, showQuickJumper = props.showQuickJumper, showLessItems = props.showLessItems, _props$showTitle = props.showTitle, showTitle = _props$showTitle === void 0 ? true : _props$showTitle, _props$onShowSizeChan = props.onShowSizeChange, onShowSizeChange = _props$onShowSizeChan === void 0 ? noop$2 : _props$onShowSizeChan, _props$locale = props.locale, locale2 = _props$locale === void 0 ? locale$4 : _props$locale, style2 = props.style, _props$totalBoundaryS = props.totalBoundaryShowSizeChanger, totalBoundaryShowSizeChanger = _props$totalBoundaryS === void 0 ? 50 : _props$totalBoundaryS, disabled = props.disabled, simple = props.simple, showTotal = props.showTotal, _props$showSizeChange = props.showSizeChanger, showSizeChanger = _props$showSizeChange === void 0 ? total > totalBoundaryShowSizeChanger : _props$showSizeChange, pageSizeOptions = props.pageSizeOptions, _props$itemRender = props.itemRender, itemRender = _props$itemRender === void 0 ? defaultItemRender : _props$itemRender, jumpPrevIcon = props.jumpPrevIcon, jumpNextIcon = props.jumpNextIcon, prevIcon = props.prevIcon, nextIcon = props.nextIcon;
var paginationRef = React.useRef(null);
var _useMergedState = useMergedState(10, {
value: pageSizeProp,
defaultValue: defaultPageSize
}), _useMergedState2 = _slicedToArray(_useMergedState, 2), pageSize = _useMergedState2[0], setPageSize = _useMergedState2[1];
var _useMergedState3 = useMergedState(1, {
value: currentProp,
defaultValue: defaultCurrent,
postState: function postState(c2) {
return Math.max(1, Math.min(c2, calculatePage(void 0, pageSize, total)));
}
}), _useMergedState4 = _slicedToArray(_useMergedState3, 2), current = _useMergedState4[0], setCurrent = _useMergedState4[1];
var _React$useState = React.useState(current), _React$useState2 = _slicedToArray(_React$useState, 2), internalInputVal = _React$useState2[0], setInternalInputVal = _React$useState2[1];
reactExports.useEffect(function() {
setInternalInputVal(current);
}, [current]);
var jumpPrevPage = Math.max(1, current - (showLessItems ? 3 : 5));
var jumpNextPage = Math.min(calculatePage(void 0, pageSize, total), current + (showLessItems ? 3 : 5));
function getItemIcon(icon, label) {
var iconNode = icon || /* @__PURE__ */ React.createElement("button", {
type: "button",
"aria-label": label,
className: "".concat(prefixCls, "-item-link")
});
if (typeof icon === "function") {
iconNode = /* @__PURE__ */ React.createElement(icon, _objectSpread2$1({}, props));
}
return iconNode;
}
function getValidValue(e2) {
var inputValue = e2.target.value;
var allPages2 = calculatePage(void 0, pageSize, total);
var value;
if (inputValue === "") {
value = inputValue;
} else if (Number.isNaN(Number(inputValue))) {
value = internalInputVal;
} else if (inputValue >= allPages2) {
value = allPages2;
} else {
value = Number(inputValue);
}
return value;
}
function isValid2(page) {
return isInteger(page) && page !== current && isInteger(total) && total > 0;
}
var shouldDisplayQuickJumper = total > pageSize ? showQuickJumper : false;
function handleKeyDown(event) {
if (event.keyCode === KeyCode.UP || event.keyCode === KeyCode.DOWN) {
event.preventDefault();
}
}
function handleKeyUp(event) {
var value = getValidValue(event);
if (value !== internalInputVal) {
setInternalInputVal(value);
}
switch (event.keyCode) {
case KeyCode.ENTER:
handleChange(value);
break;
case KeyCode.UP:
handleChange(value - 1);
break;
case KeyCode.DOWN:
handleChange(value + 1);
break;
}
}
function handleBlur(event) {
handleChange(getValidValue(event));
}
function changePageSize(size) {
var newCurrent = calculatePage(size, pageSize, total);
var nextCurrent = current > newCurrent && newCurrent !== 0 ? newCurrent : current;
setPageSize(size);
setInternalInputVal(nextCurrent);
onShowSizeChange === null || onShowSizeChange === void 0 || onShowSizeChange(current, size);
setCurrent(nextCurrent);
onChange === null || onChange === void 0 || onChange(nextCurrent, size);
}
function handleChange(page) {
if (isValid2(page) && !disabled) {
var currentPage = calculatePage(void 0, pageSize, total);
var newPage = page;
if (page > currentPage) {
newPage = currentPage;
} else if (page < 1) {
newPage = 1;
}
if (newPage !== internalInputVal) {
setInternalInputVal(newPage);
}
setCurrent(newPage);
onChange === null || onChange === void 0 || onChange(newPage, pageSize);
return newPage;
}
return current;
}
var hasPrev = current > 1;
var hasNext = current < calculatePage(void 0, pageSize, total);
function prevHandle() {
if (hasPrev) handleChange(current - 1);
}
function nextHandle() {
if (hasNext) handleChange(current + 1);
}
function jumpPrevHandle() {
handleChange(jumpPrevPage);
}
function jumpNextHandle() {
handleChange(jumpNextPage);
}
function runIfEnter(event, callback) {
if (event.key === "Enter" || event.charCode === KeyCode.ENTER || event.keyCode === KeyCode.ENTER) {
for (var _len = arguments.length, restParams = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
restParams[_key - 2] = arguments[_key];
}
callback.apply(void 0, restParams);
}
}
function runIfEnterPrev(event) {
runIfEnter(event, prevHandle);
}
function runIfEnterNext(event) {
runIfEnter(event, nextHandle);
}
function runIfEnterJumpPrev(event) {
runIfEnter(event, jumpPrevHandle);
}
function runIfEnterJumpNext(event) {
runIfEnter(event, jumpNextHandle);
}
function renderPrev(prevPage2) {
var prevButton = itemRender(prevPage2, "prev", getItemIcon(prevIcon, "prev page"));
return /* @__PURE__ */ React.isValidElement(prevButton) ? /* @__PURE__ */ React.cloneElement(prevButton, {
disabled: !hasPrev
}) : prevButton;
}
function renderNext(nextPage2) {
var nextButton = itemRender(nextPage2, "next", getItemIcon(nextIcon, "next page"));
return /* @__PURE__ */ React.isValidElement(nextButton) ? /* @__PURE__ */ React.cloneElement(nextButton, {
disabled: !hasNext
}) : nextButton;
}
function handleGoTO(event) {
if (event.type === "click" || event.keyCode === KeyCode.ENTER) {
handleChange(internalInputVal);
}
}
var jumpPrev = null;
var dataOrAriaAttributeProps = pickAttrs(props, {
aria: true,
data: true
});
var totalText = showTotal && /* @__PURE__ */ React.createElement("li", {
className: "".concat(prefixCls, "-total-text")
}, showTotal(total, [total === 0 ? 0 : (current - 1) * pageSize + 1, current * pageSize > total ? total : current * pageSize]));
var jumpNext = null;
var allPages = calculatePage(void 0, pageSize, total);
if (hideOnSinglePage && total <= pageSize) {
return null;
}
var pagerList = [];
var pagerProps = {
rootPrefixCls: prefixCls,
onClick: handleChange,
onKeyPress: runIfEnter,
showTitle,
itemRender,
page: -1
};
var prevPage = current - 1 > 0 ? current - 1 : 0;
var nextPage = current + 1 < allPages ? current + 1 : allPages;
var goButton = showQuickJumper && showQuickJumper.goButton;
var isReadOnly = _typeof$2(simple) === "object" ? simple.readOnly : !simple;
var gotoButton = goButton;
var simplePager = null;
if (simple) {
if (goButton) {
if (typeof goButton === "boolean") {
gotoButton = /* @__PURE__ */ React.createElement("button", {
type: "button",
onClick: handleGoTO,
onKeyUp: handleGoTO
}, locale2.jump_to_confirm);
} else {
gotoButton = /* @__PURE__ */ React.createElement("span", {
onClick: handleGoTO,
onKeyUp: handleGoTO
}, goButton);
}
gotoButton = /* @__PURE__ */ React.createElement("li", {
title: showTitle ? "".concat(locale2.jump_to).concat(current, "/").concat(allPages) : null,
className: "".concat(prefixCls, "-simple-pager")
}, gotoButton);
}
simplePager = /* @__PURE__ */ React.createElement("li", {
title: showTitle ? "".concat(current, "/").concat(allPages) : null,
className: "".concat(prefixCls, "-simple-pager")
}, isReadOnly ? internalInputVal : /* @__PURE__ */ React.createElement("input", {
type: "text",
value: internalInputVal,
disabled,
onKeyDown: handleKeyDown,
onKeyUp: handleKeyUp,
onChange: handleKeyUp,
onBlur: handleBlur,
size: 3
}), /* @__PURE__ */ React.createElement("span", {
className: "".concat(prefixCls, "-slash")
}, "/"), allPages);
}
var pageBufferSize = showLessItems ? 1 : 2;
if (allPages <= 3 + pageBufferSize * 2) {
if (!allPages) {
pagerList.push(/* @__PURE__ */ React.createElement(Pager, _extends$2({}, pagerProps, {
key: "noPager",
page: 1,
className: "".concat(prefixCls, "-item-disabled")
})));
}
for (var i = 1; i <= allPages; i += 1) {
pagerList.push(/* @__PURE__ */ React.createElement(Pager, _extends$2({}, pagerProps, {
key: i,
page: i,
active: current === i
})));
}
} else {
var prevItemTitle = showLessItems ? locale2.prev_3 : locale2.prev_5;
var nextItemTitle = showLessItems ? locale2.next_3 : locale2.next_5;
var jumpPrevContent = itemRender(jumpPrevPage, "jump-prev", getItemIcon(jumpPrevIcon, "prev page"));
var jumpNextContent = itemRender(jumpNextPage, "jump-next", getItemIcon(jumpNextIcon, "next page"));
if (showPrevNextJumpers) {
jumpPrev = jumpPrevContent ? /* @__PURE__ */ React.createElement("li", {
title: showTitle ? prevItemTitle : null,
key: "prev",
onClick: jumpPrevHandle,
tabIndex: 0,
onKeyDown: runIfEnterJumpPrev,
className: cls("".concat(prefixCls, "-jump-prev"), _defineProperty({}, "".concat(prefixCls, "-jump-prev-custom-icon"), !!jumpPrevIcon))
}, jumpPrevContent) : null;
jumpNext = jumpNextContent ? /* @__PURE__ */ React.createElement("li", {
title: showTitle ? nextItemTitle : null,
key: "next",
onClick: jumpNextHandle,
tabIndex: 0,
onKeyDown: runIfEnterJumpNext,
className: cls("".concat(prefixCls, "-jump-next"), _defineProperty({}, "".concat(prefixCls, "-jump-next-custom-icon"), !!jumpNextIcon))
}, jumpNextContent) : null;
}
var left = Math.max(1, current - pageBufferSize);
var right = Math.min(current + pageBufferSize, allPages);
if (current - 1 <= pageBufferSize) {
right = 1 + pageBufferSize * 2;
}
if (allPages - current <= pageBufferSize) {
left = allPages - pageBufferSize * 2;
}
for (var _i = left; _i <= right; _i += 1) {
pagerList.push(/* @__PURE__ */ React.createElement(Pager, _extends$2({}, pagerProps, {
key: _i,
page: _i,
active: current === _i
})));
}
if (current - 1 >= pageBufferSize * 2 && current !== 1 + 2) {
pagerList[0] = /* @__PURE__ */ React.cloneElement(pagerList[0], {
className: cls("".concat(prefixCls, "-item-after-jump-prev"), pagerList[0].props.className)
});
pagerList.unshift(jumpPrev);
}
if (allPages - current >= pageBufferSize * 2 && current !== allPages - 2) {
var lastOne = pagerList[pagerList.length - 1];
pagerList[pagerList.length - 1] = /* @__PURE__ */ React.cloneElement(lastOne, {
className: cls("".concat(prefixCls, "-item-before-jump-next"), lastOne.props.className)
});
pagerList.push(jumpNext);
}
if (left !== 1) {
pagerList.unshift(/* @__PURE__ */ React.createElement(Pager, _extends$2({}, pagerProps, {
key: 1,
page: 1
})));
}
if (right !== allPages) {
pagerList.push(/* @__PURE__ */ React.createElement(Pager, _extends$2({}, pagerProps, {
key: allPages,
page: allPages
})));
}
}
var prev2 = renderPrev(prevPage);
if (prev2) {
var prevDisabled = !hasPrev || !allPages;
prev2 = /* @__PURE__ */ React.createElement("li", {
title: showTitle ? locale2.prev_page : null,
onClick: prevHandle,
tabIndex: prevDisabled ? null : 0,
onKeyDown: runIfEnterPrev,
className: cls("".concat(prefixCls, "-prev"), _defineProperty({}, "".concat(prefixCls, "-disabled"), prevDisabled)),
"aria-disabled": prevDisabled
}, prev2);
}
var next2 = renderNext(nextPage);
if (next2) {
var nextDisabled, nextTabIndex;
if (simple) {
nextDisabled = !hasNext;
nextTabIndex = hasPrev ? 0 : null;
} else {
nextDisabled = !hasNext || !allPages;
nextTabIndex = nextDisabled ? null : 0;
}
next2 = /* @__PURE__ */ React.createElement("li", {
title: showTitle ? locale2.next_page : null,
onClick: nextHandle,
tabIndex: nextTabIndex,
onKeyDown: runIfEnterNext,
className: cls("".concat(prefixCls, "-next"), _defineProperty({}, "".concat(prefixCls, "-disabled"), nextDisabled)),
"aria-disabled": nextDisabled
}, next2);
}
var cls$1 = cls(prefixCls, className, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "".concat(prefixCls, "-start"), align === "start"), "".concat(prefixCls, "-center"), align === "center"), "".concat(prefixCls, "-end"), align === "end"), "".concat(prefixCls, "-simple"), simple), "".concat(prefixCls, "-disabled"), disabled));
return /* @__PURE__ */ React.createElement("ul", _extends$2({
className: cls$1,
style: style2,
ref: paginationRef
}, dataOrAriaAttributeProps), totalText, prev2, simple ? simplePager : pagerList, next2, /* @__PURE__ */ React.createElement(Options, {
locale: locale2,
rootPrefixCls: prefixCls,
disabled,
selectComponentClass,
selectPrefixCls,
changeSize: changePageSize,
pageSize,
pageSizeOptions,
quickGo: shouldDisplayQuickJumper ? handleChange : null,
goButton: gotoButton,
showSizeChanger
}));
};
const MiniSelect = (props) => /* @__PURE__ */ reactExports.createElement(Select, Object.assign({}, props, {
showSearch: true,
size: "small"
}));
const MiddleSelect = (props) => /* @__PURE__ */ reactExports.createElement(Select, Object.assign({}, props, {
showSearch: true,
size: "middle"
}));
MiniSelect.Option = Select.Option;
MiddleSelect.Option = Select.Option;
const genPaginationDisabledStyle = (token2) => {
const {
componentCls
} = token2;
return {
[`${componentCls}-disabled`]: {
"&, &:hover": {
cursor: "not-allowed",
[`${componentCls}-item-link`]: {
color: token2.colorTextDisabled,
cursor: "not-allowed"
}
},
"&:focus-visible": {
cursor: "not-allowed",
[`${componentCls}-item-link`]: {
color: token2.colorTextDisabled,
cursor: "not-allowed"
}
}
},
[`&${componentCls}-disabled`]: {
cursor: "not-allowed",
[`${componentCls}-item`]: {
cursor: "not-allowed",
"&:hover, &:active": {
backgroundColor: "transparent"
},
a: {
color: token2.colorTextDisabled,
backgroundColor: "transparent",
border: "none",
cursor: "not-allowed"
},
"&-active": {
borderColor: token2.colorBorder,
backgroundColor: token2.itemActiveBgDisabled,
"&:hover, &:active": {
backgroundColor: token2.itemActiveBgDisabled
},
a: {
color: token2.itemActiveColorDisabled
}
}
},
[`${componentCls}-item-link`]: {
color: token2.colorTextDisabled,
cursor: "not-allowed",
"&:hover, &:active": {
backgroundColor: "transparent"
},
[`${componentCls}-simple&`]: {
backgroundColor: "transparent",
"&:hover, &:active": {
backgroundColor: "transparent"
}
}
},
[`${componentCls}-simple-pager`]: {
color: token2.colorTextDisabled
},
[`${componentCls}-jump-prev, ${componentCls}-jump-next`]: {
[`${componentCls}-item-link-icon`]: {
opacity: 0
},
[`${componentCls}-item-ellipsis`]: {
opacity: 1
}
}
},
[`&${componentCls}-simple`]: {
[`${componentCls}-prev, ${componentCls}-next`]: {
[`&${componentCls}-disabled ${componentCls}-item-link`]: {
"&:hover, &:active": {
backgroundColor: "transparent"
}
}
}
}
};
};
const genPaginationMiniStyle = (token2) => {
const {
componentCls
} = token2;
return {
[`&${componentCls}-mini ${componentCls}-total-text, &${componentCls}-mini ${componentCls}-simple-pager`]: {
height: token2.itemSizeSM,
lineHeight: unit$1(token2.itemSizeSM)
},
[`&${componentCls}-mini ${componentCls}-item`]: {
minWidth: token2.itemSizeSM,
height: token2.itemSizeSM,
margin: 0,
lineHeight: unit$1(token2.calc(token2.itemSizeSM).sub(2).equal())
},
[`&${componentCls}-mini:not(${componentCls}-disabled) ${componentCls}-item:not(${componentCls}-item-active)`]: {
backgroundColor: "transparent",
borderColor: "transparent",
"&:hover": {
backgroundColor: token2.colorBgTextHover
},
"&:active": {
backgroundColor: token2.colorBgTextActive
}
},
[`&${componentCls}-mini ${componentCls}-prev, &${componentCls}-mini ${componentCls}-next`]: {
minWidth: token2.itemSizeSM,
height: token2.itemSizeSM,
margin: 0,
lineHeight: unit$1(token2.itemSizeSM)
},
[`&${componentCls}-mini:not(${componentCls}-disabled)`]: {
[`${componentCls}-prev, ${componentCls}-next`]: {
[`&:hover ${componentCls}-item-link`]: {
backgroundColor: token2.colorBgTextHover
},
[`&:active ${componentCls}-item-link`]: {
backgroundColor: token2.colorBgTextActive
},
[`&${componentCls}-disabled:hover ${componentCls}-item-link`]: {
backgroundColor: "transparent"
}
}
},
[`
&${componentCls}-mini ${componentCls}-prev ${componentCls}-item-link,
&${componentCls}-mini ${componentCls}-next ${componentCls}-item-link
`]: {
backgroundColor: "transparent",
borderColor: "transparent",
"&::after": {
height: token2.itemSizeSM,
lineHeight: unit$1(token2.itemSizeSM)
}
},
[`&${componentCls}-mini ${componentCls}-jump-prev, &${componentCls}-mini ${componentCls}-jump-next`]: {
height: token2.itemSizeSM,
marginInlineEnd: 0,
lineHeight: unit$1(token2.itemSizeSM)
},
[`&${componentCls}-mini ${componentCls}-options`]: {
marginInlineStart: token2.paginationMiniOptionsMarginInlineStart,
"&-size-changer": {
top: token2.miniOptionsSizeChangerTop
},
"&-quick-jumper": {
height: token2.itemSizeSM,
lineHeight: unit$1(token2.itemSizeSM),
input: Object.assign(Object.assign({}, genInputSmallStyle(token2)), {
width: token2.paginationMiniQuickJumperInputWidth,
height: token2.controlHeightSM
})
}
}
};
};
const genPaginationSimpleStyle = (token2) => {
const {
componentCls
} = token2;
return {
[`
&${componentCls}-simple ${componentCls}-prev,
&${componentCls}-simple ${componentCls}-next
`]: {
height: token2.itemSizeSM,
lineHeight: unit$1(token2.itemSizeSM),
verticalAlign: "top",
[`${componentCls}-item-link`]: {
height: token2.itemSizeSM,
backgroundColor: "transparent",
border: 0,
"&:hover": {
backgroundColor: token2.colorBgTextHover
},
"&:active": {
backgroundColor: token2.colorBgTextActive
},
"&::after": {
height: token2.itemSizeSM,
lineHeight: unit$1(token2.itemSizeSM)
}
}
},
[`&${componentCls}-simple ${componentCls}-simple-pager`]: {
display: "inline-block",
height: token2.itemSizeSM,
marginInlineEnd: token2.marginXS,
input: {
boxSizing: "border-box",
height: "100%",
padding: `0 ${unit$1(token2.paginationItemPaddingInline)}`,
textAlign: "center",
backgroundColor: token2.itemInputBg,
border: `${unit$1(token2.lineWidth)} ${token2.lineType} ${token2.colorBorder}`,
borderRadius: token2.borderRadius,
outline: "none",
transition: `border-color ${token2.motionDurationMid}`,
color: "inherit",
"&:hover": {
borderColor: token2.colorPrimary
},
"&:focus": {
borderColor: token2.colorPrimaryHover,
boxShadow: `${unit$1(token2.inputOutlineOffset)} 0 ${unit$1(token2.controlOutlineWidth)} ${token2.controlOutline}`
},
"&[disabled]": {
color: token2.colorTextDisabled,
backgroundColor: token2.colorBgContainerDisabled,
borderColor: token2.colorBorder,
cursor: "not-allowed"
}
}
}
};
};
const genPaginationJumpStyle = (token2) => {
const {
componentCls
} = token2;
return {
[`${componentCls}-jump-prev, ${componentCls}-jump-next`]: {
outline: 0,
[`${componentCls}-item-container`]: {
position: "relative",
[`${componentCls}-item-link-icon`]: {
color: token2.colorPrimary,
fontSize: token2.fontSizeSM,
opacity: 0,
transition: `all ${token2.motionDurationMid}`,
"&-svg": {
top: 0,
insetInlineEnd: 0,
bottom: 0,
insetInlineStart: 0,
margin: "auto"
}
},
[`${componentCls}-item-ellipsis`]: {
position: "absolute",
top: 0,
insetInlineEnd: 0,
bottom: 0,
insetInlineStart: 0,
display: "block",
margin: "auto",
color: token2.colorTextDisabled,
letterSpacing: token2.paginationEllipsisLetterSpacing,
textAlign: "center",
textIndent: token2.paginationEllipsisTextIndent,
opacity: 1,
transition: `all ${token2.motionDurationMid}`
}
},
"&:hover": {
[`${componentCls}-item-link-icon`]: {
opacity: 1
},
[`${componentCls}-item-ellipsis`]: {
opacity: 0
}
}
},
[`
${componentCls}-prev,
${componentCls}-jump-prev,
${componentCls}-jump-next
`]: {
marginInlineEnd: token2.marginXS
},
[`
${componentCls}-prev,
${componentCls}-next,
${componentCls}-jump-prev,
${componentCls}-jump-next
`]: {
display: "inline-block",
minWidth: token2.itemSize,
height: token2.itemSize,
color: token2.colorText,
fontFamily: token2.fontFamily,
lineHeight: unit$1(token2.itemSize),
textAlign: "center",
verticalAlign: "middle",
listStyle: "none",
borderRadius: token2.borderRadius,
cursor: "pointer",
transition: `all ${token2.motionDurationMid}`
},
[`${componentCls}-prev, ${componentCls}-next`]: {
outline: 0,
button: {
color: token2.colorText,
cursor: "pointer",
userSelect: "none"
},
[`${componentCls}-item-link`]: {
display: "block",
width: "100%",
height: "100%",
padding: 0,
fontSize: token2.fontSizeSM,
textAlign: "center",
backgroundColor: "transparent",
border: `${unit$1(token2.lineWidth)} ${token2.lineType} transparent`,
borderRadius: token2.borderRadius,
outline: "none",
transition: `all ${token2.motionDurationMid}`
},
[`&:hover ${componentCls}-item-link`]: {
backgroundColor: token2.colorBgTextHover
},
[`&:active ${componentCls}-item-link`]: {
backgroundColor: token2.colorBgTextActive
},
[`&${componentCls}-disabled:hover`]: {
[`${componentCls}-item-link`]: {
backgroundColor: "transparent"
}
}
},
[`${componentCls}-slash`]: {
marginInlineEnd: token2.paginationSlashMarginInlineEnd,
marginInlineStart: token2.paginationSlashMarginInlineStart
},
[`${componentCls}-options`]: {
display: "inline-block",
marginInlineStart: token2.margin,
verticalAlign: "middle",
"&-size-changer": {
display: "inline-block",
width: "auto"
},
"&-quick-jumper": {
display: "inline-block",
height: token2.controlHeight,
marginInlineStart: token2.marginXS,
lineHeight: unit$1(token2.controlHeight),
verticalAlign: "top",
input: Object.assign(Object.assign(Object.assign({}, genBasicInputStyle(token2)), genBaseOutlinedStyle(token2, {
borderColor: token2.colorBorder,
hoverBorderColor: token2.colorPrimaryHover,
activeBorderColor: token2.colorPrimary,
activeShadow: token2.activeShadow
})), {
"&[disabled]": Object.assign({}, genDisabledStyle(token2)),
width: token2.calc(token2.controlHeightLG).mul(1.25).equal(),
height: token2.controlHeight,
boxSizing: "border-box",
margin: 0,
marginInlineStart: token2.marginXS,
marginInlineEnd: token2.marginXS
})
}
}
};
};
const genPaginationItemStyle = (token2) => {
const {
componentCls
} = token2;
return {
[`${componentCls}-item`]: {
display: "inline-block",
minWidth: token2.itemSize,
height: token2.itemSize,
marginInlineEnd: token2.marginXS,
fontFamily: token2.fontFamily,
lineHeight: unit$1(token2.calc(token2.itemSize).sub(2).equal()),
textAlign: "center",
verticalAlign: "middle",
listStyle: "none",
backgroundColor: token2.itemBg,
border: `${unit$1(token2.lineWidth)} ${token2.lineType} transparent`,
borderRadius: token2.borderRadius,
outline: 0,
cursor: "pointer",
userSelect: "none",
a: {
display: "block",
padding: `0 ${unit$1(token2.paginationItemPaddingInline)}`,
color: token2.colorText,
"&:hover": {
textDecoration: "none"
}
},
[`&:not(${componentCls}-item-active)`]: {
"&:hover": {
transition: `all ${token2.motionDurationMid}`,
backgroundColor: token2.colorBgTextHover
},
"&:active": {
backgroundColor: token2.colorBgTextActive
}
},
"&-active": {
fontWeight: token2.fontWeightStrong,
backgroundColor: token2.itemActiveBg,
borderColor: token2.colorPrimary,
a: {
color: token2.colorPrimary
},
"&:hover": {
borderColor: token2.colorPrimaryHover
},
"&:hover a": {
color: token2.colorPrimaryHover
}
}
}
};
};
const genPaginationStyle$1 = (token2) => {
const {
componentCls
} = token2;
return {
[componentCls]: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, resetComponent(token2)), {
display: "flex",
"&-start": {
justifyContent: "start"
},
"&-center": {
justifyContent: "center"
},
"&-end": {
justifyContent: "end"
},
"ul, ol": {
margin: 0,
padding: 0,
listStyle: "none"
},
"&::after": {
display: "block",
clear: "both",
height: 0,
overflow: "hidden",
visibility: "hidden",
content: '""'
},
[`${componentCls}-total-text`]: {
display: "inline-block",
height: token2.itemSize,
marginInlineEnd: token2.marginXS,
lineHeight: unit$1(token2.calc(token2.itemSize).sub(2).equal()),
verticalAlign: "middle"
}
}), genPaginationItemStyle(token2)), genPaginationJumpStyle(token2)), genPaginationSimpleStyle(token2)), genPaginationMiniStyle(token2)), genPaginationDisabledStyle(token2)), {
// media query style
[`@media only screen and (max-width: ${token2.screenLG}px)`]: {
[`${componentCls}-item`]: {
"&-after-jump-prev, &-before-jump-next": {
display: "none"
}
}
},
[`@media only screen and (max-width: ${token2.screenSM}px)`]: {
[`${componentCls}-options`]: {
display: "none"
}
}
}),
// rtl style
[`&${token2.componentCls}-rtl`]: {
direction: "rtl"
}
};
};
const genPaginationFocusStyle = (token2) => {
const {
componentCls
} = token2;
return {
[`${componentCls}:not(${componentCls}-disabled)`]: {
[`${componentCls}-item`]: Object.assign({}, genFocusStyle(token2)),
[`${componentCls}-jump-prev, ${componentCls}-jump-next`]: {
"&:focus-visible": Object.assign({
[`${componentCls}-item-link-icon`]: {
opacity: 1
},
[`${componentCls}-item-ellipsis`]: {
opacity: 0
}
}, genFocusOutline(token2))
},
[`${componentCls}-prev, ${componentCls}-next`]: {
[`&:focus-visible ${componentCls}-item-link`]: Object.assign({}, genFocusOutline(token2))
}
}
};
};
const prepareComponentToken$4 = (token2) => Object.assign({
itemBg: token2.colorBgContainer,
itemSize: token2.controlHeight,
itemSizeSM: token2.controlHeightSM,
itemActiveBg: token2.colorBgContainer,
itemLinkBg: token2.colorBgContainer,
itemActiveColorDisabled: token2.colorTextDisabled,
itemActiveBgDisabled: token2.controlItemBgActiveDisabled,
itemInputBg: token2.colorBgContainer,
miniOptionsSizeChangerTop: 0
}, initComponentToken$1(token2));
const prepareToken = (token2) => merge$1(token2, {
inputOutlineOffset: 0,
paginationMiniOptionsMarginInlineStart: token2.calc(token2.marginXXS).div(2).equal(),
paginationMiniQuickJumperInputWidth: token2.calc(token2.controlHeightLG).mul(1.1).equal(),
paginationItemPaddingInline: token2.calc(token2.marginXXS).mul(1.5).equal(),
paginationEllipsisLetterSpacing: token2.calc(token2.marginXXS).div(2).equal(),
paginationSlashMarginInlineStart: token2.marginSM,
paginationSlashMarginInlineEnd: token2.marginSM,
paginationEllipsisTextIndent: "0.13em"
// magic for ui experience
}, initInputToken(token2));
const useStyle$4 = genStyleHooks("Pagination", (token2) => {
const paginationToken = prepareToken(token2);
return [genPaginationStyle$1(paginationToken), genPaginationFocusStyle(paginationToken)];
}, prepareComponentToken$4);
const genBorderedStyle$1 = (token2) => {
const {
componentCls
} = token2;
return {
[`${componentCls}${componentCls}-bordered${componentCls}-disabled:not(${componentCls}-mini)`]: {
"&, &:hover": {
[`${componentCls}-item-link`]: {
borderColor: token2.colorBorder
}
},
"&:focus-visible": {
[`${componentCls}-item-link`]: {
borderColor: token2.colorBorder
}
},
[`${componentCls}-item, ${componentCls}-item-link`]: {
backgroundColor: token2.colorBgContainerDisabled,
borderColor: token2.colorBorder,
[`&:hover:not(${componentCls}-item-active)`]: {
backgroundColor: token2.colorBgContainerDisabled,
borderColor: token2.colorBorder,
a: {
color: token2.colorTextDisabled
}
},
[`&${componentCls}-item-active`]: {
backgroundColor: token2.itemActiveBgDisabled
}
},
[`${componentCls}-prev, ${componentCls}-next`]: {
"&:hover button": {
backgroundColor: token2.colorBgContainerDisabled,
borderColor: token2.colorBorder,
color: token2.colorTextDisabled
},
[`${componentCls}-item-link`]: {
backgroundColor: token2.colorBgContainerDisabled,
borderColor: token2.colorBorder
}
}
},
[`${componentCls}${componentCls}-bordered:not(${componentCls}-mini)`]: {
[`${componentCls}-prev, ${componentCls}-next`]: {
"&:hover button": {
borderColor: token2.colorPrimaryHover,
backgroundColor: token2.itemBg
},
[`${componentCls}-item-link`]: {
backgroundColor: token2.itemLinkBg,
borderColor: token2.colorBorder
},
[`&:hover ${componentCls}-item-link`]: {
borderColor: token2.colorPrimary,
backgroundColor: token2.itemBg,
color: token2.colorPrimary
},
[`&${componentCls}-disabled`]: {
[`${componentCls}-item-link`]: {
borderColor: token2.colorBorder,
color: token2.colorTextDisabled
}
}
},
[`${componentCls}-item`]: {
backgroundColor: token2.itemBg,
border: `${unit$1(token2.lineWidth)} ${token2.lineType} ${token2.colorBorder}`,
[`&:hover:not(${componentCls}-item-active)`]: {
borderColor: token2.colorPrimary,
backgroundColor: token2.itemBg,
a: {
color: token2.colorPrimary
}
},
"&-active": {
borderColor: token2.colorPrimary
}
}
}
};
};
const BorderedStyle = genSubStyleComponent(["Pagination", "bordered"], (token2) => {
const paginationToken = prepareToken(token2);
return [genBorderedStyle$1(paginationToken)];
}, prepareComponentToken$4);
var __rest$5 = function(s, e2) {
var t2 = {};
for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0) t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i])) t2[p2[i]] = s[p2[i]];
}
return t2;
};
const Pagination = (props) => {
const {
align,
prefixCls: customizePrefixCls,
selectPrefixCls: customizeSelectPrefixCls,
className,
rootClassName,
style: style2,
size: customizeSize,
locale: customLocale,
selectComponentClass,
responsive,
showSizeChanger
} = props, restProps = __rest$5(props, ["align", "prefixCls", "selectPrefixCls", "className", "rootClassName", "style", "size", "locale", "selectComponentClass", "responsive", "showSizeChanger"]);
const {
xs
} = useBreakpoint(responsive);
const [, token2] = useToken();
const {
getPrefixCls,
direction,
pagination = {}
} = reactExports.useContext(ConfigContext);
const prefixCls = getPrefixCls("pagination", customizePrefixCls);
const [wrapCSSVar, hashId, cssVarCls] = useStyle$4(prefixCls);
const mergedShowSizeChanger = showSizeChanger !== null && showSizeChanger !== void 0 ? showSizeChanger : pagination.showSizeChanger;
const iconsProps = reactExports.useMemo(() => {
const ellipsis = /* @__PURE__ */ reactExports.createElement("span", {
className: `${prefixCls}-item-ellipsis`
}, "•••");
const prevIcon = /* @__PURE__ */ reactExports.createElement("button", {
className: `${prefixCls}-item-link`,
type: "button",
tabIndex: -1
}, direction === "rtl" ? /* @__PURE__ */ reactExports.createElement(RefIcon$1, null) : /* @__PURE__ */ reactExports.createElement(RefIcon$5, null));
const nextIcon = /* @__PURE__ */ reactExports.createElement("button", {
className: `${prefixCls}-item-link`,
type: "button",
tabIndex: -1
}, direction === "rtl" ? /* @__PURE__ */ reactExports.createElement(RefIcon$5, null) : /* @__PURE__ */ reactExports.createElement(RefIcon$1, null));
const jumpPrevIcon = (
// biome-ignore lint/a11y/useValidAnchor: it is hard to refactor
/* @__PURE__ */ reactExports.createElement("a", {
className: `${prefixCls}-item-link`
}, /* @__PURE__ */ reactExports.createElement("div", {
className: `${prefixCls}-item-container`
}, direction === "rtl" ? /* @__PURE__ */ reactExports.createElement(RefIcon$h, {
className: `${prefixCls}-item-link-icon`
}) : /* @__PURE__ */ reactExports.createElement(RefIcon$i, {
className: `${prefixCls}-item-link-icon`
}), ellipsis))
);
const jumpNextIcon = (
// biome-ignore lint/a11y/useValidAnchor: it is hard to refactor
/* @__PURE__ */ reactExports.createElement("a", {
className: `${prefixCls}-item-link`
}, /* @__PURE__ */ reactExports.createElement("div", {
className: `${prefixCls}-item-container`
}, direction === "rtl" ? /* @__PURE__ */ reactExports.createElement(RefIcon$i, {
className: `${prefixCls}-item-link-icon`
}) : /* @__PURE__ */ reactExports.createElement(RefIcon$h, {
className: `${prefixCls}-item-link-icon`
}), ellipsis))
);
return {
prevIcon,
nextIcon,
jumpPrevIcon,
jumpNextIcon
};
}, [direction, prefixCls]);
const [contextLocale] = useLocale("Pagination", locale$8);
const locale2 = Object.assign(Object.assign({}, contextLocale), customLocale);
const mergedSize = useSize(customizeSize);
const isSmall = mergedSize === "small" || !!(xs && !mergedSize && responsive);
const selectPrefixCls = getPrefixCls("select", customizeSelectPrefixCls);
const extendedClassName = cls({
[`${prefixCls}-${align}`]: !!align,
[`${prefixCls}-mini`]: isSmall,
[`${prefixCls}-rtl`]: direction === "rtl",
[`${prefixCls}-bordered`]: token2.wireframe
}, pagination === null || pagination === void 0 ? void 0 : pagination.className, className, rootClassName, hashId, cssVarCls);
const mergedStyle = Object.assign(Object.assign({}, pagination === null || pagination === void 0 ? void 0 : pagination.style), style2);
return wrapCSSVar(/* @__PURE__ */ reactExports.createElement(reactExports.Fragment, null, token2.wireframe && /* @__PURE__ */ reactExports.createElement(BorderedStyle, {
prefixCls
}), /* @__PURE__ */ reactExports.createElement(Pagination$1, Object.assign({}, iconsProps, restProps, {
style: mergedStyle,
prefixCls,
selectPrefixCls,
className: extendedClassName,
selectComponentClass: selectComponentClass || (isSmall ? MiniSelect : MiddleSelect),
locale: locale2,
showSizeChanger: mergedShowSizeChanger
}))));
};
const viewSize = 100;
const borderWidth = viewSize / 5;
const radius = viewSize / 2 - borderWidth / 2;
const circumference = radius * 2 * Math.PI;
const position$1 = 50;
const CustomCircle = (props) => {
const {
dotClassName,
style: style2,
hasCircleCls
} = props;
return /* @__PURE__ */ reactExports.createElement("circle", {
className: cls(`${dotClassName}-circle`, {
[`${dotClassName}-circle-bg`]: hasCircleCls
}),
r: radius,
cx: position$1,
cy: position$1,
strokeWidth: borderWidth,
style: style2
});
};
const Progress = (_ref) => {
let {
percent,
prefixCls
} = _ref;
const dotClassName = `${prefixCls}-dot`;
const holderClassName = `${dotClassName}-holder`;
const hideClassName = `${holderClassName}-hidden`;
const [render2, setRender] = reactExports.useState(false);
useLayoutEffect$1(() => {
if (percent !== 0) {
setRender(true);
}
}, [percent !== 0]);
const safePtg = Math.max(Math.min(percent, 100), 0);
if (!render2) {
return null;
}
const circleStyle = {
strokeDashoffset: `${circumference / 4}`,
strokeDasharray: `${circumference * safePtg / 100} ${circumference * (100 - safePtg) / 100}`
};
return /* @__PURE__ */ reactExports.createElement("span", {
className: cls(holderClassName, `${dotClassName}-progress`, safePtg <= 0 && hideClassName)
}, /* @__PURE__ */ reactExports.createElement("svg", {
viewBox: `0 0 ${viewSize} ${viewSize}`,
// biome-ignore lint/a11y/noNoninteractiveElementToInteractiveRole: progressbar could be readonly
role: "progressbar",
"aria-valuemin": 0,
"aria-valuemax": 100,
"aria-valuenow": safePtg
}, /* @__PURE__ */ reactExports.createElement(CustomCircle, {
dotClassName,
hasCircleCls: true
}), /* @__PURE__ */ reactExports.createElement(CustomCircle, {
dotClassName,
style: circleStyle
})));
};
function Looper(props) {
const {
prefixCls,
percent = 0
} = props;
const dotClassName = `${prefixCls}-dot`;
const holderClassName = `${dotClassName}-holder`;
const hideClassName = `${holderClassName}-hidden`;
return /* @__PURE__ */ reactExports.createElement(reactExports.Fragment, null, /* @__PURE__ */ reactExports.createElement("span", {
className: cls(holderClassName, percent > 0 && hideClassName)
}, /* @__PURE__ */ reactExports.createElement("span", {
className: cls(dotClassName, `${prefixCls}-dot-spin`)
}, [1, 2, 3, 4].map((i) => /* @__PURE__ */ reactExports.createElement("i", {
className: `${prefixCls}-dot-item`,
key: i
})))), /* @__PURE__ */ reactExports.createElement(Progress, {
prefixCls,
percent
}));
}
function Indicator(props) {
const {
prefixCls,
indicator,
percent
} = props;
const dotClassName = `${prefixCls}-dot`;
if (indicator && /* @__PURE__ */ reactExports.isValidElement(indicator)) {
return cloneElement(indicator, {
className: cls(indicator.props.className, dotClassName),
percent
});
}
return /* @__PURE__ */ reactExports.createElement(Looper, {
prefixCls,
percent
});
}
const antSpinMove = new Keyframe("antSpinMove", {
to: {
opacity: 1
}
});
const antRotate = new Keyframe("antRotate", {
to: {
transform: "rotate(405deg)"
}
});
const genSpinStyle = (token2) => {
const {
componentCls,
calc
} = token2;
return {
[componentCls]: Object.assign(Object.assign({}, resetComponent(token2)), {
position: "absolute",
display: "none",
color: token2.colorPrimary,
fontSize: 0,
textAlign: "center",
verticalAlign: "middle",
opacity: 0,
transition: `transform ${token2.motionDurationSlow} ${token2.motionEaseInOutCirc}`,
"&-spinning": {
position: "relative",
display: "inline-block",
opacity: 1
},
[`${componentCls}-text`]: {
fontSize: token2.fontSize,
paddingTop: calc(calc(token2.dotSize).sub(token2.fontSize)).div(2).add(2).equal()
},
"&-fullscreen": {
position: "fixed",
width: "100vw",
height: "100vh",
backgroundColor: token2.colorBgMask,
zIndex: token2.zIndexPopupBase,
inset: 0,
display: "flex",
alignItems: "center",
flexDirection: "column",
justifyContent: "center",
opacity: 0,
visibility: "hidden",
transition: `all ${token2.motionDurationMid}`,
"&-show": {
opacity: 1,
visibility: "visible"
},
[componentCls]: {
[`${componentCls}-dot-holder`]: {
color: token2.colorWhite
},
[`${componentCls}-text`]: {
color: token2.colorTextLightSolid
}
}
},
"&-nested-loading": {
position: "relative",
[`> div > ${componentCls}`]: {
position: "absolute",
top: 0,
insetInlineStart: 0,
zIndex: 4,
display: "block",
width: "100%",
height: "100%",
maxHeight: token2.contentHeight,
[`${componentCls}-dot`]: {
position: "absolute",
top: "50%",
insetInlineStart: "50%",
margin: calc(token2.dotSize).mul(-1).div(2).equal()
},
[`${componentCls}-text`]: {
position: "absolute",
top: "50%",
width: "100%",
textShadow: `0 1px 2px ${token2.colorBgContainer}`
// FIXME: shadow
},
[`&${componentCls}-show-text ${componentCls}-dot`]: {
marginTop: calc(token2.dotSize).div(2).mul(-1).sub(10).equal()
},
"&-sm": {
[`${componentCls}-dot`]: {
margin: calc(token2.dotSizeSM).mul(-1).div(2).equal()
},
[`${componentCls}-text`]: {
paddingTop: calc(calc(token2.dotSizeSM).sub(token2.fontSize)).div(2).add(2).equal()
},
[`&${componentCls}-show-text ${componentCls}-dot`]: {
marginTop: calc(token2.dotSizeSM).div(2).mul(-1).sub(10).equal()
}
},
"&-lg": {
[`${componentCls}-dot`]: {
margin: calc(token2.dotSizeLG).mul(-1).div(2).equal()
},
[`${componentCls}-text`]: {
paddingTop: calc(calc(token2.dotSizeLG).sub(token2.fontSize)).div(2).add(2).equal()
},
[`&${componentCls}-show-text ${componentCls}-dot`]: {
marginTop: calc(token2.dotSizeLG).div(2).mul(-1).sub(10).equal()
}
}
},
[`${componentCls}-container`]: {
position: "relative",
transition: `opacity ${token2.motionDurationSlow}`,
"&::after": {
position: "absolute",
top: 0,
insetInlineEnd: 0,
bottom: 0,
insetInlineStart: 0,
zIndex: 10,
width: "100%",
height: "100%",
background: token2.colorBgContainer,
opacity: 0,
transition: `all ${token2.motionDurationSlow}`,
content: '""',
pointerEvents: "none"
}
},
[`${componentCls}-blur`]: {
clear: "both",
opacity: 0.5,
userSelect: "none",
pointerEvents: "none",
"&::after": {
opacity: 0.4,
pointerEvents: "auto"
}
}
},
// tip
// ------------------------------
"&-tip": {
color: token2.spinDotDefault
},
// holder
// ------------------------------
[`${componentCls}-dot-holder`]: {
width: "1em",
height: "1em",
fontSize: token2.dotSize,
display: "inline-block",
transition: `transform ${token2.motionDurationSlow} ease, opacity ${token2.motionDurationSlow} ease`,
transformOrigin: "50% 50%",
lineHeight: 1,
color: token2.colorPrimary,
"&-hidden": {
transform: "scale(0.3)",
opacity: 0
}
},
// progress
// ------------------------------
[`${componentCls}-dot-progress`]: {
position: "absolute",
top: "50%",
transform: "translate(-50%, -50%)",
insetInlineStart: "50%"
},
// dots
// ------------------------------
[`${componentCls}-dot`]: {
position: "relative",
display: "inline-block",
fontSize: token2.dotSize,
width: "1em",
height: "1em",
"&-item": {
position: "absolute",
display: "block",
width: calc(token2.dotSize).sub(calc(token2.marginXXS).div(2)).div(2).equal(),
height: calc(token2.dotSize).sub(calc(token2.marginXXS).div(2)).div(2).equal(),
background: "currentColor",
borderRadius: "100%",
transform: "scale(0.75)",
transformOrigin: "50% 50%",
opacity: 0.3,
animationName: antSpinMove,
animationDuration: "1s",
animationIterationCount: "infinite",
animationTimingFunction: "linear",
animationDirection: "alternate",
"&:nth-child(1)": {
top: 0,
insetInlineStart: 0,
animationDelay: "0s"
},
"&:nth-child(2)": {
top: 0,
insetInlineEnd: 0,
animationDelay: "0.4s"
},
"&:nth-child(3)": {
insetInlineEnd: 0,
bottom: 0,
animationDelay: "0.8s"
},
"&:nth-child(4)": {
bottom: 0,
insetInlineStart: 0,
animationDelay: "1.2s"
}
},
"&-spin": {
transform: "rotate(45deg)",
animationName: antRotate,
animationDuration: "1.2s",
animationIterationCount: "infinite",
animationTimingFunction: "linear"
},
"&-circle": {
strokeLinecap: "round",
transition: ["stroke-dashoffset", "stroke-dasharray", "stroke", "stroke-width", "opacity"].map((item) => `${item} ${token2.motionDurationSlow} ease`).join(","),
fillOpacity: 0,
stroke: "currentcolor"
},
"&-circle-bg": {
stroke: token2.colorFillSecondary
}
},
// small
[`&-sm ${componentCls}-dot`]: {
"&, &-holder": {
fontSize: token2.dotSizeSM
}
},
[`&-sm ${componentCls}-dot-holder`]: {
i: {
width: calc(calc(token2.dotSizeSM).sub(calc(token2.marginXXS).div(2))).div(2).equal(),
height: calc(calc(token2.dotSizeSM).sub(calc(token2.marginXXS).div(2))).div(2).equal()
}
},
// large
[`&-lg ${componentCls}-dot`]: {
"&, &-holder": {
fontSize: token2.dotSizeLG
}
},
[`&-lg ${componentCls}-dot-holder`]: {
i: {
width: calc(calc(token2.dotSizeLG).sub(token2.marginXXS)).div(2).equal(),
height: calc(calc(token2.dotSizeLG).sub(token2.marginXXS)).div(2).equal()
}
},
[`&${componentCls}-show-text ${componentCls}-text`]: {
display: "block"
}
})
};
};
const prepareComponentToken$3 = (token2) => {
const {
controlHeightLG,
controlHeight
} = token2;
return {
contentHeight: 400,
dotSize: controlHeightLG / 2,
dotSizeSM: controlHeightLG * 0.35,
dotSizeLG: controlHeight
};
};
const useStyle$3 = genStyleHooks("Spin", (token2) => {
const spinToken = merge$1(token2, {
spinDotDefault: token2.colorTextDescription
});
return [genSpinStyle(spinToken)];
}, prepareComponentToken$3);
const AUTO_INTERVAL = 200;
const STEP_BUCKETS = [[30, 0.05], [70, 0.03], [96, 0.01]];
function usePercent(spinning, percent) {
const [mockPercent, setMockPercent] = reactExports.useState(0);
const mockIntervalRef = reactExports.useRef();
const isAuto = percent === "auto";
reactExports.useEffect(() => {
if (isAuto && spinning) {
setMockPercent(0);
mockIntervalRef.current = setInterval(() => {
setMockPercent((prev2) => {
const restPTG = 100 - prev2;
for (let i = 0; i < STEP_BUCKETS.length; i += 1) {
const [limit, stepPtg] = STEP_BUCKETS[i];
if (prev2 <= limit) {
return prev2 + restPTG * stepPtg;
}
}
return prev2;
});
}, AUTO_INTERVAL);
}
return () => {
clearInterval(mockIntervalRef.current);
};
}, [isAuto, spinning]);
return isAuto ? mockPercent : percent;
}
var __rest$4 = function(s, e2) {
var t2 = {};
for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0) t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i])) t2[p2[i]] = s[p2[i]];
}
return t2;
};
let defaultIndicator;
function shouldDelay(spinning, delay) {
return !!spinning && !!delay && !isNaN(Number(delay));
}
const Spin = (props) => {
var _a2;
const {
prefixCls: customizePrefixCls,
spinning: customSpinning = true,
delay = 0,
className,
rootClassName,
size = "default",
tip,
wrapperClassName,
style: style2,
children,
fullscreen = false,
indicator,
percent
} = props, restProps = __rest$4(props, ["prefixCls", "spinning", "delay", "className", "rootClassName", "size", "tip", "wrapperClassName", "style", "children", "fullscreen", "indicator", "percent"]);
const {
getPrefixCls,
direction,
spin: spin2
} = reactExports.useContext(ConfigContext);
const prefixCls = getPrefixCls("spin", customizePrefixCls);
const [wrapCSSVar, hashId, cssVarCls] = useStyle$3(prefixCls);
const [spinning, setSpinning] = reactExports.useState(() => customSpinning && !shouldDelay(customSpinning, delay));
const mergedPercent = usePercent(spinning, percent);
reactExports.useEffect(() => {
if (customSpinning) {
const showSpinning = debounce$1(delay, () => {
setSpinning(true);
});
showSpinning();
return () => {
var _a22;
(_a22 = showSpinning === null || showSpinning === void 0 ? void 0 : showSpinning.cancel) === null || _a22 === void 0 ? void 0 : _a22.call(showSpinning);
};
}
setSpinning(false);
}, [delay, customSpinning]);
const isNestedPattern = reactExports.useMemo(() => typeof children !== "undefined" && !fullscreen, [children, fullscreen]);
const spinClassName = cls(prefixCls, spin2 === null || spin2 === void 0 ? void 0 : spin2.className, {
[`${prefixCls}-sm`]: size === "small",
[`${prefixCls}-lg`]: size === "large",
[`${prefixCls}-spinning`]: spinning,
[`${prefixCls}-show-text`]: !!tip,
[`${prefixCls}-rtl`]: direction === "rtl"
}, className, !fullscreen && rootClassName, hashId, cssVarCls);
const containerClassName = cls(`${prefixCls}-container`, {
[`${prefixCls}-blur`]: spinning
});
const mergedIndicator = (_a2 = indicator !== null && indicator !== void 0 ? indicator : spin2 === null || spin2 === void 0 ? void 0 : spin2.indicator) !== null && _a2 !== void 0 ? _a2 : defaultIndicator;
const mergedStyle = Object.assign(Object.assign({}, spin2 === null || spin2 === void 0 ? void 0 : spin2.style), style2);
const spinElement = /* @__PURE__ */ reactExports.createElement("div", Object.assign({}, restProps, {
style: mergedStyle,
className: spinClassName,
"aria-live": "polite",
"aria-busy": spinning
}), /* @__PURE__ */ reactExports.createElement(Indicator, {
prefixCls,
indicator: mergedIndicator,
percent: mergedPercent
}), tip && (isNestedPattern || fullscreen) ? /* @__PURE__ */ reactExports.createElement("div", {
className: `${prefixCls}-text`
}, tip) : null);
if (isNestedPattern) {
return wrapCSSVar(/* @__PURE__ */ reactExports.createElement("div", Object.assign({}, restProps, {
className: cls(`${prefixCls}-nested-loading`, wrapperClassName, hashId, cssVarCls)
}), spinning && /* @__PURE__ */ reactExports.createElement("div", {
key: "loading"
}, spinElement), /* @__PURE__ */ reactExports.createElement("div", {
className: containerClassName,
key: "container"
}, children)));
}
if (fullscreen) {
return wrapCSSVar(/* @__PURE__ */ reactExports.createElement("div", {
className: cls(`${prefixCls}-fullscreen`, {
[`${prefixCls}-fullscreen-show`]: spinning
}, rootClassName, hashId, cssVarCls)
}, spinElement));
}
return wrapCSSVar(spinElement);
};
Spin.setDefaultIndicator = (indicator) => {
defaultIndicator = indicator;
};
let message = null;
let act = (callback) => callback();
let taskQueue = [];
let defaultGlobalConfig = {};
function getGlobalContext() {
const {
getContainer: getContainer2,
duration,
rtl,
maxCount,
top
} = defaultGlobalConfig;
const mergedContainer = (getContainer2 === null || getContainer2 === void 0 ? void 0 : getContainer2()) || document.body;
return {
getContainer: () => mergedContainer,
duration,
rtl,
maxCount,
top
};
}
const GlobalHolder = /* @__PURE__ */ React.forwardRef((props, ref) => {
const {
messageConfig,
sync
} = props;
const {
getPrefixCls
} = reactExports.useContext(ConfigContext);
const prefixCls = defaultGlobalConfig.prefixCls || getPrefixCls("message");
const appConfig = reactExports.useContext(AppConfigContext);
const [api, holder] = useInternalMessage(Object.assign(Object.assign(Object.assign({}, messageConfig), {
prefixCls
}), appConfig.message));
React.useImperativeHandle(ref, () => {
const instance = Object.assign({}, api);
Object.keys(instance).forEach((method4) => {
instance[method4] = function() {
sync();
return api[method4].apply(api, arguments);
};
});
return {
instance,
sync
};
});
return holder;
});
const GlobalHolderWrapper = /* @__PURE__ */ React.forwardRef((_, ref) => {
const [messageConfig, setMessageConfig] = React.useState(getGlobalContext);
const sync = () => {
setMessageConfig(getGlobalContext);
};
React.useEffect(sync, []);
const global2 = globalConfig();
const rootPrefixCls = global2.getRootPrefixCls();
const rootIconPrefixCls = global2.getIconPrefixCls();
const theme2 = global2.getTheme();
const dom = /* @__PURE__ */ React.createElement(GlobalHolder, {
ref,
sync,
messageConfig
});
return /* @__PURE__ */ React.createElement(ConfigProvider, {
prefixCls: rootPrefixCls,
iconPrefixCls: rootIconPrefixCls,
theme: theme2
}, global2.holderRender ? global2.holderRender(dom) : dom);
});
function flushNotice() {
if (!message) {
const holderFragment = document.createDocumentFragment();
const newMessage = {
fragment: holderFragment
};
message = newMessage;
act(() => {
render$1(/* @__PURE__ */ React.createElement(GlobalHolderWrapper, {
ref: (node2) => {
const {
instance,
sync
} = node2 || {};
Promise.resolve().then(() => {
if (!newMessage.instance && instance) {
newMessage.instance = instance;
newMessage.sync = sync;
flushNotice();
}
});
}
}), holderFragment);
});
return;
}
if (!message.instance) {
return;
}
taskQueue.forEach((task) => {
const {
type: type4,
skipped
} = task;
if (!skipped) {
switch (type4) {
case "open": {
act(() => {
const closeFn = message.instance.open(Object.assign(Object.assign({}, defaultGlobalConfig), task.config));
closeFn === null || closeFn === void 0 ? void 0 : closeFn.then(task.resolve);
task.setCloseFn(closeFn);
});
break;
}
case "destroy":
act(() => {
message === null || message === void 0 ? void 0 : message.instance.destroy(task.key);
});
break;
default: {
act(() => {
var _message$instance;
const closeFn = (_message$instance = message.instance)[type4].apply(_message$instance, _toConsumableArray(task.args));
closeFn === null || closeFn === void 0 ? void 0 : closeFn.then(task.resolve);
task.setCloseFn(closeFn);
});
}
}
}
});
taskQueue = [];
}
function setMessageGlobalConfig(config) {
defaultGlobalConfig = Object.assign(Object.assign({}, defaultGlobalConfig), config);
act(() => {
var _a2;
(_a2 = message === null || message === void 0 ? void 0 : message.sync) === null || _a2 === void 0 ? void 0 : _a2.call(message);
});
}
function open(config) {
const result = wrapPromiseFn((resolve) => {
let closeFn;
const task = {
type: "open",
config,
resolve,
setCloseFn: (fn) => {
closeFn = fn;
}
};
taskQueue.push(task);
return () => {
if (closeFn) {
act(() => {
closeFn();
});
} else {
task.skipped = true;
}
};
});
flushNotice();
return result;
}
function typeOpen(type4, args) {
const result = wrapPromiseFn((resolve) => {
let closeFn;
const task = {
type: type4,
args,
resolve,
setCloseFn: (fn) => {
closeFn = fn;
}
};
taskQueue.push(task);
return () => {
if (closeFn) {
act(() => {
closeFn();
});
} else {
task.skipped = true;
}
};
});
flushNotice();
return result;
}
const destroy = (key) => {
taskQueue.push({
type: "destroy",
key
});
flushNotice();
};
const methods = ["success", "info", "warning", "error", "loading"];
const baseStaticMethods = {
open,
destroy,
config: setMessageGlobalConfig,
useMessage,
_InternalPanelDoNotUseOrYouWillBeFired: PurePanel$5
};
const staticMethods = baseStaticMethods;
methods.forEach((type4) => {
staticMethods[type4] = function() {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return typeOpen(type4, args);
};
});
var _excluded$9 = ["prefixCls", "className", "checked", "defaultChecked", "disabled", "loadingIcon", "checkedChildren", "unCheckedChildren", "onClick", "onChange", "onKeyDown"];
var Switch$1 = /* @__PURE__ */ reactExports.forwardRef(function(_ref, ref) {
var _classNames;
var _ref$prefixCls = _ref.prefixCls, prefixCls = _ref$prefixCls === void 0 ? "rc-switch" : _ref$prefixCls, className = _ref.className, checked = _ref.checked, defaultChecked = _ref.defaultChecked, disabled = _ref.disabled, loadingIcon = _ref.loadingIcon, checkedChildren = _ref.checkedChildren, unCheckedChildren = _ref.unCheckedChildren, onClick = _ref.onClick, onChange = _ref.onChange, onKeyDown2 = _ref.onKeyDown, restProps = _objectWithoutProperties(_ref, _excluded$9);
var _useMergedState = useMergedState(false, {
value: checked,
defaultValue: defaultChecked
}), _useMergedState2 = _slicedToArray(_useMergedState, 2), innerChecked = _useMergedState2[0], setInnerChecked = _useMergedState2[1];
function triggerChange(newChecked, event) {
var mergedChecked = innerChecked;
if (!disabled) {
mergedChecked = newChecked;
setInnerChecked(mergedChecked);
onChange === null || onChange === void 0 ? void 0 : onChange(mergedChecked, event);
}
return mergedChecked;
}
function onInternalKeyDown(e2) {
if (e2.which === KeyCode.LEFT) {
triggerChange(false, e2);
} else if (e2.which === KeyCode.RIGHT) {
triggerChange(true, e2);
}
onKeyDown2 === null || onKeyDown2 === void 0 ? void 0 : onKeyDown2(e2);
}
function onInternalClick(e2) {
var ret = triggerChange(!innerChecked, e2);
onClick === null || onClick === void 0 ? void 0 : onClick(ret, e2);
}
var switchClassName = cls(prefixCls, className, (_classNames = {}, _defineProperty(_classNames, "".concat(prefixCls, "-checked"), innerChecked), _defineProperty(_classNames, "".concat(prefixCls, "-disabled"), disabled), _classNames));
return /* @__PURE__ */ reactExports.createElement("button", _extends$2({}, restProps, {
type: "button",
role: "switch",
"aria-checked": innerChecked,
disabled,
className: switchClassName,
ref,
onKeyDown: onInternalKeyDown,
onClick: onInternalClick
}), loadingIcon, /* @__PURE__ */ reactExports.createElement("span", {
className: "".concat(prefixCls, "-inner")
}, /* @__PURE__ */ reactExports.createElement("span", {
className: "".concat(prefixCls, "-inner-checked")
}, checkedChildren), /* @__PURE__ */ reactExports.createElement("span", {
className: "".concat(prefixCls, "-inner-unchecked")
}, unCheckedChildren)));
});
Switch$1.displayName = "Switch";
const genSwitchSmallStyle = (token2) => {
const {
componentCls,
trackHeightSM,
trackPadding,
trackMinWidthSM,
innerMinMarginSM,
innerMaxMarginSM,
handleSizeSM,
calc
} = token2;
const switchInnerCls = `${componentCls}-inner`;
const trackPaddingCalc = unit$1(calc(handleSizeSM).add(calc(trackPadding).mul(2)).equal());
const innerMaxMarginCalc = unit$1(calc(innerMaxMarginSM).mul(2).equal());
return {
[componentCls]: {
[`&${componentCls}-small`]: {
minWidth: trackMinWidthSM,
height: trackHeightSM,
lineHeight: unit$1(trackHeightSM),
[`${componentCls}-inner`]: {
paddingInlineStart: innerMaxMarginSM,
paddingInlineEnd: innerMinMarginSM,
[`${switchInnerCls}-checked, ${switchInnerCls}-unchecked`]: {
minHeight: trackHeightSM
},
[`${switchInnerCls}-checked`]: {
marginInlineStart: `calc(-100% + ${trackPaddingCalc} - ${innerMaxMarginCalc})`,
marginInlineEnd: `calc(100% - ${trackPaddingCalc} + ${innerMaxMarginCalc})`
},
[`${switchInnerCls}-unchecked`]: {
marginTop: calc(trackHeightSM).mul(-1).equal(),
marginInlineStart: 0,
marginInlineEnd: 0
}
},
[`${componentCls}-handle`]: {
width: handleSizeSM,
height: handleSizeSM
},
[`${componentCls}-loading-icon`]: {
top: calc(calc(handleSizeSM).sub(token2.switchLoadingIconSize)).div(2).equal(),
fontSize: token2.switchLoadingIconSize
},
[`&${componentCls}-checked`]: {
[`${componentCls}-inner`]: {
paddingInlineStart: innerMinMarginSM,
paddingInlineEnd: innerMaxMarginSM,
[`${switchInnerCls}-checked`]: {
marginInlineStart: 0,
marginInlineEnd: 0
},
[`${switchInnerCls}-unchecked`]: {
marginInlineStart: `calc(100% - ${trackPaddingCalc} + ${innerMaxMarginCalc})`,
marginInlineEnd: `calc(-100% + ${trackPaddingCalc} - ${innerMaxMarginCalc})`
}
},
[`${componentCls}-handle`]: {
insetInlineStart: `calc(100% - ${unit$1(calc(handleSizeSM).add(trackPadding).equal())})`
}
},
[`&:not(${componentCls}-disabled):active`]: {
[`&:not(${componentCls}-checked) ${switchInnerCls}`]: {
[`${switchInnerCls}-unchecked`]: {
marginInlineStart: calc(token2.marginXXS).div(2).equal(),
marginInlineEnd: calc(token2.marginXXS).mul(-1).div(2).equal()
}
},
[`&${componentCls}-checked ${switchInnerCls}`]: {
[`${switchInnerCls}-checked`]: {
marginInlineStart: calc(token2.marginXXS).mul(-1).div(2).equal(),
marginInlineEnd: calc(token2.marginXXS).div(2).equal()
}
}
}
}
}
};
};
const genSwitchLoadingStyle = (token2) => {
const {
componentCls,
handleSize,
calc
} = token2;
return {
[componentCls]: {
[`${componentCls}-loading-icon${token2.iconCls}`]: {
position: "relative",
top: calc(calc(handleSize).sub(token2.fontSize)).div(2).equal(),
color: token2.switchLoadingIconColor,
verticalAlign: "top"
},
[`&${componentCls}-checked ${componentCls}-loading-icon`]: {
color: token2.switchColor
}
}
};
};
const genSwitchHandleStyle = (token2) => {
const {
componentCls,
trackPadding,
handleBg,
handleShadow,
handleSize,
calc
} = token2;
const switchHandleCls = `${componentCls}-handle`;
return {
[componentCls]: {
[switchHandleCls]: {
position: "absolute",
top: trackPadding,
insetInlineStart: trackPadding,
width: handleSize,
height: handleSize,
transition: `all ${token2.switchDuration} ease-in-out`,
"&::before": {
position: "absolute",
top: 0,
insetInlineEnd: 0,
bottom: 0,
insetInlineStart: 0,
backgroundColor: handleBg,
borderRadius: calc(handleSize).div(2).equal(),
boxShadow: handleShadow,
transition: `all ${token2.switchDuration} ease-in-out`,
content: '""'
}
},
[`&${componentCls}-checked ${switchHandleCls}`]: {
insetInlineStart: `calc(100% - ${unit$1(calc(handleSize).add(trackPadding).equal())})`
},
[`&:not(${componentCls}-disabled):active`]: {
[`${switchHandleCls}::before`]: {
insetInlineEnd: token2.switchHandleActiveInset,
insetInlineStart: 0
},
[`&${componentCls}-checked ${switchHandleCls}::before`]: {
insetInlineEnd: 0,
insetInlineStart: token2.switchHandleActiveInset
}
}
}
};
};
const genSwitchInnerStyle = (token2) => {
const {
componentCls,
trackHeight,
trackPadding,
innerMinMargin,
innerMaxMargin,
handleSize,
calc
} = token2;
const switchInnerCls = `${componentCls}-inner`;
const trackPaddingCalc = unit$1(calc(handleSize).add(calc(trackPadding).mul(2)).equal());
const innerMaxMarginCalc = unit$1(calc(innerMaxMargin).mul(2).equal());
return {
[componentCls]: {
[switchInnerCls]: {
display: "block",
overflow: "hidden",
borderRadius: 100,
height: "100%",
paddingInlineStart: innerMaxMargin,
paddingInlineEnd: innerMinMargin,
transition: `padding-inline-start ${token2.switchDuration} ease-in-out, padding-inline-end ${token2.switchDuration} ease-in-out`,
[`${switchInnerCls}-checked, ${switchInnerCls}-unchecked`]: {
display: "block",
color: token2.colorTextLightSolid,
fontSize: token2.fontSizeSM,
transition: `margin-inline-start ${token2.switchDuration} ease-in-out, margin-inline-end ${token2.switchDuration} ease-in-out`,
pointerEvents: "none",
minHeight: trackHeight
},
[`${switchInnerCls}-checked`]: {
marginInlineStart: `calc(-100% + ${trackPaddingCalc} - ${innerMaxMarginCalc})`,
marginInlineEnd: `calc(100% - ${trackPaddingCalc} + ${innerMaxMarginCalc})`
},
[`${switchInnerCls}-unchecked`]: {
marginTop: calc(trackHeight).mul(-1).equal(),
marginInlineStart: 0,
marginInlineEnd: 0
}
},
[`&${componentCls}-checked ${switchInnerCls}`]: {
paddingInlineStart: innerMinMargin,
paddingInlineEnd: innerMaxMargin,
[`${switchInnerCls}-checked`]: {
marginInlineStart: 0,
marginInlineEnd: 0
},
[`${switchInnerCls}-unchecked`]: {
marginInlineStart: `calc(100% - ${trackPaddingCalc} + ${innerMaxMarginCalc})`,
marginInlineEnd: `calc(-100% + ${trackPaddingCalc} - ${innerMaxMarginCalc})`
}
},
[`&:not(${componentCls}-disabled):active`]: {
[`&:not(${componentCls}-checked) ${switchInnerCls}`]: {
[`${switchInnerCls}-unchecked`]: {
marginInlineStart: calc(trackPadding).mul(2).equal(),
marginInlineEnd: calc(trackPadding).mul(-1).mul(2).equal()
}
},
[`&${componentCls}-checked ${switchInnerCls}`]: {
[`${switchInnerCls}-checked`]: {
marginInlineStart: calc(trackPadding).mul(-1).mul(2).equal(),
marginInlineEnd: calc(trackPadding).mul(2).equal()
}
}
}
}
};
};
const genSwitchStyle = (token2) => {
const {
componentCls,
trackHeight,
trackMinWidth
} = token2;
return {
[componentCls]: Object.assign(Object.assign(Object.assign(Object.assign({}, resetComponent(token2)), {
position: "relative",
display: "inline-block",
boxSizing: "border-box",
minWidth: trackMinWidth,
height: trackHeight,
lineHeight: unit$1(trackHeight),
verticalAlign: "middle",
background: token2.colorTextQuaternary,
border: "0",
borderRadius: 100,
cursor: "pointer",
transition: `all ${token2.motionDurationMid}`,
userSelect: "none",
[`&:hover:not(${componentCls}-disabled)`]: {
background: token2.colorTextTertiary
}
}), genFocusStyle(token2)), {
[`&${componentCls}-checked`]: {
background: token2.switchColor,
[`&:hover:not(${componentCls}-disabled)`]: {
background: token2.colorPrimaryHover
}
},
[`&${componentCls}-loading, &${componentCls}-disabled`]: {
cursor: "not-allowed",
opacity: token2.switchDisabledOpacity,
"*": {
boxShadow: "none",
cursor: "not-allowed"
}
},
// rtl style
[`&${componentCls}-rtl`]: {
direction: "rtl"
}
})
};
};
const prepareComponentToken$2 = (token2) => {
const {
fontSize,
lineHeight,
controlHeight,
colorWhite
} = token2;
const height = fontSize * lineHeight;
const heightSM = controlHeight / 2;
const padding = 2;
const handleSize = height - padding * 2;
const handleSizeSM = heightSM - padding * 2;
return {
trackHeight: height,
trackHeightSM: heightSM,
trackMinWidth: handleSize * 2 + padding * 4,
trackMinWidthSM: handleSizeSM * 2 + padding * 2,
trackPadding: padding,
// Fixed value
handleBg: colorWhite,
handleSize,
handleSizeSM,
handleShadow: `0 2px 4px 0 ${new TinyColor("#00230b").setAlpha(0.2).toRgbString()}`,
innerMinMargin: handleSize / 2,
innerMaxMargin: handleSize + padding + padding * 2,
innerMinMarginSM: handleSizeSM / 2,
innerMaxMarginSM: handleSizeSM + padding + padding * 2
};
};
const useStyle$2 = genStyleHooks("Switch", (token2) => {
const switchToken = merge$1(token2, {
switchDuration: token2.motionDurationMid,
switchColor: token2.colorPrimary,
switchDisabledOpacity: token2.opacityLoading,
switchLoadingIconSize: token2.calc(token2.fontSizeIcon).mul(0.75).equal(),
switchLoadingIconColor: `rgba(0, 0, 0, ${token2.opacityLoading})`,
switchHandleActiveInset: "-30%"
});
return [
genSwitchStyle(switchToken),
// inner style
genSwitchInnerStyle(switchToken),
// handle style
genSwitchHandleStyle(switchToken),
// loading style
genSwitchLoadingStyle(switchToken),
// small style
genSwitchSmallStyle(switchToken)
];
}, prepareComponentToken$2);
var __rest$3 = function(s, e2) {
var t2 = {};
for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0) t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i])) t2[p2[i]] = s[p2[i]];
}
return t2;
};
const InternalSwitch = /* @__PURE__ */ reactExports.forwardRef((props, ref) => {
const {
prefixCls: customizePrefixCls,
size: customizeSize,
disabled: customDisabled,
loading,
className,
rootClassName,
style: style2,
checked: checkedProp,
value,
defaultChecked: defaultCheckedProp,
defaultValue,
onChange
} = props, restProps = __rest$3(props, ["prefixCls", "size", "disabled", "loading", "className", "rootClassName", "style", "checked", "value", "defaultChecked", "defaultValue", "onChange"]);
const [checked, setChecked] = useMergedState(false, {
value: checkedProp !== null && checkedProp !== void 0 ? checkedProp : value,
defaultValue: defaultCheckedProp !== null && defaultCheckedProp !== void 0 ? defaultCheckedProp : defaultValue
});
const {
getPrefixCls,
direction,
switch: SWITCH
} = reactExports.useContext(ConfigContext);
const disabled = reactExports.useContext(DisabledContext);
const mergedDisabled = (customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled) || loading;
const prefixCls = getPrefixCls("switch", customizePrefixCls);
const loadingIcon = /* @__PURE__ */ reactExports.createElement("div", {
className: `${prefixCls}-handle`
}, loading && /* @__PURE__ */ reactExports.createElement(RefIcon$4, {
className: `${prefixCls}-loading-icon`
}));
const [wrapCSSVar, hashId, cssVarCls] = useStyle$2(prefixCls);
const mergedSize = useSize(customizeSize);
const classes = cls(SWITCH === null || SWITCH === void 0 ? void 0 : SWITCH.className, {
[`${prefixCls}-small`]: mergedSize === "small",
[`${prefixCls}-loading`]: loading,
[`${prefixCls}-rtl`]: direction === "rtl"
}, className, rootClassName, hashId, cssVarCls);
const mergedStyle = Object.assign(Object.assign({}, SWITCH === null || SWITCH === void 0 ? void 0 : SWITCH.style), style2);
const changeHandler = function() {
setChecked(arguments.length <= 0 ? void 0 : arguments[0]);
onChange === null || onChange === void 0 ? void 0 : onChange.apply(void 0, arguments);
};
return wrapCSSVar(/* @__PURE__ */ reactExports.createElement(Wave, {
component: "Switch"
}, /* @__PURE__ */ reactExports.createElement(Switch$1, Object.assign({}, restProps, {
checked,
onChange: changeHandler,
prefixCls,
className: classes,
style: mergedStyle,
disabled: mergedDisabled,
ref,
loadingIcon
}))));
});
const Switch = InternalSwitch;
Switch.__ANT_SWITCH = true;
var EXPAND_COLUMN = {};
var INTERNAL_HOOKS = "rc-table-internal-hook";
function createContext(defaultValue) {
var Context2 = /* @__PURE__ */ reactExports.createContext(void 0);
var Provider2 = function Provider3(_ref) {
var value = _ref.value, children = _ref.children;
var valueRef = reactExports.useRef(value);
valueRef.current = value;
var _React$useState = reactExports.useState(function() {
return {
getValue: function getValue2() {
return valueRef.current;
},
listeners: /* @__PURE__ */ new Set()
};
}), _React$useState2 = _slicedToArray(_React$useState, 1), context = _React$useState2[0];
useLayoutEffect$1(function() {
reactDomExports.unstable_batchedUpdates(function() {
context.listeners.forEach(function(listener) {
listener(value);
});
});
}, [value]);
return /* @__PURE__ */ reactExports.createElement(Context2.Provider, {
value: context
}, children);
};
return {
Context: Context2,
Provider: Provider2,
defaultValue
};
}
function useContext(holder, selector2) {
var eventSelector = useEvent(typeof selector2 === "function" ? selector2 : function(ctx) {
if (selector2 === void 0) {
return ctx;
}
if (!Array.isArray(selector2)) {
return ctx[selector2];
}
var obj = {};
selector2.forEach(function(key) {
obj[key] = ctx[key];
});
return obj;
});
var context = reactExports.useContext(holder === null || holder === void 0 ? void 0 : holder.Context);
var _ref2 = context || {}, listeners = _ref2.listeners, getValue2 = _ref2.getValue;
var valueRef = reactExports.useRef();
valueRef.current = eventSelector(context ? getValue2() : holder === null || holder === void 0 ? void 0 : holder.defaultValue);
var _React$useState3 = reactExports.useState({}), _React$useState4 = _slicedToArray(_React$useState3, 2), forceUpdate = _React$useState4[1];
useLayoutEffect$1(function() {
if (!context) {
return;
}
function trigger2(nextValue) {
var nextSelectorValue = eventSelector(nextValue);
if (!isEqual$1(valueRef.current, nextSelectorValue, true)) {
forceUpdate({});
}
}
listeners.add(trigger2);
return function() {
listeners.delete(trigger2);
};
}, [context]);
return valueRef.current;
}
function createImmutable() {
var ImmutableContext = /* @__PURE__ */ reactExports.createContext(null);
function useImmutableMark2() {
return reactExports.useContext(ImmutableContext);
}
function makeImmutable2(Component, shouldTriggerRender) {
var refAble = supportRef(Component);
var ImmutableComponent = function ImmutableComponent2(props, ref) {
var refProps = refAble ? {
ref
} : {};
var renderTimesRef = reactExports.useRef(0);
var prevProps = reactExports.useRef(props);
var mark = useImmutableMark2();
if (mark !== null) {
return /* @__PURE__ */ reactExports.createElement(Component, _extends$2({}, props, refProps));
}
if (
// Always trigger re-render if not provide `notTriggerRender`
!shouldTriggerRender || shouldTriggerRender(prevProps.current, props)
) {
renderTimesRef.current += 1;
}
prevProps.current = props;
return /* @__PURE__ */ reactExports.createElement(ImmutableContext.Provider, {
value: renderTimesRef.current
}, /* @__PURE__ */ reactExports.createElement(Component, _extends$2({}, props, refProps)));
};
return refAble ? /* @__PURE__ */ reactExports.forwardRef(ImmutableComponent) : ImmutableComponent;
}
function responseImmutable2(Component, propsAreEqual) {
var refAble = supportRef(Component);
var ImmutableComponent = function ImmutableComponent2(props, ref) {
var refProps = refAble ? {
ref
} : {};
useImmutableMark2();
return /* @__PURE__ */ reactExports.createElement(Component, _extends$2({}, props, refProps));
};
return refAble ? /* @__PURE__ */ reactExports.memo(/* @__PURE__ */ reactExports.forwardRef(ImmutableComponent), propsAreEqual) : /* @__PURE__ */ reactExports.memo(ImmutableComponent, propsAreEqual);
}
return {
makeImmutable: makeImmutable2,
responseImmutable: responseImmutable2,
useImmutableMark: useImmutableMark2
};
}
var _createImmutable = createImmutable(), makeImmutable = _createImmutable.makeImmutable, responseImmutable = _createImmutable.responseImmutable, useImmutableMark = _createImmutable.useImmutableMark;
var TableContext = createContext();
var PerfContext = /* @__PURE__ */ reactExports.createContext({
renderWithProps: false
});
var INTERNAL_KEY_PREFIX = "RC_TABLE_KEY";
function toArray(arr) {
if (arr === void 0 || arr === null) {
return [];
}
return Array.isArray(arr) ? arr : [arr];
}
function getColumnsKey(columns) {
var columnKeys = [];
var keys2 = {};
columns.forEach(function(column2) {
var _ref = column2 || {}, key = _ref.key, dataIndex = _ref.dataIndex;
var mergedKey = key || toArray(dataIndex).join("-") || INTERNAL_KEY_PREFIX;
while (keys2[mergedKey]) {
mergedKey = "".concat(mergedKey, "_next");
}
keys2[mergedKey] = true;
columnKeys.push(mergedKey);
});
return columnKeys;
}
function validateValue(val) {
return val !== null && val !== void 0;
}
function validNumberValue(value) {
return typeof value === "number" && !Number.isNaN(value);
}
function isRenderCell(data) {
return data && _typeof$2(data) === "object" && !Array.isArray(data) && !/* @__PURE__ */ reactExports.isValidElement(data);
}
function useCellRender(record, dataIndex, renderIndex, children, render2, shouldCellUpdate) {
var perfRecord = reactExports.useContext(PerfContext);
var mark = useImmutableMark();
var retData = useMemo(function() {
if (validateValue(children)) {
return [children];
}
var path = dataIndex === null || dataIndex === void 0 || dataIndex === "" ? [] : Array.isArray(dataIndex) ? dataIndex : [dataIndex];
var value = get$1(record, path);
var returnChildNode = value;
var returnCellProps = void 0;
if (render2) {
var renderData = render2(value, record, renderIndex);
if (isRenderCell(renderData)) {
returnChildNode = renderData.children;
returnCellProps = renderData.props;
perfRecord.renderWithProps = true;
} else {
returnChildNode = renderData;
}
}
return [returnChildNode, returnCellProps];
}, [
// Force update deps
mark,
// Normal deps
record,
children,
dataIndex,
render2,
renderIndex
], function(prev2, next2) {
if (shouldCellUpdate) {
var _prev = _slicedToArray(prev2, 2), prevRecord = _prev[1];
var _next = _slicedToArray(next2, 2), nextRecord = _next[1];
return shouldCellUpdate(nextRecord, prevRecord);
}
if (perfRecord.renderWithProps) {
return true;
}
return !isEqual$1(prev2, next2, true);
});
return retData;
}
function inHoverRange(cellStartRow, cellRowSpan, startRow, endRow) {
var cellEndRow = cellStartRow + cellRowSpan - 1;
return cellStartRow <= endRow && cellEndRow >= startRow;
}
function useHoverState(rowIndex, rowSpan) {
return useContext(TableContext, function(ctx) {
var hovering = inHoverRange(rowIndex, rowSpan || 1, ctx.hoverStartRow, ctx.hoverEndRow);
return [hovering, ctx.onHover];
});
}
var getTitleFromCellRenderChildren = function getTitleFromCellRenderChildren2(_ref) {
var ellipsis = _ref.ellipsis, rowType = _ref.rowType, children = _ref.children;
var title;
var ellipsisConfig = ellipsis === true ? {
showTitle: true
} : ellipsis;
if (ellipsisConfig && (ellipsisConfig.showTitle || rowType === "header")) {
if (typeof children === "string" || typeof children === "number") {
title = children.toString();
} else if (/* @__PURE__ */ reactExports.isValidElement(children) && typeof children.props.children === "string") {
title = children.props.children;
}
}
return title;
};
function Cell(props) {
var _ref2, _ref3, _legacyCellProps$colS, _ref4, _ref5, _legacyCellProps$rowS, _additionalProps$titl, _classNames;
var Component = props.component, children = props.children, ellipsis = props.ellipsis, scope = props.scope, prefixCls = props.prefixCls, className = props.className, align = props.align, record = props.record, render2 = props.render, dataIndex = props.dataIndex, renderIndex = props.renderIndex, shouldCellUpdate = props.shouldCellUpdate, index2 = props.index, rowType = props.rowType, colSpan = props.colSpan, rowSpan = props.rowSpan, fixLeft = props.fixLeft, fixRight = props.fixRight, firstFixLeft = props.firstFixLeft, lastFixLeft = props.lastFixLeft, firstFixRight = props.firstFixRight, lastFixRight = props.lastFixRight, appendNode = props.appendNode, _props$additionalProp = props.additionalProps, additionalProps = _props$additionalProp === void 0 ? {} : _props$additionalProp, isSticky = props.isSticky;
var cellPrefixCls = "".concat(prefixCls, "-cell");
var _useContext = useContext(TableContext, ["supportSticky", "allColumnsFixedLeft", "rowHoverable"]), supportSticky = _useContext.supportSticky, allColumnsFixedLeft = _useContext.allColumnsFixedLeft, rowHoverable = _useContext.rowHoverable;
var _useCellRender = useCellRender(record, dataIndex, renderIndex, children, render2, shouldCellUpdate), _useCellRender2 = _slicedToArray(_useCellRender, 2), childNode = _useCellRender2[0], legacyCellProps = _useCellRender2[1];
var fixedStyle = {};
var isFixLeft = typeof fixLeft === "number" && supportSticky;
var isFixRight = typeof fixRight === "number" && supportSticky;
if (isFixLeft) {
fixedStyle.position = "sticky";
fixedStyle.left = fixLeft;
}
if (isFixRight) {
fixedStyle.position = "sticky";
fixedStyle.right = fixRight;
}
var mergedColSpan = (_ref2 = (_ref3 = (_legacyCellProps$colS = legacyCellProps === null || legacyCellProps === void 0 ? void 0 : legacyCellProps.colSpan) !== null && _legacyCellProps$colS !== void 0 ? _legacyCellProps$colS : additionalProps.colSpan) !== null && _ref3 !== void 0 ? _ref3 : colSpan) !== null && _ref2 !== void 0 ? _ref2 : 1;
var mergedRowSpan = (_ref4 = (_ref5 = (_legacyCellProps$rowS = legacyCellProps === null || legacyCellProps === void 0 ? void 0 : legacyCellProps.rowSpan) !== null && _legacyCellProps$rowS !== void 0 ? _legacyCellProps$rowS : additionalProps.rowSpan) !== null && _ref5 !== void 0 ? _ref5 : rowSpan) !== null && _ref4 !== void 0 ? _ref4 : 1;
var _useHoverState = useHoverState(index2, mergedRowSpan), _useHoverState2 = _slicedToArray(_useHoverState, 2), hovering = _useHoverState2[0], onHover = _useHoverState2[1];
var onMouseEnter = useEvent(function(event) {
var _additionalProps$onMo;
if (record) {
onHover(index2, index2 + mergedRowSpan - 1);
}
additionalProps === null || additionalProps === void 0 || (_additionalProps$onMo = additionalProps.onMouseEnter) === null || _additionalProps$onMo === void 0 || _additionalProps$onMo.call(additionalProps, event);
});
var onMouseLeave = useEvent(function(event) {
var _additionalProps$onMo2;
if (record) {
onHover(-1, -1);
}
additionalProps === null || additionalProps === void 0 || (_additionalProps$onMo2 = additionalProps.onMouseLeave) === null || _additionalProps$onMo2 === void 0 || _additionalProps$onMo2.call(additionalProps, event);
});
if (mergedColSpan === 0 || mergedRowSpan === 0) {
return null;
}
var title = (_additionalProps$titl = additionalProps.title) !== null && _additionalProps$titl !== void 0 ? _additionalProps$titl : getTitleFromCellRenderChildren({
rowType,
ellipsis,
children: childNode
});
var mergedClassName = cls(cellPrefixCls, className, (_classNames = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_classNames, "".concat(cellPrefixCls, "-fix-left"), isFixLeft && supportSticky), "".concat(cellPrefixCls, "-fix-left-first"), firstFixLeft && supportSticky), "".concat(cellPrefixCls, "-fix-left-last"), lastFixLeft && supportSticky), "".concat(cellPrefixCls, "-fix-left-all"), lastFixLeft && allColumnsFixedLeft && supportSticky), "".concat(cellPrefixCls, "-fix-right"), isFixRight && supportSticky), "".concat(cellPrefixCls, "-fix-right-first"), firstFixRight && supportSticky), "".concat(cellPrefixCls, "-fix-right-last"), lastFixRight && supportSticky), "".concat(cellPrefixCls, "-ellipsis"), ellipsis), "".concat(cellPrefixCls, "-with-append"), appendNode), "".concat(cellPrefixCls, "-fix-sticky"), (isFixLeft || isFixRight) && isSticky && supportSticky), _defineProperty(_classNames, "".concat(cellPrefixCls, "-row-hover"), !legacyCellProps && hovering)), additionalProps.className, legacyCellProps === null || legacyCellProps === void 0 ? void 0 : legacyCellProps.className);
var alignStyle = {};
if (align) {
alignStyle.textAlign = align;
}
var mergedStyle = _objectSpread2$1(_objectSpread2$1(_objectSpread2$1(_objectSpread2$1({}, fixedStyle), additionalProps.style), alignStyle), legacyCellProps === null || legacyCellProps === void 0 ? void 0 : legacyCellProps.style);
var mergedChildNode = childNode;
if (_typeof$2(mergedChildNode) === "object" && !Array.isArray(mergedChildNode) && !/* @__PURE__ */ reactExports.isValidElement(mergedChildNode)) {
mergedChildNode = null;
}
if (ellipsis && (lastFixLeft || firstFixRight)) {
mergedChildNode = /* @__PURE__ */ reactExports.createElement("span", {
className: "".concat(cellPrefixCls, "-content")
}, mergedChildNode);
}
return /* @__PURE__ */ reactExports.createElement(Component, _extends$2({}, legacyCellProps, additionalProps, {
className: mergedClassName,
style: mergedStyle,
title,
scope,
onMouseEnter: rowHoverable ? onMouseEnter : void 0,
onMouseLeave: rowHoverable ? onMouseLeave : void 0,
colSpan: mergedColSpan !== 1 ? mergedColSpan : null,
rowSpan: mergedRowSpan !== 1 ? mergedRowSpan : null
}), appendNode, mergedChildNode);
}
const Cell$1 = /* @__PURE__ */ reactExports.memo(Cell);
function getCellFixedInfo(colStart, colEnd, columns, stickyOffsets, direction) {
var startColumn = columns[colStart] || {};
var endColumn = columns[colEnd] || {};
var fixLeft;
var fixRight;
if (startColumn.fixed === "left") {
fixLeft = stickyOffsets.left[direction === "rtl" ? colEnd : colStart];
} else if (endColumn.fixed === "right") {
fixRight = stickyOffsets.right[direction === "rtl" ? colStart : colEnd];
}
var lastFixLeft = false;
var firstFixRight = false;
var lastFixRight = false;
var firstFixLeft = false;
var nextColumn = columns[colEnd + 1];
var prevColumn = columns[colStart - 1];
var canLastFix = nextColumn && !nextColumn.fixed || prevColumn && !prevColumn.fixed || columns.every(function(col) {
return col.fixed === "left";
});
if (direction === "rtl") {
if (fixLeft !== void 0) {
var prevFixLeft = prevColumn && prevColumn.fixed === "left";
firstFixLeft = !prevFixLeft && canLastFix;
} else if (fixRight !== void 0) {
var nextFixRight = nextColumn && nextColumn.fixed === "right";
lastFixRight = !nextFixRight && canLastFix;
}
} else if (fixLeft !== void 0) {
var nextFixLeft = nextColumn && nextColumn.fixed === "left";
lastFixLeft = !nextFixLeft && canLastFix;
} else if (fixRight !== void 0) {
var prevFixRight = prevColumn && prevColumn.fixed === "right";
firstFixRight = !prevFixRight && canLastFix;
}
return {
fixLeft,
fixRight,
lastFixLeft,
firstFixRight,
lastFixRight,
firstFixLeft,
isSticky: stickyOffsets.isSticky
};
}
var SummaryContext = /* @__PURE__ */ reactExports.createContext({});
function SummaryCell(_ref) {
var className = _ref.className, index2 = _ref.index, children = _ref.children, _ref$colSpan = _ref.colSpan, colSpan = _ref$colSpan === void 0 ? 1 : _ref$colSpan, rowSpan = _ref.rowSpan, align = _ref.align;
var _useContext = useContext(TableContext, ["prefixCls", "direction"]), prefixCls = _useContext.prefixCls, direction = _useContext.direction;
var _React$useContext = reactExports.useContext(SummaryContext), scrollColumnIndex = _React$useContext.scrollColumnIndex, stickyOffsets = _React$useContext.stickyOffsets, flattenColumns = _React$useContext.flattenColumns;
var lastIndex = index2 + colSpan - 1;
var mergedColSpan = lastIndex + 1 === scrollColumnIndex ? colSpan + 1 : colSpan;
var fixedInfo = getCellFixedInfo(index2, index2 + mergedColSpan - 1, flattenColumns, stickyOffsets, direction);
return /* @__PURE__ */ reactExports.createElement(Cell$1, _extends$2({
className,
index: index2,
component: "td",
prefixCls,
record: null,
dataIndex: null,
align,
colSpan: mergedColSpan,
rowSpan,
render: function render2() {
return children;
}
}, fixedInfo));
}
var _excluded$8 = ["children"];
function FooterRow(_ref) {
var children = _ref.children, props = _objectWithoutProperties(_ref, _excluded$8);
return /* @__PURE__ */ reactExports.createElement("tr", props, children);
}
function Summary(_ref) {
var children = _ref.children;
return children;
}
Summary.Row = FooterRow;
Summary.Cell = SummaryCell;
function Footer(props) {
var children = props.children, stickyOffsets = props.stickyOffsets, flattenColumns = props.flattenColumns;
var prefixCls = useContext(TableContext, "prefixCls");
var lastColumnIndex = flattenColumns.length - 1;
var scrollColumn = flattenColumns[lastColumnIndex];
var summaryContext = reactExports.useMemo(function() {
return {
stickyOffsets,
flattenColumns,
scrollColumnIndex: scrollColumn !== null && scrollColumn !== void 0 && scrollColumn.scrollbar ? lastColumnIndex : null
};
}, [scrollColumn, flattenColumns, lastColumnIndex, stickyOffsets]);
return /* @__PURE__ */ reactExports.createElement(SummaryContext.Provider, {
value: summaryContext
}, /* @__PURE__ */ reactExports.createElement("tfoot", {
className: "".concat(prefixCls, "-summary")
}, children));
}
const Footer$1 = responseImmutable(Footer);
var FooterComponents = Summary;
function Column$1(_) {
return null;
}
function ColumnGroup$1(_) {
return null;
}
function fillRecords(list, record, indent, childrenColumnName, expandedKeys, getRowKey, index2) {
list.push({
record,
indent,
index: index2
});
var key = getRowKey(record);
var expanded = expandedKeys === null || expandedKeys === void 0 ? void 0 : expandedKeys.has(key);
if (record && Array.isArray(record[childrenColumnName]) && expanded) {
for (var i = 0; i < record[childrenColumnName].length; i += 1) {
fillRecords(list, record[childrenColumnName][i], indent + 1, childrenColumnName, expandedKeys, getRowKey, i);
}
}
}
function useFlattenRecords(data, childrenColumnName, expandedKeys, getRowKey) {
var arr = reactExports.useMemo(function() {
if (expandedKeys !== null && expandedKeys !== void 0 && expandedKeys.size) {
var list = [];
for (var i = 0; i < (data === null || data === void 0 ? void 0 : data.length); i += 1) {
var record = data[i];
fillRecords(list, record, 0, childrenColumnName, expandedKeys, getRowKey, i);
}
return list;
}
return data === null || data === void 0 ? void 0 : data.map(function(item, index2) {
return {
record: item,
indent: 0,
index: index2
};
});
}, [data, childrenColumnName, expandedKeys, getRowKey]);
return arr;
}
function useRowInfo(record, rowKey, recordIndex, indent) {
var context = useContext(TableContext, ["prefixCls", "fixedInfoList", "flattenColumns", "expandableType", "expandRowByClick", "onTriggerExpand", "rowClassName", "expandedRowClassName", "indentSize", "expandIcon", "expandedRowRender", "expandIconColumnIndex", "expandedKeys", "childrenColumnName", "rowExpandable", "onRow"]);
var flattenColumns = context.flattenColumns, expandableType = context.expandableType, expandedKeys = context.expandedKeys, childrenColumnName = context.childrenColumnName, onTriggerExpand = context.onTriggerExpand, rowExpandable = context.rowExpandable, onRow = context.onRow, expandRowByClick = context.expandRowByClick, rowClassName = context.rowClassName;
var nestExpandable = expandableType === "nest";
var rowSupportExpand = expandableType === "row" && (!rowExpandable || rowExpandable(record));
var mergedExpandable = rowSupportExpand || nestExpandable;
var expanded = expandedKeys && expandedKeys.has(rowKey);
var hasNestChildren = childrenColumnName && record && record[childrenColumnName];
var onInternalTriggerExpand = useEvent(onTriggerExpand);
var rowProps = onRow === null || onRow === void 0 ? void 0 : onRow(record, recordIndex);
var onRowClick = rowProps === null || rowProps === void 0 ? void 0 : rowProps.onClick;
var onClick = function onClick2(event) {
if (expandRowByClick && mergedExpandable) {
onTriggerExpand(record, event);
}
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
onRowClick === null || onRowClick === void 0 || onRowClick.apply(void 0, [event].concat(args));
};
var computeRowClassName;
if (typeof rowClassName === "string") {
computeRowClassName = rowClassName;
} else if (typeof rowClassName === "function") {
computeRowClassName = rowClassName(record, recordIndex, indent);
}
var columnsKey = getColumnsKey(flattenColumns);
return _objectSpread2$1(_objectSpread2$1({}, context), {}, {
columnsKey,
nestExpandable,
expanded,
hasNestChildren,
record,
onTriggerExpand: onInternalTriggerExpand,
rowSupportExpand,
expandable: mergedExpandable,
rowProps: _objectSpread2$1(_objectSpread2$1({}, rowProps), {}, {
className: cls(computeRowClassName, rowProps === null || rowProps === void 0 ? void 0 : rowProps.className),
onClick
})
});
}
function ExpandedRow(props) {
var prefixCls = props.prefixCls, children = props.children, Component = props.component, cellComponent = props.cellComponent, className = props.className, expanded = props.expanded, colSpan = props.colSpan, isEmpty = props.isEmpty;
var _useContext = useContext(TableContext, ["scrollbarSize", "fixHeader", "fixColumn", "componentWidth", "horizonScroll"]), scrollbarSize = _useContext.scrollbarSize, fixHeader = _useContext.fixHeader, fixColumn = _useContext.fixColumn, componentWidth = _useContext.componentWidth, horizonScroll = _useContext.horizonScroll;
var contentNode = children;
if (isEmpty ? horizonScroll && componentWidth : fixColumn) {
contentNode = /* @__PURE__ */ reactExports.createElement("div", {
style: {
width: componentWidth - (fixHeader && !isEmpty ? scrollbarSize : 0),
position: "sticky",
left: 0,
overflow: "hidden"
},
className: "".concat(prefixCls, "-expanded-row-fixed")
}, contentNode);
}
return /* @__PURE__ */ reactExports.createElement(Component, {
className,
style: {
display: expanded ? null : "none"
}
}, /* @__PURE__ */ reactExports.createElement(Cell$1, {
component: cellComponent,
prefixCls,
colSpan
}, contentNode));
}
function getCellProps(rowInfo, column2, colIndex, indent, index2) {
var record = rowInfo.record, prefixCls = rowInfo.prefixCls, columnsKey = rowInfo.columnsKey, fixedInfoList = rowInfo.fixedInfoList, expandIconColumnIndex = rowInfo.expandIconColumnIndex, nestExpandable = rowInfo.nestExpandable, indentSize = rowInfo.indentSize, expandIcon = rowInfo.expandIcon, expanded = rowInfo.expanded, hasNestChildren = rowInfo.hasNestChildren, onTriggerExpand = rowInfo.onTriggerExpand;
var key = columnsKey[colIndex];
var fixedInfo = fixedInfoList[colIndex];
var appendCellNode;
if (colIndex === (expandIconColumnIndex || 0) && nestExpandable) {
appendCellNode = /* @__PURE__ */ reactExports.createElement(reactExports.Fragment, null, /* @__PURE__ */ reactExports.createElement("span", {
style: {
paddingLeft: "".concat(indentSize * indent, "px")
},
className: "".concat(prefixCls, "-row-indent indent-level-").concat(indent)
}), expandIcon({
prefixCls,
expanded,
expandable: hasNestChildren,
record,
onExpand: onTriggerExpand
}));
}
var additionalCellProps;
if (column2.onCell) {
additionalCellProps = column2.onCell(record, index2);
}
return {
key,
fixedInfo,
appendCellNode,
additionalCellProps: additionalCellProps || {}
};
}
function BodyRow(props) {
var className = props.className, style2 = props.style, record = props.record, index2 = props.index, renderIndex = props.renderIndex, rowKey = props.rowKey, _props$indent = props.indent, indent = _props$indent === void 0 ? 0 : _props$indent, RowComponent = props.rowComponent, cellComponent = props.cellComponent, scopeCellComponent = props.scopeCellComponent;
var rowInfo = useRowInfo(record, rowKey, index2, indent);
var prefixCls = rowInfo.prefixCls, flattenColumns = rowInfo.flattenColumns, expandedRowClassName = rowInfo.expandedRowClassName, expandedRowRender = rowInfo.expandedRowRender, rowProps = rowInfo.rowProps, expanded = rowInfo.expanded, rowSupportExpand = rowInfo.rowSupportExpand;
var expandedRef = reactExports.useRef(false);
expandedRef.current || (expandedRef.current = expanded);
var computedExpandedRowClassName = expandedRowClassName && expandedRowClassName(record, index2, indent);
var baseRowNode = /* @__PURE__ */ reactExports.createElement(RowComponent, _extends$2({}, rowProps, {
"data-row-key": rowKey,
className: cls(className, "".concat(prefixCls, "-row"), "".concat(prefixCls, "-row-level-").concat(indent), rowProps === null || rowProps === void 0 ? void 0 : rowProps.className, indent >= 1 ? computedExpandedRowClassName : ""),
style: _objectSpread2$1(_objectSpread2$1({}, style2), rowProps === null || rowProps === void 0 ? void 0 : rowProps.style)
}), flattenColumns.map(function(column2, colIndex) {
var render2 = column2.render, dataIndex = column2.dataIndex, columnClassName = column2.className;
var _getCellProps = getCellProps(rowInfo, column2, colIndex, indent, index2), key = _getCellProps.key, fixedInfo = _getCellProps.fixedInfo, appendCellNode = _getCellProps.appendCellNode, additionalCellProps = _getCellProps.additionalCellProps;
return /* @__PURE__ */ reactExports.createElement(Cell$1, _extends$2({
className: columnClassName,
ellipsis: column2.ellipsis,
align: column2.align,
scope: column2.rowScope,
component: column2.rowScope ? scopeCellComponent : cellComponent,
prefixCls,
key,
record,
index: index2,
renderIndex,
dataIndex,
render: render2,
shouldCellUpdate: column2.shouldCellUpdate
}, fixedInfo, {
appendNode: appendCellNode,
additionalProps: additionalCellProps
}));
}));
var expandRowNode;
if (rowSupportExpand && (expandedRef.current || expanded)) {
var expandContent = expandedRowRender(record, index2, indent + 1, expanded);
expandRowNode = /* @__PURE__ */ reactExports.createElement(ExpandedRow, {
expanded,
className: cls("".concat(prefixCls, "-expanded-row"), "".concat(prefixCls, "-expanded-row-level-").concat(indent + 1), computedExpandedRowClassName),
prefixCls,
component: RowComponent,
cellComponent,
colSpan: flattenColumns.length,
isEmpty: false
}, expandContent);
}
return /* @__PURE__ */ reactExports.createElement(reactExports.Fragment, null, baseRowNode, expandRowNode);
}
const BodyRow$1 = responseImmutable(BodyRow);
function MeasureCell(_ref) {
var columnKey = _ref.columnKey, onColumnResize = _ref.onColumnResize;
var cellRef = reactExports.useRef();
reactExports.useEffect(function() {
if (cellRef.current) {
onColumnResize(columnKey, cellRef.current.offsetWidth);
}
}, []);
return /* @__PURE__ */ reactExports.createElement(RefResizeObserver, {
data: columnKey
}, /* @__PURE__ */ reactExports.createElement("td", {
ref: cellRef,
style: {
padding: 0,
border: 0,
height: 0
}
}, /* @__PURE__ */ reactExports.createElement("div", {
style: {
height: 0,
overflow: "hidden"
}
}, " ")));
}
function MeasureRow(_ref) {
var prefixCls = _ref.prefixCls, columnsKey = _ref.columnsKey, onColumnResize = _ref.onColumnResize;
return /* @__PURE__ */ reactExports.createElement("tr", {
"aria-hidden": "true",
className: "".concat(prefixCls, "-measure-row"),
style: {
height: 0,
fontSize: 0
}
}, /* @__PURE__ */ reactExports.createElement(RefResizeObserver.Collection, {
onBatchResize: function onBatchResize(infoList) {
infoList.forEach(function(_ref2) {
var columnKey = _ref2.data, size = _ref2.size;
onColumnResize(columnKey, size.offsetWidth);
});
}
}, columnsKey.map(function(columnKey) {
return /* @__PURE__ */ reactExports.createElement(MeasureCell, {
key: columnKey,
columnKey,
onColumnResize
});
})));
}
function Body(props) {
var data = props.data, measureColumnWidth = props.measureColumnWidth;
var _useContext = useContext(TableContext, ["prefixCls", "getComponent", "onColumnResize", "flattenColumns", "getRowKey", "expandedKeys", "childrenColumnName", "emptyNode"]), prefixCls = _useContext.prefixCls, getComponent = _useContext.getComponent, onColumnResize = _useContext.onColumnResize, flattenColumns = _useContext.flattenColumns, getRowKey = _useContext.getRowKey, expandedKeys = _useContext.expandedKeys, childrenColumnName = _useContext.childrenColumnName, emptyNode2 = _useContext.emptyNode;
var flattenData2 = useFlattenRecords(data, childrenColumnName, expandedKeys, getRowKey);
var perfRef = reactExports.useRef({
renderWithProps: false
});
var WrapperComponent = getComponent(["body", "wrapper"], "tbody");
var trComponent = getComponent(["body", "row"], "tr");
var tdComponent = getComponent(["body", "cell"], "td");
var thComponent = getComponent(["body", "cell"], "th");
var rows;
if (data.length) {
rows = flattenData2.map(function(item, idx) {
var record = item.record, indent = item.indent, renderIndex = item.index;
var key = getRowKey(record, idx);
return /* @__PURE__ */ reactExports.createElement(BodyRow$1, {
key,
rowKey: key,
record,
index: idx,
renderIndex,
rowComponent: trComponent,
cellComponent: tdComponent,
scopeCellComponent: thComponent,
getRowKey,
indent
});
});
} else {
rows = /* @__PURE__ */ reactExports.createElement(ExpandedRow, {
expanded: true,
className: "".concat(prefixCls, "-placeholder"),
prefixCls,
component: trComponent,
cellComponent: tdComponent,
colSpan: flattenColumns.length,
isEmpty: true
}, emptyNode2);
}
var columnsKey = getColumnsKey(flattenColumns);
return /* @__PURE__ */ reactExports.createElement(PerfContext.Provider, {
value: perfRef.current
}, /* @__PURE__ */ reactExports.createElement(WrapperComponent, {
className: "".concat(prefixCls, "-tbody")
}, measureColumnWidth && /* @__PURE__ */ reactExports.createElement(MeasureRow, {
prefixCls,
columnsKey,
onColumnResize
}), rows));
}
const Body$1 = responseImmutable(Body);
var _excluded$7 = ["expandable"];
var INTERNAL_COL_DEFINE = "RC_TABLE_INTERNAL_COL_DEFINE";
function getExpandableProps(props) {
var expandable = props.expandable, legacyExpandableConfig = _objectWithoutProperties(props, _excluded$7);
var config;
if ("expandable" in props) {
config = _objectSpread2$1(_objectSpread2$1({}, legacyExpandableConfig), expandable);
} else {
config = legacyExpandableConfig;
}
if (config.showExpandColumn === false) {
config.expandIconColumnIndex = -1;
}
return config;
}
var _excluded$6 = ["columnType"];
function ColGroup(_ref) {
var colWidths = _ref.colWidths, columns = _ref.columns, columCount = _ref.columCount;
var _useContext = useContext(TableContext, ["tableLayout"]), tableLayout = _useContext.tableLayout;
var cols = [];
var len2 = columCount || columns.length;
var mustInsert = false;
for (var i = len2 - 1; i >= 0; i -= 1) {
var width = colWidths[i];
var column2 = columns && columns[i];
var additionalProps = void 0;
var minWidth = void 0;
if (column2) {
additionalProps = column2[INTERNAL_COL_DEFINE];
if (tableLayout === "auto") {
minWidth = column2.minWidth;
}
}
if (width || minWidth || additionalProps || mustInsert) {
var _ref2 = additionalProps || {};
_ref2.columnType;
var restAdditionalProps = _objectWithoutProperties(_ref2, _excluded$6);
cols.unshift(/* @__PURE__ */ reactExports.createElement("col", _extends$2({
key: i,
style: {
width,
minWidth
}
}, restAdditionalProps)));
mustInsert = true;
}
}
return /* @__PURE__ */ reactExports.createElement("colgroup", null, cols);
}
var _excluded$5 = ["className", "noData", "columns", "flattenColumns", "colWidths", "columCount", "stickyOffsets", "direction", "fixHeader", "stickyTopOffset", "stickyBottomOffset", "stickyClassName", "onScroll", "maxContentScroll", "children"];
function useColumnWidth(colWidths, columCount) {
return reactExports.useMemo(function() {
var cloneColumns = [];
for (var i = 0; i < columCount; i += 1) {
var val = colWidths[i];
if (val !== void 0) {
cloneColumns[i] = val;
} else {
return null;
}
}
return cloneColumns;
}, [colWidths.join("_"), columCount]);
}
var FixedHolder = /* @__PURE__ */ reactExports.forwardRef(function(props, ref) {
var className = props.className, noData = props.noData, columns = props.columns, flattenColumns = props.flattenColumns, colWidths = props.colWidths, columCount = props.columCount, stickyOffsets = props.stickyOffsets, direction = props.direction, fixHeader = props.fixHeader, stickyTopOffset = props.stickyTopOffset, stickyBottomOffset = props.stickyBottomOffset, stickyClassName = props.stickyClassName, onScroll = props.onScroll, maxContentScroll = props.maxContentScroll, children = props.children, restProps = _objectWithoutProperties(props, _excluded$5);
var _useContext = useContext(TableContext, ["prefixCls", "scrollbarSize", "isSticky", "getComponent"]), prefixCls = _useContext.prefixCls, scrollbarSize = _useContext.scrollbarSize, isSticky = _useContext.isSticky, getComponent = _useContext.getComponent;
var TableComponent = getComponent(["header", "table"], "table");
var combinationScrollBarSize = isSticky && !fixHeader ? 0 : scrollbarSize;
var scrollRef = reactExports.useRef(null);
var setScrollRef = reactExports.useCallback(function(element) {
fillRef(ref, element);
fillRef(scrollRef, element);
}, []);
reactExports.useEffect(function() {
var _scrollRef$current;
function onWheel(e2) {
var _ref = e2, currentTarget = _ref.currentTarget, deltaX = _ref.deltaX;
if (deltaX) {
onScroll({
currentTarget,
scrollLeft: currentTarget.scrollLeft + deltaX
});
e2.preventDefault();
}
}
(_scrollRef$current = scrollRef.current) === null || _scrollRef$current === void 0 || _scrollRef$current.addEventListener("wheel", onWheel, {
passive: false
});
return function() {
var _scrollRef$current2;
(_scrollRef$current2 = scrollRef.current) === null || _scrollRef$current2 === void 0 || _scrollRef$current2.removeEventListener("wheel", onWheel);
};
}, []);
var allFlattenColumnsWithWidth = reactExports.useMemo(function() {
return flattenColumns.every(function(column2) {
return column2.width;
});
}, [flattenColumns]);
var lastColumn = flattenColumns[flattenColumns.length - 1];
var ScrollBarColumn = {
fixed: lastColumn ? lastColumn.fixed : null,
scrollbar: true,
onHeaderCell: function onHeaderCell() {
return {
className: "".concat(prefixCls, "-cell-scrollbar")
};
}
};
var columnsWithScrollbar = reactExports.useMemo(function() {
return combinationScrollBarSize ? [].concat(_toConsumableArray(columns), [ScrollBarColumn]) : columns;
}, [combinationScrollBarSize, columns]);
var flattenColumnsWithScrollbar = reactExports.useMemo(function() {
return combinationScrollBarSize ? [].concat(_toConsumableArray(flattenColumns), [ScrollBarColumn]) : flattenColumns;
}, [combinationScrollBarSize, flattenColumns]);
var headerStickyOffsets = reactExports.useMemo(function() {
var right = stickyOffsets.right, left = stickyOffsets.left;
return _objectSpread2$1(_objectSpread2$1({}, stickyOffsets), {}, {
left: direction === "rtl" ? [].concat(_toConsumableArray(left.map(function(width) {
return width + combinationScrollBarSize;
})), [0]) : left,
right: direction === "rtl" ? right : [].concat(_toConsumableArray(right.map(function(width) {
return width + combinationScrollBarSize;
})), [0]),
isSticky
});
}, [combinationScrollBarSize, stickyOffsets, isSticky]);
var mergedColumnWidth = useColumnWidth(colWidths, columCount);
return /* @__PURE__ */ reactExports.createElement("div", {
style: _objectSpread2$1({
overflow: "hidden"
}, isSticky ? {
top: stickyTopOffset,
bottom: stickyBottomOffset
} : {}),
ref: setScrollRef,
className: cls(className, _defineProperty({}, stickyClassName, !!stickyClassName))
}, /* @__PURE__ */ reactExports.createElement(TableComponent, {
style: {
tableLayout: "fixed",
visibility: noData || mergedColumnWidth ? null : "hidden"
}
}, (!noData || !maxContentScroll || allFlattenColumnsWithWidth) && /* @__PURE__ */ reactExports.createElement(ColGroup, {
colWidths: mergedColumnWidth ? [].concat(_toConsumableArray(mergedColumnWidth), [combinationScrollBarSize]) : [],
columCount: columCount + 1,
columns: flattenColumnsWithScrollbar
}), children(_objectSpread2$1(_objectSpread2$1({}, restProps), {}, {
stickyOffsets: headerStickyOffsets,
columns: columnsWithScrollbar,
flattenColumns: flattenColumnsWithScrollbar
}))));
});
const FixedHolder$1 = /* @__PURE__ */ reactExports.memo(FixedHolder);
var HeaderRow = function HeaderRow2(props) {
var cells = props.cells, stickyOffsets = props.stickyOffsets, flattenColumns = props.flattenColumns, RowComponent = props.rowComponent, CellComponent = props.cellComponent, onHeaderRow = props.onHeaderRow, index2 = props.index;
var _useContext = useContext(TableContext, ["prefixCls", "direction"]), prefixCls = _useContext.prefixCls, direction = _useContext.direction;
var rowProps;
if (onHeaderRow) {
rowProps = onHeaderRow(cells.map(function(cell) {
return cell.column;
}), index2);
}
var columnsKey = getColumnsKey(cells.map(function(cell) {
return cell.column;
}));
return /* @__PURE__ */ reactExports.createElement(RowComponent, rowProps, cells.map(function(cell, cellIndex) {
var column2 = cell.column;
var fixedInfo = getCellFixedInfo(cell.colStart, cell.colEnd, flattenColumns, stickyOffsets, direction);
var additionalProps;
if (column2 && column2.onHeaderCell) {
additionalProps = cell.column.onHeaderCell(column2);
}
return /* @__PURE__ */ reactExports.createElement(Cell$1, _extends$2({}, cell, {
scope: column2.title ? cell.colSpan > 1 ? "colgroup" : "col" : null,
ellipsis: column2.ellipsis,
align: column2.align,
component: CellComponent,
prefixCls,
key: columnsKey[cellIndex]
}, fixedInfo, {
additionalProps,
rowType: "header"
}));
}));
};
function parseHeaderRows(rootColumns) {
var rows = [];
function fillRowCells(columns, colIndex) {
var rowIndex2 = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0;
rows[rowIndex2] = rows[rowIndex2] || [];
var currentColIndex = colIndex;
var colSpans = columns.filter(Boolean).map(function(column2) {
var cell = {
key: column2.key,
className: column2.className || "",
children: column2.title,
column: column2,
colStart: currentColIndex
};
var colSpan = 1;
var subColumns = column2.children;
if (subColumns && subColumns.length > 0) {
colSpan = fillRowCells(subColumns, currentColIndex, rowIndex2 + 1).reduce(function(total, count2) {
return total + count2;
}, 0);
cell.hasSubColumns = true;
}
if ("colSpan" in column2) {
colSpan = column2.colSpan;
}
if ("rowSpan" in column2) {
cell.rowSpan = column2.rowSpan;
}
cell.colSpan = colSpan;
cell.colEnd = cell.colStart + colSpan - 1;
rows[rowIndex2].push(cell);
currentColIndex += colSpan;
return colSpan;
});
return colSpans;
}
fillRowCells(rootColumns, 0);
var rowCount = rows.length;
var _loop = function _loop2(rowIndex2) {
rows[rowIndex2].forEach(function(cell) {
if (!("rowSpan" in cell) && !cell.hasSubColumns) {
cell.rowSpan = rowCount - rowIndex2;
}
});
};
for (var rowIndex = 0; rowIndex < rowCount; rowIndex += 1) {
_loop(rowIndex);
}
return rows;
}
var Header = function Header2(props) {
var stickyOffsets = props.stickyOffsets, columns = props.columns, flattenColumns = props.flattenColumns, onHeaderRow = props.onHeaderRow;
var _useContext = useContext(TableContext, ["prefixCls", "getComponent"]), prefixCls = _useContext.prefixCls, getComponent = _useContext.getComponent;
var rows = reactExports.useMemo(function() {
return parseHeaderRows(columns);
}, [columns]);
var WrapperComponent = getComponent(["header", "wrapper"], "thead");
var trComponent = getComponent(["header", "row"], "tr");
var thComponent = getComponent(["header", "cell"], "th");
return /* @__PURE__ */ reactExports.createElement(WrapperComponent, {
className: "".concat(prefixCls, "-thead")
}, rows.map(function(row, rowIndex) {
var rowNode = /* @__PURE__ */ reactExports.createElement(HeaderRow, {
key: rowIndex,
flattenColumns,
cells: row,
stickyOffsets,
rowComponent: trComponent,
cellComponent: thComponent,
onHeaderRow,
index: rowIndex
});
return rowNode;
}));
};
const Header$1 = responseImmutable(Header);
function parseColWidth(totalWidth) {
var width = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "";
if (typeof width === "number") {
return width;
}
if (width.endsWith("%")) {
return totalWidth * parseFloat(width) / 100;
}
return null;
}
function useWidthColumns(flattenColumns, scrollWidth, clientWidth) {
return reactExports.useMemo(function() {
if (scrollWidth && scrollWidth > 0) {
var totalWidth = 0;
var missWidthCount = 0;
flattenColumns.forEach(function(col) {
var colWidth = parseColWidth(scrollWidth, col.width);
if (colWidth) {
totalWidth += colWidth;
} else {
missWidthCount += 1;
}
});
var maxFitWidth = Math.max(scrollWidth, clientWidth);
var restWidth = Math.max(maxFitWidth - totalWidth, missWidthCount);
var restCount = missWidthCount;
var avgWidth = restWidth / missWidthCount;
var realTotal = 0;
var filledColumns = flattenColumns.map(function(col) {
var clone3 = _objectSpread2$1({}, col);
var colWidth = parseColWidth(scrollWidth, clone3.width);
if (colWidth) {
clone3.width = colWidth;
} else {
var colAvgWidth = Math.floor(avgWidth);
clone3.width = restCount === 1 ? restWidth : colAvgWidth;
restWidth -= colAvgWidth;
restCount -= 1;
}
realTotal += clone3.width;
return clone3;
});
if (realTotal < maxFitWidth) {
var scale2 = maxFitWidth / realTotal;
restWidth = maxFitWidth;
filledColumns.forEach(function(col, index2) {
var colWidth = Math.floor(col.width * scale2);
col.width = index2 === filledColumns.length - 1 ? restWidth : colWidth;
restWidth -= colWidth;
});
}
return [filledColumns, Math.max(realTotal, maxFitWidth)];
}
return [flattenColumns, scrollWidth];
}, [flattenColumns, scrollWidth, clientWidth]);
}
var _excluded$4 = ["children"], _excluded2 = ["fixed"];
function convertChildrenToColumns(children) {
return toArray$4(children).filter(function(node2) {
return /* @__PURE__ */ reactExports.isValidElement(node2);
}).map(function(_ref) {
var key = _ref.key, props = _ref.props;
var nodeChildren = props.children, restProps = _objectWithoutProperties(props, _excluded$4);
var column2 = _objectSpread2$1({
key
}, restProps);
if (nodeChildren) {
column2.children = convertChildrenToColumns(nodeChildren);
}
return column2;
});
}
function filterHiddenColumns(columns) {
return columns.filter(function(column2) {
return column2 && _typeof$2(column2) === "object" && !column2.hidden;
}).map(function(column2) {
var subColumns = column2.children;
if (subColumns && subColumns.length > 0) {
return _objectSpread2$1(_objectSpread2$1({}, column2), {}, {
children: filterHiddenColumns(subColumns)
});
}
return column2;
});
}
function flatColumns(columns) {
var parentKey = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "key";
return columns.filter(function(column2) {
return column2 && _typeof$2(column2) === "object";
}).reduce(function(list, column2, index2) {
var fixed = column2.fixed;
var parsedFixed = fixed === true ? "left" : fixed;
var mergedKey = "".concat(parentKey, "-").concat(index2);
var subColumns = column2.children;
if (subColumns && subColumns.length > 0) {
return [].concat(_toConsumableArray(list), _toConsumableArray(flatColumns(subColumns, mergedKey).map(function(subColum) {
return _objectSpread2$1({
fixed: parsedFixed
}, subColum);
})));
}
return [].concat(_toConsumableArray(list), [_objectSpread2$1(_objectSpread2$1({
key: mergedKey
}, column2), {}, {
fixed: parsedFixed
})]);
}, []);
}
function revertForRtl(columns) {
return columns.map(function(column2) {
var fixed = column2.fixed, restProps = _objectWithoutProperties(column2, _excluded2);
var parsedFixed = fixed;
if (fixed === "left") {
parsedFixed = "right";
} else if (fixed === "right") {
parsedFixed = "left";
}
return _objectSpread2$1({
fixed: parsedFixed
}, restProps);
});
}
function useColumns(_ref2, transformColumns) {
var prefixCls = _ref2.prefixCls, columns = _ref2.columns, children = _ref2.children, expandable = _ref2.expandable, expandedKeys = _ref2.expandedKeys, columnTitle = _ref2.columnTitle, getRowKey = _ref2.getRowKey, onTriggerExpand = _ref2.onTriggerExpand, expandIcon = _ref2.expandIcon, rowExpandable = _ref2.rowExpandable, expandIconColumnIndex = _ref2.expandIconColumnIndex, direction = _ref2.direction, expandRowByClick = _ref2.expandRowByClick, columnWidth = _ref2.columnWidth, fixed = _ref2.fixed, scrollWidth = _ref2.scrollWidth, clientWidth = _ref2.clientWidth;
var baseColumns = reactExports.useMemo(function() {
var newColumns = columns || convertChildrenToColumns(children) || [];
return filterHiddenColumns(newColumns.slice());
}, [columns, children]);
var withExpandColumns = reactExports.useMemo(function() {
if (expandable) {
var cloneColumns = baseColumns.slice();
if (!cloneColumns.includes(EXPAND_COLUMN)) {
var expandColIndex = expandIconColumnIndex || 0;
if (expandColIndex >= 0) {
cloneColumns.splice(expandColIndex, 0, EXPAND_COLUMN);
}
}
var expandColumnIndex = cloneColumns.indexOf(EXPAND_COLUMN);
cloneColumns = cloneColumns.filter(function(column2, index2) {
return column2 !== EXPAND_COLUMN || index2 === expandColumnIndex;
});
var prevColumn = baseColumns[expandColumnIndex];
var fixedColumn;
if ((fixed === "left" || fixed) && !expandIconColumnIndex) {
fixedColumn = "left";
} else if ((fixed === "right" || fixed) && expandIconColumnIndex === baseColumns.length) {
fixedColumn = "right";
} else {
fixedColumn = prevColumn ? prevColumn.fixed : null;
}
var expandColumn = _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, INTERNAL_COL_DEFINE, {
className: "".concat(prefixCls, "-expand-icon-col"),
columnType: "EXPAND_COLUMN"
}), "title", columnTitle), "fixed", fixedColumn), "className", "".concat(prefixCls, "-row-expand-icon-cell")), "width", columnWidth), "render", function render2(_, record, index2) {
var rowKey = getRowKey(record, index2);
var expanded = expandedKeys.has(rowKey);
var recordExpandable = rowExpandable ? rowExpandable(record) : true;
var icon = expandIcon({
prefixCls,
expanded,
expandable: recordExpandable,
record,
onExpand: onTriggerExpand
});
if (expandRowByClick) {
return /* @__PURE__ */ reactExports.createElement("span", {
onClick: function onClick(e2) {
return e2.stopPropagation();
}
}, icon);
}
return icon;
});
return cloneColumns.map(function(col) {
return col === EXPAND_COLUMN ? expandColumn : col;
});
}
return baseColumns.filter(function(col) {
return col !== EXPAND_COLUMN;
});
}, [expandable, baseColumns, getRowKey, expandedKeys, expandIcon, direction]);
var mergedColumns = reactExports.useMemo(function() {
var finalColumns = withExpandColumns;
if (transformColumns) {
finalColumns = transformColumns(finalColumns);
}
if (!finalColumns.length) {
finalColumns = [{
render: function render2() {
return null;
}
}];
}
return finalColumns;
}, [transformColumns, withExpandColumns, direction]);
var flattenColumns = reactExports.useMemo(function() {
if (direction === "rtl") {
return revertForRtl(flatColumns(mergedColumns));
}
return flatColumns(mergedColumns);
}, [mergedColumns, direction, scrollWidth]);
var hasGapFixed = reactExports.useMemo(function() {
var lastLeftIndex = -1;
for (var i = flattenColumns.length - 1; i >= 0; i -= 1) {
var colFixed = flattenColumns[i].fixed;
if (colFixed === "left" || colFixed === true) {
lastLeftIndex = i;
break;
}
}
if (lastLeftIndex >= 0) {
for (var _i = 0; _i <= lastLeftIndex; _i += 1) {
var _colFixed = flattenColumns[_i].fixed;
if (_colFixed !== "left" && _colFixed !== true) {
return true;
}
}
}
var firstRightIndex = flattenColumns.findIndex(function(_ref3) {
var colFixed2 = _ref3.fixed;
return colFixed2 === "right";
});
if (firstRightIndex >= 0) {
for (var _i2 = firstRightIndex; _i2 < flattenColumns.length; _i2 += 1) {
var _colFixed2 = flattenColumns[_i2].fixed;
if (_colFixed2 !== "right") {
return true;
}
}
}
return false;
}, [flattenColumns]);
var _useWidthColumns = useWidthColumns(flattenColumns, scrollWidth, clientWidth), _useWidthColumns2 = _slicedToArray(_useWidthColumns, 2), filledColumns = _useWidthColumns2[0], realScrollWidth = _useWidthColumns2[1];
return [mergedColumns, filledColumns, realScrollWidth, hasGapFixed];
}
function renderExpandIcon$1(_ref) {
var prefixCls = _ref.prefixCls, record = _ref.record, onExpand = _ref.onExpand, expanded = _ref.expanded, expandable = _ref.expandable;
var expandClassName = "".concat(prefixCls, "-row-expand-icon");
if (!expandable) {
return /* @__PURE__ */ reactExports.createElement("span", {
className: cls(expandClassName, "".concat(prefixCls, "-row-spaced"))
});
}
var onClick = function onClick2(event) {
onExpand(record, event);
event.stopPropagation();
};
return /* @__PURE__ */ reactExports.createElement("span", {
className: cls(expandClassName, _defineProperty(_defineProperty({}, "".concat(prefixCls, "-row-expanded"), expanded), "".concat(prefixCls, "-row-collapsed"), !expanded)),
onClick
});
}
function findAllChildrenKeys(data, getRowKey, childrenColumnName) {
var keys2 = [];
function dig(list) {
(list || []).forEach(function(item, index2) {
keys2.push(getRowKey(item, index2));
dig(item[childrenColumnName]);
});
}
dig(data);
return keys2;
}
function useExpand(props, mergedData, getRowKey) {
var expandableConfig = getExpandableProps(props);
var expandIcon = expandableConfig.expandIcon, expandedRowKeys = expandableConfig.expandedRowKeys, defaultExpandedRowKeys = expandableConfig.defaultExpandedRowKeys, defaultExpandAllRows = expandableConfig.defaultExpandAllRows, expandedRowRender = expandableConfig.expandedRowRender, onExpand = expandableConfig.onExpand, onExpandedRowsChange = expandableConfig.onExpandedRowsChange, childrenColumnName = expandableConfig.childrenColumnName;
var mergedExpandIcon = expandIcon || renderExpandIcon$1;
var mergedChildrenColumnName = childrenColumnName || "children";
var expandableType = reactExports.useMemo(function() {
if (expandedRowRender) {
return "row";
}
if (props.expandable && props.internalHooks === INTERNAL_HOOKS && props.expandable.__PARENT_RENDER_ICON__ || mergedData.some(function(record) {
return record && _typeof$2(record) === "object" && record[mergedChildrenColumnName];
})) {
return "nest";
}
return false;
}, [!!expandedRowRender, mergedData]);
var _React$useState = reactExports.useState(function() {
if (defaultExpandedRowKeys) {
return defaultExpandedRowKeys;
}
if (defaultExpandAllRows) {
return findAllChildrenKeys(mergedData, getRowKey, mergedChildrenColumnName);
}
return [];
}), _React$useState2 = _slicedToArray(_React$useState, 2), innerExpandedKeys = _React$useState2[0], setInnerExpandedKeys = _React$useState2[1];
var mergedExpandedKeys = reactExports.useMemo(function() {
return new Set(expandedRowKeys || innerExpandedKeys || []);
}, [expandedRowKeys, innerExpandedKeys]);
var onTriggerExpand = reactExports.useCallback(function(record) {
var key = getRowKey(record, mergedData.indexOf(record));
var newExpandedKeys;
var hasKey = mergedExpandedKeys.has(key);
if (hasKey) {
mergedExpandedKeys.delete(key);
newExpandedKeys = _toConsumableArray(mergedExpandedKeys);
} else {
newExpandedKeys = [].concat(_toConsumableArray(mergedExpandedKeys), [key]);
}
setInnerExpandedKeys(newExpandedKeys);
if (onExpand) {
onExpand(!hasKey, record);
}
if (onExpandedRowsChange) {
onExpandedRowsChange(newExpandedKeys);
}
}, [getRowKey, mergedExpandedKeys, mergedData, onExpand, onExpandedRowsChange]);
return [expandableConfig, expandableType, mergedExpandedKeys, mergedExpandIcon, mergedChildrenColumnName, onTriggerExpand];
}
function useFixedInfo(flattenColumns, stickyOffsets, direction) {
var fixedInfoList = flattenColumns.map(function(_, colIndex) {
return getCellFixedInfo(colIndex, colIndex, flattenColumns, stickyOffsets, direction);
});
return useMemo(function() {
return fixedInfoList;
}, [fixedInfoList], function(prev2, next2) {
return !isEqual$1(prev2, next2);
});
}
function useLayoutState(defaultState) {
var stateRef = reactExports.useRef(defaultState);
var _useState = reactExports.useState({}), _useState2 = _slicedToArray(_useState, 2), forceUpdate = _useState2[1];
var lastPromiseRef = reactExports.useRef(null);
var updateBatchRef = reactExports.useRef([]);
function setFrameState(updater) {
updateBatchRef.current.push(updater);
var promise = Promise.resolve();
lastPromiseRef.current = promise;
promise.then(function() {
if (lastPromiseRef.current === promise) {
var prevBatch = updateBatchRef.current;
var prevState = stateRef.current;
updateBatchRef.current = [];
prevBatch.forEach(function(batchUpdater) {
stateRef.current = batchUpdater(stateRef.current);
});
lastPromiseRef.current = null;
if (prevState !== stateRef.current) {
forceUpdate({});
}
}
});
}
reactExports.useEffect(function() {
return function() {
lastPromiseRef.current = null;
};
}, []);
return [stateRef.current, setFrameState];
}
function useTimeoutLock(defaultState) {
var frameRef = reactExports.useRef(null);
var timeoutRef = reactExports.useRef();
function cleanUp() {
window.clearTimeout(timeoutRef.current);
}
function setState(newState) {
frameRef.current = newState;
cleanUp();
timeoutRef.current = window.setTimeout(function() {
frameRef.current = null;
timeoutRef.current = void 0;
}, 100);
}
function getState() {
return frameRef.current;
}
reactExports.useEffect(function() {
return cleanUp;
}, []);
return [setState, getState];
}
function useHover() {
var _React$useState = reactExports.useState(-1), _React$useState2 = _slicedToArray(_React$useState, 2), startRow = _React$useState2[0], setStartRow = _React$useState2[1];
var _React$useState3 = reactExports.useState(-1), _React$useState4 = _slicedToArray(_React$useState3, 2), endRow = _React$useState4[0], setEndRow = _React$useState4[1];
var onHover = reactExports.useCallback(function(start2, end2) {
setStartRow(start2);
setEndRow(end2);
}, []);
return [startRow, endRow, onHover];
}
var defaultContainer = canUseDom() ? window : null;
function useSticky(sticky, prefixCls) {
var _ref = _typeof$2(sticky) === "object" ? sticky : {}, _ref$offsetHeader = _ref.offsetHeader, offsetHeader = _ref$offsetHeader === void 0 ? 0 : _ref$offsetHeader, _ref$offsetSummary = _ref.offsetSummary, offsetSummary = _ref$offsetSummary === void 0 ? 0 : _ref$offsetSummary, _ref$offsetScroll = _ref.offsetScroll, offsetScroll = _ref$offsetScroll === void 0 ? 0 : _ref$offsetScroll, _ref$getContainer = _ref.getContainer, getContainer2 = _ref$getContainer === void 0 ? function() {
return defaultContainer;
} : _ref$getContainer;
var container = getContainer2() || defaultContainer;
var isSticky = !!sticky;
return reactExports.useMemo(function() {
return {
isSticky,
stickyClassName: isSticky ? "".concat(prefixCls, "-sticky-holder") : "",
offsetHeader,
offsetSummary,
offsetScroll,
container
};
}, [isSticky, offsetScroll, offsetHeader, offsetSummary, prefixCls, container]);
}
function useStickyOffsets(colWidths, flattenColumns, direction) {
var stickyOffsets = reactExports.useMemo(function() {
var columnCount = flattenColumns.length;
var getOffsets = function getOffsets2(startIndex, endIndex, offset2) {
var offsets = [];
var total = 0;
for (var i = startIndex; i !== endIndex; i += offset2) {
offsets.push(total);
if (flattenColumns[i].fixed) {
total += colWidths[i] || 0;
}
}
return offsets;
};
var startOffsets = getOffsets(0, columnCount, 1);
var endOffsets = getOffsets(columnCount - 1, -1, -1).reverse();
return direction === "rtl" ? {
left: endOffsets,
right: startOffsets
} : {
left: startOffsets,
right: endOffsets
};
}, [colWidths, flattenColumns, direction]);
return stickyOffsets;
}
function Panel(_ref) {
var className = _ref.className, children = _ref.children;
return /* @__PURE__ */ reactExports.createElement("div", {
className
}, children);
}
var StickyScrollBar = function StickyScrollBar2(_ref, ref) {
var _scrollBodyRef$curren, _scrollBodyRef$curren2;
var scrollBodyRef = _ref.scrollBodyRef, onScroll = _ref.onScroll, offsetScroll = _ref.offsetScroll, container = _ref.container;
var prefixCls = useContext(TableContext, "prefixCls");
var bodyScrollWidth = ((_scrollBodyRef$curren = scrollBodyRef.current) === null || _scrollBodyRef$curren === void 0 ? void 0 : _scrollBodyRef$curren.scrollWidth) || 0;
var bodyWidth = ((_scrollBodyRef$curren2 = scrollBodyRef.current) === null || _scrollBodyRef$curren2 === void 0 ? void 0 : _scrollBodyRef$curren2.clientWidth) || 0;
var scrollBarWidth = bodyScrollWidth && bodyWidth * (bodyWidth / bodyScrollWidth);
var scrollBarRef = reactExports.useRef();
var _useLayoutState = useLayoutState({
scrollLeft: 0,
isHiddenScrollBar: true
}), _useLayoutState2 = _slicedToArray(_useLayoutState, 2), scrollState = _useLayoutState2[0], setScrollState = _useLayoutState2[1];
var refState = reactExports.useRef({
delta: 0,
x: 0
});
var _React$useState = reactExports.useState(false), _React$useState2 = _slicedToArray(_React$useState, 2), isActive2 = _React$useState2[0], setActive = _React$useState2[1];
var rafRef = reactExports.useRef(null);
reactExports.useEffect(function() {
return function() {
wrapperRaf.cancel(rafRef.current);
};
}, []);
var onMouseUp = function onMouseUp2() {
setActive(false);
};
var onMouseDown = function onMouseDown2(event) {
event.persist();
refState.current.delta = event.pageX - scrollState.scrollLeft;
refState.current.x = 0;
setActive(true);
event.preventDefault();
};
var onMouseMove = function onMouseMove2(event) {
var _window;
var _ref2 = event || ((_window = window) === null || _window === void 0 ? void 0 : _window.event), buttons = _ref2.buttons;
if (!isActive2 || buttons === 0) {
if (isActive2) {
setActive(false);
}
return;
}
var left = refState.current.x + event.pageX - refState.current.x - refState.current.delta;
if (left <= 0) {
left = 0;
}
if (left + scrollBarWidth >= bodyWidth) {
left = bodyWidth - scrollBarWidth;
}
onScroll({
scrollLeft: left / bodyWidth * (bodyScrollWidth + 2)
});
refState.current.x = event.pageX;
};
var checkScrollBarVisible = function checkScrollBarVisible2() {
rafRef.current = wrapperRaf(function() {
if (!scrollBodyRef.current) {
return;
}
var tableOffsetTop = getOffset(scrollBodyRef.current).top;
var tableBottomOffset = tableOffsetTop + scrollBodyRef.current.offsetHeight;
var currentClientOffset = container === window ? document.documentElement.scrollTop + window.innerHeight : getOffset(container).top + container.clientHeight;
if (tableBottomOffset - getScrollBarSize() <= currentClientOffset || tableOffsetTop >= currentClientOffset - offsetScroll) {
setScrollState(function(state) {
return _objectSpread2$1(_objectSpread2$1({}, state), {}, {
isHiddenScrollBar: true
});
});
} else {
setScrollState(function(state) {
return _objectSpread2$1(_objectSpread2$1({}, state), {}, {
isHiddenScrollBar: false
});
});
}
});
};
var setScrollLeft = function setScrollLeft2(left) {
setScrollState(function(state) {
return _objectSpread2$1(_objectSpread2$1({}, state), {}, {
scrollLeft: left / bodyScrollWidth * bodyWidth || 0
});
});
};
reactExports.useImperativeHandle(ref, function() {
return {
setScrollLeft,
checkScrollBarVisible
};
});
reactExports.useEffect(function() {
var onMouseUpListener = addEventListenerWrap(document.body, "mouseup", onMouseUp, false);
var onMouseMoveListener = addEventListenerWrap(document.body, "mousemove", onMouseMove, false);
checkScrollBarVisible();
return function() {
onMouseUpListener.remove();
onMouseMoveListener.remove();
};
}, [scrollBarWidth, isActive2]);
reactExports.useEffect(function() {
var onScrollListener = addEventListenerWrap(container, "scroll", checkScrollBarVisible, false);
var onResizeListener = addEventListenerWrap(window, "resize", checkScrollBarVisible, false);
return function() {
onScrollListener.remove();
onResizeListener.remove();
};
}, [container]);
reactExports.useEffect(function() {
if (!scrollState.isHiddenScrollBar) {
setScrollState(function(state) {
var bodyNode = scrollBodyRef.current;
if (!bodyNode) {
return state;
}
return _objectSpread2$1(_objectSpread2$1({}, state), {}, {
scrollLeft: bodyNode.scrollLeft / bodyNode.scrollWidth * bodyNode.clientWidth
});
});
}
}, [scrollState.isHiddenScrollBar]);
if (bodyScrollWidth <= bodyWidth || !scrollBarWidth || scrollState.isHiddenScrollBar) {
return null;
}
return /* @__PURE__ */ reactExports.createElement("div", {
style: {
height: getScrollBarSize(),
width: bodyWidth,
bottom: offsetScroll
},
className: "".concat(prefixCls, "-sticky-scroll")
}, /* @__PURE__ */ reactExports.createElement("div", {
onMouseDown,
ref: scrollBarRef,
className: cls("".concat(prefixCls, "-sticky-scroll-bar"), _defineProperty({}, "".concat(prefixCls, "-sticky-scroll-bar-active"), isActive2)),
style: {
width: "".concat(scrollBarWidth, "px"),
transform: "translate3d(".concat(scrollState.scrollLeft, "px, 0, 0)")
}
}));
};
const StickyScrollBar$1 = /* @__PURE__ */ reactExports.forwardRef(StickyScrollBar);
var DEFAULT_PREFIX = "rc-table";
var EMPTY_DATA = [];
var EMPTY_SCROLL_TARGET = {};
function defaultEmpty() {
return "No Data";
}
function Table$1(tableProps, ref) {
var props = _objectSpread2$1({
rowKey: "key",
prefixCls: DEFAULT_PREFIX,
emptyText: defaultEmpty
}, tableProps);
var prefixCls = props.prefixCls, className = props.className, rowClassName = props.rowClassName, style2 = props.style, data = props.data, rowKey = props.rowKey, scroll = props.scroll, tableLayout = props.tableLayout, direction = props.direction, title = props.title, footer = props.footer, summary = props.summary, caption = props.caption, id2 = props.id, showHeader = props.showHeader, components = props.components, emptyText = props.emptyText, onRow = props.onRow, onHeaderRow = props.onHeaderRow, onScroll = props.onScroll, internalHooks = props.internalHooks, transformColumns = props.transformColumns, internalRefs = props.internalRefs, tailor = props.tailor, getContainerWidth = props.getContainerWidth, sticky = props.sticky, _props$rowHoverable = props.rowHoverable, rowHoverable = _props$rowHoverable === void 0 ? true : _props$rowHoverable;
var mergedData = data || EMPTY_DATA;
var hasData = !!mergedData.length;
var useInternalHooks = internalHooks === INTERNAL_HOOKS;
var getComponent = reactExports.useCallback(function(path, defaultComponent) {
return get$1(components, path) || defaultComponent;
}, [components]);
var getRowKey = reactExports.useMemo(function() {
if (typeof rowKey === "function") {
return rowKey;
}
return function(record) {
var key = record && record[rowKey];
return key;
};
}, [rowKey]);
var customizeScrollBody = getComponent(["body"]);
var _useHover = useHover(), _useHover2 = _slicedToArray(_useHover, 3), startRow = _useHover2[0], endRow = _useHover2[1], onHover = _useHover2[2];
var _useExpand = useExpand(props, mergedData, getRowKey), _useExpand2 = _slicedToArray(_useExpand, 6), expandableConfig = _useExpand2[0], expandableType = _useExpand2[1], mergedExpandedKeys = _useExpand2[2], mergedExpandIcon = _useExpand2[3], mergedChildrenColumnName = _useExpand2[4], onTriggerExpand = _useExpand2[5];
var scrollX = scroll === null || scroll === void 0 ? void 0 : scroll.x;
var _React$useState = reactExports.useState(0), _React$useState2 = _slicedToArray(_React$useState, 2), componentWidth = _React$useState2[0], setComponentWidth = _React$useState2[1];
var _useColumns = useColumns(_objectSpread2$1(_objectSpread2$1(_objectSpread2$1({}, props), expandableConfig), {}, {
expandable: !!expandableConfig.expandedRowRender,
columnTitle: expandableConfig.columnTitle,
expandedKeys: mergedExpandedKeys,
getRowKey,
// https://github.com/ant-design/ant-design/issues/23894
onTriggerExpand,
expandIcon: mergedExpandIcon,
expandIconColumnIndex: expandableConfig.expandIconColumnIndex,
direction,
scrollWidth: useInternalHooks && tailor && typeof scrollX === "number" ? scrollX : null,
clientWidth: componentWidth
}), useInternalHooks ? transformColumns : null), _useColumns2 = _slicedToArray(_useColumns, 4), columns = _useColumns2[0], flattenColumns = _useColumns2[1], flattenScrollX = _useColumns2[2], hasGapFixed = _useColumns2[3];
var mergedScrollX = flattenScrollX !== null && flattenScrollX !== void 0 ? flattenScrollX : scrollX;
var columnContext = reactExports.useMemo(function() {
return {
columns,
flattenColumns
};
}, [columns, flattenColumns]);
var fullTableRef = reactExports.useRef();
var scrollHeaderRef = reactExports.useRef();
var scrollBodyRef = reactExports.useRef();
var scrollBodyContainerRef = reactExports.useRef();
reactExports.useImperativeHandle(ref, function() {
return {
nativeElement: fullTableRef.current,
scrollTo: function scrollTo2(config) {
var _scrollBodyRef$curren3;
if (scrollBodyRef.current instanceof HTMLElement) {
var index2 = config.index, top = config.top, key = config.key;
if (validNumberValue(top)) {
var _scrollBodyRef$curren;
(_scrollBodyRef$curren = scrollBodyRef.current) === null || _scrollBodyRef$curren === void 0 || _scrollBodyRef$curren.scrollTo({
top
});
} else {
var _scrollBodyRef$curren2;
var mergedKey = key !== null && key !== void 0 ? key : getRowKey(mergedData[index2]);
(_scrollBodyRef$curren2 = scrollBodyRef.current.querySelector('[data-row-key="'.concat(mergedKey, '"]'))) === null || _scrollBodyRef$curren2 === void 0 || _scrollBodyRef$curren2.scrollIntoView();
}
} else if ((_scrollBodyRef$curren3 = scrollBodyRef.current) !== null && _scrollBodyRef$curren3 !== void 0 && _scrollBodyRef$curren3.scrollTo) {
scrollBodyRef.current.scrollTo(config);
}
}
};
});
var scrollSummaryRef = reactExports.useRef();
var _React$useState3 = reactExports.useState(false), _React$useState4 = _slicedToArray(_React$useState3, 2), pingedLeft = _React$useState4[0], setPingedLeft = _React$useState4[1];
var _React$useState5 = reactExports.useState(false), _React$useState6 = _slicedToArray(_React$useState5, 2), pingedRight = _React$useState6[0], setPingedRight = _React$useState6[1];
var _useLayoutState = useLayoutState(/* @__PURE__ */ new Map()), _useLayoutState2 = _slicedToArray(_useLayoutState, 2), colsWidths = _useLayoutState2[0], updateColsWidths = _useLayoutState2[1];
var colsKeys = getColumnsKey(flattenColumns);
var pureColWidths = colsKeys.map(function(columnKey) {
return colsWidths.get(columnKey);
});
var colWidths = reactExports.useMemo(function() {
return pureColWidths;
}, [pureColWidths.join("_")]);
var stickyOffsets = useStickyOffsets(colWidths, flattenColumns, direction);
var fixHeader = scroll && validateValue(scroll.y);
var horizonScroll = scroll && validateValue(mergedScrollX) || Boolean(expandableConfig.fixed);
var fixColumn = horizonScroll && flattenColumns.some(function(_ref) {
var fixed = _ref.fixed;
return fixed;
});
var stickyRef = reactExports.useRef();
var _useSticky = useSticky(sticky, prefixCls), isSticky = _useSticky.isSticky, offsetHeader = _useSticky.offsetHeader, offsetSummary = _useSticky.offsetSummary, offsetScroll = _useSticky.offsetScroll, stickyClassName = _useSticky.stickyClassName, container = _useSticky.container;
var summaryNode = reactExports.useMemo(function() {
return summary === null || summary === void 0 ? void 0 : summary(mergedData);
}, [summary, mergedData]);
var fixFooter = (fixHeader || isSticky) && /* @__PURE__ */ reactExports.isValidElement(summaryNode) && summaryNode.type === Summary && summaryNode.props.fixed;
var scrollXStyle;
var scrollYStyle;
var scrollTableStyle;
if (fixHeader) {
scrollYStyle = {
overflowY: hasData ? "scroll" : "auto",
maxHeight: scroll.y
};
}
if (horizonScroll) {
scrollXStyle = {
overflowX: "auto"
};
if (!fixHeader) {
scrollYStyle = {
overflowY: "hidden"
};
}
scrollTableStyle = {
width: mergedScrollX === true ? "auto" : mergedScrollX,
minWidth: "100%"
};
}
var onColumnResize = reactExports.useCallback(function(columnKey, width) {
if (isVisible(fullTableRef.current)) {
updateColsWidths(function(widths) {
if (widths.get(columnKey) !== width) {
var newWidths = new Map(widths);
newWidths.set(columnKey, width);
return newWidths;
}
return widths;
});
}
}, []);
var _useTimeoutLock = useTimeoutLock(), _useTimeoutLock2 = _slicedToArray(_useTimeoutLock, 2), setScrollTarget = _useTimeoutLock2[0], getScrollTarget = _useTimeoutLock2[1];
function forceScroll(scrollLeft, target) {
if (!target) {
return;
}
if (typeof target === "function") {
target(scrollLeft);
} else if (target.scrollLeft !== scrollLeft) {
target.scrollLeft = scrollLeft;
if (target.scrollLeft !== scrollLeft) {
setTimeout(function() {
target.scrollLeft = scrollLeft;
}, 0);
}
}
}
var onInternalScroll = useEvent(function(_ref2) {
var currentTarget = _ref2.currentTarget, scrollLeft = _ref2.scrollLeft;
var isRTL = direction === "rtl";
var mergedScrollLeft = typeof scrollLeft === "number" ? scrollLeft : currentTarget.scrollLeft;
var compareTarget = currentTarget || EMPTY_SCROLL_TARGET;
if (!getScrollTarget() || getScrollTarget() === compareTarget) {
var _stickyRef$current;
setScrollTarget(compareTarget);
forceScroll(mergedScrollLeft, scrollHeaderRef.current);
forceScroll(mergedScrollLeft, scrollBodyRef.current);
forceScroll(mergedScrollLeft, scrollSummaryRef.current);
forceScroll(mergedScrollLeft, (_stickyRef$current = stickyRef.current) === null || _stickyRef$current === void 0 ? void 0 : _stickyRef$current.setScrollLeft);
}
var measureTarget = currentTarget || scrollHeaderRef.current;
if (measureTarget) {
var scrollWidth = typeof mergedScrollX === "number" ? mergedScrollX : measureTarget.scrollWidth;
var clientWidth = measureTarget.clientWidth;
if (scrollWidth === clientWidth) {
setPingedLeft(false);
setPingedRight(false);
return;
}
if (isRTL) {
setPingedLeft(-mergedScrollLeft < scrollWidth - clientWidth);
setPingedRight(-mergedScrollLeft > 0);
} else {
setPingedLeft(mergedScrollLeft > 0);
setPingedRight(mergedScrollLeft < scrollWidth - clientWidth);
}
}
});
var onBodyScroll = useEvent(function(e2) {
onInternalScroll(e2);
onScroll === null || onScroll === void 0 || onScroll(e2);
});
var triggerOnScroll = function triggerOnScroll2() {
if (horizonScroll && scrollBodyRef.current) {
var _scrollBodyRef$curren4;
onInternalScroll({
currentTarget: getDOM(scrollBodyRef.current),
scrollLeft: (_scrollBodyRef$curren4 = scrollBodyRef.current) === null || _scrollBodyRef$curren4 === void 0 ? void 0 : _scrollBodyRef$curren4.scrollLeft
});
} else {
setPingedLeft(false);
setPingedRight(false);
}
};
var onFullTableResize = function onFullTableResize2(_ref3) {
var _stickyRef$current2;
var width = _ref3.width;
(_stickyRef$current2 = stickyRef.current) === null || _stickyRef$current2 === void 0 || _stickyRef$current2.checkScrollBarVisible();
var mergedWidth = fullTableRef.current ? fullTableRef.current.offsetWidth : width;
if (useInternalHooks && getContainerWidth && fullTableRef.current) {
mergedWidth = getContainerWidth(fullTableRef.current, mergedWidth) || mergedWidth;
}
if (mergedWidth !== componentWidth) {
triggerOnScroll();
setComponentWidth(mergedWidth);
}
};
var mounted = reactExports.useRef(false);
reactExports.useEffect(function() {
if (mounted.current) {
triggerOnScroll();
}
}, [horizonScroll, data, columns.length]);
reactExports.useEffect(function() {
mounted.current = true;
}, []);
var _React$useState7 = reactExports.useState(0), _React$useState8 = _slicedToArray(_React$useState7, 2), scrollbarSize = _React$useState8[0], setScrollbarSize = _React$useState8[1];
var _React$useState9 = reactExports.useState(true), _React$useState10 = _slicedToArray(_React$useState9, 2), supportSticky = _React$useState10[0], setSupportSticky = _React$useState10[1];
reactExports.useEffect(function() {
if (!tailor || !useInternalHooks) {
if (scrollBodyRef.current instanceof Element) {
setScrollbarSize(getTargetScrollBarSize(scrollBodyRef.current).width);
} else {
setScrollbarSize(getTargetScrollBarSize(scrollBodyContainerRef.current).width);
}
}
setSupportSticky(isStyleSupport("position", "sticky"));
}, []);
reactExports.useEffect(function() {
if (useInternalHooks && internalRefs) {
internalRefs.body.current = scrollBodyRef.current;
}
});
var renderFixedHeaderTable = reactExports.useCallback(function(fixedHolderPassProps) {
return /* @__PURE__ */ reactExports.createElement(reactExports.Fragment, null, /* @__PURE__ */ reactExports.createElement(Header$1, fixedHolderPassProps), fixFooter === "top" && /* @__PURE__ */ reactExports.createElement(Footer$1, fixedHolderPassProps, summaryNode));
}, [fixFooter, summaryNode]);
var renderFixedFooterTable = reactExports.useCallback(function(fixedHolderPassProps) {
return /* @__PURE__ */ reactExports.createElement(Footer$1, fixedHolderPassProps, summaryNode);
}, [summaryNode]);
var TableComponent = getComponent(["table"], "table");
var mergedTableLayout = reactExports.useMemo(function() {
if (tableLayout) {
return tableLayout;
}
if (fixColumn) {
return mergedScrollX === "max-content" ? "auto" : "fixed";
}
if (fixHeader || isSticky || flattenColumns.some(function(_ref4) {
var ellipsis = _ref4.ellipsis;
return ellipsis;
})) {
return "fixed";
}
return "auto";
}, [fixHeader, fixColumn, flattenColumns, tableLayout, isSticky]);
var groupTableNode;
var headerProps = {
colWidths,
columCount: flattenColumns.length,
stickyOffsets,
onHeaderRow,
fixHeader,
scroll
};
var emptyNode2 = reactExports.useMemo(function() {
if (hasData) {
return null;
}
if (typeof emptyText === "function") {
return emptyText();
}
return emptyText;
}, [hasData, emptyText]);
var bodyTable = /* @__PURE__ */ reactExports.createElement(Body$1, {
data: mergedData,
measureColumnWidth: fixHeader || horizonScroll || isSticky
});
var bodyColGroup = /* @__PURE__ */ reactExports.createElement(ColGroup, {
colWidths: flattenColumns.map(function(_ref5) {
var width = _ref5.width;
return width;
}),
columns: flattenColumns
});
var captionElement = caption !== null && caption !== void 0 ? /* @__PURE__ */ reactExports.createElement("caption", {
className: "".concat(prefixCls, "-caption")
}, caption) : void 0;
var dataProps = pickAttrs(props, {
data: true
});
var ariaProps = pickAttrs(props, {
aria: true
});
if (fixHeader || isSticky) {
var bodyContent;
if (typeof customizeScrollBody === "function") {
bodyContent = customizeScrollBody(mergedData, {
scrollbarSize,
ref: scrollBodyRef,
onScroll: onInternalScroll
});
headerProps.colWidths = flattenColumns.map(function(_ref6, index2) {
var width = _ref6.width;
var colWidth = index2 === flattenColumns.length - 1 ? width - scrollbarSize : width;
if (typeof colWidth === "number" && !Number.isNaN(colWidth)) {
return colWidth;
}
return 0;
});
} else {
bodyContent = /* @__PURE__ */ reactExports.createElement("div", {
style: _objectSpread2$1(_objectSpread2$1({}, scrollXStyle), scrollYStyle),
onScroll: onBodyScroll,
ref: scrollBodyRef,
className: cls("".concat(prefixCls, "-body"))
}, /* @__PURE__ */ reactExports.createElement(TableComponent, _extends$2({
style: _objectSpread2$1(_objectSpread2$1({}, scrollTableStyle), {}, {
tableLayout: mergedTableLayout
})
}, ariaProps), captionElement, bodyColGroup, bodyTable, !fixFooter && summaryNode && /* @__PURE__ */ reactExports.createElement(Footer$1, {
stickyOffsets,
flattenColumns
}, summaryNode)));
}
var fixedHolderProps = _objectSpread2$1(_objectSpread2$1(_objectSpread2$1({
noData: !mergedData.length,
maxContentScroll: horizonScroll && mergedScrollX === "max-content"
}, headerProps), columnContext), {}, {
direction,
stickyClassName,
onScroll: onInternalScroll
});
groupTableNode = /* @__PURE__ */ reactExports.createElement(reactExports.Fragment, null, showHeader !== false && /* @__PURE__ */ reactExports.createElement(FixedHolder$1, _extends$2({}, fixedHolderProps, {
stickyTopOffset: offsetHeader,
className: "".concat(prefixCls, "-header"),
ref: scrollHeaderRef
}), renderFixedHeaderTable), bodyContent, fixFooter && fixFooter !== "top" && /* @__PURE__ */ reactExports.createElement(FixedHolder$1, _extends$2({}, fixedHolderProps, {
stickyBottomOffset: offsetSummary,
className: "".concat(prefixCls, "-summary"),
ref: scrollSummaryRef
}), renderFixedFooterTable), isSticky && scrollBodyRef.current && scrollBodyRef.current instanceof Element && /* @__PURE__ */ reactExports.createElement(StickyScrollBar$1, {
ref: stickyRef,
offsetScroll,
scrollBodyRef,
onScroll: onInternalScroll,
container
}));
} else {
groupTableNode = /* @__PURE__ */ reactExports.createElement("div", {
style: _objectSpread2$1(_objectSpread2$1({}, scrollXStyle), scrollYStyle),
className: cls("".concat(prefixCls, "-content")),
onScroll: onInternalScroll,
ref: scrollBodyRef
}, /* @__PURE__ */ reactExports.createElement(TableComponent, _extends$2({
style: _objectSpread2$1(_objectSpread2$1({}, scrollTableStyle), {}, {
tableLayout: mergedTableLayout
})
}, ariaProps), captionElement, bodyColGroup, showHeader !== false && /* @__PURE__ */ reactExports.createElement(Header$1, _extends$2({}, headerProps, columnContext)), bodyTable, summaryNode && /* @__PURE__ */ reactExports.createElement(Footer$1, {
stickyOffsets,
flattenColumns
}, summaryNode)));
}
var fullTable = /* @__PURE__ */ reactExports.createElement("div", _extends$2({
className: cls(prefixCls, className, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "".concat(prefixCls, "-rtl"), direction === "rtl"), "".concat(prefixCls, "-ping-left"), pingedLeft), "".concat(prefixCls, "-ping-right"), pingedRight), "".concat(prefixCls, "-layout-fixed"), tableLayout === "fixed"), "".concat(prefixCls, "-fixed-header"), fixHeader), "".concat(prefixCls, "-fixed-column"), fixColumn), "".concat(prefixCls, "-fixed-column-gapped"), fixColumn && hasGapFixed), "".concat(prefixCls, "-scroll-horizontal"), horizonScroll), "".concat(prefixCls, "-has-fix-left"), flattenColumns[0] && flattenColumns[0].fixed), "".concat(prefixCls, "-has-fix-right"), flattenColumns[flattenColumns.length - 1] && flattenColumns[flattenColumns.length - 1].fixed === "right")),
style: style2,
id: id2,
ref: fullTableRef
}, dataProps), title && /* @__PURE__ */ reactExports.createElement(Panel, {
className: "".concat(prefixCls, "-title")
}, title(mergedData)), /* @__PURE__ */ reactExports.createElement("div", {
ref: scrollBodyContainerRef,
className: "".concat(prefixCls, "-container")
}, groupTableNode), footer && /* @__PURE__ */ reactExports.createElement(Panel, {
className: "".concat(prefixCls, "-footer")
}, footer(mergedData)));
if (horizonScroll) {
fullTable = /* @__PURE__ */ reactExports.createElement(RefResizeObserver, {
onResize: onFullTableResize
}, fullTable);
}
var fixedInfoList = useFixedInfo(flattenColumns, stickyOffsets, direction);
var TableContextValue = reactExports.useMemo(function() {
return {
// Scroll
scrollX: mergedScrollX,
// Table
prefixCls,
getComponent,
scrollbarSize,
direction,
fixedInfoList,
isSticky,
supportSticky,
componentWidth,
fixHeader,
fixColumn,
horizonScroll,
// Body
tableLayout: mergedTableLayout,
rowClassName,
expandedRowClassName: expandableConfig.expandedRowClassName,
expandIcon: mergedExpandIcon,
expandableType,
expandRowByClick: expandableConfig.expandRowByClick,
expandedRowRender: expandableConfig.expandedRowRender,
onTriggerExpand,
expandIconColumnIndex: expandableConfig.expandIconColumnIndex,
indentSize: expandableConfig.indentSize,
allColumnsFixedLeft: flattenColumns.every(function(col) {
return col.fixed === "left";
}),
emptyNode: emptyNode2,
// Column
columns,
flattenColumns,
onColumnResize,
// Row
hoverStartRow: startRow,
hoverEndRow: endRow,
onHover,
rowExpandable: expandableConfig.rowExpandable,
onRow,
getRowKey,
expandedKeys: mergedExpandedKeys,
childrenColumnName: mergedChildrenColumnName,
rowHoverable
};
}, [
// Scroll
mergedScrollX,
// Table
prefixCls,
getComponent,
scrollbarSize,
direction,
fixedInfoList,
isSticky,
supportSticky,
componentWidth,
fixHeader,
fixColumn,
horizonScroll,
// Body
mergedTableLayout,
rowClassName,
expandableConfig.expandedRowClassName,
mergedExpandIcon,
expandableType,
expandableConfig.expandRowByClick,
expandableConfig.expandedRowRender,
onTriggerExpand,
expandableConfig.expandIconColumnIndex,
expandableConfig.indentSize,
emptyNode2,
// Column
columns,
flattenColumns,
onColumnResize,
// Row
startRow,
endRow,
onHover,
expandableConfig.rowExpandable,
onRow,
getRowKey,
mergedExpandedKeys,
mergedChildrenColumnName,
rowHoverable
]);
return /* @__PURE__ */ reactExports.createElement(TableContext.Provider, {
value: TableContextValue
}, fullTable);
}
var RefTable = /* @__PURE__ */ reactExports.forwardRef(Table$1);
function genTable(shouldTriggerRender) {
return makeImmutable(RefTable, shouldTriggerRender);
}
var ImmutableTable = genTable();
ImmutableTable.EXPAND_COLUMN = EXPAND_COLUMN;
ImmutableTable.INTERNAL_HOOKS = INTERNAL_HOOKS;
ImmutableTable.Column = Column$1;
ImmutableTable.ColumnGroup = ColumnGroup$1;
ImmutableTable.Summary = FooterComponents;
var StaticContext = createContext(null);
var GridContext = createContext(null);
function getColumnWidth(colIndex, colSpan, columnsOffset) {
var mergedColSpan = colSpan || 1;
return columnsOffset[colIndex + mergedColSpan] - (columnsOffset[colIndex] || 0);
}
function VirtualCell(props) {
var rowInfo = props.rowInfo, column2 = props.column, colIndex = props.colIndex, indent = props.indent, index2 = props.index, component = props.component, renderIndex = props.renderIndex, record = props.record, style2 = props.style, className = props.className, inverse = props.inverse, getHeight = props.getHeight;
var render2 = column2.render, dataIndex = column2.dataIndex, columnClassName = column2.className, colWidth = column2.width;
var _useContext = useContext(GridContext, ["columnsOffset"]), columnsOffset = _useContext.columnsOffset;
var _getCellProps = getCellProps(rowInfo, column2, colIndex, indent, index2), key = _getCellProps.key, fixedInfo = _getCellProps.fixedInfo, appendCellNode = _getCellProps.appendCellNode, additionalCellProps = _getCellProps.additionalCellProps;
var cellStyle = additionalCellProps.style, _additionalCellProps$ = additionalCellProps.colSpan, colSpan = _additionalCellProps$ === void 0 ? 1 : _additionalCellProps$, _additionalCellProps$2 = additionalCellProps.rowSpan, rowSpan = _additionalCellProps$2 === void 0 ? 1 : _additionalCellProps$2;
var startColIndex = colIndex - 1;
var concatColWidth = getColumnWidth(startColIndex, colSpan, columnsOffset);
var marginOffset = colSpan > 1 ? colWidth - concatColWidth : 0;
var mergedStyle = _objectSpread2$1(_objectSpread2$1(_objectSpread2$1({}, cellStyle), style2), {}, {
flex: "0 0 ".concat(concatColWidth, "px"),
width: "".concat(concatColWidth, "px"),
marginRight: marginOffset,
pointerEvents: "auto"
});
var needHide = reactExports.useMemo(function() {
if (inverse) {
return rowSpan <= 1;
} else {
return colSpan === 0 || rowSpan === 0 || rowSpan > 1;
}
}, [rowSpan, colSpan, inverse]);
if (needHide) {
mergedStyle.visibility = "hidden";
} else if (inverse) {
mergedStyle.height = getHeight === null || getHeight === void 0 ? void 0 : getHeight(rowSpan);
}
var mergedRender = needHide ? function() {
return null;
} : render2;
var cellSpan = {};
if (rowSpan === 0 || colSpan === 0) {
cellSpan.rowSpan = 1;
cellSpan.colSpan = 1;
}
return /* @__PURE__ */ reactExports.createElement(Cell$1, _extends$2({
className: cls(columnClassName, className),
ellipsis: column2.ellipsis,
align: column2.align,
scope: column2.rowScope,
component,
prefixCls: rowInfo.prefixCls,
key,
record,
index: index2,
renderIndex,
dataIndex,
render: mergedRender,
shouldCellUpdate: column2.shouldCellUpdate
}, fixedInfo, {
appendNode: appendCellNode,
additionalProps: _objectSpread2$1(_objectSpread2$1({}, additionalCellProps), {}, {
style: mergedStyle
}, cellSpan)
}));
}
var _excluded$3 = ["data", "index", "className", "rowKey", "style", "extra", "getHeight"];
var BodyLine = /* @__PURE__ */ reactExports.forwardRef(function(props, ref) {
var data = props.data, index2 = props.index, className = props.className, rowKey = props.rowKey, style2 = props.style, extra = props.extra, getHeight = props.getHeight, restProps = _objectWithoutProperties(props, _excluded$3);
var record = data.record, indent = data.indent, renderIndex = data.index;
var _useContext = useContext(TableContext, ["prefixCls", "flattenColumns", "fixColumn", "componentWidth", "scrollX"]), scrollX = _useContext.scrollX, flattenColumns = _useContext.flattenColumns, prefixCls = _useContext.prefixCls, fixColumn = _useContext.fixColumn, componentWidth = _useContext.componentWidth;
var _useContext2 = useContext(StaticContext, ["getComponent"]), getComponent = _useContext2.getComponent;
var rowInfo = useRowInfo(record, rowKey, index2, indent);
var RowComponent = getComponent(["body", "row"], "div");
var cellComponent = getComponent(["body", "cell"], "div");
var rowSupportExpand = rowInfo.rowSupportExpand, expanded = rowInfo.expanded, rowProps = rowInfo.rowProps, expandedRowRender = rowInfo.expandedRowRender, expandedRowClassName = rowInfo.expandedRowClassName;
var expandRowNode;
if (rowSupportExpand && expanded) {
var expandContent = expandedRowRender(record, index2, indent + 1, expanded);
var computedExpandedRowClassName = expandedRowClassName === null || expandedRowClassName === void 0 ? void 0 : expandedRowClassName(record, index2, indent);
var additionalProps = {};
if (fixColumn) {
additionalProps = {
style: _defineProperty({}, "--virtual-width", "".concat(componentWidth, "px"))
};
}
var rowCellCls = "".concat(prefixCls, "-expanded-row-cell");
expandRowNode = /* @__PURE__ */ reactExports.createElement(RowComponent, {
className: cls("".concat(prefixCls, "-expanded-row"), "".concat(prefixCls, "-expanded-row-level-").concat(indent + 1), computedExpandedRowClassName)
}, /* @__PURE__ */ reactExports.createElement(Cell$1, {
component: cellComponent,
prefixCls,
className: cls(rowCellCls, _defineProperty({}, "".concat(rowCellCls, "-fixed"), fixColumn)),
additionalProps
}, expandContent));
}
var rowStyle = _objectSpread2$1(_objectSpread2$1({}, style2), {}, {
width: scrollX
});
if (extra) {
rowStyle.position = "absolute";
rowStyle.pointerEvents = "none";
}
var rowNode = /* @__PURE__ */ reactExports.createElement(RowComponent, _extends$2({}, rowProps, restProps, {
"data-row-key": rowKey,
ref: rowSupportExpand ? null : ref,
className: cls(className, "".concat(prefixCls, "-row"), rowProps === null || rowProps === void 0 ? void 0 : rowProps.className, _defineProperty({}, "".concat(prefixCls, "-row-extra"), extra)),
style: _objectSpread2$1(_objectSpread2$1({}, rowStyle), rowProps === null || rowProps === void 0 ? void 0 : rowProps.style)
}), flattenColumns.map(function(column2, colIndex) {
return /* @__PURE__ */ reactExports.createElement(VirtualCell, {
key: colIndex,
component: cellComponent,
rowInfo,
column: column2,
colIndex,
indent,
index: index2,
renderIndex,
record,
inverse: extra,
getHeight
});
}));
if (rowSupportExpand) {
return /* @__PURE__ */ reactExports.createElement("div", {
ref
}, rowNode, expandRowNode);
}
return rowNode;
});
var ResponseBodyLine = responseImmutable(BodyLine);
var Grid$1 = /* @__PURE__ */ reactExports.forwardRef(function(props, ref) {
var data = props.data, onScroll = props.onScroll;
var _useContext = useContext(TableContext, ["flattenColumns", "onColumnResize", "getRowKey", "prefixCls", "expandedKeys", "childrenColumnName", "scrollX"]), flattenColumns = _useContext.flattenColumns, onColumnResize = _useContext.onColumnResize, getRowKey = _useContext.getRowKey, expandedKeys = _useContext.expandedKeys, prefixCls = _useContext.prefixCls, childrenColumnName = _useContext.childrenColumnName, scrollX = _useContext.scrollX;
var _useContext2 = useContext(StaticContext), sticky = _useContext2.sticky, scrollY = _useContext2.scrollY, listItemHeight = _useContext2.listItemHeight, getComponent = _useContext2.getComponent, onTablePropScroll = _useContext2.onScroll;
var listRef = reactExports.useRef();
var flattenData2 = useFlattenRecords(data, childrenColumnName, expandedKeys, getRowKey);
var columnsWidth = reactExports.useMemo(function() {
var total = 0;
return flattenColumns.map(function(_ref) {
var width = _ref.width, key = _ref.key;
total += width;
return [key, width, total];
});
}, [flattenColumns]);
var columnsOffset = reactExports.useMemo(function() {
return columnsWidth.map(function(colWidth) {
return colWidth[2];
});
}, [columnsWidth]);
reactExports.useEffect(function() {
columnsWidth.forEach(function(_ref2) {
var _ref3 = _slicedToArray(_ref2, 2), key = _ref3[0], width = _ref3[1];
onColumnResize(key, width);
});
}, [columnsWidth]);
reactExports.useImperativeHandle(ref, function() {
var _listRef$current2;
var obj = {
scrollTo: function scrollTo2(config) {
var _listRef$current;
(_listRef$current = listRef.current) === null || _listRef$current === void 0 || _listRef$current.scrollTo(config);
},
nativeElement: (_listRef$current2 = listRef.current) === null || _listRef$current2 === void 0 ? void 0 : _listRef$current2.nativeElement
};
Object.defineProperty(obj, "scrollLeft", {
get: function get2() {
var _listRef$current3;
return ((_listRef$current3 = listRef.current) === null || _listRef$current3 === void 0 ? void 0 : _listRef$current3.getScrollInfo().x) || 0;
},
set: function set2(value) {
var _listRef$current4;
(_listRef$current4 = listRef.current) === null || _listRef$current4 === void 0 || _listRef$current4.scrollTo({
left: value
});
}
});
return obj;
});
var getRowSpan = function getRowSpan2(column2, index2) {
var _flattenData$index;
var record = (_flattenData$index = flattenData2[index2]) === null || _flattenData$index === void 0 ? void 0 : _flattenData$index.record;
var onCell = column2.onCell;
if (onCell) {
var _cellProps$rowSpan;
var cellProps = onCell(record, index2);
return (_cellProps$rowSpan = cellProps === null || cellProps === void 0 ? void 0 : cellProps.rowSpan) !== null && _cellProps$rowSpan !== void 0 ? _cellProps$rowSpan : 1;
}
return 1;
};
var extraRender = function extraRender2(info) {
var start2 = info.start, end2 = info.end, getSize2 = info.getSize, offsetY = info.offsetY;
if (end2 < 0) {
return null;
}
var firstRowSpanColumns = flattenColumns.filter(
// rowSpan is 0
function(column2) {
return getRowSpan(column2, start2) === 0;
}
);
var startIndex = start2;
var _loop = function _loop4(i2) {
firstRowSpanColumns = firstRowSpanColumns.filter(function(column2) {
return getRowSpan(column2, i2) === 0;
});
if (!firstRowSpanColumns.length) {
startIndex = i2;
return 1;
}
};
for (var i = start2; i >= 0; i -= 1) {
if (_loop(i)) break;
}
var lastRowSpanColumns = flattenColumns.filter(
// rowSpan is not 1
function(column2) {
return getRowSpan(column2, end2) !== 1;
}
);
var endIndex = end2;
var _loop2 = function _loop22(_i3) {
lastRowSpanColumns = lastRowSpanColumns.filter(function(column2) {
return getRowSpan(column2, _i3) !== 1;
});
if (!lastRowSpanColumns.length) {
endIndex = Math.max(_i3 - 1, end2);
return 1;
}
};
for (var _i = end2; _i < flattenData2.length; _i += 1) {
if (_loop2(_i)) break;
}
var spanLines = [];
var _loop3 = function _loop32(_i22) {
var item = flattenData2[_i22];
if (!item) {
return 1;
}
if (flattenColumns.some(function(column2) {
return getRowSpan(column2, _i22) > 1;
})) {
spanLines.push(_i22);
}
};
for (var _i2 = startIndex; _i2 <= endIndex; _i2 += 1) {
if (_loop3(_i2)) continue;
}
var nodes = spanLines.map(function(index2) {
var item = flattenData2[index2];
var rowKey = getRowKey(item.record, index2);
var getHeight = function getHeight2(rowSpan) {
var endItemIndex = index2 + rowSpan - 1;
var endItemKey = getRowKey(flattenData2[endItemIndex].record, endItemIndex);
var sizeInfo2 = getSize2(rowKey, endItemKey);
return sizeInfo2.bottom - sizeInfo2.top;
};
var sizeInfo = getSize2(rowKey);
return /* @__PURE__ */ reactExports.createElement(ResponseBodyLine, {
key: index2,
data: item,
rowKey,
index: index2,
style: {
top: -offsetY + sizeInfo.top
},
extra: true,
getHeight
});
});
return nodes;
};
var gridContext = reactExports.useMemo(function() {
return {
columnsOffset
};
}, [columnsOffset]);
var tblPrefixCls = "".concat(prefixCls, "-tbody");
var wrapperComponent = getComponent(["body", "wrapper"]);
var horizontalScrollBarStyle = {};
if (sticky) {
horizontalScrollBarStyle.position = "sticky";
horizontalScrollBarStyle.bottom = 0;
if (_typeof$2(sticky) === "object" && sticky.offsetScroll) {
horizontalScrollBarStyle.bottom = sticky.offsetScroll;
}
}
return /* @__PURE__ */ reactExports.createElement(GridContext.Provider, {
value: gridContext
}, /* @__PURE__ */ reactExports.createElement(List, {
fullHeight: false,
ref: listRef,
prefixCls: "".concat(tblPrefixCls, "-virtual"),
styles: {
horizontalScrollBar: horizontalScrollBarStyle
},
className: tblPrefixCls,
height: scrollY,
itemHeight: listItemHeight || 24,
data: flattenData2,
itemKey: function itemKey2(item) {
return getRowKey(item.record);
},
component: wrapperComponent,
scrollWidth: scrollX,
onVirtualScroll: function onVirtualScroll(_ref4) {
var _listRef$current5;
var x2 = _ref4.x;
onScroll({
currentTarget: (_listRef$current5 = listRef.current) === null || _listRef$current5 === void 0 ? void 0 : _listRef$current5.nativeElement,
scrollLeft: x2
});
},
onScroll: onTablePropScroll,
extraRender
}, function(item, index2, itemProps) {
var rowKey = getRowKey(item.record, index2);
return /* @__PURE__ */ reactExports.createElement(ResponseBodyLine, {
data: item,
rowKey,
index: index2,
style: itemProps.style
});
}));
});
var ResponseGrid = responseImmutable(Grid$1);
var renderBody = function renderBody2(rawData, props) {
var ref = props.ref, onScroll = props.onScroll;
return /* @__PURE__ */ reactExports.createElement(ResponseGrid, {
ref,
data: rawData,
onScroll
});
};
function VirtualTable(props, ref) {
var data = props.data, columns = props.columns, scroll = props.scroll, sticky = props.sticky, _props$prefixCls = props.prefixCls, prefixCls = _props$prefixCls === void 0 ? DEFAULT_PREFIX : _props$prefixCls, className = props.className, listItemHeight = props.listItemHeight, components = props.components, onScroll = props.onScroll;
var _ref = scroll || {}, scrollX = _ref.x, scrollY = _ref.y;
if (typeof scrollX !== "number") {
scrollX = 1;
}
if (typeof scrollY !== "number") {
scrollY = 500;
}
var getComponent = useEvent(function(path, defaultComponent) {
return get$1(components, path) || defaultComponent;
});
var onInternalScroll = useEvent(onScroll);
var context = reactExports.useMemo(function() {
return {
sticky,
scrollY,
listItemHeight,
getComponent,
onScroll: onInternalScroll
};
}, [sticky, scrollY, listItemHeight, getComponent, onInternalScroll]);
return /* @__PURE__ */ reactExports.createElement(StaticContext.Provider, {
value: context
}, /* @__PURE__ */ reactExports.createElement(ImmutableTable, _extends$2({}, props, {
className: cls(className, "".concat(prefixCls, "-virtual")),
scroll: _objectSpread2$1(_objectSpread2$1({}, scroll), {}, {
x: scrollX
}),
components: _objectSpread2$1(_objectSpread2$1({}, components), {}, {
// fix https://github.com/ant-design/ant-design/issues/48991
body: data !== null && data !== void 0 && data.length ? renderBody : void 0
}),
columns,
internalHooks: INTERNAL_HOOKS,
tailor: true,
ref
})));
}
var RefVirtualTable = /* @__PURE__ */ reactExports.forwardRef(VirtualTable);
function genVirtualTable(shouldTriggerRender) {
return makeImmutable(RefVirtualTable, shouldTriggerRender);
}
genVirtualTable();
const Column = (_) => null;
const ColumnGroup = (_) => null;
var TreeContext = /* @__PURE__ */ reactExports.createContext(null);
var Indent = function Indent2(_ref) {
var prefixCls = _ref.prefixCls, level = _ref.level, isStart = _ref.isStart, isEnd = _ref.isEnd;
var baseClassName = "".concat(prefixCls, "-indent-unit");
var list = [];
for (var i = 0; i < level; i += 1) {
list.push(/* @__PURE__ */ reactExports.createElement("span", {
key: i,
className: cls(baseClassName, _defineProperty(_defineProperty({}, "".concat(baseClassName, "-start"), isStart[i]), "".concat(baseClassName, "-end"), isEnd[i]))
}));
}
return /* @__PURE__ */ reactExports.createElement("span", {
"aria-hidden": "true",
className: "".concat(prefixCls, "-indent")
}, list);
};
const Indent$1 = /* @__PURE__ */ reactExports.memo(Indent);
var _excluded$2 = ["eventKey", "className", "style", "dragOver", "dragOverGapTop", "dragOverGapBottom", "isLeaf", "isStart", "isEnd", "expanded", "selected", "checked", "halfChecked", "loading", "domRef", "active", "data", "onMouseMove", "selectable"];
var ICON_OPEN = "open";
var ICON_CLOSE = "close";
var defaultTitle = "---";
var InternalTreeNode = /* @__PURE__ */ function(_React$Component) {
_inherits(InternalTreeNode2, _React$Component);
var _super = _createSuper(InternalTreeNode2);
function InternalTreeNode2() {
var _this;
_classCallCheck(this, InternalTreeNode2);
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = _super.call.apply(_super, [this].concat(args));
_defineProperty(_assertThisInitialized(_this), "state", {
dragNodeHighlight: false
});
_defineProperty(_assertThisInitialized(_this), "selectHandle", void 0);
_defineProperty(_assertThisInitialized(_this), "cacheIndent", void 0);
_defineProperty(_assertThisInitialized(_this), "onSelectorClick", function(e2) {
var onNodeClick = _this.props.context.onNodeClick;
onNodeClick(e2, convertNodePropsToEventData(_this.props));
if (_this.isSelectable()) {
_this.onSelect(e2);
} else {
_this.onCheck(e2);
}
});
_defineProperty(_assertThisInitialized(_this), "onSelectorDoubleClick", function(e2) {
var onNodeDoubleClick = _this.props.context.onNodeDoubleClick;
onNodeDoubleClick(e2, convertNodePropsToEventData(_this.props));
});
_defineProperty(_assertThisInitialized(_this), "onSelect", function(e2) {
if (_this.isDisabled()) return;
var onNodeSelect = _this.props.context.onNodeSelect;
onNodeSelect(e2, convertNodePropsToEventData(_this.props));
});
_defineProperty(_assertThisInitialized(_this), "onCheck", function(e2) {
if (_this.isDisabled()) return;
var _this$props = _this.props, disableCheckbox = _this$props.disableCheckbox, checked = _this$props.checked;
var onNodeCheck = _this.props.context.onNodeCheck;
if (!_this.isCheckable() || disableCheckbox) return;
var targetChecked = !checked;
onNodeCheck(e2, convertNodePropsToEventData(_this.props), targetChecked);
});
_defineProperty(_assertThisInitialized(_this), "onMouseEnter", function(e2) {
var onNodeMouseEnter = _this.props.context.onNodeMouseEnter;
onNodeMouseEnter(e2, convertNodePropsToEventData(_this.props));
});
_defineProperty(_assertThisInitialized(_this), "onMouseLeave", function(e2) {
var onNodeMouseLeave = _this.props.context.onNodeMouseLeave;
onNodeMouseLeave(e2, convertNodePropsToEventData(_this.props));
});
_defineProperty(_assertThisInitialized(_this), "onContextMenu", function(e2) {
var onNodeContextMenu = _this.props.context.onNodeContextMenu;
onNodeContextMenu(e2, convertNodePropsToEventData(_this.props));
});
_defineProperty(_assertThisInitialized(_this), "onDragStart", function(e2) {
var onNodeDragStart = _this.props.context.onNodeDragStart;
e2.stopPropagation();
_this.setState({
dragNodeHighlight: true
});
onNodeDragStart(e2, _assertThisInitialized(_this));
try {
e2.dataTransfer.setData("text/plain", "");
} catch (error) {
}
});
_defineProperty(_assertThisInitialized(_this), "onDragEnter", function(e2) {
var onNodeDragEnter = _this.props.context.onNodeDragEnter;
e2.preventDefault();
e2.stopPropagation();
onNodeDragEnter(e2, _assertThisInitialized(_this));
});
_defineProperty(_assertThisInitialized(_this), "onDragOver", function(e2) {
var onNodeDragOver = _this.props.context.onNodeDragOver;
e2.preventDefault();
e2.stopPropagation();
onNodeDragOver(e2, _assertThisInitialized(_this));
});
_defineProperty(_assertThisInitialized(_this), "onDragLeave", function(e2) {
var onNodeDragLeave = _this.props.context.onNodeDragLeave;
e2.stopPropagation();
onNodeDragLeave(e2, _assertThisInitialized(_this));
});
_defineProperty(_assertThisInitialized(_this), "onDragEnd", function(e2) {
var onNodeDragEnd = _this.props.context.onNodeDragEnd;
e2.stopPropagation();
_this.setState({
dragNodeHighlight: false
});
onNodeDragEnd(e2, _assertThisInitialized(_this));
});
_defineProperty(_assertThisInitialized(_this), "onDrop", function(e2) {
var onNodeDrop = _this.props.context.onNodeDrop;
e2.preventDefault();
e2.stopPropagation();
_this.setState({
dragNodeHighlight: false
});
onNodeDrop(e2, _assertThisInitialized(_this));
});
_defineProperty(_assertThisInitialized(_this), "onExpand", function(e2) {
var _this$props2 = _this.props, loading = _this$props2.loading, onNodeExpand = _this$props2.context.onNodeExpand;
if (loading) return;
onNodeExpand(e2, convertNodePropsToEventData(_this.props));
});
_defineProperty(_assertThisInitialized(_this), "setSelectHandle", function(node2) {
_this.selectHandle = node2;
});
_defineProperty(_assertThisInitialized(_this), "getNodeState", function() {
var expanded = _this.props.expanded;
if (_this.isLeaf()) {
return null;
}
return expanded ? ICON_OPEN : ICON_CLOSE;
});
_defineProperty(_assertThisInitialized(_this), "hasChildren", function() {
var eventKey = _this.props.eventKey;
var keyEntities = _this.props.context.keyEntities;
var _ref = getEntity(keyEntities, eventKey) || {}, children = _ref.children;
return !!(children || []).length;
});
_defineProperty(_assertThisInitialized(_this), "isLeaf", function() {
var _this$props3 = _this.props, isLeaf2 = _this$props3.isLeaf, loaded = _this$props3.loaded;
var loadData = _this.props.context.loadData;
var hasChildren = _this.hasChildren();
if (isLeaf2 === false) {
return false;
}
return isLeaf2 || !loadData && !hasChildren || loadData && loaded && !hasChildren;
});
_defineProperty(_assertThisInitialized(_this), "isDisabled", function() {
var disabled = _this.props.disabled;
var treeDisabled = _this.props.context.disabled;
return !!(treeDisabled || disabled);
});
_defineProperty(_assertThisInitialized(_this), "isCheckable", function() {
var checkable = _this.props.checkable;
var treeCheckable = _this.props.context.checkable;
if (!treeCheckable || checkable === false) return false;
return treeCheckable;
});
_defineProperty(_assertThisInitialized(_this), "syncLoadData", function(props) {
var expanded = props.expanded, loading = props.loading, loaded = props.loaded;
var _this$props$context = _this.props.context, loadData = _this$props$context.loadData, onNodeLoad = _this$props$context.onNodeLoad;
if (loading) {
return;
}
if (loadData && expanded && !_this.isLeaf() && !loaded) {
onNodeLoad(convertNodePropsToEventData(_this.props));
}
});
_defineProperty(_assertThisInitialized(_this), "isDraggable", function() {
var _this$props4 = _this.props, data = _this$props4.data, draggable = _this$props4.context.draggable;
return !!(draggable && (!draggable.nodeDraggable || draggable.nodeDraggable(data)));
});
_defineProperty(_assertThisInitialized(_this), "renderDragHandler", function() {
var _this$props$context2 = _this.props.context, draggable = _this$props$context2.draggable, prefixCls = _this$props$context2.prefixCls;
return draggable !== null && draggable !== void 0 && draggable.icon ? /* @__PURE__ */ reactExports.createElement("span", {
className: "".concat(prefixCls, "-draggable-icon")
}, draggable.icon) : null;
});
_defineProperty(_assertThisInitialized(_this), "renderSwitcherIconDom", function(isLeaf2) {
var switcherIconFromProps = _this.props.switcherIcon;
var switcherIconFromCtx = _this.props.context.switcherIcon;
var switcherIcon = switcherIconFromProps || switcherIconFromCtx;
if (typeof switcherIcon === "function") {
return switcherIcon(_objectSpread2$1(_objectSpread2$1({}, _this.props), {}, {
isLeaf: isLeaf2
}));
}
return switcherIcon;
});
_defineProperty(_assertThisInitialized(_this), "renderSwitcher", function() {
var expanded = _this.props.expanded;
var prefixCls = _this.props.context.prefixCls;
if (_this.isLeaf()) {
var _switcherIconDom = _this.renderSwitcherIconDom(true);
return _switcherIconDom !== false ? /* @__PURE__ */ reactExports.createElement("span", {
className: cls("".concat(prefixCls, "-switcher"), "".concat(prefixCls, "-switcher-noop"))
}, _switcherIconDom) : null;
}
var switcherCls = cls("".concat(prefixCls, "-switcher"), "".concat(prefixCls, "-switcher_").concat(expanded ? ICON_OPEN : ICON_CLOSE));
var switcherIconDom = _this.renderSwitcherIconDom(false);
return switcherIconDom !== false ? /* @__PURE__ */ reactExports.createElement("span", {
onClick: _this.onExpand,
className: switcherCls
}, switcherIconDom) : null;
});
_defineProperty(_assertThisInitialized(_this), "renderCheckbox", function() {
var _this$props5 = _this.props, checked = _this$props5.checked, halfChecked = _this$props5.halfChecked, disableCheckbox = _this$props5.disableCheckbox;
var prefixCls = _this.props.context.prefixCls;
var disabled = _this.isDisabled();
var checkable = _this.isCheckable();
if (!checkable) return null;
var $custom = typeof checkable !== "boolean" ? checkable : null;
return /* @__PURE__ */ reactExports.createElement("span", {
className: cls("".concat(prefixCls, "-checkbox"), checked && "".concat(prefixCls, "-checkbox-checked"), !checked && halfChecked && "".concat(prefixCls, "-checkbox-indeterminate"), (disabled || disableCheckbox) && "".concat(prefixCls, "-checkbox-disabled")),
onClick: _this.onCheck
}, $custom);
});
_defineProperty(_assertThisInitialized(_this), "renderIcon", function() {
var loading = _this.props.loading;
var prefixCls = _this.props.context.prefixCls;
return /* @__PURE__ */ reactExports.createElement("span", {
className: cls("".concat(prefixCls, "-iconEle"), "".concat(prefixCls, "-icon__").concat(_this.getNodeState() || "docu"), loading && "".concat(prefixCls, "-icon_loading"))
});
});
_defineProperty(_assertThisInitialized(_this), "renderSelector", function() {
var dragNodeHighlight = _this.state.dragNodeHighlight;
var _this$props6 = _this.props, _this$props6$title = _this$props6.title, title = _this$props6$title === void 0 ? defaultTitle : _this$props6$title, selected = _this$props6.selected, icon = _this$props6.icon, loading = _this$props6.loading, data = _this$props6.data;
var _this$props$context3 = _this.props.context, prefixCls = _this$props$context3.prefixCls, showIcon = _this$props$context3.showIcon, treeIcon = _this$props$context3.icon, loadData = _this$props$context3.loadData, titleRender = _this$props$context3.titleRender;
var disabled = _this.isDisabled();
var wrapClass = "".concat(prefixCls, "-node-content-wrapper");
var $icon;
if (showIcon) {
var currentIcon = icon || treeIcon;
$icon = currentIcon ? /* @__PURE__ */ reactExports.createElement("span", {
className: cls("".concat(prefixCls, "-iconEle"), "".concat(prefixCls, "-icon__customize"))
}, typeof currentIcon === "function" ? currentIcon(_this.props) : currentIcon) : _this.renderIcon();
} else if (loadData && loading) {
$icon = _this.renderIcon();
}
var titleNode;
if (typeof title === "function") {
titleNode = title(data);
} else if (titleRender) {
titleNode = titleRender(data);
} else {
titleNode = title;
}
var $title = /* @__PURE__ */ reactExports.createElement("span", {
className: "".concat(prefixCls, "-title")
}, titleNode);
return /* @__PURE__ */ reactExports.createElement("span", {
ref: _this.setSelectHandle,
title: typeof title === "string" ? title : "",
className: cls("".concat(wrapClass), "".concat(wrapClass, "-").concat(_this.getNodeState() || "normal"), !disabled && (selected || dragNodeHighlight) && "".concat(prefixCls, "-node-selected")),
onMouseEnter: _this.onMouseEnter,
onMouseLeave: _this.onMouseLeave,
onContextMenu: _this.onContextMenu,
onClick: _this.onSelectorClick,
onDoubleClick: _this.onSelectorDoubleClick
}, $icon, $title, _this.renderDropIndicator());
});
_defineProperty(_assertThisInitialized(_this), "renderDropIndicator", function() {
var _this$props7 = _this.props, disabled = _this$props7.disabled, eventKey = _this$props7.eventKey;
var _this$props$context4 = _this.props.context, draggable = _this$props$context4.draggable, dropLevelOffset = _this$props$context4.dropLevelOffset, dropPosition = _this$props$context4.dropPosition, prefixCls = _this$props$context4.prefixCls, indent = _this$props$context4.indent, dropIndicatorRender2 = _this$props$context4.dropIndicatorRender, dragOverNodeKey = _this$props$context4.dragOverNodeKey, direction = _this$props$context4.direction;
var rootDraggable = !!draggable;
var showIndicator = !disabled && rootDraggable && dragOverNodeKey === eventKey;
var mergedIndent = indent !== null && indent !== void 0 ? indent : _this.cacheIndent;
_this.cacheIndent = indent;
return showIndicator ? dropIndicatorRender2({
dropPosition,
dropLevelOffset,
indent: mergedIndent,
prefixCls,
direction
}) : null;
});
return _this;
}
_createClass(InternalTreeNode2, [{
key: "componentDidMount",
value: (
// Isomorphic needn't load data in server side
function componentDidMount() {
this.syncLoadData(this.props);
}
)
}, {
key: "componentDidUpdate",
value: function componentDidUpdate() {
this.syncLoadData(this.props);
}
}, {
key: "isSelectable",
value: function isSelectable() {
var selectable = this.props.selectable;
var treeSelectable = this.props.context.selectable;
if (typeof selectable === "boolean") {
return selectable;
}
return treeSelectable;
}
}, {
key: "render",
value: (
// =========================== Render ===========================
function render2() {
var _classNames;
var _this$props8 = this.props, eventKey = _this$props8.eventKey, className = _this$props8.className, style2 = _this$props8.style, dragOver = _this$props8.dragOver, dragOverGapTop = _this$props8.dragOverGapTop, dragOverGapBottom = _this$props8.dragOverGapBottom, isLeaf2 = _this$props8.isLeaf, isStart = _this$props8.isStart, isEnd = _this$props8.isEnd, expanded = _this$props8.expanded, selected = _this$props8.selected, checked = _this$props8.checked, halfChecked = _this$props8.halfChecked, loading = _this$props8.loading, domRef = _this$props8.domRef, active = _this$props8.active;
_this$props8.data;
var onMouseMove = _this$props8.onMouseMove, selectable = _this$props8.selectable, otherProps = _objectWithoutProperties(_this$props8, _excluded$2);
var _this$props$context5 = this.props.context, prefixCls = _this$props$context5.prefixCls, filterTreeNode = _this$props$context5.filterTreeNode, keyEntities = _this$props$context5.keyEntities, dropContainerKey = _this$props$context5.dropContainerKey, dropTargetKey = _this$props$context5.dropTargetKey, draggingNodeKey = _this$props$context5.draggingNodeKey;
var disabled = this.isDisabled();
var dataOrAriaAttributeProps = pickAttrs(otherProps, {
aria: true,
data: true
});
var _ref2 = getEntity(keyEntities, eventKey) || {}, level = _ref2.level;
var isEndNode = isEnd[isEnd.length - 1];
var mergedDraggable = this.isDraggable();
var draggableWithoutDisabled = !disabled && mergedDraggable;
var dragging = draggingNodeKey === eventKey;
var ariaSelected = selectable !== void 0 ? {
"aria-selected": !!selectable
} : void 0;
return /* @__PURE__ */ reactExports.createElement("div", _extends$2({
ref: domRef,
className: cls(className, "".concat(prefixCls, "-treenode"), (_classNames = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_classNames, "".concat(prefixCls, "-treenode-disabled"), disabled), "".concat(prefixCls, "-treenode-switcher-").concat(expanded ? "open" : "close"), !isLeaf2), "".concat(prefixCls, "-treenode-checkbox-checked"), checked), "".concat(prefixCls, "-treenode-checkbox-indeterminate"), halfChecked), "".concat(prefixCls, "-treenode-selected"), selected), "".concat(prefixCls, "-treenode-loading"), loading), "".concat(prefixCls, "-treenode-active"), active), "".concat(prefixCls, "-treenode-leaf-last"), isEndNode), "".concat(prefixCls, "-treenode-draggable"), mergedDraggable), "dragging", dragging), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_classNames, "drop-target", dropTargetKey === eventKey), "drop-container", dropContainerKey === eventKey), "drag-over", !disabled && dragOver), "drag-over-gap-top", !disabled && dragOverGapTop), "drag-over-gap-bottom", !disabled && dragOverGapBottom), "filter-node", filterTreeNode && filterTreeNode(convertNodePropsToEventData(this.props))))),
style: style2,
draggable: draggableWithoutDisabled,
"aria-grabbed": dragging,
onDragStart: draggableWithoutDisabled ? this.onDragStart : void 0,
onDragEnter: mergedDraggable ? this.onDragEnter : void 0,
onDragOver: mergedDraggable ? this.onDragOver : void 0,
onDragLeave: mergedDraggable ? this.onDragLeave : void 0,
onDrop: mergedDraggable ? this.onDrop : void 0,
onDragEnd: mergedDraggable ? this.onDragEnd : void 0,
onMouseMove
}, ariaSelected, dataOrAriaAttributeProps), /* @__PURE__ */ reactExports.createElement(Indent$1, {
prefixCls,
level,
isStart,
isEnd
}), this.renderDragHandler(), this.renderSwitcher(), this.renderCheckbox(), this.renderSelector());
}
)
}]);
return InternalTreeNode2;
}(reactExports.Component);
var ContextTreeNode = function ContextTreeNode2(props) {
return /* @__PURE__ */ reactExports.createElement(TreeContext.Consumer, null, function(context) {
return /* @__PURE__ */ reactExports.createElement(InternalTreeNode, _extends$2({}, props, {
context
}));
});
};
ContextTreeNode.displayName = "TreeNode";
ContextTreeNode.isTreeNode = 1;
function arrDel(list, value) {
if (!list) return [];
var clone3 = list.slice();
var index2 = clone3.indexOf(value);
if (index2 >= 0) {
clone3.splice(index2, 1);
}
return clone3;
}
function arrAdd(list, value) {
var clone3 = (list || []).slice();
if (clone3.indexOf(value) === -1) {
clone3.push(value);
}
return clone3;
}
function posToArr(pos) {
return pos.split("-");
}
function getDragChildrenKeys(dragNodeKey, keyEntities) {
var dragChildrenKeys = [];
var entity = getEntity(keyEntities, dragNodeKey);
function dig() {
var list = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
list.forEach(function(_ref) {
var key = _ref.key, children = _ref.children;
dragChildrenKeys.push(key);
dig(children);
});
}
dig(entity.children);
return dragChildrenKeys;
}
function isLastChild(treeNodeEntity) {
if (treeNodeEntity.parent) {
var posArr = posToArr(treeNodeEntity.pos);
return Number(posArr[posArr.length - 1]) === treeNodeEntity.parent.children.length - 1;
}
return false;
}
function isFirstChild(treeNodeEntity) {
var posArr = posToArr(treeNodeEntity.pos);
return Number(posArr[posArr.length - 1]) === 0;
}
function calcDropPosition(event, dragNode, targetNode, indent, startMousePosition, allowDrop2, flattenedNodes, keyEntities, expandKeys, direction) {
var _abstractDropNodeEnti;
var clientX = event.clientX, clientY = event.clientY;
var _getBoundingClientRec = event.target.getBoundingClientRect(), top = _getBoundingClientRec.top, height = _getBoundingClientRec.height;
var horizontalMouseOffset = (direction === "rtl" ? -1 : 1) * (((startMousePosition === null || startMousePosition === void 0 ? void 0 : startMousePosition.x) || 0) - clientX);
var rawDropLevelOffset = (horizontalMouseOffset - 12) / indent;
var filteredExpandKeys = expandKeys.filter(function(key) {
var _keyEntities$key;
return (_keyEntities$key = keyEntities[key]) === null || _keyEntities$key === void 0 || (_keyEntities$key = _keyEntities$key.children) === null || _keyEntities$key === void 0 ? void 0 : _keyEntities$key.length;
});
var abstractDropNodeEntity = getEntity(keyEntities, targetNode.props.eventKey);
if (clientY < top + height / 2) {
var nodeIndex = flattenedNodes.findIndex(function(flattenedNode) {
return flattenedNode.key === abstractDropNodeEntity.key;
});
var prevNodeIndex = nodeIndex <= 0 ? 0 : nodeIndex - 1;
var prevNodeKey = flattenedNodes[prevNodeIndex].key;
abstractDropNodeEntity = getEntity(keyEntities, prevNodeKey);
}
var initialAbstractDropNodeKey = abstractDropNodeEntity.key;
var abstractDragOverEntity = abstractDropNodeEntity;
var dragOverNodeKey = abstractDropNodeEntity.key;
var dropPosition = 0;
var dropLevelOffset = 0;
if (!filteredExpandKeys.includes(initialAbstractDropNodeKey)) {
for (var i = 0; i < rawDropLevelOffset; i += 1) {
if (isLastChild(abstractDropNodeEntity)) {
abstractDropNodeEntity = abstractDropNodeEntity.parent;
dropLevelOffset += 1;
} else {
break;
}
}
}
var abstractDragDataNode = dragNode.props.data;
var abstractDropDataNode = abstractDropNodeEntity.node;
var dropAllowed = true;
if (isFirstChild(abstractDropNodeEntity) && abstractDropNodeEntity.level === 0 && clientY < top + height / 2 && allowDrop2({
dragNode: abstractDragDataNode,
dropNode: abstractDropDataNode,
dropPosition: -1
}) && abstractDropNodeEntity.key === targetNode.props.eventKey) {
dropPosition = -1;
} else if ((abstractDragOverEntity.children || []).length && filteredExpandKeys.includes(dragOverNodeKey)) {
if (allowDrop2({
dragNode: abstractDragDataNode,
dropNode: abstractDropDataNode,
dropPosition: 0
})) {
dropPosition = 0;
} else {
dropAllowed = false;
}
} else if (dropLevelOffset === 0) {
if (rawDropLevelOffset > -1.5) {
if (allowDrop2({
dragNode: abstractDragDataNode,
dropNode: abstractDropDataNode,
dropPosition: 1
})) {
dropPosition = 1;
} else {
dropAllowed = false;
}
} else {
if (allowDrop2({
dragNode: abstractDragDataNode,
dropNode: abstractDropDataNode,
dropPosition: 0
})) {
dropPosition = 0;
} else if (allowDrop2({
dragNode: abstractDragDataNode,
dropNode: abstractDropDataNode,
dropPosition: 1
})) {
dropPosition = 1;
} else {
dropAllowed = false;
}
}
} else {
if (allowDrop2({
dragNode: abstractDragDataNode,
dropNode: abstractDropDataNode,
dropPosition: 1
})) {
dropPosition = 1;
} else {
dropAllowed = false;
}
}
return {
dropPosition,
dropLevelOffset,
dropTargetKey: abstractDropNodeEntity.key,
dropTargetPos: abstractDropNodeEntity.pos,
dragOverNodeKey,
dropContainerKey: dropPosition === 0 ? null : ((_abstractDropNodeEnti = abstractDropNodeEntity.parent) === null || _abstractDropNodeEnti === void 0 ? void 0 : _abstractDropNodeEnti.key) || null,
dropAllowed
};
}
function calcSelectedKeys(selectedKeys, props) {
if (!selectedKeys) return void 0;
var multiple = props.multiple;
if (multiple) {
return selectedKeys.slice();
}
if (selectedKeys.length) {
return [selectedKeys[0]];
}
return selectedKeys;
}
function parseCheckedKeys(keys2) {
if (!keys2) {
return null;
}
var keyProps;
if (Array.isArray(keys2)) {
keyProps = {
checkedKeys: keys2,
halfCheckedKeys: void 0
};
} else if (_typeof$2(keys2) === "object") {
keyProps = {
checkedKeys: keys2.checked || void 0,
halfCheckedKeys: keys2.halfChecked || void 0
};
} else {
warningOnce(false, "`checkedKeys` is not an array or an object");
return null;
}
return keyProps;
}
function conductExpandParent(keyList, keyEntities) {
var expandedKeys = /* @__PURE__ */ new Set();
function conductUp(key) {
if (expandedKeys.has(key)) return;
var entity = getEntity(keyEntities, key);
if (!entity) return;
expandedKeys.add(key);
var parent = entity.parent, node2 = entity.node;
if (node2.disabled) return;
if (parent) {
conductUp(parent.key);
}
}
(keyList || []).forEach(function(key) {
conductUp(key);
});
return _toConsumableArray(expandedKeys);
}
function useMultipleSelect(getKey2) {
const [prevSelectedIndex, setPrevSelectedIndex] = reactExports.useState(null);
const multipleSelect = reactExports.useCallback((currentSelectedIndex, data, selectedKeys) => {
const configPrevSelectedIndex = prevSelectedIndex !== null && prevSelectedIndex !== void 0 ? prevSelectedIndex : currentSelectedIndex;
const startIndex = Math.min(configPrevSelectedIndex || 0, currentSelectedIndex);
const endIndex = Math.max(configPrevSelectedIndex || 0, currentSelectedIndex);
const rangeKeys = data.slice(startIndex, endIndex + 1).map((item) => getKey2(item));
const shouldSelected = rangeKeys.some((rangeKey) => !selectedKeys.has(rangeKey));
const changedKeys = [];
rangeKeys.forEach((item) => {
if (shouldSelected) {
if (!selectedKeys.has(item)) {
changedKeys.push(item);
}
selectedKeys.add(item);
} else {
selectedKeys.delete(item);
changedKeys.push(item);
}
});
setPrevSelectedIndex(shouldSelected ? endIndex : null);
return changedKeys;
}, [prevSelectedIndex]);
const updatePrevSelectedIndex = (val) => {
setPrevSelectedIndex(val);
};
return [multipleSelect, updatePrevSelectedIndex];
}
const SELECTION_COLUMN = {};
const SELECTION_ALL = "SELECT_ALL";
const SELECTION_INVERT = "SELECT_INVERT";
const SELECTION_NONE = "SELECT_NONE";
const EMPTY_LIST$1 = [];
const flattenData = (childrenColumnName, data) => {
let list = [];
(data || []).forEach((record) => {
list.push(record);
if (record && typeof record === "object" && childrenColumnName in record) {
list = [].concat(_toConsumableArray(list), _toConsumableArray(flattenData(childrenColumnName, record[childrenColumnName])));
}
});
return list;
};
const useSelection = (config, rowSelection) => {
const {
preserveSelectedRowKeys,
selectedRowKeys,
defaultSelectedRowKeys,
getCheckboxProps,
onChange: onSelectionChange,
onSelect,
onSelectAll,
onSelectInvert,
onSelectNone,
onSelectMultiple,
columnWidth: selectionColWidth,
type: selectionType,
selections,
fixed,
renderCell: customizeRenderCell,
hideSelectAll,
checkStrictly = true
} = rowSelection || {};
const {
prefixCls,
data,
pageData,
getRecordByKey,
getRowKey,
expandType,
childrenColumnName,
locale: tableLocale,
getPopupContainer
} = config;
const warning3 = devUseWarning();
const [multipleSelect, updatePrevSelectedIndex] = useMultipleSelect((item) => item);
const [mergedSelectedKeys, setMergedSelectedKeys] = useMergedState(selectedRowKeys || defaultSelectedRowKeys || EMPTY_LIST$1, {
value: selectedRowKeys
});
const preserveRecordsRef = reactExports.useRef(/* @__PURE__ */ new Map());
const updatePreserveRecordsCache = reactExports.useCallback((keys2) => {
if (preserveSelectedRowKeys) {
const newCache = /* @__PURE__ */ new Map();
keys2.forEach((key) => {
let record = getRecordByKey(key);
if (!record && preserveRecordsRef.current.has(key)) {
record = preserveRecordsRef.current.get(key);
}
newCache.set(key, record);
});
preserveRecordsRef.current = newCache;
}
}, [getRecordByKey, preserveSelectedRowKeys]);
reactExports.useEffect(() => {
updatePreserveRecordsCache(mergedSelectedKeys);
}, [mergedSelectedKeys]);
const flattedData = reactExports.useMemo(() => flattenData(childrenColumnName, pageData), [childrenColumnName, pageData]);
const {
keyEntities
} = reactExports.useMemo(() => {
if (checkStrictly) {
return {
keyEntities: null
};
}
let convertData = data;
if (preserveSelectedRowKeys) {
const keysSet = new Set(flattedData.map((record, index2) => getRowKey(record, index2)));
const preserveRecords = Array.from(preserveRecordsRef.current).reduce((total, _ref) => {
let [key, value] = _ref;
return keysSet.has(key) ? total : total.concat(value);
}, []);
convertData = [].concat(_toConsumableArray(convertData), _toConsumableArray(preserveRecords));
}
return convertDataToEntities(convertData, {
externalGetKey: getRowKey,
childrenPropName: childrenColumnName
});
}, [data, getRowKey, checkStrictly, childrenColumnName, preserveSelectedRowKeys, flattedData]);
const checkboxPropsMap = reactExports.useMemo(() => {
const map2 = /* @__PURE__ */ new Map();
flattedData.forEach((record, index2) => {
const key = getRowKey(record, index2);
const checkboxProps = (getCheckboxProps ? getCheckboxProps(record) : null) || {};
map2.set(key, checkboxProps);
});
return map2;
}, [flattedData, getRowKey, getCheckboxProps]);
const isCheckboxDisabled = reactExports.useCallback((r2) => {
var _a2;
return !!((_a2 = checkboxPropsMap.get(getRowKey(r2))) === null || _a2 === void 0 ? void 0 : _a2.disabled);
}, [checkboxPropsMap, getRowKey]);
const [derivedSelectedKeys, derivedHalfSelectedKeys] = reactExports.useMemo(() => {
if (checkStrictly) {
return [mergedSelectedKeys || [], []];
}
const {
checkedKeys,
halfCheckedKeys
} = conductCheck(mergedSelectedKeys, true, keyEntities, isCheckboxDisabled);
return [checkedKeys || [], halfCheckedKeys];
}, [mergedSelectedKeys, checkStrictly, keyEntities, isCheckboxDisabled]);
const derivedSelectedKeySet = reactExports.useMemo(() => {
const keys2 = selectionType === "radio" ? derivedSelectedKeys.slice(0, 1) : derivedSelectedKeys;
return new Set(keys2);
}, [derivedSelectedKeys, selectionType]);
const derivedHalfSelectedKeySet = reactExports.useMemo(() => selectionType === "radio" ? /* @__PURE__ */ new Set() : new Set(derivedHalfSelectedKeys), [derivedHalfSelectedKeys, selectionType]);
reactExports.useEffect(() => {
if (!rowSelection) {
setMergedSelectedKeys(EMPTY_LIST$1);
}
}, [!!rowSelection]);
const setSelectedKeys = reactExports.useCallback((keys2, method4) => {
let availableKeys;
let records;
updatePreserveRecordsCache(keys2);
if (preserveSelectedRowKeys) {
availableKeys = keys2;
records = keys2.map((key) => preserveRecordsRef.current.get(key));
} else {
availableKeys = [];
records = [];
keys2.forEach((key) => {
const record = getRecordByKey(key);
if (record !== void 0) {
availableKeys.push(key);
records.push(record);
}
});
}
setMergedSelectedKeys(availableKeys);
onSelectionChange === null || onSelectionChange === void 0 ? void 0 : onSelectionChange(availableKeys, records, {
type: method4
});
}, [setMergedSelectedKeys, getRecordByKey, onSelectionChange, preserveSelectedRowKeys]);
const triggerSingleSelection = reactExports.useCallback((key, selected, keys2, event) => {
if (onSelect) {
const rows = keys2.map((k2) => getRecordByKey(k2));
onSelect(getRecordByKey(key), selected, rows, event);
}
setSelectedKeys(keys2, "single");
}, [onSelect, getRecordByKey, setSelectedKeys]);
const mergedSelections = reactExports.useMemo(() => {
if (!selections || hideSelectAll) {
return null;
}
const selectionList = selections === true ? [SELECTION_ALL, SELECTION_INVERT, SELECTION_NONE] : selections;
return selectionList.map((selection) => {
if (selection === SELECTION_ALL) {
return {
key: "all",
text: tableLocale.selectionAll,
onSelect() {
setSelectedKeys(data.map((record, index2) => getRowKey(record, index2)).filter((key) => {
const checkProps = checkboxPropsMap.get(key);
return !(checkProps === null || checkProps === void 0 ? void 0 : checkProps.disabled) || derivedSelectedKeySet.has(key);
}), "all");
}
};
}
if (selection === SELECTION_INVERT) {
return {
key: "invert",
text: tableLocale.selectInvert,
onSelect() {
const keySet = new Set(derivedSelectedKeySet);
pageData.forEach((record, index2) => {
const key = getRowKey(record, index2);
const checkProps = checkboxPropsMap.get(key);
if (!(checkProps === null || checkProps === void 0 ? void 0 : checkProps.disabled)) {
if (keySet.has(key)) {
keySet.delete(key);
} else {
keySet.add(key);
}
}
});
const keys2 = Array.from(keySet);
if (onSelectInvert) {
warning3.deprecated(false, "onSelectInvert", "onChange");
onSelectInvert(keys2);
}
setSelectedKeys(keys2, "invert");
}
};
}
if (selection === SELECTION_NONE) {
return {
key: "none",
text: tableLocale.selectNone,
onSelect() {
onSelectNone === null || onSelectNone === void 0 ? void 0 : onSelectNone();
setSelectedKeys(Array.from(derivedSelectedKeySet).filter((key) => {
const checkProps = checkboxPropsMap.get(key);
return checkProps === null || checkProps === void 0 ? void 0 : checkProps.disabled;
}), "none");
}
};
}
return selection;
}).map((selection) => Object.assign(Object.assign({}, selection), {
onSelect: function() {
var _a2;
var _a3;
for (var _len = arguments.length, rest = new Array(_len), _key = 0; _key < _len; _key++) {
rest[_key] = arguments[_key];
}
(_a3 = selection.onSelect) === null || _a3 === void 0 ? void 0 : (_a2 = _a3).call.apply(_a2, [selection].concat(rest));
updatePrevSelectedIndex(null);
}
}));
}, [selections, derivedSelectedKeySet, pageData, getRowKey, onSelectInvert, setSelectedKeys]);
const transformColumns = reactExports.useCallback((columns) => {
var _a2;
if (!rowSelection) {
return columns.filter((col) => col !== SELECTION_COLUMN);
}
let cloneColumns = _toConsumableArray(columns);
const keySet = new Set(derivedSelectedKeySet);
const recordKeys = flattedData.map(getRowKey).filter((key) => !checkboxPropsMap.get(key).disabled);
const checkedCurrentAll = recordKeys.every((key) => keySet.has(key));
const checkedCurrentSome = recordKeys.some((key) => keySet.has(key));
const onSelectAllChange = () => {
const changeKeys = [];
if (checkedCurrentAll) {
recordKeys.forEach((key) => {
keySet.delete(key);
changeKeys.push(key);
});
} else {
recordKeys.forEach((key) => {
if (!keySet.has(key)) {
keySet.add(key);
changeKeys.push(key);
}
});
}
const keys2 = Array.from(keySet);
onSelectAll === null || onSelectAll === void 0 ? void 0 : onSelectAll(!checkedCurrentAll, keys2.map((k2) => getRecordByKey(k2)), changeKeys.map((k2) => getRecordByKey(k2)));
setSelectedKeys(keys2, "all");
updatePrevSelectedIndex(null);
};
let title;
let columnTitleCheckbox;
if (selectionType !== "radio") {
let customizeSelections;
if (mergedSelections) {
const menu = {
getPopupContainer,
items: mergedSelections.map((selection, index2) => {
const {
key,
text,
onSelect: onSelectionClick
} = selection;
return {
key: key !== null && key !== void 0 ? key : index2,
onClick: () => {
onSelectionClick === null || onSelectionClick === void 0 ? void 0 : onSelectionClick(recordKeys);
},
label: text
};
})
};
customizeSelections = /* @__PURE__ */ reactExports.createElement("div", {
className: `${prefixCls}-selection-extra`
}, /* @__PURE__ */ reactExports.createElement(Dropdown, {
menu,
getPopupContainer
}, /* @__PURE__ */ reactExports.createElement("span", null, /* @__PURE__ */ reactExports.createElement(RefIcon$g, null))));
}
const allDisabledData = flattedData.map((record, index2) => {
const key = getRowKey(record, index2);
const checkboxProps = checkboxPropsMap.get(key) || {};
return Object.assign({
checked: keySet.has(key)
}, checkboxProps);
}).filter((_ref2) => {
let {
disabled
} = _ref2;
return disabled;
});
const allDisabled = !!allDisabledData.length && allDisabledData.length === flattedData.length;
const allDisabledAndChecked = allDisabled && allDisabledData.every((_ref3) => {
let {
checked
} = _ref3;
return checked;
});
const allDisabledSomeChecked = allDisabled && allDisabledData.some((_ref4) => {
let {
checked
} = _ref4;
return checked;
});
columnTitleCheckbox = /* @__PURE__ */ reactExports.createElement(Checkbox, {
checked: !allDisabled ? !!flattedData.length && checkedCurrentAll : allDisabledAndChecked,
indeterminate: !allDisabled ? !checkedCurrentAll && checkedCurrentSome : !allDisabledAndChecked && allDisabledSomeChecked,
onChange: onSelectAllChange,
disabled: flattedData.length === 0 || allDisabled,
"aria-label": customizeSelections ? "Custom selection" : "Select all",
skipGroup: true
});
title = !hideSelectAll && /* @__PURE__ */ reactExports.createElement("div", {
className: `${prefixCls}-selection`
}, columnTitleCheckbox, customizeSelections);
}
let renderCell;
if (selectionType === "radio") {
renderCell = (_, record, index2) => {
const key = getRowKey(record, index2);
const checked = keySet.has(key);
return {
node: /* @__PURE__ */ reactExports.createElement(Radio, Object.assign({}, checkboxPropsMap.get(key), {
checked,
onClick: (e2) => e2.stopPropagation(),
onChange: (event) => {
if (!keySet.has(key)) {
triggerSingleSelection(key, true, [key], event.nativeEvent);
}
}
})),
checked
};
};
} else {
renderCell = (_, record, index2) => {
var _a22;
const key = getRowKey(record, index2);
const checked = keySet.has(key);
const indeterminate = derivedHalfSelectedKeySet.has(key);
const checkboxProps = checkboxPropsMap.get(key);
let mergedIndeterminate;
if (expandType === "nest") {
mergedIndeterminate = indeterminate;
} else {
mergedIndeterminate = (_a22 = checkboxProps === null || checkboxProps === void 0 ? void 0 : checkboxProps.indeterminate) !== null && _a22 !== void 0 ? _a22 : indeterminate;
}
return {
node: /* @__PURE__ */ reactExports.createElement(Checkbox, Object.assign({}, checkboxProps, {
indeterminate: mergedIndeterminate,
checked,
skipGroup: true,
onClick: (e2) => e2.stopPropagation(),
onChange: (_ref5) => {
let {
nativeEvent
} = _ref5;
const {
shiftKey
} = nativeEvent;
const currentSelectedIndex = recordKeys.findIndex((item) => item === key);
const isMultiple3 = derivedSelectedKeys.some((item) => recordKeys.includes(item));
if (shiftKey && checkStrictly && isMultiple3) {
const changedKeys = multipleSelect(currentSelectedIndex, recordKeys, keySet);
const keys2 = Array.from(keySet);
onSelectMultiple === null || onSelectMultiple === void 0 ? void 0 : onSelectMultiple(!checked, keys2.map((recordKey) => getRecordByKey(recordKey)), changedKeys.map((recordKey) => getRecordByKey(recordKey)));
setSelectedKeys(keys2, "multiple");
} else {
const originCheckedKeys = derivedSelectedKeys;
if (checkStrictly) {
const checkedKeys = checked ? arrDel(originCheckedKeys, key) : arrAdd(originCheckedKeys, key);
triggerSingleSelection(key, !checked, checkedKeys, nativeEvent);
} else {
const result = conductCheck([].concat(_toConsumableArray(originCheckedKeys), [key]), true, keyEntities, isCheckboxDisabled);
const {
checkedKeys,
halfCheckedKeys
} = result;
let nextCheckedKeys = checkedKeys;
if (checked) {
const tempKeySet = new Set(checkedKeys);
tempKeySet.delete(key);
nextCheckedKeys = conductCheck(Array.from(tempKeySet), {
checked: false,
halfCheckedKeys
}, keyEntities, isCheckboxDisabled).checkedKeys;
}
triggerSingleSelection(key, !checked, nextCheckedKeys, nativeEvent);
}
}
if (checked) {
updatePrevSelectedIndex(null);
} else {
updatePrevSelectedIndex(currentSelectedIndex);
}
}
})),
checked
};
};
}
const renderSelectionCell = (_, record, index2) => {
const {
node: node2,
checked
} = renderCell(_, record, index2);
if (customizeRenderCell) {
return customizeRenderCell(checked, record, index2, node2);
}
return node2;
};
if (!cloneColumns.includes(SELECTION_COLUMN)) {
if (cloneColumns.findIndex((col) => {
var _a22;
return ((_a22 = col[INTERNAL_COL_DEFINE]) === null || _a22 === void 0 ? void 0 : _a22.columnType) === "EXPAND_COLUMN";
}) === 0) {
const [expandColumn, ...restColumns] = cloneColumns;
cloneColumns = [expandColumn, SELECTION_COLUMN].concat(_toConsumableArray(restColumns));
} else {
cloneColumns = [SELECTION_COLUMN].concat(_toConsumableArray(cloneColumns));
}
}
const selectionColumnIndex = cloneColumns.indexOf(SELECTION_COLUMN);
cloneColumns = cloneColumns.filter((column2, index2) => column2 !== SELECTION_COLUMN || index2 === selectionColumnIndex);
const prevCol = cloneColumns[selectionColumnIndex - 1];
const nextCol = cloneColumns[selectionColumnIndex + 1];
let mergedFixed = fixed;
if (mergedFixed === void 0) {
if ((nextCol === null || nextCol === void 0 ? void 0 : nextCol.fixed) !== void 0) {
mergedFixed = nextCol.fixed;
} else if ((prevCol === null || prevCol === void 0 ? void 0 : prevCol.fixed) !== void 0) {
mergedFixed = prevCol.fixed;
}
}
if (mergedFixed && prevCol && ((_a2 = prevCol[INTERNAL_COL_DEFINE]) === null || _a2 === void 0 ? void 0 : _a2.columnType) === "EXPAND_COLUMN" && prevCol.fixed === void 0) {
prevCol.fixed = mergedFixed;
}
const columnCls = cls(`${prefixCls}-selection-col`, {
[`${prefixCls}-selection-col-with-dropdown`]: selections && selectionType === "checkbox"
});
const renderColumnTitle2 = () => {
if (!(rowSelection === null || rowSelection === void 0 ? void 0 : rowSelection.columnTitle)) {
return title;
}
if (typeof rowSelection.columnTitle === "function") {
return rowSelection.columnTitle(columnTitleCheckbox);
}
return rowSelection.columnTitle;
};
const selectionColumn = {
fixed: mergedFixed,
width: selectionColWidth,
className: `${prefixCls}-selection-column`,
title: renderColumnTitle2(),
render: renderSelectionCell,
onCell: rowSelection.onCell,
[INTERNAL_COL_DEFINE]: {
className: columnCls
}
};
return cloneColumns.map((col) => col === SELECTION_COLUMN ? selectionColumn : col);
}, [getRowKey, flattedData, rowSelection, derivedSelectedKeys, derivedSelectedKeySet, derivedHalfSelectedKeySet, selectionColWidth, mergedSelections, expandType, checkboxPropsMap, onSelectMultiple, triggerSingleSelection, isCheckboxDisabled]);
return [transformColumns, derivedSelectedKeySet];
};
function fillProxy(element, handler) {
element._antProxy = element._antProxy || {};
Object.keys(handler).forEach((key) => {
if (!(key in element._antProxy)) {
const ori = element[key];
element._antProxy[key] = ori;
element[key] = handler[key];
}
});
return element;
}
function useProxyImperativeHandle(ref, init2) {
return reactExports.useImperativeHandle(ref, () => {
const refObj = init2();
const {
nativeElement
} = refObj;
if (typeof Proxy !== "undefined") {
return new Proxy(nativeElement, {
get(obj, prop) {
if (refObj[prop]) {
return refObj[prop];
}
return Reflect.get(obj, prop);
}
});
}
return fillProxy(nativeElement, refObj);
});
}
function renderExpandIcon(locale2) {
return (props) => {
const {
prefixCls,
onExpand,
record,
expanded,
expandable
} = props;
const iconPrefix = `${prefixCls}-row-expand-icon`;
return /* @__PURE__ */ reactExports.createElement("button", {
type: "button",
onClick: (e2) => {
onExpand(record, e2);
e2.stopPropagation();
},
className: cls(iconPrefix, {
[`${iconPrefix}-spaced`]: !expandable,
[`${iconPrefix}-expanded`]: expandable && expanded,
[`${iconPrefix}-collapsed`]: expandable && !expanded
}),
"aria-label": expanded ? locale2.collapse : locale2.expand,
"aria-expanded": expanded
});
};
}
function useContainerWidth(prefixCls) {
const getContainerWidth = (ele, width) => {
const container = ele.querySelector(`.${prefixCls}-container`);
let returnWidth = width;
if (container) {
const style2 = getComputedStyle(container);
const borderLeft = parseInt(style2.borderLeftWidth, 10);
const borderRight = parseInt(style2.borderRightWidth, 10);
returnWidth = width - borderLeft - borderRight;
}
return returnWidth;
};
return getContainerWidth;
}
const getColumnKey = (column2, defaultKey) => {
if ("key" in column2 && column2.key !== void 0 && column2.key !== null) {
return column2.key;
}
if (column2.dataIndex) {
return Array.isArray(column2.dataIndex) ? column2.dataIndex.join(".") : column2.dataIndex;
}
return defaultKey;
};
function getColumnPos(index2, pos) {
return pos ? `${pos}-${index2}` : `${index2}`;
}
const renderColumnTitle = (title, props) => {
if (typeof title === "function") {
return title(props);
}
return title;
};
const safeColumnTitle = (title, props) => {
const res = renderColumnTitle(title, props);
if (Object.prototype.toString.call(res) === "[object Object]") {
return "";
}
return res;
};
function useSyncState(initialValue) {
const ref = reactExports.useRef(initialValue);
const forceUpdate = useForceUpdate();
return [() => ref.current, (newValue) => {
ref.current = newValue;
forceUpdate();
}];
}
function DropIndicator(_ref) {
var dropPosition = _ref.dropPosition, dropLevelOffset = _ref.dropLevelOffset, indent = _ref.indent;
var style2 = {
pointerEvents: "none",
position: "absolute",
right: 0,
backgroundColor: "red",
height: 2
};
switch (dropPosition) {
case -1:
style2.top = 0;
style2.left = -dropLevelOffset * indent;
break;
case 1:
style2.bottom = 0;
style2.left = -dropLevelOffset * indent;
break;
case 0:
style2.bottom = 0;
style2.left = indent;
break;
}
return /* @__PURE__ */ reactExports.createElement("div", {
style: style2
});
}
function _objectDestructuringEmpty(t2) {
if (null == t2) throw new TypeError("Cannot destructure " + t2);
}
function useUnmount(triggerStart, triggerEnd) {
var _React$useState = reactExports.useState(false), _React$useState2 = _slicedToArray(_React$useState, 2), firstMount = _React$useState2[0], setFirstMount = _React$useState2[1];
useLayoutEffect$1(function() {
if (firstMount) {
triggerStart();
return function() {
triggerEnd();
};
}
}, [firstMount]);
useLayoutEffect$1(function() {
setFirstMount(true);
return function() {
setFirstMount(false);
};
}, []);
}
var _excluded$1 = ["className", "style", "motion", "motionNodes", "motionType", "onMotionStart", "onMotionEnd", "active", "treeNodeRequiredProps"];
var MotionTreeNode = function MotionTreeNode2(_ref, ref) {
var className = _ref.className, style2 = _ref.style, motion = _ref.motion, motionNodes = _ref.motionNodes, motionType = _ref.motionType, onOriginMotionStart = _ref.onMotionStart, onOriginMotionEnd = _ref.onMotionEnd, active = _ref.active, treeNodeRequiredProps = _ref.treeNodeRequiredProps, props = _objectWithoutProperties(_ref, _excluded$1);
var _React$useState = reactExports.useState(true), _React$useState2 = _slicedToArray(_React$useState, 2), visible = _React$useState2[0], setVisible = _React$useState2[1];
var _React$useContext = reactExports.useContext(TreeContext), prefixCls = _React$useContext.prefixCls;
var targetVisible = motionNodes && motionType !== "hide";
useLayoutEffect$1(function() {
if (motionNodes) {
if (targetVisible !== visible) {
setVisible(targetVisible);
}
}
}, [motionNodes]);
var triggerMotionStart = function triggerMotionStart2() {
if (motionNodes) {
onOriginMotionStart();
}
};
var triggerMotionEndRef = reactExports.useRef(false);
var triggerMotionEnd = function triggerMotionEnd2() {
if (motionNodes && !triggerMotionEndRef.current) {
triggerMotionEndRef.current = true;
onOriginMotionEnd();
}
};
useUnmount(triggerMotionStart, triggerMotionEnd);
var onVisibleChanged = function onVisibleChanged2(nextVisible) {
if (targetVisible === nextVisible) {
triggerMotionEnd();
}
};
if (motionNodes) {
return /* @__PURE__ */ reactExports.createElement(CSSMotion, _extends$2({
ref,
visible
}, motion, {
motionAppear: motionType === "show",
onVisibleChanged
}), function(_ref2, motionRef) {
var motionClassName = _ref2.className, motionStyle = _ref2.style;
return /* @__PURE__ */ reactExports.createElement("div", {
ref: motionRef,
className: cls("".concat(prefixCls, "-treenode-motion"), motionClassName),
style: motionStyle
}, motionNodes.map(function(treeNode) {
var restProps = Object.assign({}, (_objectDestructuringEmpty(treeNode.data), treeNode.data)), title = treeNode.title, key = treeNode.key, isStart = treeNode.isStart, isEnd = treeNode.isEnd;
delete restProps.children;
var treeNodeProps = getTreeNodeProps(key, treeNodeRequiredProps);
return /* @__PURE__ */ reactExports.createElement(ContextTreeNode, _extends$2({}, restProps, treeNodeProps, {
title,
active,
data: treeNode.data,
key,
isStart,
isEnd
}));
}));
});
}
return /* @__PURE__ */ reactExports.createElement(ContextTreeNode, _extends$2({
domRef: ref,
className,
style: style2
}, props, {
active
}));
};
MotionTreeNode.displayName = "MotionTreeNode";
var RefMotionTreeNode = /* @__PURE__ */ reactExports.forwardRef(MotionTreeNode);
function findExpandedKeys() {
var prev2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
var next2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];
var prevLen = prev2.length;
var nextLen = next2.length;
if (Math.abs(prevLen - nextLen) !== 1) {
return {
add: false,
key: null
};
}
function find2(shorter, longer) {
var cache = /* @__PURE__ */ new Map();
shorter.forEach(function(key) {
cache.set(key, true);
});
var keys2 = longer.filter(function(key) {
return !cache.has(key);
});
return keys2.length === 1 ? keys2[0] : null;
}
if (prevLen < nextLen) {
return {
add: true,
key: find2(prev2, next2)
};
}
return {
add: false,
key: find2(next2, prev2)
};
}
function getExpandRange(shorter, longer, key) {
var shorterStartIndex = shorter.findIndex(function(data) {
return data.key === key;
});
var shorterEndNode = shorter[shorterStartIndex + 1];
var longerStartIndex = longer.findIndex(function(data) {
return data.key === key;
});
if (shorterEndNode) {
var longerEndIndex = longer.findIndex(function(data) {
return data.key === shorterEndNode.key;
});
return longer.slice(longerStartIndex + 1, longerEndIndex);
}
return longer.slice(longerStartIndex + 1);
}
var _excluded = ["prefixCls", "data", "selectable", "checkable", "expandedKeys", "selectedKeys", "checkedKeys", "loadedKeys", "loadingKeys", "halfCheckedKeys", "keyEntities", "disabled", "dragging", "dragOverNodeKey", "dropPosition", "motion", "height", "itemHeight", "virtual", "focusable", "activeItem", "focused", "tabIndex", "onKeyDown", "onFocus", "onBlur", "onActiveChange", "onListChangeStart", "onListChangeEnd"];
var HIDDEN_STYLE = {
width: 0,
height: 0,
display: "flex",
overflow: "hidden",
opacity: 0,
border: 0,
padding: 0,
margin: 0
};
var noop$1 = function noop() {
};
var MOTION_KEY = "RC_TREE_MOTION_".concat(Math.random());
var MotionNode = {
key: MOTION_KEY
};
var MotionEntity = {
key: MOTION_KEY,
level: 0,
index: 0,
pos: "0",
node: MotionNode,
nodes: [MotionNode]
};
var MotionFlattenData = {
parent: null,
children: [],
pos: MotionEntity.pos,
data: MotionNode,
title: null,
key: MOTION_KEY,
/** Hold empty list here since we do not use it */
isStart: [],
isEnd: []
};
function getMinimumRangeTransitionRange(list, virtual, height, itemHeight) {
if (virtual === false || !height) {
return list;
}
return list.slice(0, Math.ceil(height / itemHeight) + 1);
}
function itemKey(item) {
var key = item.key, pos = item.pos;
return getKey$1(key, pos);
}
function getAccessibilityPath(item) {
var path = String(item.data.key);
var current = item;
while (current.parent) {
current = current.parent;
path = "".concat(current.data.key, " > ").concat(path);
}
return path;
}
var NodeList = /* @__PURE__ */ reactExports.forwardRef(function(props, ref) {
var prefixCls = props.prefixCls, data = props.data;
props.selectable;
props.checkable;
var expandedKeys = props.expandedKeys, selectedKeys = props.selectedKeys, checkedKeys = props.checkedKeys, loadedKeys = props.loadedKeys, loadingKeys = props.loadingKeys, halfCheckedKeys = props.halfCheckedKeys, keyEntities = props.keyEntities, disabled = props.disabled, dragging = props.dragging, dragOverNodeKey = props.dragOverNodeKey, dropPosition = props.dropPosition, motion = props.motion, height = props.height, itemHeight = props.itemHeight, virtual = props.virtual, focusable2 = props.focusable, activeItem = props.activeItem, focused = props.focused, tabIndex = props.tabIndex, onKeyDown2 = props.onKeyDown, onFocus = props.onFocus, onBlur = props.onBlur, onActiveChange = props.onActiveChange, onListChangeStart = props.onListChangeStart, onListChangeEnd = props.onListChangeEnd, domProps = _objectWithoutProperties(props, _excluded);
var listRef = reactExports.useRef(null);
var indentMeasurerRef = reactExports.useRef(null);
reactExports.useImperativeHandle(ref, function() {
return {
scrollTo: function scrollTo2(scroll) {
listRef.current.scrollTo(scroll);
},
getIndentWidth: function getIndentWidth() {
return indentMeasurerRef.current.offsetWidth;
}
};
});
var _React$useState = reactExports.useState(expandedKeys), _React$useState2 = _slicedToArray(_React$useState, 2), prevExpandedKeys = _React$useState2[0], setPrevExpandedKeys = _React$useState2[1];
var _React$useState3 = reactExports.useState(data), _React$useState4 = _slicedToArray(_React$useState3, 2), prevData = _React$useState4[0], setPrevData = _React$useState4[1];
var _React$useState5 = reactExports.useState(data), _React$useState6 = _slicedToArray(_React$useState5, 2), transitionData = _React$useState6[0], setTransitionData = _React$useState6[1];
var _React$useState7 = reactExports.useState([]), _React$useState8 = _slicedToArray(_React$useState7, 2), transitionRange = _React$useState8[0], setTransitionRange = _React$useState8[1];
var _React$useState9 = reactExports.useState(null), _React$useState10 = _slicedToArray(_React$useState9, 2), motionType = _React$useState10[0], setMotionType = _React$useState10[1];
var dataRef = reactExports.useRef(data);
dataRef.current = data;
function onMotionEnd() {
var latestData = dataRef.current;
setPrevData(latestData);
setTransitionData(latestData);
setTransitionRange([]);
setMotionType(null);
onListChangeEnd();
}
useLayoutEffect$1(function() {
setPrevExpandedKeys(expandedKeys);
var diffExpanded = findExpandedKeys(prevExpandedKeys, expandedKeys);
if (diffExpanded.key !== null) {
if (diffExpanded.add) {
var keyIndex2 = prevData.findIndex(function(_ref) {
var key = _ref.key;
return key === diffExpanded.key;
});
var rangeNodes = getMinimumRangeTransitionRange(getExpandRange(prevData, data, diffExpanded.key), virtual, height, itemHeight);
var newTransitionData = prevData.slice();
newTransitionData.splice(keyIndex2 + 1, 0, MotionFlattenData);
setTransitionData(newTransitionData);
setTransitionRange(rangeNodes);
setMotionType("show");
} else {
var _keyIndex = data.findIndex(function(_ref2) {
var key = _ref2.key;
return key === diffExpanded.key;
});
var _rangeNodes = getMinimumRangeTransitionRange(getExpandRange(data, prevData, diffExpanded.key), virtual, height, itemHeight);
var _newTransitionData = data.slice();
_newTransitionData.splice(_keyIndex + 1, 0, MotionFlattenData);
setTransitionData(_newTransitionData);
setTransitionRange(_rangeNodes);
setMotionType("hide");
}
} else if (prevData !== data) {
setPrevData(data);
setTransitionData(data);
}
}, [expandedKeys, data]);
reactExports.useEffect(function() {
if (!dragging) {
onMotionEnd();
}
}, [dragging]);
var mergedData = motion ? transitionData : data;
var treeNodeRequiredProps = {
expandedKeys,
selectedKeys,
loadedKeys,
loadingKeys,
checkedKeys,
halfCheckedKeys,
dragOverNodeKey,
dropPosition,
keyEntities
};
return /* @__PURE__ */ reactExports.createElement(reactExports.Fragment, null, focused && activeItem && /* @__PURE__ */ reactExports.createElement("span", {
style: HIDDEN_STYLE,
"aria-live": "assertive"
}, getAccessibilityPath(activeItem)), /* @__PURE__ */ reactExports.createElement("div", null, /* @__PURE__ */ reactExports.createElement("input", {
style: HIDDEN_STYLE,
disabled: focusable2 === false || disabled,
tabIndex: focusable2 !== false ? tabIndex : null,
onKeyDown: onKeyDown2,
onFocus,
onBlur,
value: "",
onChange: noop$1,
"aria-label": "for screen reader"
})), /* @__PURE__ */ reactExports.createElement("div", {
className: "".concat(prefixCls, "-treenode"),
"aria-hidden": true,
style: {
position: "absolute",
pointerEvents: "none",
visibility: "hidden",
height: 0,
overflow: "hidden",
border: 0,
padding: 0
}
}, /* @__PURE__ */ reactExports.createElement("div", {
className: "".concat(prefixCls, "-indent")
}, /* @__PURE__ */ reactExports.createElement("div", {
ref: indentMeasurerRef,
className: "".concat(prefixCls, "-indent-unit")
}))), /* @__PURE__ */ reactExports.createElement(List, _extends$2({}, domProps, {
data: mergedData,
itemKey,
height,
fullHeight: false,
virtual,
itemHeight,
prefixCls: "".concat(prefixCls, "-list"),
ref: listRef,
onVisibleChange: function onVisibleChange(originList) {
if (originList.every(function(item) {
return itemKey(item) !== MOTION_KEY;
})) {
onMotionEnd();
}
}
}), function(treeNode) {
var pos = treeNode.pos, restProps = Object.assign({}, (_objectDestructuringEmpty(treeNode.data), treeNode.data)), title = treeNode.title, key = treeNode.key, isStart = treeNode.isStart, isEnd = treeNode.isEnd;
var mergedKey = getKey$1(key, pos);
delete restProps.key;
delete restProps.children;
var treeNodeProps = getTreeNodeProps(mergedKey, treeNodeRequiredProps);
return /* @__PURE__ */ reactExports.createElement(RefMotionTreeNode, _extends$2({}, restProps, treeNodeProps, {
title,
active: !!activeItem && key === activeItem.key,
pos,
data: treeNode.data,
isStart,
isEnd,
motion,
motionNodes: key === MOTION_KEY ? transitionRange : null,
motionType,
onMotionStart: onListChangeStart,
onMotionEnd,
treeNodeRequiredProps,
onMouseMove: function onMouseMove() {
onActiveChange(null);
}
}));
}));
});
NodeList.displayName = "NodeList";
var MAX_RETRY_TIMES = 10;
var Tree$3 = /* @__PURE__ */ function(_React$Component) {
_inherits(Tree2, _React$Component);
var _super = _createSuper(Tree2);
function Tree2() {
var _this;
_classCallCheck(this, Tree2);
for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {
_args[_key] = arguments[_key];
}
_this = _super.call.apply(_super, [this].concat(_args));
_defineProperty(_assertThisInitialized(_this), "destroyed", false);
_defineProperty(_assertThisInitialized(_this), "delayedDragEnterLogic", void 0);
_defineProperty(_assertThisInitialized(_this), "loadingRetryTimes", {});
_defineProperty(_assertThisInitialized(_this), "state", {
keyEntities: {},
indent: null,
selectedKeys: [],
checkedKeys: [],
halfCheckedKeys: [],
loadedKeys: [],
loadingKeys: [],
expandedKeys: [],
draggingNodeKey: null,
dragChildrenKeys: [],
// dropTargetKey is the key of abstract-drop-node
// the abstract-drop-node is the real drop node when drag and drop
// not the DOM drag over node
dropTargetKey: null,
dropPosition: null,
// the drop position of abstract-drop-node, inside 0, top -1, bottom 1
dropContainerKey: null,
// the container key of abstract-drop-node if dropPosition is -1 or 1
dropLevelOffset: null,
// the drop level offset of abstract-drag-over-node
dropTargetPos: null,
// the pos of abstract-drop-node
dropAllowed: true,
// if drop to abstract-drop-node is allowed
// the abstract-drag-over-node
// if mouse is on the bottom of top dom node or no the top of the bottom dom node
// abstract-drag-over-node is the top node
dragOverNodeKey: null,
treeData: [],
flattenNodes: [],
focused: false,
activeKey: null,
listChanging: false,
prevProps: null,
fieldNames: fillFieldNames()
});
_defineProperty(_assertThisInitialized(_this), "dragStartMousePosition", null);
_defineProperty(_assertThisInitialized(_this), "dragNode", void 0);
_defineProperty(_assertThisInitialized(_this), "currentMouseOverDroppableNodeKey", null);
_defineProperty(_assertThisInitialized(_this), "listRef", /* @__PURE__ */ reactExports.createRef());
_defineProperty(_assertThisInitialized(_this), "onNodeDragStart", function(event, node2) {
var _this$state = _this.state, expandedKeys = _this$state.expandedKeys, keyEntities = _this$state.keyEntities;
var onDragStart = _this.props.onDragStart;
var eventKey = node2.props.eventKey;
_this.dragNode = node2;
_this.dragStartMousePosition = {
x: event.clientX,
y: event.clientY
};
var newExpandedKeys = arrDel(expandedKeys, eventKey);
_this.setState({
draggingNodeKey: eventKey,
dragChildrenKeys: getDragChildrenKeys(eventKey, keyEntities),
indent: _this.listRef.current.getIndentWidth()
});
_this.setExpandedKeys(newExpandedKeys);
window.addEventListener("dragend", _this.onWindowDragEnd);
onDragStart === null || onDragStart === void 0 || onDragStart({
event,
node: convertNodePropsToEventData(node2.props)
});
});
_defineProperty(_assertThisInitialized(_this), "onNodeDragEnter", function(event, node2) {
var _this$state2 = _this.state, expandedKeys = _this$state2.expandedKeys, keyEntities = _this$state2.keyEntities, dragChildrenKeys = _this$state2.dragChildrenKeys, flattenNodes = _this$state2.flattenNodes, indent = _this$state2.indent;
var _this$props = _this.props, onDragEnter = _this$props.onDragEnter, onExpand = _this$props.onExpand, allowDrop2 = _this$props.allowDrop, direction = _this$props.direction;
var _node$props = node2.props, pos = _node$props.pos, eventKey = _node$props.eventKey;
var _assertThisInitialize = _assertThisInitialized(_this), dragNode = _assertThisInitialize.dragNode;
if (_this.currentMouseOverDroppableNodeKey !== eventKey) {
_this.currentMouseOverDroppableNodeKey = eventKey;
}
if (!dragNode) {
_this.resetDragState();
return;
}
var _calcDropPosition = calcDropPosition(event, dragNode, node2, indent, _this.dragStartMousePosition, allowDrop2, flattenNodes, keyEntities, expandedKeys, direction), dropPosition = _calcDropPosition.dropPosition, dropLevelOffset = _calcDropPosition.dropLevelOffset, dropTargetKey = _calcDropPosition.dropTargetKey, dropContainerKey = _calcDropPosition.dropContainerKey, dropTargetPos = _calcDropPosition.dropTargetPos, dropAllowed = _calcDropPosition.dropAllowed, dragOverNodeKey = _calcDropPosition.dragOverNodeKey;
if (
// don't allow drop inside its children
dragChildrenKeys.indexOf(dropTargetKey) !== -1 || // don't allow drop when drop is not allowed caculated by calcDropPosition
!dropAllowed
) {
_this.resetDragState();
return;
}
if (!_this.delayedDragEnterLogic) {
_this.delayedDragEnterLogic = {};
}
Object.keys(_this.delayedDragEnterLogic).forEach(function(key) {
clearTimeout(_this.delayedDragEnterLogic[key]);
});
if (dragNode.props.eventKey !== node2.props.eventKey) {
event.persist();
_this.delayedDragEnterLogic[pos] = window.setTimeout(function() {
if (_this.state.draggingNodeKey === null) return;
var newExpandedKeys = _toConsumableArray(expandedKeys);
var entity = getEntity(keyEntities, node2.props.eventKey);
if (entity && (entity.children || []).length) {
newExpandedKeys = arrAdd(expandedKeys, node2.props.eventKey);
}
if (!("expandedKeys" in _this.props)) {
_this.setExpandedKeys(newExpandedKeys);
}
onExpand === null || onExpand === void 0 || onExpand(newExpandedKeys, {
node: convertNodePropsToEventData(node2.props),
expanded: true,
nativeEvent: event.nativeEvent
});
}, 800);
}
if (dragNode.props.eventKey === dropTargetKey && dropLevelOffset === 0) {
_this.resetDragState();
return;
}
_this.setState({
dragOverNodeKey,
dropPosition,
dropLevelOffset,
dropTargetKey,
dropContainerKey,
dropTargetPos,
dropAllowed
});
onDragEnter === null || onDragEnter === void 0 || onDragEnter({
event,
node: convertNodePropsToEventData(node2.props),
expandedKeys
});
});
_defineProperty(_assertThisInitialized(_this), "onNodeDragOver", function(event, node2) {
var _this$state3 = _this.state, dragChildrenKeys = _this$state3.dragChildrenKeys, flattenNodes = _this$state3.flattenNodes, keyEntities = _this$state3.keyEntities, expandedKeys = _this$state3.expandedKeys, indent = _this$state3.indent;
var _this$props2 = _this.props, onDragOver = _this$props2.onDragOver, allowDrop2 = _this$props2.allowDrop, direction = _this$props2.direction;
var _assertThisInitialize2 = _assertThisInitialized(_this), dragNode = _assertThisInitialize2.dragNode;
if (!dragNode) {
return;
}
var _calcDropPosition2 = calcDropPosition(event, dragNode, node2, indent, _this.dragStartMousePosition, allowDrop2, flattenNodes, keyEntities, expandedKeys, direction), dropPosition = _calcDropPosition2.dropPosition, dropLevelOffset = _calcDropPosition2.dropLevelOffset, dropTargetKey = _calcDropPosition2.dropTargetKey, dropContainerKey = _calcDropPosition2.dropContainerKey, dropAllowed = _calcDropPosition2.dropAllowed, dropTargetPos = _calcDropPosition2.dropTargetPos, dragOverNodeKey = _calcDropPosition2.dragOverNodeKey;
if (dragChildrenKeys.indexOf(dropTargetKey) !== -1 || !dropAllowed) {
return;
}
if (dragNode.props.eventKey === dropTargetKey && dropLevelOffset === 0) {
if (!(_this.state.dropPosition === null && _this.state.dropLevelOffset === null && _this.state.dropTargetKey === null && _this.state.dropContainerKey === null && _this.state.dropTargetPos === null && _this.state.dropAllowed === false && _this.state.dragOverNodeKey === null)) {
_this.resetDragState();
}
} else if (!(dropPosition === _this.state.dropPosition && dropLevelOffset === _this.state.dropLevelOffset && dropTargetKey === _this.state.dropTargetKey && dropContainerKey === _this.state.dropContainerKey && dropTargetPos === _this.state.dropTargetPos && dropAllowed === _this.state.dropAllowed && dragOverNodeKey === _this.state.dragOverNodeKey)) {
_this.setState({
dropPosition,
dropLevelOffset,
dropTargetKey,
dropContainerKey,
dropTargetPos,
dropAllowed,
dragOverNodeKey
});
}
onDragOver === null || onDragOver === void 0 || onDragOver({
event,
node: convertNodePropsToEventData(node2.props)
});
});
_defineProperty(_assertThisInitialized(_this), "onNodeDragLeave", function(event, node2) {
if (_this.currentMouseOverDroppableNodeKey === node2.props.eventKey && !event.currentTarget.contains(event.relatedTarget)) {
_this.resetDragState();
_this.currentMouseOverDroppableNodeKey = null;
}
var onDragLeave = _this.props.onDragLeave;
onDragLeave === null || onDragLeave === void 0 || onDragLeave({
event,
node: convertNodePropsToEventData(node2.props)
});
});
_defineProperty(_assertThisInitialized(_this), "onWindowDragEnd", function(event) {
_this.onNodeDragEnd(event, null, true);
window.removeEventListener("dragend", _this.onWindowDragEnd);
});
_defineProperty(_assertThisInitialized(_this), "onNodeDragEnd", function(event, node2) {
var onDragEnd = _this.props.onDragEnd;
_this.setState({
dragOverNodeKey: null
});
_this.cleanDragState();
onDragEnd === null || onDragEnd === void 0 || onDragEnd({
event,
node: convertNodePropsToEventData(node2.props)
});
_this.dragNode = null;
window.removeEventListener("dragend", _this.onWindowDragEnd);
});
_defineProperty(_assertThisInitialized(_this), "onNodeDrop", function(event, node2) {
var _this$getActiveItem;
var outsideTree = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
var _this$state4 = _this.state, dragChildrenKeys = _this$state4.dragChildrenKeys, dropPosition = _this$state4.dropPosition, dropTargetKey = _this$state4.dropTargetKey, dropTargetPos = _this$state4.dropTargetPos, dropAllowed = _this$state4.dropAllowed;
if (!dropAllowed) return;
var onDrop = _this.props.onDrop;
_this.setState({
dragOverNodeKey: null
});
_this.cleanDragState();
if (dropTargetKey === null) return;
var abstractDropNodeProps = _objectSpread2$1(_objectSpread2$1({}, getTreeNodeProps(dropTargetKey, _this.getTreeNodeRequiredProps())), {}, {
active: ((_this$getActiveItem = _this.getActiveItem()) === null || _this$getActiveItem === void 0 ? void 0 : _this$getActiveItem.key) === dropTargetKey,
data: getEntity(_this.state.keyEntities, dropTargetKey).node
});
var dropToChild = dragChildrenKeys.indexOf(dropTargetKey) !== -1;
warningOnce(!dropToChild, "Can not drop to dragNode's children node. This is a bug of rc-tree. Please report an issue.");
var posArr = posToArr(dropTargetPos);
var dropResult = {
event,
node: convertNodePropsToEventData(abstractDropNodeProps),
dragNode: _this.dragNode ? convertNodePropsToEventData(_this.dragNode.props) : null,
dragNodesKeys: [_this.dragNode.props.eventKey].concat(dragChildrenKeys),
dropToGap: dropPosition !== 0,
dropPosition: dropPosition + Number(posArr[posArr.length - 1])
};
if (!outsideTree) {
onDrop === null || onDrop === void 0 || onDrop(dropResult);
}
_this.dragNode = null;
});
_defineProperty(_assertThisInitialized(_this), "cleanDragState", function() {
var draggingNodeKey = _this.state.draggingNodeKey;
if (draggingNodeKey !== null) {
_this.setState({
draggingNodeKey: null,
dropPosition: null,
dropContainerKey: null,
dropTargetKey: null,
dropLevelOffset: null,
dropAllowed: true,
dragOverNodeKey: null
});
}
_this.dragStartMousePosition = null;
_this.currentMouseOverDroppableNodeKey = null;
});
_defineProperty(_assertThisInitialized(_this), "triggerExpandActionExpand", function(e2, treeNode) {
var _this$state5 = _this.state, expandedKeys = _this$state5.expandedKeys, flattenNodes = _this$state5.flattenNodes;
var expanded = treeNode.expanded, key = treeNode.key, isLeaf2 = treeNode.isLeaf;
if (isLeaf2 || e2.shiftKey || e2.metaKey || e2.ctrlKey) {
return;
}
var node2 = flattenNodes.filter(function(nodeItem) {
return nodeItem.key === key;
})[0];
var eventNode = convertNodePropsToEventData(_objectSpread2$1(_objectSpread2$1({}, getTreeNodeProps(key, _this.getTreeNodeRequiredProps())), {}, {
data: node2.data
}));
_this.setExpandedKeys(expanded ? arrDel(expandedKeys, key) : arrAdd(expandedKeys, key));
_this.onNodeExpand(e2, eventNode);
});
_defineProperty(_assertThisInitialized(_this), "onNodeClick", function(e2, treeNode) {
var _this$props3 = _this.props, onClick = _this$props3.onClick, expandAction = _this$props3.expandAction;
if (expandAction === "click") {
_this.triggerExpandActionExpand(e2, treeNode);
}
onClick === null || onClick === void 0 || onClick(e2, treeNode);
});
_defineProperty(_assertThisInitialized(_this), "onNodeDoubleClick", function(e2, treeNode) {
var _this$props4 = _this.props, onDoubleClick = _this$props4.onDoubleClick, expandAction = _this$props4.expandAction;
if (expandAction === "doubleClick") {
_this.triggerExpandActionExpand(e2, treeNode);
}
onDoubleClick === null || onDoubleClick === void 0 || onDoubleClick(e2, treeNode);
});
_defineProperty(_assertThisInitialized(_this), "onNodeSelect", function(e2, treeNode) {
var selectedKeys = _this.state.selectedKeys;
var _this$state6 = _this.state, keyEntities = _this$state6.keyEntities, fieldNames = _this$state6.fieldNames;
var _this$props5 = _this.props, onSelect = _this$props5.onSelect, multiple = _this$props5.multiple;
var selected = treeNode.selected;
var key = treeNode[fieldNames.key];
var targetSelected = !selected;
if (!targetSelected) {
selectedKeys = arrDel(selectedKeys, key);
} else if (!multiple) {
selectedKeys = [key];
} else {
selectedKeys = arrAdd(selectedKeys, key);
}
var selectedNodes = selectedKeys.map(function(selectedKey) {
var entity = getEntity(keyEntities, selectedKey);
if (!entity) return null;
return entity.node;
}).filter(function(node2) {
return node2;
});
_this.setUncontrolledState({
selectedKeys
});
onSelect === null || onSelect === void 0 || onSelect(selectedKeys, {
event: "select",
selected: targetSelected,
node: treeNode,
selectedNodes,
nativeEvent: e2.nativeEvent
});
});
_defineProperty(_assertThisInitialized(_this), "onNodeCheck", function(e2, treeNode, checked) {
var _this$state7 = _this.state, keyEntities = _this$state7.keyEntities, oriCheckedKeys = _this$state7.checkedKeys, oriHalfCheckedKeys = _this$state7.halfCheckedKeys;
var _this$props6 = _this.props, checkStrictly = _this$props6.checkStrictly, onCheck = _this$props6.onCheck;
var key = treeNode.key;
var checkedObj;
var eventObj = {
event: "check",
node: treeNode,
checked,
nativeEvent: e2.nativeEvent
};
if (checkStrictly) {
var checkedKeys = checked ? arrAdd(oriCheckedKeys, key) : arrDel(oriCheckedKeys, key);
var halfCheckedKeys = arrDel(oriHalfCheckedKeys, key);
checkedObj = {
checked: checkedKeys,
halfChecked: halfCheckedKeys
};
eventObj.checkedNodes = checkedKeys.map(function(checkedKey) {
return getEntity(keyEntities, checkedKey);
}).filter(function(entity) {
return entity;
}).map(function(entity) {
return entity.node;
});
_this.setUncontrolledState({
checkedKeys
});
} else {
var _conductCheck = conductCheck([].concat(_toConsumableArray(oriCheckedKeys), [key]), true, keyEntities), _checkedKeys = _conductCheck.checkedKeys, _halfCheckedKeys = _conductCheck.halfCheckedKeys;
if (!checked) {
var keySet = new Set(_checkedKeys);
keySet.delete(key);
var _conductCheck2 = conductCheck(Array.from(keySet), {
checked: false,
halfCheckedKeys: _halfCheckedKeys
}, keyEntities);
_checkedKeys = _conductCheck2.checkedKeys;
_halfCheckedKeys = _conductCheck2.halfCheckedKeys;
}
checkedObj = _checkedKeys;
eventObj.checkedNodes = [];
eventObj.checkedNodesPositions = [];
eventObj.halfCheckedKeys = _halfCheckedKeys;
_checkedKeys.forEach(function(checkedKey) {
var entity = getEntity(keyEntities, checkedKey);
if (!entity) return;
var node2 = entity.node, pos = entity.pos;
eventObj.checkedNodes.push(node2);
eventObj.checkedNodesPositions.push({
node: node2,
pos
});
});
_this.setUncontrolledState({
checkedKeys: _checkedKeys
}, false, {
halfCheckedKeys: _halfCheckedKeys
});
}
onCheck === null || onCheck === void 0 || onCheck(checkedObj, eventObj);
});
_defineProperty(_assertThisInitialized(_this), "onNodeLoad", function(treeNode) {
var _entity$children;
var key = treeNode.key;
var keyEntities = _this.state.keyEntities;
var entity = getEntity(keyEntities, key);
if (entity !== null && entity !== void 0 && (_entity$children = entity.children) !== null && _entity$children !== void 0 && _entity$children.length) {
return;
}
var loadPromise = new Promise(function(resolve, reject) {
_this.setState(function(_ref) {
var _ref$loadedKeys = _ref.loadedKeys, loadedKeys = _ref$loadedKeys === void 0 ? [] : _ref$loadedKeys, _ref$loadingKeys = _ref.loadingKeys, loadingKeys = _ref$loadingKeys === void 0 ? [] : _ref$loadingKeys;
var _this$props7 = _this.props, loadData = _this$props7.loadData, onLoad = _this$props7.onLoad;
if (!loadData || loadedKeys.indexOf(key) !== -1 || loadingKeys.indexOf(key) !== -1) {
return null;
}
var promise = loadData(treeNode);
promise.then(function() {
var currentLoadedKeys = _this.state.loadedKeys;
var newLoadedKeys = arrAdd(currentLoadedKeys, key);
onLoad === null || onLoad === void 0 || onLoad(newLoadedKeys, {
event: "load",
node: treeNode
});
_this.setUncontrolledState({
loadedKeys: newLoadedKeys
});
_this.setState(function(prevState) {
return {
loadingKeys: arrDel(prevState.loadingKeys, key)
};
});
resolve();
}).catch(function(e2) {
_this.setState(function(prevState) {
return {
loadingKeys: arrDel(prevState.loadingKeys, key)
};
});
_this.loadingRetryTimes[key] = (_this.loadingRetryTimes[key] || 0) + 1;
if (_this.loadingRetryTimes[key] >= MAX_RETRY_TIMES) {
var currentLoadedKeys = _this.state.loadedKeys;
warningOnce(false, "Retry for `loadData` many times but still failed. No more retry.");
_this.setUncontrolledState({
loadedKeys: arrAdd(currentLoadedKeys, key)
});
resolve();
}
reject(e2);
});
return {
loadingKeys: arrAdd(loadingKeys, key)
};
});
});
loadPromise.catch(function() {
});
return loadPromise;
});
_defineProperty(_assertThisInitialized(_this), "onNodeMouseEnter", function(event, node2) {
var onMouseEnter = _this.props.onMouseEnter;
onMouseEnter === null || onMouseEnter === void 0 || onMouseEnter({
event,
node: node2
});
});
_defineProperty(_assertThisInitialized(_this), "onNodeMouseLeave", function(event, node2) {
var onMouseLeave = _this.props.onMouseLeave;
onMouseLeave === null || onMouseLeave === void 0 || onMouseLeave({
event,
node: node2
});
});
_defineProperty(_assertThisInitialized(_this), "onNodeContextMenu", function(event, node2) {
var onRightClick = _this.props.onRightClick;
if (onRightClick) {
event.preventDefault();
onRightClick({
event,
node: node2
});
}
});
_defineProperty(_assertThisInitialized(_this), "onFocus", function() {
var onFocus = _this.props.onFocus;
_this.setState({
focused: true
});
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
}
onFocus === null || onFocus === void 0 || onFocus.apply(void 0, args);
});
_defineProperty(_assertThisInitialized(_this), "onBlur", function() {
var onBlur = _this.props.onBlur;
_this.setState({
focused: false
});
_this.onActiveChange(null);
for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
args[_key3] = arguments[_key3];
}
onBlur === null || onBlur === void 0 || onBlur.apply(void 0, args);
});
_defineProperty(_assertThisInitialized(_this), "getTreeNodeRequiredProps", function() {
var _this$state8 = _this.state, expandedKeys = _this$state8.expandedKeys, selectedKeys = _this$state8.selectedKeys, loadedKeys = _this$state8.loadedKeys, loadingKeys = _this$state8.loadingKeys, checkedKeys = _this$state8.checkedKeys, halfCheckedKeys = _this$state8.halfCheckedKeys, dragOverNodeKey = _this$state8.dragOverNodeKey, dropPosition = _this$state8.dropPosition, keyEntities = _this$state8.keyEntities;
return {
expandedKeys: expandedKeys || [],
selectedKeys: selectedKeys || [],
loadedKeys: loadedKeys || [],
loadingKeys: loadingKeys || [],
checkedKeys: checkedKeys || [],
halfCheckedKeys: halfCheckedKeys || [],
dragOverNodeKey,
dropPosition,
keyEntities
};
});
_defineProperty(_assertThisInitialized(_this), "setExpandedKeys", function(expandedKeys) {
var _this$state9 = _this.state, treeData = _this$state9.treeData, fieldNames = _this$state9.fieldNames;
var flattenNodes = flattenTreeData(treeData, expandedKeys, fieldNames);
_this.setUncontrolledState({
expandedKeys,
flattenNodes
}, true);
});
_defineProperty(_assertThisInitialized(_this), "onNodeExpand", function(e2, treeNode) {
var expandedKeys = _this.state.expandedKeys;
var _this$state10 = _this.state, listChanging = _this$state10.listChanging, fieldNames = _this$state10.fieldNames;
var _this$props8 = _this.props, onExpand = _this$props8.onExpand, loadData = _this$props8.loadData;
var expanded = treeNode.expanded;
var key = treeNode[fieldNames.key];
if (listChanging) {
return;
}
var index2 = expandedKeys.indexOf(key);
var targetExpanded = !expanded;
warningOnce(expanded && index2 !== -1 || !expanded && index2 === -1, "Expand state not sync with index check");
if (targetExpanded) {
expandedKeys = arrAdd(expandedKeys, key);
} else {
expandedKeys = arrDel(expandedKeys, key);
}
_this.setExpandedKeys(expandedKeys);
onExpand === null || onExpand === void 0 || onExpand(expandedKeys, {
node: treeNode,
expanded: targetExpanded,
nativeEvent: e2.nativeEvent
});
if (targetExpanded && loadData) {
var loadPromise = _this.onNodeLoad(treeNode);
if (loadPromise) {
loadPromise.then(function() {
var newFlattenTreeData = flattenTreeData(_this.state.treeData, expandedKeys, fieldNames);
_this.setUncontrolledState({
flattenNodes: newFlattenTreeData
});
}).catch(function() {
var currentExpandedKeys = _this.state.expandedKeys;
var expandedKeysToRestore = arrDel(currentExpandedKeys, key);
_this.setExpandedKeys(expandedKeysToRestore);
});
}
}
});
_defineProperty(_assertThisInitialized(_this), "onListChangeStart", function() {
_this.setUncontrolledState({
listChanging: true
});
});
_defineProperty(_assertThisInitialized(_this), "onListChangeEnd", function() {
setTimeout(function() {
_this.setUncontrolledState({
listChanging: false
});
});
});
_defineProperty(_assertThisInitialized(_this), "onActiveChange", function(newActiveKey) {
var activeKey = _this.state.activeKey;
var _this$props9 = _this.props, onActiveChange = _this$props9.onActiveChange, _this$props9$itemScro = _this$props9.itemScrollOffset, itemScrollOffset = _this$props9$itemScro === void 0 ? 0 : _this$props9$itemScro;
if (activeKey === newActiveKey) {
return;
}
_this.setState({
activeKey: newActiveKey
});
if (newActiveKey !== null) {
_this.scrollTo({
key: newActiveKey,
offset: itemScrollOffset
});
}
onActiveChange === null || onActiveChange === void 0 || onActiveChange(newActiveKey);
});
_defineProperty(_assertThisInitialized(_this), "getActiveItem", function() {
var _this$state11 = _this.state, activeKey = _this$state11.activeKey, flattenNodes = _this$state11.flattenNodes;
if (activeKey === null) {
return null;
}
return flattenNodes.find(function(_ref2) {
var key = _ref2.key;
return key === activeKey;
}) || null;
});
_defineProperty(_assertThisInitialized(_this), "offsetActiveKey", function(offset2) {
var _this$state12 = _this.state, flattenNodes = _this$state12.flattenNodes, activeKey = _this$state12.activeKey;
var index2 = flattenNodes.findIndex(function(_ref3) {
var key = _ref3.key;
return key === activeKey;
});
if (index2 === -1 && offset2 < 0) {
index2 = flattenNodes.length;
}
index2 = (index2 + offset2 + flattenNodes.length) % flattenNodes.length;
var item = flattenNodes[index2];
if (item) {
var _key4 = item.key;
_this.onActiveChange(_key4);
} else {
_this.onActiveChange(null);
}
});
_defineProperty(_assertThisInitialized(_this), "onKeyDown", function(event) {
var _this$state13 = _this.state, activeKey = _this$state13.activeKey, expandedKeys = _this$state13.expandedKeys, checkedKeys = _this$state13.checkedKeys, fieldNames = _this$state13.fieldNames;
var _this$props10 = _this.props, onKeyDown2 = _this$props10.onKeyDown, checkable = _this$props10.checkable, selectable = _this$props10.selectable;
switch (event.which) {
case KeyCode.UP: {
_this.offsetActiveKey(-1);
event.preventDefault();
break;
}
case KeyCode.DOWN: {
_this.offsetActiveKey(1);
event.preventDefault();
break;
}
}
var activeItem = _this.getActiveItem();
if (activeItem && activeItem.data) {
var treeNodeRequiredProps = _this.getTreeNodeRequiredProps();
var expandable = activeItem.data.isLeaf === false || !!(activeItem.data[fieldNames.children] || []).length;
var eventNode = convertNodePropsToEventData(_objectSpread2$1(_objectSpread2$1({}, getTreeNodeProps(activeKey, treeNodeRequiredProps)), {}, {
data: activeItem.data,
active: true
}));
switch (event.which) {
case KeyCode.LEFT: {
if (expandable && expandedKeys.includes(activeKey)) {
_this.onNodeExpand({}, eventNode);
} else if (activeItem.parent) {
_this.onActiveChange(activeItem.parent.key);
}
event.preventDefault();
break;
}
case KeyCode.RIGHT: {
if (expandable && !expandedKeys.includes(activeKey)) {
_this.onNodeExpand({}, eventNode);
} else if (activeItem.children && activeItem.children.length) {
_this.onActiveChange(activeItem.children[0].key);
}
event.preventDefault();
break;
}
case KeyCode.ENTER:
case KeyCode.SPACE: {
if (checkable && !eventNode.disabled && eventNode.checkable !== false && !eventNode.disableCheckbox) {
_this.onNodeCheck({}, eventNode, !checkedKeys.includes(activeKey));
} else if (!checkable && selectable && !eventNode.disabled && eventNode.selectable !== false) {
_this.onNodeSelect({}, eventNode);
}
break;
}
}
}
onKeyDown2 === null || onKeyDown2 === void 0 || onKeyDown2(event);
});
_defineProperty(_assertThisInitialized(_this), "setUncontrolledState", function(state) {
var atomic = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
var forceState = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null;
if (!_this.destroyed) {
var needSync = false;
var allPassed = true;
var newState = {};
Object.keys(state).forEach(function(name) {
if (name in _this.props) {
allPassed = false;
return;
}
needSync = true;
newState[name] = state[name];
});
if (needSync && (!atomic || allPassed)) {
_this.setState(_objectSpread2$1(_objectSpread2$1({}, newState), forceState));
}
}
});
_defineProperty(_assertThisInitialized(_this), "scrollTo", function(scroll) {
_this.listRef.current.scrollTo(scroll);
});
return _this;
}
_createClass(Tree2, [{
key: "componentDidMount",
value: function componentDidMount() {
this.destroyed = false;
this.onUpdated();
}
}, {
key: "componentDidUpdate",
value: function componentDidUpdate() {
this.onUpdated();
}
}, {
key: "onUpdated",
value: function onUpdated() {
var _this$props11 = this.props, activeKey = _this$props11.activeKey, _this$props11$itemScr = _this$props11.itemScrollOffset, itemScrollOffset = _this$props11$itemScr === void 0 ? 0 : _this$props11$itemScr;
if (activeKey !== void 0 && activeKey !== this.state.activeKey) {
this.setState({
activeKey
});
if (activeKey !== null) {
this.scrollTo({
key: activeKey,
offset: itemScrollOffset
});
}
}
}
}, {
key: "componentWillUnmount",
value: function componentWillUnmount() {
window.removeEventListener("dragend", this.onWindowDragEnd);
this.destroyed = true;
}
}, {
key: "resetDragState",
value: function resetDragState() {
this.setState({
dragOverNodeKey: null,
dropPosition: null,
dropLevelOffset: null,
dropTargetKey: null,
dropContainerKey: null,
dropTargetPos: null,
dropAllowed: false
});
}
}, {
key: "render",
value: function render2() {
var _this$state14 = this.state, focused = _this$state14.focused, flattenNodes = _this$state14.flattenNodes, keyEntities = _this$state14.keyEntities, draggingNodeKey = _this$state14.draggingNodeKey, activeKey = _this$state14.activeKey, dropLevelOffset = _this$state14.dropLevelOffset, dropContainerKey = _this$state14.dropContainerKey, dropTargetKey = _this$state14.dropTargetKey, dropPosition = _this$state14.dropPosition, dragOverNodeKey = _this$state14.dragOverNodeKey, indent = _this$state14.indent;
var _this$props12 = this.props, prefixCls = _this$props12.prefixCls, className = _this$props12.className, style2 = _this$props12.style, showLine = _this$props12.showLine, focusable2 = _this$props12.focusable, _this$props12$tabInde = _this$props12.tabIndex, tabIndex = _this$props12$tabInde === void 0 ? 0 : _this$props12$tabInde, selectable = _this$props12.selectable, showIcon = _this$props12.showIcon, icon = _this$props12.icon, switcherIcon = _this$props12.switcherIcon, draggable = _this$props12.draggable, checkable = _this$props12.checkable, checkStrictly = _this$props12.checkStrictly, disabled = _this$props12.disabled, motion = _this$props12.motion, loadData = _this$props12.loadData, filterTreeNode = _this$props12.filterTreeNode, height = _this$props12.height, itemHeight = _this$props12.itemHeight, virtual = _this$props12.virtual, titleRender = _this$props12.titleRender, dropIndicatorRender2 = _this$props12.dropIndicatorRender, onContextMenu = _this$props12.onContextMenu, onScroll = _this$props12.onScroll, direction = _this$props12.direction, rootClassName = _this$props12.rootClassName, rootStyle = _this$props12.rootStyle;
var domProps = pickAttrs(this.props, {
aria: true,
data: true
});
var draggableConfig;
if (draggable) {
if (_typeof$2(draggable) === "object") {
draggableConfig = draggable;
} else if (typeof draggable === "function") {
draggableConfig = {
nodeDraggable: draggable
};
} else {
draggableConfig = {};
}
}
return /* @__PURE__ */ reactExports.createElement(TreeContext.Provider, {
value: {
prefixCls,
selectable,
showIcon,
icon,
switcherIcon,
draggable: draggableConfig,
draggingNodeKey,
checkable,
checkStrictly,
disabled,
keyEntities,
dropLevelOffset,
dropContainerKey,
dropTargetKey,
dropPosition,
dragOverNodeKey,
indent,
direction,
dropIndicatorRender: dropIndicatorRender2,
loadData,
filterTreeNode,
titleRender,
onNodeClick: this.onNodeClick,
onNodeDoubleClick: this.onNodeDoubleClick,
onNodeExpand: this.onNodeExpand,
onNodeSelect: this.onNodeSelect,
onNodeCheck: this.onNodeCheck,
onNodeLoad: this.onNodeLoad,
onNodeMouseEnter: this.onNodeMouseEnter,
onNodeMouseLeave: this.onNodeMouseLeave,
onNodeContextMenu: this.onNodeContextMenu,
onNodeDragStart: this.onNodeDragStart,
onNodeDragEnter: this.onNodeDragEnter,
onNodeDragOver: this.onNodeDragOver,
onNodeDragLeave: this.onNodeDragLeave,
onNodeDragEnd: this.onNodeDragEnd,
onNodeDrop: this.onNodeDrop
}
}, /* @__PURE__ */ reactExports.createElement("div", {
role: "tree",
className: cls(prefixCls, className, rootClassName, _defineProperty(_defineProperty(_defineProperty({}, "".concat(prefixCls, "-show-line"), showLine), "".concat(prefixCls, "-focused"), focused), "".concat(prefixCls, "-active-focused"), activeKey !== null)),
style: rootStyle
}, /* @__PURE__ */ reactExports.createElement(NodeList, _extends$2({
ref: this.listRef,
prefixCls,
style: style2,
data: flattenNodes,
disabled,
selectable,
checkable: !!checkable,
motion,
dragging: draggingNodeKey !== null,
height,
itemHeight,
virtual,
focusable: focusable2,
focused,
tabIndex,
activeItem: this.getActiveItem(),
onFocus: this.onFocus,
onBlur: this.onBlur,
onKeyDown: this.onKeyDown,
onActiveChange: this.onActiveChange,
onListChangeStart: this.onListChangeStart,
onListChangeEnd: this.onListChangeEnd,
onContextMenu,
onScroll
}, this.getTreeNodeRequiredProps(), domProps))));
}
}], [{
key: "getDerivedStateFromProps",
value: function getDerivedStateFromProps(props, prevState) {
var prevProps = prevState.prevProps;
var newState = {
prevProps: props
};
function needSync(name) {
return !prevProps && name in props || prevProps && prevProps[name] !== props[name];
}
var treeData;
var fieldNames = prevState.fieldNames;
if (needSync("fieldNames")) {
fieldNames = fillFieldNames(props.fieldNames);
newState.fieldNames = fieldNames;
}
if (needSync("treeData")) {
treeData = props.treeData;
} else if (needSync("children")) {
warningOnce(false, "`children` of Tree is deprecated. Please use `treeData` instead.");
treeData = convertTreeToData(props.children);
}
if (treeData) {
newState.treeData = treeData;
var entitiesMap = convertDataToEntities(treeData, {
fieldNames
});
newState.keyEntities = _objectSpread2$1(_defineProperty({}, MOTION_KEY, MotionEntity), entitiesMap.keyEntities);
}
var keyEntities = newState.keyEntities || prevState.keyEntities;
if (needSync("expandedKeys") || prevProps && needSync("autoExpandParent")) {
newState.expandedKeys = props.autoExpandParent || !prevProps && props.defaultExpandParent ? conductExpandParent(props.expandedKeys, keyEntities) : props.expandedKeys;
} else if (!prevProps && props.defaultExpandAll) {
var cloneKeyEntities = _objectSpread2$1({}, keyEntities);
delete cloneKeyEntities[MOTION_KEY];
var nextExpandedKeys = [];
Object.keys(cloneKeyEntities).forEach(function(key) {
var entity = cloneKeyEntities[key];
if (entity.children && entity.children.length) {
nextExpandedKeys.push(entity.key);
}
});
newState.expandedKeys = nextExpandedKeys;
} else if (!prevProps && props.defaultExpandedKeys) {
newState.expandedKeys = props.autoExpandParent || props.defaultExpandParent ? conductExpandParent(props.defaultExpandedKeys, keyEntities) : props.defaultExpandedKeys;
}
if (!newState.expandedKeys) {
delete newState.expandedKeys;
}
if (treeData || newState.expandedKeys) {
var flattenNodes = flattenTreeData(treeData || prevState.treeData, newState.expandedKeys || prevState.expandedKeys, fieldNames);
newState.flattenNodes = flattenNodes;
}
if (props.selectable) {
if (needSync("selectedKeys")) {
newState.selectedKeys = calcSelectedKeys(props.selectedKeys, props);
} else if (!prevProps && props.defaultSelectedKeys) {
newState.selectedKeys = calcSelectedKeys(props.defaultSelectedKeys, props);
}
}
if (props.checkable) {
var checkedKeyEntity;
if (needSync("checkedKeys")) {
checkedKeyEntity = parseCheckedKeys(props.checkedKeys) || {};
} else if (!prevProps && props.defaultCheckedKeys) {
checkedKeyEntity = parseCheckedKeys(props.defaultCheckedKeys) || {};
} else if (treeData) {
checkedKeyEntity = parseCheckedKeys(props.checkedKeys) || {
checkedKeys: prevState.checkedKeys,
halfCheckedKeys: prevState.halfCheckedKeys
};
}
if (checkedKeyEntity) {
var _checkedKeyEntity = checkedKeyEntity, _checkedKeyEntity$che = _checkedKeyEntity.checkedKeys, checkedKeys = _checkedKeyEntity$che === void 0 ? [] : _checkedKeyEntity$che, _checkedKeyEntity$hal = _checkedKeyEntity.halfCheckedKeys, halfCheckedKeys = _checkedKeyEntity$hal === void 0 ? [] : _checkedKeyEntity$hal;
if (!props.checkStrictly) {
var conductKeys = conductCheck(checkedKeys, true, keyEntities);
checkedKeys = conductKeys.checkedKeys;
halfCheckedKeys = conductKeys.halfCheckedKeys;
}
newState.checkedKeys = checkedKeys;
newState.halfCheckedKeys = halfCheckedKeys;
}
}
if (needSync("loadedKeys")) {
newState.loadedKeys = props.loadedKeys;
}
return newState;
}
}]);
return Tree2;
}(reactExports.Component);
_defineProperty(Tree$3, "defaultProps", {
prefixCls: "rc-tree",
showLine: false,
showIcon: true,
selectable: true,
multiple: false,
checkable: false,
disabled: false,
checkStrictly: false,
draggable: false,
defaultExpandParent: true,
autoExpandParent: false,
defaultExpandAll: false,
defaultExpandedKeys: [],
defaultCheckedKeys: [],
defaultSelectedKeys: [],
dropIndicatorRender: DropIndicator,
allowDrop: function allowDrop() {
return true;
},
expandAction: false
});
_defineProperty(Tree$3, "TreeNode", ContextTreeNode);
const treeNodeFX = new Keyframe("ant-tree-node-fx-do-not-use", {
"0%": {
opacity: 0
},
"100%": {
opacity: 1
}
});
const getSwitchStyle = (prefixCls, token2) => ({
[`.${prefixCls}-switcher-icon`]: {
display: "inline-block",
fontSize: 10,
verticalAlign: "baseline",
svg: {
transition: `transform ${token2.motionDurationSlow}`
}
}
});
const getDropIndicatorStyle = (prefixCls, token2) => ({
[`.${prefixCls}-drop-indicator`]: {
position: "absolute",
// it should displayed over the following node
zIndex: 1,
height: 2,
backgroundColor: token2.colorPrimary,
borderRadius: 1,
pointerEvents: "none",
"&:after": {
position: "absolute",
top: -3,
insetInlineStart: -6,
width: 8,
height: 8,
backgroundColor: "transparent",
border: `${unit$1(token2.lineWidthBold)} solid ${token2.colorPrimary}`,
borderRadius: "50%",
content: '""'
}
}
});
const genBaseStyle = (prefixCls, token2) => {
const {
treeCls,
treeNodeCls,
treeNodePadding,
titleHeight,
nodeSelectedBg,
nodeHoverBg
} = token2;
const treeCheckBoxMarginHorizontal = token2.paddingXS;
return {
[treeCls]: Object.assign(Object.assign({}, resetComponent(token2)), {
background: token2.colorBgContainer,
borderRadius: token2.borderRadius,
transition: `background-color ${token2.motionDurationSlow}`,
[`&${treeCls}-rtl`]: {
// >>> Switcher
[`${treeCls}-switcher`]: {
"&_close": {
[`${treeCls}-switcher-icon`]: {
svg: {
transform: "rotate(90deg)"
}
}
}
}
},
[`&-focused:not(:hover):not(${treeCls}-active-focused)`]: Object.assign({}, genFocusOutline(token2)),
// =================== Virtual List ===================
[`${treeCls}-list-holder-inner`]: {
alignItems: "flex-start"
},
[`&${treeCls}-block-node`]: {
[`${treeCls}-list-holder-inner`]: {
alignItems: "stretch",
// >>> Title
[`${treeCls}-node-content-wrapper`]: {
flex: "auto"
},
// >>> Drag
[`${treeNodeCls}.dragging`]: {
position: "relative",
"&:after": {
position: "absolute",
top: 0,
insetInlineEnd: 0,
bottom: treeNodePadding,
insetInlineStart: 0,
border: `1px solid ${token2.colorPrimary}`,
opacity: 0,
animationName: treeNodeFX,
animationDuration: token2.motionDurationSlow,
animationPlayState: "running",
animationFillMode: "forwards",
content: '""',
pointerEvents: "none"
}
}
}
},
// ===================== TreeNode =====================
[treeNodeCls]: {
display: "flex",
alignItems: "flex-start",
padding: `0 0 ${unit$1(treeNodePadding)} 0`,
outline: "none",
"&-rtl": {
direction: "rtl"
},
// Disabled
"&-disabled": {
// >>> Title
[`${treeCls}-node-content-wrapper`]: {
color: token2.colorTextDisabled,
cursor: "not-allowed",
"&:hover": {
background: "transparent"
}
}
},
[`&-active ${treeCls}-node-content-wrapper`]: {
background: token2.controlItemBgHover
},
[`&:not(${treeNodeCls}-disabled).filter-node ${treeCls}-title`]: {
color: token2.colorPrimary,
fontWeight: 500
},
"&-draggable": {
cursor: "grab",
[`${treeCls}-draggable-icon`]: {
// https://github.com/ant-design/ant-design/issues/41915
flexShrink: 0,
width: titleHeight,
lineHeight: unit$1(titleHeight),
textAlign: "center",
visibility: "visible",
opacity: 0.2,
transition: `opacity ${token2.motionDurationSlow}`,
[`${treeNodeCls}:hover &`]: {
opacity: 0.45
}
},
[`&${treeNodeCls}-disabled`]: {
[`${treeCls}-draggable-icon`]: {
visibility: "hidden"
}
}
}
},
// >>> Indent
[`${treeCls}-indent`]: {
alignSelf: "stretch",
whiteSpace: "nowrap",
userSelect: "none",
"&-unit": {
display: "inline-block",
width: titleHeight
}
},
// >>> Drag Handler
[`${treeCls}-draggable-icon`]: {
visibility: "hidden"
},
// >>> Switcher
[`${treeCls}-switcher`]: Object.assign(Object.assign({}, getSwitchStyle(prefixCls, token2)), {
position: "relative",
flex: "none",
alignSelf: "stretch",
width: titleHeight,
margin: 0,
lineHeight: unit$1(titleHeight),
textAlign: "center",
cursor: "pointer",
userSelect: "none",
transition: `all ${token2.motionDurationSlow}`,
"&-noop": {
cursor: "unset"
},
"&:before": {
pointerEvents: "none",
content: '""',
width: titleHeight,
height: titleHeight,
position: "absolute",
left: {
_skip_check_: true,
value: 0
},
top: 0,
borderRadius: token2.borderRadius,
transition: `all ${token2.motionDurationSlow}`
},
[`&:not(${treeCls}-switcher-noop):hover:before`]: {
backgroundColor: token2.colorBgTextHover
},
"&_close": {
[`${treeCls}-switcher-icon`]: {
svg: {
transform: "rotate(-90deg)"
}
}
},
"&-loading-icon": {
color: token2.colorPrimary
},
"&-leaf-line": {
position: "relative",
zIndex: 1,
display: "inline-block",
width: "100%",
height: "100%",
// https://github.com/ant-design/ant-design/issues/31884
"&:before": {
position: "absolute",
top: 0,
insetInlineEnd: token2.calc(titleHeight).div(2).equal(),
bottom: token2.calc(treeNodePadding).mul(-1).equal(),
marginInlineStart: -1,
borderInlineEnd: `1px solid ${token2.colorBorder}`,
content: '""'
},
"&:after": {
position: "absolute",
width: token2.calc(token2.calc(titleHeight).div(2).equal()).mul(0.8).equal(),
height: token2.calc(titleHeight).div(2).equal(),
borderBottom: `1px solid ${token2.colorBorder}`,
content: '""'
}
}
}),
// >>> Checkbox
[`${treeCls}-checkbox`]: {
top: "initial",
marginInlineEnd: treeCheckBoxMarginHorizontal,
alignSelf: "flex-start",
marginTop: token2.marginXXS
},
// >>> Title
// add `${treeCls}-checkbox + span` to cover checkbox `${checkboxCls} + span`
[`${treeCls}-node-content-wrapper, ${treeCls}-checkbox + span`]: {
position: "relative",
zIndex: "auto",
minHeight: titleHeight,
margin: 0,
padding: `0 ${unit$1(token2.calc(token2.paddingXS).div(2).equal())}`,
color: "inherit",
lineHeight: unit$1(titleHeight),
background: "transparent",
borderRadius: token2.borderRadius,
cursor: "pointer",
transition: `all ${token2.motionDurationMid}, border 0s, line-height 0s, box-shadow 0s`,
"&:hover": {
backgroundColor: nodeHoverBg
},
[`&${treeCls}-node-selected`]: {
backgroundColor: nodeSelectedBg
},
// Icon
[`${treeCls}-iconEle`]: {
display: "inline-block",
width: titleHeight,
height: titleHeight,
lineHeight: unit$1(titleHeight),
textAlign: "center",
verticalAlign: "top",
"&:empty": {
display: "none"
}
}
},
// https://github.com/ant-design/ant-design/issues/28217
[`${treeCls}-unselectable ${treeCls}-node-content-wrapper:hover`]: {
backgroundColor: "transparent"
},
// ==================== Draggable =====================
[`${treeCls}-node-content-wrapper`]: Object.assign({
lineHeight: unit$1(titleHeight),
userSelect: "none"
}, getDropIndicatorStyle(prefixCls, token2)),
[`${treeNodeCls}.drop-container`]: {
"> [draggable]": {
boxShadow: `0 0 0 2px ${token2.colorPrimary}`
}
},
// ==================== Show Line =====================
"&-show-line": {
// ================ Indent lines ================
[`${treeCls}-indent`]: {
"&-unit": {
position: "relative",
height: "100%",
"&:before": {
position: "absolute",
top: 0,
insetInlineEnd: token2.calc(titleHeight).div(2).equal(),
bottom: token2.calc(treeNodePadding).mul(-1).equal(),
borderInlineEnd: `1px solid ${token2.colorBorder}`,
content: '""'
},
"&-end": {
"&:before": {
display: "none"
}
}
}
},
// ============== Cover Background ==============
[`${treeCls}-switcher`]: {
background: "transparent",
"&-line-icon": {
// https://github.com/ant-design/ant-design/issues/32813
verticalAlign: "-0.15em"
}
}
},
[`${treeNodeCls}-leaf-last`]: {
[`${treeCls}-switcher`]: {
"&-leaf-line": {
"&:before": {
top: "auto !important",
bottom: "auto !important",
height: `${unit$1(token2.calc(titleHeight).div(2).equal())} !important`
}
}
}
}
})
};
};
const genDirectoryStyle = (token2) => {
const {
treeCls,
treeNodeCls,
treeNodePadding,
directoryNodeSelectedBg,
directoryNodeSelectedColor
} = token2;
return {
[`${treeCls}${treeCls}-directory`]: {
// ================== TreeNode ==================
[treeNodeCls]: {
position: "relative",
// Hover color
"&:before": {
position: "absolute",
top: 0,
insetInlineEnd: 0,
bottom: treeNodePadding,
insetInlineStart: 0,
transition: `background-color ${token2.motionDurationMid}`,
content: '""',
pointerEvents: "none"
},
"&:hover": {
"&:before": {
background: token2.controlItemBgHover
}
},
// Elements
"> *": {
zIndex: 1
},
// >>> Switcher
[`${treeCls}-switcher`]: {
transition: `color ${token2.motionDurationMid}`
},
// >>> Title
[`${treeCls}-node-content-wrapper`]: {
borderRadius: 0,
userSelect: "none",
"&:hover": {
background: "transparent"
},
[`&${treeCls}-node-selected`]: {
color: directoryNodeSelectedColor,
background: "transparent"
}
},
// ============= Selected =============
"&-selected": {
[`
&:hover::before,
&::before
`]: {
background: directoryNodeSelectedBg
},
// >>> Switcher
[`${treeCls}-switcher`]: {
color: directoryNodeSelectedColor
},
// >>> Title
[`${treeCls}-node-content-wrapper`]: {
color: directoryNodeSelectedColor,
background: "transparent"
}
}
}
}
};
};
const genTreeStyle = (prefixCls, token2) => {
const treeCls = `.${prefixCls}`;
const treeNodeCls = `${treeCls}-treenode`;
const treeNodePadding = token2.calc(token2.paddingXS).div(2).equal();
const treeToken = merge$1(token2, {
treeCls,
treeNodeCls,
treeNodePadding
});
return [
// Basic
genBaseStyle(prefixCls, treeToken),
// Directory
genDirectoryStyle(treeToken)
];
};
const initComponentToken = (token2) => {
const {
controlHeightSM
} = token2;
return {
titleHeight: controlHeightSM,
nodeHoverBg: token2.controlItemBgHover,
nodeSelectedBg: token2.controlItemBgActive
};
};
const prepareComponentToken$1 = (token2) => {
const {
colorTextLightSolid,
colorPrimary
} = token2;
return Object.assign(Object.assign({}, initComponentToken(token2)), {
directoryNodeSelectedColor: colorTextLightSolid,
directoryNodeSelectedBg: colorPrimary
});
};
const useStyle$1 = genStyleHooks("Tree", (token2, _ref) => {
let {
prefixCls
} = _ref;
return [{
[token2.componentCls]: getStyle$1(`${prefixCls}-checkbox`, token2)
}, genTreeStyle(prefixCls, token2), genCollapseMotion(token2)];
}, prepareComponentToken$1);
const offset = 4;
function dropIndicatorRender(props) {
const {
dropPosition,
dropLevelOffset,
prefixCls,
indent,
direction = "ltr"
} = props;
const startPosition = direction === "ltr" ? "left" : "right";
const endPosition = direction === "ltr" ? "right" : "left";
const style2 = {
[startPosition]: -dropLevelOffset * indent + offset,
[endPosition]: 0
};
switch (dropPosition) {
case -1:
style2.top = -3;
break;
case 1:
style2.bottom = -3;
break;
default:
style2.bottom = -3;
style2[startPosition] = indent + offset;
break;
}
return /* @__PURE__ */ React.createElement("div", {
style: style2,
className: `${prefixCls}-drop-indicator`
});
}
const SwitcherIconCom = (props) => {
const {
prefixCls,
switcherIcon,
treeNodeProps,
showLine,
switcherLoadingIcon
} = props;
const {
isLeaf: isLeaf2,
expanded,
loading
} = treeNodeProps;
if (loading) {
if (/* @__PURE__ */ reactExports.isValidElement(switcherLoadingIcon)) {
return switcherLoadingIcon;
}
return /* @__PURE__ */ reactExports.createElement(RefIcon$4, {
className: `${prefixCls}-switcher-loading-icon`
});
}
let showLeafIcon;
if (showLine && typeof showLine === "object") {
showLeafIcon = showLine.showLeafIcon;
}
if (isLeaf2) {
if (!showLine) {
return null;
}
if (typeof showLeafIcon !== "boolean" && !!showLeafIcon) {
const leafIcon = typeof showLeafIcon === "function" ? showLeafIcon(treeNodeProps) : showLeafIcon;
const leafCls = `${prefixCls}-switcher-line-custom-icon`;
if (/* @__PURE__ */ reactExports.isValidElement(leafIcon)) {
return cloneElement(leafIcon, {
className: cls(leafIcon.props.className || "", leafCls)
});
}
return leafIcon;
}
return showLeafIcon ? /* @__PURE__ */ reactExports.createElement(RefIcon$b, {
className: `${prefixCls}-switcher-line-icon`
}) : /* @__PURE__ */ reactExports.createElement("span", {
className: `${prefixCls}-switcher-leaf-line`
});
}
const switcherCls = `${prefixCls}-switcher-icon`;
const switcher = typeof switcherIcon === "function" ? switcherIcon(treeNodeProps) : switcherIcon;
if (/* @__PURE__ */ reactExports.isValidElement(switcher)) {
return cloneElement(switcher, {
className: cls(switcher.props.className || "", switcherCls)
});
}
if (switcher !== void 0) {
return switcher;
}
if (showLine) {
return expanded ? /* @__PURE__ */ reactExports.createElement(RefIcon$3, {
className: `${prefixCls}-switcher-line-icon`
}) : /* @__PURE__ */ reactExports.createElement(RefIcon$2, {
className: `${prefixCls}-switcher-line-icon`
});
}
return /* @__PURE__ */ reactExports.createElement(RefIcon$q, {
className: switcherCls
});
};
const Tree$2 = /* @__PURE__ */ React.forwardRef((props, ref) => {
var _a2;
const {
getPrefixCls,
direction,
virtual,
tree
} = React.useContext(ConfigContext);
const {
prefixCls: customizePrefixCls,
className,
showIcon = false,
showLine,
switcherIcon,
switcherLoadingIcon,
blockNode = false,
children,
checkable = false,
selectable = true,
draggable,
motion: customMotion,
style: style2
} = props;
const prefixCls = getPrefixCls("tree", customizePrefixCls);
const rootPrefixCls = getPrefixCls();
const motion = customMotion !== null && customMotion !== void 0 ? customMotion : Object.assign(Object.assign({}, initCollapseMotion(rootPrefixCls)), {
motionAppear: false
});
const newProps = Object.assign(Object.assign({}, props), {
checkable,
selectable,
showIcon,
motion,
blockNode,
showLine: Boolean(showLine),
dropIndicatorRender
});
const [wrapCSSVar, hashId, cssVarCls] = useStyle$1(prefixCls);
const [, token2] = useToken();
const itemHeight = token2.paddingXS / 2 + (((_a2 = token2.Tree) === null || _a2 === void 0 ? void 0 : _a2.titleHeight) || token2.controlHeightSM);
const draggableConfig = React.useMemo(() => {
if (!draggable) {
return false;
}
let mergedDraggable = {};
switch (typeof draggable) {
case "function":
mergedDraggable.nodeDraggable = draggable;
break;
case "object":
mergedDraggable = Object.assign({}, draggable);
break;
}
if (mergedDraggable.icon !== false) {
mergedDraggable.icon = mergedDraggable.icon || /* @__PURE__ */ React.createElement(RefIcon$7, null);
}
return mergedDraggable;
}, [draggable]);
const renderSwitcherIcon = (nodeProps) => /* @__PURE__ */ React.createElement(SwitcherIconCom, {
prefixCls,
switcherIcon,
switcherLoadingIcon,
treeNodeProps: nodeProps,
showLine
});
return wrapCSSVar(
// @ts-ignore
/* @__PURE__ */ React.createElement(Tree$3, Object.assign({
itemHeight,
ref,
virtual
}, newProps, {
// newProps may contain style so declare style below it
style: Object.assign(Object.assign({}, tree === null || tree === void 0 ? void 0 : tree.style), style2),
prefixCls,
className: cls({
[`${prefixCls}-icon-hide`]: !showIcon,
[`${prefixCls}-block-node`]: blockNode,
[`${prefixCls}-unselectable`]: !selectable,
[`${prefixCls}-rtl`]: direction === "rtl"
}, tree === null || tree === void 0 ? void 0 : tree.className, className, hashId, cssVarCls),
direction,
checkable: checkable ? /* @__PURE__ */ React.createElement("span", {
className: `${prefixCls}-checkbox-inner`
}) : checkable,
selectable,
switcherIcon: renderSwitcherIcon,
draggable: draggableConfig
}), children)
);
});
const RECORD_NONE = 0;
const RECORD_START = 1;
const RECORD_END = 2;
function traverseNodesKey(treeData, callback, fieldNames) {
const {
key: fieldKey,
children: fieldChildren
} = fieldNames;
function processNode(dataNode) {
const key = dataNode[fieldKey];
const children = dataNode[fieldChildren];
if (callback(key, dataNode) !== false) {
traverseNodesKey(children || [], callback, fieldNames);
}
}
treeData.forEach(processNode);
}
function calcRangeKeys(_ref) {
let {
treeData,
expandedKeys,
startKey,
endKey,
fieldNames
} = _ref;
const keys2 = [];
let record = RECORD_NONE;
if (startKey && startKey === endKey) {
return [startKey];
}
if (!startKey || !endKey) {
return [];
}
function matchKey(key) {
return key === startKey || key === endKey;
}
traverseNodesKey(treeData, (key) => {
if (record === RECORD_END) {
return false;
}
if (matchKey(key)) {
keys2.push(key);
if (record === RECORD_NONE) {
record = RECORD_START;
} else if (record === RECORD_START) {
record = RECORD_END;
return false;
}
} else if (record === RECORD_START) {
keys2.push(key);
}
return expandedKeys.includes(key);
}, fillFieldNames(fieldNames));
return keys2;
}
function convertDirectoryKeysToNodes(treeData, keys2, fieldNames) {
const restKeys = _toConsumableArray(keys2);
const nodes = [];
traverseNodesKey(treeData, (key, node2) => {
const index2 = restKeys.indexOf(key);
if (index2 !== -1) {
nodes.push(node2);
restKeys.splice(index2, 1);
}
return !!restKeys.length;
}, fillFieldNames(fieldNames));
return nodes;
}
var __rest$2 = function(s, e2) {
var t2 = {};
for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0) t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i])) t2[p2[i]] = s[p2[i]];
}
return t2;
};
function getIcon(props) {
const {
isLeaf: isLeaf2,
expanded
} = props;
if (isLeaf2) {
return /* @__PURE__ */ reactExports.createElement(RefIcon$b, null);
}
return expanded ? /* @__PURE__ */ reactExports.createElement(RefIcon$9, null) : /* @__PURE__ */ reactExports.createElement(RefIcon$8, null);
}
function getTreeData(_ref) {
let {
treeData,
children
} = _ref;
return treeData || convertTreeToData(children);
}
const DirectoryTree = (_a2, ref) => {
var {
defaultExpandAll,
defaultExpandParent,
defaultExpandedKeys
} = _a2, props = __rest$2(_a2, ["defaultExpandAll", "defaultExpandParent", "defaultExpandedKeys"]);
const lastSelectedKey = reactExports.useRef();
const cachedSelectedKeys = reactExports.useRef();
const getInitExpandedKeys = () => {
const {
keyEntities
} = convertDataToEntities(getTreeData(props));
let initExpandedKeys;
if (defaultExpandAll) {
initExpandedKeys = Object.keys(keyEntities);
} else if (defaultExpandParent) {
initExpandedKeys = conductExpandParent(props.expandedKeys || defaultExpandedKeys || [], keyEntities);
} else {
initExpandedKeys = props.expandedKeys || defaultExpandedKeys || [];
}
return initExpandedKeys;
};
const [selectedKeys, setSelectedKeys] = reactExports.useState(props.selectedKeys || props.defaultSelectedKeys || []);
const [expandedKeys, setExpandedKeys] = reactExports.useState(() => getInitExpandedKeys());
reactExports.useEffect(() => {
if ("selectedKeys" in props) {
setSelectedKeys(props.selectedKeys);
}
}, [props.selectedKeys]);
reactExports.useEffect(() => {
if ("expandedKeys" in props) {
setExpandedKeys(props.expandedKeys);
}
}, [props.expandedKeys]);
const onExpand = (keys2, info) => {
var _a22;
if (!("expandedKeys" in props)) {
setExpandedKeys(keys2);
}
return (_a22 = props.onExpand) === null || _a22 === void 0 ? void 0 : _a22.call(props, keys2, info);
};
const onSelect = (keys2, event) => {
var _a22;
const {
multiple,
fieldNames
} = props;
const {
node: node2,
nativeEvent
} = event;
const {
key = ""
} = node2;
const treeData = getTreeData(props);
const newEvent = Object.assign(Object.assign({}, event), {
selected: true
});
const ctrlPick = (nativeEvent === null || nativeEvent === void 0 ? void 0 : nativeEvent.ctrlKey) || (nativeEvent === null || nativeEvent === void 0 ? void 0 : nativeEvent.metaKey);
const shiftPick = nativeEvent === null || nativeEvent === void 0 ? void 0 : nativeEvent.shiftKey;
let newSelectedKeys;
if (multiple && ctrlPick) {
newSelectedKeys = keys2;
lastSelectedKey.current = key;
cachedSelectedKeys.current = newSelectedKeys;
newEvent.selectedNodes = convertDirectoryKeysToNodes(treeData, newSelectedKeys, fieldNames);
} else if (multiple && shiftPick) {
newSelectedKeys = Array.from(new Set([].concat(_toConsumableArray(cachedSelectedKeys.current || []), _toConsumableArray(calcRangeKeys({
treeData,
expandedKeys,
startKey: key,
endKey: lastSelectedKey.current,
fieldNames
})))));
newEvent.selectedNodes = convertDirectoryKeysToNodes(treeData, newSelectedKeys, fieldNames);
} else {
newSelectedKeys = [key];
lastSelectedKey.current = key;
cachedSelectedKeys.current = newSelectedKeys;
newEvent.selectedNodes = convertDirectoryKeysToNodes(treeData, newSelectedKeys, fieldNames);
}
(_a22 = props.onSelect) === null || _a22 === void 0 ? void 0 : _a22.call(props, newSelectedKeys, newEvent);
if (!("selectedKeys" in props)) {
setSelectedKeys(newSelectedKeys);
}
};
const {
getPrefixCls,
direction
} = reactExports.useContext(ConfigContext);
const {
prefixCls: customizePrefixCls,
className,
showIcon = true,
expandAction = "click"
} = props, otherProps = __rest$2(props, ["prefixCls", "className", "showIcon", "expandAction"]);
const prefixCls = getPrefixCls("tree", customizePrefixCls);
const connectClassName = cls(`${prefixCls}-directory`, {
[`${prefixCls}-directory-rtl`]: direction === "rtl"
}, className);
return /* @__PURE__ */ reactExports.createElement(Tree$2, Object.assign({
icon: getIcon,
ref,
blockNode: true
}, otherProps, {
showIcon,
expandAction,
prefixCls,
className: connectClassName,
expandedKeys,
selectedKeys,
onSelect,
onExpand
}));
};
const ForwardDirectoryTree = /* @__PURE__ */ reactExports.forwardRef(DirectoryTree);
const Tree$1 = Tree$2;
Tree$1.DirectoryTree = ForwardDirectoryTree;
Tree$1.TreeNode = ContextTreeNode;
const FilterSearch = (props) => {
const {
value,
filterSearch,
tablePrefixCls,
locale: locale2,
onChange
} = props;
if (!filterSearch) {
return null;
}
return /* @__PURE__ */ reactExports.createElement("div", {
className: `${tablePrefixCls}-filter-dropdown-search`
}, /* @__PURE__ */ reactExports.createElement(Input, {
prefix: /* @__PURE__ */ reactExports.createElement(RefIcon, null),
placeholder: locale2.filterSearchPlaceholder,
onChange,
value,
// for skip min-width of input
htmlSize: 1,
className: `${tablePrefixCls}-filter-dropdown-search-input`
}));
};
const onKeyDown = (event) => {
const {
keyCode
} = event;
if (keyCode === KeyCode.ENTER) {
event.stopPropagation();
}
};
const FilterDropdownMenuWrapper = /* @__PURE__ */ reactExports.forwardRef((props, ref) => /* @__PURE__ */ reactExports.createElement("div", {
className: props.className,
onClick: (e2) => e2.stopPropagation(),
onKeyDown,
ref
}, props.children));
function flattenKeys(filters) {
let keys2 = [];
(filters || []).forEach((_ref) => {
let {
value,
children
} = _ref;
keys2.push(value);
if (children) {
keys2 = [].concat(_toConsumableArray(keys2), _toConsumableArray(flattenKeys(children)));
}
});
return keys2;
}
function hasSubMenu(filters) {
return filters.some((_ref2) => {
let {
children
} = _ref2;
return children;
});
}
function searchValueMatched(searchValue, text) {
if (typeof text === "string" || typeof text === "number") {
return text === null || text === void 0 ? void 0 : text.toString().toLowerCase().includes(searchValue.trim().toLowerCase());
}
return false;
}
function renderFilterItems(_ref3) {
let {
filters,
prefixCls,
filteredKeys,
filterMultiple,
searchValue,
filterSearch
} = _ref3;
return filters.map((filter2, index2) => {
const key = String(filter2.value);
if (filter2.children) {
return {
key: key || index2,
label: filter2.text,
popupClassName: `${prefixCls}-dropdown-submenu`,
children: renderFilterItems({
filters: filter2.children,
prefixCls,
filteredKeys,
filterMultiple,
searchValue,
filterSearch
})
};
}
const Component = filterMultiple ? Checkbox : Radio;
const item = {
key: filter2.value !== void 0 ? key : index2,
label: /* @__PURE__ */ reactExports.createElement(reactExports.Fragment, null, /* @__PURE__ */ reactExports.createElement(Component, {
checked: filteredKeys.includes(key)
}), /* @__PURE__ */ reactExports.createElement("span", null, filter2.text))
};
if (searchValue.trim()) {
if (typeof filterSearch === "function") {
return filterSearch(searchValue, filter2) ? item : null;
}
return searchValueMatched(searchValue, filter2.text) ? item : null;
}
return item;
});
}
function wrapStringListType(keys2) {
return keys2 || [];
}
const FilterDropdown = (props) => {
var _a2, _b2;
const {
tablePrefixCls,
prefixCls,
column: column2,
dropdownPrefixCls,
columnKey,
filterOnClose,
filterMultiple,
filterMode = "menu",
filterSearch = false,
filterState,
triggerFilter,
locale: locale2,
children,
getPopupContainer,
rootClassName
} = props;
const {
filterDropdownOpen,
onFilterDropdownOpenChange,
filterResetToDefaultFilteredValue,
defaultFilteredValue,
// Deprecated
filterDropdownVisible,
onFilterDropdownVisibleChange
} = column2;
const [visible, setVisible] = reactExports.useState(false);
const filtered = !!(filterState && (((_a2 = filterState.filteredKeys) === null || _a2 === void 0 ? void 0 : _a2.length) || filterState.forceFiltered));
const triggerVisible = (newVisible) => {
setVisible(newVisible);
onFilterDropdownOpenChange === null || onFilterDropdownOpenChange === void 0 ? void 0 : onFilterDropdownOpenChange(newVisible);
onFilterDropdownVisibleChange === null || onFilterDropdownVisibleChange === void 0 ? void 0 : onFilterDropdownVisibleChange(newVisible);
};
const mergedVisible = (_b2 = filterDropdownOpen !== null && filterDropdownOpen !== void 0 ? filterDropdownOpen : filterDropdownVisible) !== null && _b2 !== void 0 ? _b2 : visible;
const propFilteredKeys = filterState === null || filterState === void 0 ? void 0 : filterState.filteredKeys;
const [getFilteredKeysSync, setFilteredKeysSync] = useSyncState(wrapStringListType(propFilteredKeys));
const onSelectKeys = (_ref5) => {
let {
selectedKeys
} = _ref5;
setFilteredKeysSync(selectedKeys);
};
const onCheck = (keys2, _ref6) => {
let {
node: node2,
checked
} = _ref6;
if (!filterMultiple) {
onSelectKeys({
selectedKeys: checked && node2.key ? [node2.key] : []
});
} else {
onSelectKeys({
selectedKeys: keys2
});
}
};
reactExports.useEffect(() => {
if (!visible) {
return;
}
onSelectKeys({
selectedKeys: wrapStringListType(propFilteredKeys)
});
}, [propFilteredKeys]);
const [openKeys, setOpenKeys] = reactExports.useState([]);
const onOpenChange = (keys2) => {
setOpenKeys(keys2);
};
const [searchValue, setSearchValue] = reactExports.useState("");
const onSearch = (e2) => {
const {
value
} = e2.target;
setSearchValue(value);
};
reactExports.useEffect(() => {
if (!visible) {
setSearchValue("");
}
}, [visible]);
const internalTriggerFilter = (keys2) => {
const mergedKeys = (keys2 === null || keys2 === void 0 ? void 0 : keys2.length) ? keys2 : null;
if (mergedKeys === null && (!filterState || !filterState.filteredKeys)) {
return null;
}
if (isEqual$1(mergedKeys, filterState === null || filterState === void 0 ? void 0 : filterState.filteredKeys, true)) {
return null;
}
triggerFilter({
column: column2,
key: columnKey,
filteredKeys: mergedKeys
});
};
const onConfirm = () => {
triggerVisible(false);
internalTriggerFilter(getFilteredKeysSync());
};
const onReset = function() {
let {
confirm,
closeDropdown
} = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {
confirm: false,
closeDropdown: false
};
if (confirm) {
internalTriggerFilter([]);
}
if (closeDropdown) {
triggerVisible(false);
}
setSearchValue("");
if (filterResetToDefaultFilteredValue) {
setFilteredKeysSync((defaultFilteredValue || []).map((key) => String(key)));
} else {
setFilteredKeysSync([]);
}
};
const doFilter = function() {
let {
closeDropdown
} = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {
closeDropdown: true
};
if (closeDropdown) {
triggerVisible(false);
}
internalTriggerFilter(getFilteredKeysSync());
};
const onVisibleChange = (newVisible, info) => {
if (info.source === "trigger") {
if (newVisible && propFilteredKeys !== void 0) {
setFilteredKeysSync(wrapStringListType(propFilteredKeys));
}
triggerVisible(newVisible);
if (!newVisible && !column2.filterDropdown && filterOnClose) {
onConfirm();
}
}
};
const dropdownMenuClass = cls({
[`${dropdownPrefixCls}-menu-without-submenu`]: !hasSubMenu(column2.filters || [])
});
const onCheckAll = (e2) => {
if (e2.target.checked) {
const allFilterKeys = flattenKeys(column2 === null || column2 === void 0 ? void 0 : column2.filters).map((key) => String(key));
setFilteredKeysSync(allFilterKeys);
} else {
setFilteredKeysSync([]);
}
};
const getTreeData2 = (_ref7) => {
let {
filters
} = _ref7;
return (filters || []).map((filter2, index2) => {
const key = String(filter2.value);
const item = {
title: filter2.text,
key: filter2.value !== void 0 ? key : String(index2)
};
if (filter2.children) {
item.children = getTreeData2({
filters: filter2.children
});
}
return item;
});
};
const getFilterData2 = (node2) => {
var _a22;
return Object.assign(Object.assign({}, node2), {
text: node2.title,
value: node2.key,
children: ((_a22 = node2.children) === null || _a22 === void 0 ? void 0 : _a22.map((item) => getFilterData2(item))) || []
});
};
let dropdownContent;
const {
direction,
renderEmpty
} = reactExports.useContext(ConfigContext);
if (typeof column2.filterDropdown === "function") {
dropdownContent = column2.filterDropdown({
prefixCls: `${dropdownPrefixCls}-custom`,
setSelectedKeys: (selectedKeys) => onSelectKeys({
selectedKeys
}),
selectedKeys: getFilteredKeysSync(),
confirm: doFilter,
clearFilters: onReset,
filters: column2.filters,
visible: mergedVisible,
close: () => {
triggerVisible(false);
}
});
} else if (column2.filterDropdown) {
dropdownContent = column2.filterDropdown;
} else {
const selectedKeys = getFilteredKeysSync() || [];
const getFilterComponent = () => {
var _a22;
const empty = (_a22 = renderEmpty === null || renderEmpty === void 0 ? void 0 : renderEmpty("Table.filter")) !== null && _a22 !== void 0 ? _a22 : /* @__PURE__ */ reactExports.createElement(Empty$1, {
image: Empty$1.PRESENTED_IMAGE_SIMPLE,
description: locale2.filterEmptyText,
imageStyle: {
height: 24
},
style: {
margin: 0,
padding: "16px 0"
}
});
if ((column2.filters || []).length === 0) {
return empty;
}
if (filterMode === "tree") {
return /* @__PURE__ */ reactExports.createElement(reactExports.Fragment, null, /* @__PURE__ */ reactExports.createElement(FilterSearch, {
filterSearch,
value: searchValue,
onChange: onSearch,
tablePrefixCls,
locale: locale2
}), /* @__PURE__ */ reactExports.createElement("div", {
className: `${tablePrefixCls}-filter-dropdown-tree`
}, filterMultiple ? /* @__PURE__ */ reactExports.createElement(Checkbox, {
checked: selectedKeys.length === flattenKeys(column2.filters).length,
indeterminate: selectedKeys.length > 0 && selectedKeys.length < flattenKeys(column2.filters).length,
className: `${tablePrefixCls}-filter-dropdown-checkall`,
onChange: onCheckAll
}, locale2.filterCheckall) : null, /* @__PURE__ */ reactExports.createElement(Tree$1, {
checkable: true,
selectable: false,
blockNode: true,
multiple: filterMultiple,
checkStrictly: !filterMultiple,
className: `${dropdownPrefixCls}-menu`,
onCheck,
checkedKeys: selectedKeys,
selectedKeys,
showIcon: false,
treeData: getTreeData2({
filters: column2.filters
}),
autoExpandParent: true,
defaultExpandAll: true,
filterTreeNode: searchValue.trim() ? (node2) => {
if (typeof filterSearch === "function") {
return filterSearch(searchValue, getFilterData2(node2));
}
return searchValueMatched(searchValue, node2.title);
} : void 0
})));
}
const items = renderFilterItems({
filters: column2.filters || [],
filterSearch,
prefixCls,
filteredKeys: getFilteredKeysSync(),
filterMultiple,
searchValue
});
const isEmpty = items.every((item) => item === null);
return /* @__PURE__ */ reactExports.createElement(reactExports.Fragment, null, /* @__PURE__ */ reactExports.createElement(FilterSearch, {
filterSearch,
value: searchValue,
onChange: onSearch,
tablePrefixCls,
locale: locale2
}), isEmpty ? empty : /* @__PURE__ */ reactExports.createElement(Menu, {
selectable: true,
multiple: filterMultiple,
prefixCls: `${dropdownPrefixCls}-menu`,
className: dropdownMenuClass,
onSelect: onSelectKeys,
onDeselect: onSelectKeys,
selectedKeys,
getPopupContainer,
openKeys,
onOpenChange,
items
}));
};
const getResetDisabled = () => {
if (filterResetToDefaultFilteredValue) {
return isEqual$1((defaultFilteredValue || []).map((key) => String(key)), selectedKeys, true);
}
return selectedKeys.length === 0;
};
dropdownContent = /* @__PURE__ */ reactExports.createElement(reactExports.Fragment, null, getFilterComponent(), /* @__PURE__ */ reactExports.createElement("div", {
className: `${prefixCls}-dropdown-btns`
}, /* @__PURE__ */ reactExports.createElement(Button$1, {
type: "link",
size: "small",
disabled: getResetDisabled(),
onClick: () => onReset()
}, locale2.filterReset), /* @__PURE__ */ reactExports.createElement(Button$1, {
type: "primary",
size: "small",
onClick: onConfirm
}, locale2.filterConfirm)));
}
if (column2.filterDropdown) {
dropdownContent = /* @__PURE__ */ reactExports.createElement(OverrideProvider, {
selectable: void 0
}, dropdownContent);
}
const menu = () => /* @__PURE__ */ reactExports.createElement(FilterDropdownMenuWrapper, {
className: `${prefixCls}-dropdown`
}, dropdownContent);
let filterIcon;
if (typeof column2.filterIcon === "function") {
filterIcon = column2.filterIcon(filtered);
} else if (column2.filterIcon) {
filterIcon = column2.filterIcon;
} else {
filterIcon = /* @__PURE__ */ reactExports.createElement(RefIcon$a, null);
}
return /* @__PURE__ */ reactExports.createElement("div", {
className: `${prefixCls}-column`
}, /* @__PURE__ */ reactExports.createElement("span", {
className: `${tablePrefixCls}-column-title`
}, children), /* @__PURE__ */ reactExports.createElement(Dropdown, {
dropdownRender: menu,
trigger: ["click"],
open: mergedVisible,
onOpenChange: onVisibleChange,
getPopupContainer,
placement: direction === "rtl" ? "bottomLeft" : "bottomRight",
rootClassName
}, /* @__PURE__ */ reactExports.createElement("span", {
role: "button",
tabIndex: -1,
className: cls(`${prefixCls}-trigger`, {
active: filtered
}),
onClick: (e2) => {
e2.stopPropagation();
}
}, filterIcon)));
};
const collectFilterStates = (columns, init2, pos) => {
let filterStates = [];
(columns || []).forEach((column2, index2) => {
var _a2;
const columnPos = getColumnPos(index2, pos);
if (column2.filters || "filterDropdown" in column2 || "onFilter" in column2) {
if ("filteredValue" in column2) {
let filteredValues = column2.filteredValue;
if (!("filterDropdown" in column2)) {
filteredValues = (_a2 = filteredValues === null || filteredValues === void 0 ? void 0 : filteredValues.map(String)) !== null && _a2 !== void 0 ? _a2 : filteredValues;
}
filterStates.push({
column: column2,
key: getColumnKey(column2, columnPos),
filteredKeys: filteredValues,
forceFiltered: column2.filtered
});
} else {
filterStates.push({
column: column2,
key: getColumnKey(column2, columnPos),
filteredKeys: init2 && column2.defaultFilteredValue ? column2.defaultFilteredValue : void 0,
forceFiltered: column2.filtered
});
}
}
if ("children" in column2) {
filterStates = [].concat(_toConsumableArray(filterStates), _toConsumableArray(collectFilterStates(column2.children, init2, columnPos)));
}
});
return filterStates;
};
function injectFilter(prefixCls, dropdownPrefixCls, columns, filterStates, locale2, triggerFilter, getPopupContainer, pos, rootClassName) {
return columns.map((column2, index2) => {
const columnPos = getColumnPos(index2, pos);
const {
filterOnClose = true,
filterMultiple = true,
filterMode,
filterSearch
} = column2;
let newColumn = column2;
if (newColumn.filters || newColumn.filterDropdown) {
const columnKey = getColumnKey(newColumn, columnPos);
const filterState = filterStates.find((_ref) => {
let {
key
} = _ref;
return columnKey === key;
});
newColumn = Object.assign(Object.assign({}, newColumn), {
title: (renderProps) => /* @__PURE__ */ reactExports.createElement(FilterDropdown, {
tablePrefixCls: prefixCls,
prefixCls: `${prefixCls}-filter`,
dropdownPrefixCls,
column: newColumn,
columnKey,
filterState,
filterOnClose,
filterMultiple,
filterMode,
filterSearch,
triggerFilter,
locale: locale2,
getPopupContainer,
rootClassName
}, renderColumnTitle(column2.title, renderProps))
});
}
if ("children" in newColumn) {
newColumn = Object.assign(Object.assign({}, newColumn), {
children: injectFilter(prefixCls, dropdownPrefixCls, newColumn.children, filterStates, locale2, triggerFilter, getPopupContainer, columnPos, rootClassName)
});
}
return newColumn;
});
}
const generateFilterInfo = (filterStates) => {
const currentFilters = {};
filterStates.forEach((_ref2) => {
let {
key,
filteredKeys,
column: column2
} = _ref2;
const keyAsString = key;
const {
filters,
filterDropdown
} = column2;
if (filterDropdown) {
currentFilters[keyAsString] = filteredKeys || null;
} else if (Array.isArray(filteredKeys)) {
const keys2 = flattenKeys(filters);
currentFilters[keyAsString] = keys2.filter((originKey) => filteredKeys.includes(String(originKey)));
} else {
currentFilters[keyAsString] = null;
}
});
return currentFilters;
};
const getFilterData = (data, filterStates, childrenColumnName) => {
const filterDatas = filterStates.reduce((currentData, filterState) => {
const {
column: {
onFilter,
filters
},
filteredKeys
} = filterState;
if (onFilter && filteredKeys && filteredKeys.length) {
return currentData.map((record) => Object.assign({}, record)).filter((record) => filteredKeys.some((key) => {
const keys2 = flattenKeys(filters);
const keyIndex2 = keys2.findIndex((k2) => String(k2) === String(key));
const realKey = keyIndex2 !== -1 ? keys2[keyIndex2] : key;
if (record[childrenColumnName]) {
record[childrenColumnName] = getFilterData(record[childrenColumnName], filterStates, childrenColumnName);
}
return onFilter(realKey, record);
}));
}
return currentData;
}, data);
return filterDatas;
};
const getMergedColumns = (rawMergedColumns) => rawMergedColumns.flatMap((column2) => {
if ("children" in column2) {
return [column2].concat(_toConsumableArray(getMergedColumns(column2.children || [])));
}
return [column2];
});
const useFilter = (props) => {
const {
prefixCls,
dropdownPrefixCls,
mergedColumns: rawMergedColumns,
onFilterChange,
getPopupContainer,
locale: tableLocale,
rootClassName
} = props;
devUseWarning();
const mergedColumns = reactExports.useMemo(() => getMergedColumns(rawMergedColumns || []), [rawMergedColumns]);
const [filterStates, setFilterStates] = reactExports.useState(() => collectFilterStates(mergedColumns, true));
const mergedFilterStates = reactExports.useMemo(() => {
const collectedStates = collectFilterStates(mergedColumns, false);
if (collectedStates.length === 0) {
return collectedStates;
}
let filteredKeysIsAllNotControlled = true;
collectedStates.forEach((_ref3) => {
let {
filteredKeys
} = _ref3;
if (filteredKeys !== void 0) {
filteredKeysIsAllNotControlled = false;
}
});
if (filteredKeysIsAllNotControlled) {
const keyList = (mergedColumns || []).map((column2, index2) => getColumnKey(column2, getColumnPos(index2)));
return filterStates.filter((_ref4) => {
let {
key
} = _ref4;
return keyList.includes(key);
}).map((item) => {
const col = mergedColumns[keyList.findIndex((key) => key === item.key)];
return Object.assign(Object.assign({}, item), {
column: Object.assign(Object.assign({}, item.column), col),
forceFiltered: col.filtered
});
});
}
return collectedStates;
}, [mergedColumns, filterStates]);
const filters = reactExports.useMemo(() => generateFilterInfo(mergedFilterStates), [mergedFilterStates]);
const triggerFilter = (filterState) => {
const newFilterStates = mergedFilterStates.filter((_ref5) => {
let {
key
} = _ref5;
return key !== filterState.key;
});
newFilterStates.push(filterState);
setFilterStates(newFilterStates);
onFilterChange(generateFilterInfo(newFilterStates), newFilterStates);
};
const transformColumns = (innerColumns) => injectFilter(prefixCls, dropdownPrefixCls, innerColumns, mergedFilterStates, tableLocale, triggerFilter, getPopupContainer, void 0, rootClassName);
return [transformColumns, mergedFilterStates, filters];
};
const useLazyKVMap = (data, childrenColumnName, getRowKey) => {
const mapCacheRef = reactExports.useRef({});
function getRecordByKey(key) {
var _a2;
if (!mapCacheRef.current || mapCacheRef.current.data !== data || mapCacheRef.current.childrenColumnName !== childrenColumnName || mapCacheRef.current.getRowKey !== getRowKey) {
let dig2 = function(records) {
records.forEach((record, index2) => {
const rowKey = getRowKey(record, index2);
kvMap.set(rowKey, record);
if (record && typeof record === "object" && childrenColumnName in record) {
dig2(record[childrenColumnName] || []);
}
});
};
var dig = dig2;
const kvMap = /* @__PURE__ */ new Map();
dig2(data);
mapCacheRef.current = {
data,
childrenColumnName,
kvMap,
getRowKey
};
}
return (_a2 = mapCacheRef.current.kvMap) === null || _a2 === void 0 ? void 0 : _a2.get(key);
}
return [getRecordByKey];
};
var __rest$1 = function(s, e2) {
var t2 = {};
for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0) t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i])) t2[p2[i]] = s[p2[i]];
}
return t2;
};
const DEFAULT_PAGE_SIZE = 10;
function getPaginationParam(mergedPagination, pagination) {
const param = {
current: mergedPagination.current,
pageSize: mergedPagination.pageSize
};
const paginationObj = pagination && typeof pagination === "object" ? pagination : {};
Object.keys(paginationObj).forEach((pageProp) => {
const value = mergedPagination[pageProp];
if (typeof value !== "function") {
param[pageProp] = value;
}
});
return param;
}
function usePagination(total, onChange, pagination) {
const _a2 = pagination && typeof pagination === "object" ? pagination : {}, {
total: paginationTotal = 0
} = _a2, paginationObj = __rest$1(_a2, ["total"]);
const [innerPagination, setInnerPagination] = reactExports.useState(() => ({
current: "defaultCurrent" in paginationObj ? paginationObj.defaultCurrent : 1,
pageSize: "defaultPageSize" in paginationObj ? paginationObj.defaultPageSize : DEFAULT_PAGE_SIZE
}));
const mergedPagination = extendsObject(innerPagination, paginationObj, {
total: paginationTotal > 0 ? paginationTotal : total
});
const maxPage = Math.ceil((paginationTotal || total) / mergedPagination.pageSize);
if (mergedPagination.current > maxPage) {
mergedPagination.current = maxPage || 1;
}
const refreshPagination = (current, pageSize) => {
setInnerPagination({
current: current !== null && current !== void 0 ? current : 1,
pageSize: pageSize || mergedPagination.pageSize
});
};
const onInternalChange = (current, pageSize) => {
var _a3;
if (pagination) {
(_a3 = pagination.onChange) === null || _a3 === void 0 ? void 0 : _a3.call(pagination, current, pageSize);
}
refreshPagination(current, pageSize);
onChange(current, pageSize || (mergedPagination === null || mergedPagination === void 0 ? void 0 : mergedPagination.pageSize));
};
if (pagination === false) {
return [{}, () => {
}];
}
return [Object.assign(Object.assign({}, mergedPagination), {
onChange: onInternalChange
}), refreshPagination];
}
const ASCEND = "ascend";
const DESCEND = "descend";
const getMultiplePriority = (column2) => {
if (typeof column2.sorter === "object" && typeof column2.sorter.multiple === "number") {
return column2.sorter.multiple;
}
return false;
};
const getSortFunction = (sorter) => {
if (typeof sorter === "function") {
return sorter;
}
if (sorter && typeof sorter === "object" && sorter.compare) {
return sorter.compare;
}
return false;
};
const nextSortDirection = (sortDirections, current) => {
if (!current) {
return sortDirections[0];
}
return sortDirections[sortDirections.indexOf(current) + 1];
};
const collectSortStates = (columns, init2, pos) => {
let sortStates = [];
const pushState = (column2, columnPos) => {
sortStates.push({
column: column2,
key: getColumnKey(column2, columnPos),
multiplePriority: getMultiplePriority(column2),
sortOrder: column2.sortOrder
});
};
(columns || []).forEach((column2, index2) => {
const columnPos = getColumnPos(index2, pos);
if (column2.children) {
if ("sortOrder" in column2) {
pushState(column2, columnPos);
}
sortStates = [].concat(_toConsumableArray(sortStates), _toConsumableArray(collectSortStates(column2.children, init2, columnPos)));
} else if (column2.sorter) {
if ("sortOrder" in column2) {
pushState(column2, columnPos);
} else if (init2 && column2.defaultSortOrder) {
sortStates.push({
column: column2,
key: getColumnKey(column2, columnPos),
multiplePriority: getMultiplePriority(column2),
sortOrder: column2.defaultSortOrder
});
}
}
});
return sortStates;
};
const injectSorter = (prefixCls, columns, sorterStates, triggerSorter, defaultSortDirections, tableLocale, tableShowSorterTooltip, pos) => {
const finalColumns = (columns || []).map((column2, index2) => {
const columnPos = getColumnPos(index2, pos);
let newColumn = column2;
if (newColumn.sorter) {
const sortDirections = newColumn.sortDirections || defaultSortDirections;
const showSorterTooltip = newColumn.showSorterTooltip === void 0 ? tableShowSorterTooltip : newColumn.showSorterTooltip;
const columnKey = getColumnKey(newColumn, columnPos);
const sorterState = sorterStates.find((_ref) => {
let {
key
} = _ref;
return key === columnKey;
});
const sortOrder = sorterState ? sorterState.sortOrder : null;
const nextSortOrder = nextSortDirection(sortDirections, sortOrder);
let sorter;
if (column2.sortIcon) {
sorter = column2.sortIcon({
sortOrder
});
} else {
const upNode = sortDirections.includes(ASCEND) && /* @__PURE__ */ reactExports.createElement(RefIcon$o, {
className: cls(`${prefixCls}-column-sorter-up`, {
active: sortOrder === ASCEND
})
});
const downNode = sortDirections.includes(DESCEND) && /* @__PURE__ */ reactExports.createElement(RefIcon$p, {
className: cls(`${prefixCls}-column-sorter-down`, {
active: sortOrder === DESCEND
})
});
sorter = /* @__PURE__ */ reactExports.createElement("span", {
className: cls(`${prefixCls}-column-sorter`, {
[`${prefixCls}-column-sorter-full`]: !!(upNode && downNode)
})
}, /* @__PURE__ */ reactExports.createElement("span", {
className: `${prefixCls}-column-sorter-inner`,
"aria-hidden": "true"
}, upNode, downNode));
}
const {
cancelSort,
triggerAsc,
triggerDesc
} = tableLocale || {};
let sortTip = cancelSort;
if (nextSortOrder === DESCEND) {
sortTip = triggerDesc;
} else if (nextSortOrder === ASCEND) {
sortTip = triggerAsc;
}
const tooltipProps = typeof showSorterTooltip === "object" ? Object.assign({
title: sortTip
}, showSorterTooltip) : {
title: sortTip
};
newColumn = Object.assign(Object.assign({}, newColumn), {
className: cls(newColumn.className, {
[`${prefixCls}-column-sort`]: sortOrder
}),
title: (renderProps) => {
const columnSortersClass = `${prefixCls}-column-sorters`;
const renderColumnTitleWrapper = /* @__PURE__ */ reactExports.createElement("span", {
className: `${prefixCls}-column-title`
}, renderColumnTitle(column2.title, renderProps));
const renderSortTitle = /* @__PURE__ */ reactExports.createElement("div", {
className: columnSortersClass
}, renderColumnTitleWrapper, sorter);
if (showSorterTooltip) {
if (typeof showSorterTooltip !== "boolean" && (showSorterTooltip === null || showSorterTooltip === void 0 ? void 0 : showSorterTooltip.target) === "sorter-icon") {
return /* @__PURE__ */ reactExports.createElement("div", {
className: `${columnSortersClass} ${prefixCls}-column-sorters-tooltip-target-sorter`
}, renderColumnTitleWrapper, /* @__PURE__ */ reactExports.createElement(Tooltip2, Object.assign({}, tooltipProps), sorter));
}
return /* @__PURE__ */ reactExports.createElement(Tooltip2, Object.assign({}, tooltipProps), renderSortTitle);
}
return renderSortTitle;
},
onHeaderCell: (col) => {
var _a2;
const cell = ((_a2 = column2.onHeaderCell) === null || _a2 === void 0 ? void 0 : _a2.call(column2, col)) || {};
const originOnClick = cell.onClick;
const originOKeyDown = cell.onKeyDown;
cell.onClick = (event) => {
triggerSorter({
column: column2,
key: columnKey,
sortOrder: nextSortOrder,
multiplePriority: getMultiplePriority(column2)
});
originOnClick === null || originOnClick === void 0 ? void 0 : originOnClick(event);
};
cell.onKeyDown = (event) => {
if (event.keyCode === KeyCode.ENTER) {
triggerSorter({
column: column2,
key: columnKey,
sortOrder: nextSortOrder,
multiplePriority: getMultiplePriority(column2)
});
originOKeyDown === null || originOKeyDown === void 0 ? void 0 : originOKeyDown(event);
}
};
const renderTitle = safeColumnTitle(column2.title, {});
const displayTitle = renderTitle === null || renderTitle === void 0 ? void 0 : renderTitle.toString();
if (sortOrder) {
cell["aria-sort"] = sortOrder === "ascend" ? "ascending" : "descending";
} else {
cell["aria-label"] = displayTitle || "";
}
cell.className = cls(cell.className, `${prefixCls}-column-has-sorters`);
cell.tabIndex = 0;
if (column2.ellipsis) {
cell.title = (renderTitle !== null && renderTitle !== void 0 ? renderTitle : "").toString();
}
return cell;
}
});
}
if ("children" in newColumn) {
newColumn = Object.assign(Object.assign({}, newColumn), {
children: injectSorter(prefixCls, newColumn.children, sorterStates, triggerSorter, defaultSortDirections, tableLocale, tableShowSorterTooltip, columnPos)
});
}
return newColumn;
});
return finalColumns;
};
const stateToInfo = (sorterState) => {
const {
column: column2,
sortOrder
} = sorterState;
return {
column: column2,
order: sortOrder,
field: column2.dataIndex,
columnKey: column2.key
};
};
const generateSorterInfo = (sorterStates) => {
const activeSorters = sorterStates.filter((_ref2) => {
let {
sortOrder
} = _ref2;
return sortOrder;
}).map(stateToInfo);
if (activeSorters.length === 0 && sorterStates.length) {
const lastIndex = sorterStates.length - 1;
return Object.assign(Object.assign({}, stateToInfo(sorterStates[lastIndex])), {
column: void 0,
order: void 0,
field: void 0,
columnKey: void 0
});
}
if (activeSorters.length <= 1) {
return activeSorters[0] || {};
}
return activeSorters;
};
const getSortData = (data, sortStates, childrenColumnName) => {
const innerSorterStates = sortStates.slice().sort((a, b2) => b2.multiplePriority - a.multiplePriority);
const cloneData = data.slice();
const runningSorters = innerSorterStates.filter((_ref3) => {
let {
column: {
sorter
},
sortOrder
} = _ref3;
return getSortFunction(sorter) && sortOrder;
});
if (!runningSorters.length) {
return cloneData;
}
return cloneData.sort((record1, record2) => {
for (let i = 0; i < runningSorters.length; i += 1) {
const sorterState = runningSorters[i];
const {
column: {
sorter
},
sortOrder
} = sorterState;
const compareFn = getSortFunction(sorter);
if (compareFn && sortOrder) {
const compareResult = compareFn(record1, record2, sortOrder);
if (compareResult !== 0) {
return sortOrder === ASCEND ? compareResult : -compareResult;
}
}
}
return 0;
}).map((record) => {
const subRecords = record[childrenColumnName];
if (subRecords) {
return Object.assign(Object.assign({}, record), {
[childrenColumnName]: getSortData(subRecords, sortStates, childrenColumnName)
});
}
return record;
});
};
const useFilterSorter = (props) => {
const {
prefixCls,
mergedColumns,
sortDirections,
tableLocale,
showSorterTooltip,
onSorterChange
} = props;
const [sortStates, setSortStates] = reactExports.useState(collectSortStates(mergedColumns, true));
const getColumnKeys = (columns, pos) => {
const newKeys = [];
columns.forEach((item, index2) => {
const columnPos = getColumnPos(index2, pos);
newKeys.push(getColumnKey(item, columnPos));
if (Array.isArray(item.children)) {
const childKeys = getColumnKeys(item.children, columnPos);
newKeys.push.apply(newKeys, _toConsumableArray(childKeys));
}
});
return newKeys;
};
const mergedSorterStates = reactExports.useMemo(() => {
let validate = true;
const collectedStates = collectSortStates(mergedColumns, false);
if (!collectedStates.length) {
const mergedColumnsKeys = getColumnKeys(mergedColumns);
return sortStates.filter((_ref4) => {
let {
key
} = _ref4;
return mergedColumnsKeys.includes(key);
});
}
const validateStates = [];
function patchStates(state) {
if (validate) {
validateStates.push(state);
} else {
validateStates.push(Object.assign(Object.assign({}, state), {
sortOrder: null
}));
}
}
let multipleMode = null;
collectedStates.forEach((state) => {
if (multipleMode === null) {
patchStates(state);
if (state.sortOrder) {
if (state.multiplePriority === false) {
validate = false;
} else {
multipleMode = true;
}
}
} else if (multipleMode && state.multiplePriority !== false) {
patchStates(state);
} else {
validate = false;
patchStates(state);
}
});
return validateStates;
}, [mergedColumns, sortStates]);
const columnTitleSorterProps = reactExports.useMemo(() => {
var _a2, _b2;
const sortColumns = mergedSorterStates.map((_ref5) => {
let {
column: column2,
sortOrder
} = _ref5;
return {
column: column2,
order: sortOrder
};
});
return {
sortColumns,
// Legacy
sortColumn: (_a2 = sortColumns[0]) === null || _a2 === void 0 ? void 0 : _a2.column,
sortOrder: (_b2 = sortColumns[0]) === null || _b2 === void 0 ? void 0 : _b2.order
};
}, [mergedSorterStates]);
const triggerSorter = (sortState) => {
let newSorterStates;
if (sortState.multiplePriority === false || !mergedSorterStates.length || mergedSorterStates[0].multiplePriority === false) {
newSorterStates = [sortState];
} else {
newSorterStates = [].concat(_toConsumableArray(mergedSorterStates.filter((_ref6) => {
let {
key
} = _ref6;
return key !== sortState.key;
})), [sortState]);
}
setSortStates(newSorterStates);
onSorterChange(generateSorterInfo(newSorterStates), newSorterStates);
};
const transformColumns = (innerColumns) => injectSorter(prefixCls, innerColumns, mergedSorterStates, triggerSorter, sortDirections, tableLocale, showSorterTooltip);
const getSorters = () => generateSorterInfo(mergedSorterStates);
return [transformColumns, mergedSorterStates, columnTitleSorterProps, getSorters];
};
const fillTitle = (columns, columnTitleProps) => {
const finalColumns = columns.map((column2) => {
const cloneColumn = Object.assign({}, column2);
cloneColumn.title = renderColumnTitle(column2.title, columnTitleProps);
if ("children" in cloneColumn) {
cloneColumn.children = fillTitle(cloneColumn.children, columnTitleProps);
}
return cloneColumn;
});
return finalColumns;
};
const useTitleColumns = (columnTitleProps) => {
const filledColumns = reactExports.useCallback((columns) => fillTitle(columns, columnTitleProps), [columnTitleProps]);
return [filledColumns];
};
const RcTable = genTable((prev2, next2) => {
const {
_renderTimes: prevRenderTimes
} = prev2;
const {
_renderTimes: nextRenderTimes
} = next2;
return prevRenderTimes !== nextRenderTimes;
});
const RcVirtualTable = genVirtualTable((prev2, next2) => {
const {
_renderTimes: prevRenderTimes
} = prev2;
const {
_renderTimes: nextRenderTimes
} = next2;
return prevRenderTimes !== nextRenderTimes;
});
const genBorderedStyle = (token2) => {
const {
componentCls,
lineWidth,
lineType,
tableBorderColor,
tableHeaderBg,
tablePaddingVertical,
tablePaddingHorizontal,
calc
} = token2;
const tableBorder = `${unit$1(lineWidth)} ${lineType} ${tableBorderColor}`;
const getSizeBorderStyle = (size, paddingVertical, paddingHorizontal) => ({
[`&${componentCls}-${size}`]: {
[`> ${componentCls}-container`]: {
[`> ${componentCls}-content, > ${componentCls}-body`]: {
[`
> table > tbody > tr > th,
> table > tbody > tr > td
`]: {
[`> ${componentCls}-expanded-row-fixed`]: {
margin: `${unit$1(calc(paddingVertical).mul(-1).equal())}
${unit$1(calc(calc(paddingHorizontal).add(lineWidth)).mul(-1).equal())}`
}
}
}
}
}
});
return {
[`${componentCls}-wrapper`]: {
[`${componentCls}${componentCls}-bordered`]: Object.assign(Object.assign(Object.assign({
// ============================ Title =============================
[`> ${componentCls}-title`]: {
border: tableBorder,
borderBottom: 0
},
// ============================ Content ============================
[`> ${componentCls}-container`]: {
borderInlineStart: tableBorder,
borderTop: tableBorder,
[`
> ${componentCls}-content,
> ${componentCls}-header,
> ${componentCls}-body,
> ${componentCls}-summary
`]: {
"> table": {
// ============================= Cell =============================
[`
> thead > tr > th,
> thead > tr > td,
> tbody > tr > th,
> tbody > tr > td,
> tfoot > tr > th,
> tfoot > tr > td
`]: {
borderInlineEnd: tableBorder
},
// ============================ Header ============================
"> thead": {
"> tr:not(:last-child) > th": {
borderBottom: tableBorder
},
"> tr > th::before": {
backgroundColor: "transparent !important"
}
},
// Fixed right should provides additional border
[`
> thead > tr,
> tbody > tr,
> tfoot > tr
`]: {
[`> ${componentCls}-cell-fix-right-first::after`]: {
borderInlineEnd: tableBorder
}
},
// ========================== Expandable ==========================
[`
> tbody > tr > th,
> tbody > tr > td
`]: {
[`> ${componentCls}-expanded-row-fixed`]: {
margin: `${unit$1(calc(tablePaddingVertical).mul(-1).equal())} ${unit$1(calc(calc(tablePaddingHorizontal).add(lineWidth)).mul(-1).equal())}`,
"&::after": {
position: "absolute",
top: 0,
insetInlineEnd: lineWidth,
bottom: 0,
borderInlineEnd: tableBorder,
content: '""'
}
}
}
}
}
},
// ============================ Scroll ============================
[`&${componentCls}-scroll-horizontal`]: {
[`> ${componentCls}-container > ${componentCls}-body`]: {
"> table > tbody": {
[`
> tr${componentCls}-expanded-row,
> tr${componentCls}-placeholder
`]: {
"> th, > td": {
borderInlineEnd: 0
}
}
}
}
}
}, getSizeBorderStyle("middle", token2.tablePaddingVerticalMiddle, token2.tablePaddingHorizontalMiddle)), getSizeBorderStyle("small", token2.tablePaddingVerticalSmall, token2.tablePaddingHorizontalSmall)), {
// ============================ Footer ============================
[`> ${componentCls}-footer`]: {
border: tableBorder,
borderTop: 0
}
}),
// ============================ Nested ============================
[`${componentCls}-cell`]: {
[`${componentCls}-container:first-child`]: {
// :first-child to avoid the case when bordered and title is set
borderTop: 0
},
// https://github.com/ant-design/ant-design/issues/35577
"&-scrollbar:not([rowspan])": {
boxShadow: `0 ${unit$1(lineWidth)} 0 ${unit$1(lineWidth)} ${tableHeaderBg}`
}
},
[`${componentCls}-bordered ${componentCls}-cell-scrollbar`]: {
borderInlineEnd: tableBorder
}
}
};
};
const genEllipsisStyle = (token2) => {
const {
componentCls
} = token2;
return {
[`${componentCls}-wrapper`]: {
[`${componentCls}-cell-ellipsis`]: Object.assign(Object.assign({}, textEllipsis), {
wordBreak: "keep-all",
// Fixed first or last should special process
[`
&${componentCls}-cell-fix-left-last,
&${componentCls}-cell-fix-right-first
`]: {
overflow: "visible",
[`${componentCls}-cell-content`]: {
display: "block",
overflow: "hidden",
textOverflow: "ellipsis"
}
},
[`${componentCls}-column-title`]: {
overflow: "hidden",
textOverflow: "ellipsis",
wordBreak: "keep-all"
}
})
}
};
};
const genEmptyStyle = (token2) => {
const {
componentCls
} = token2;
return {
[`${componentCls}-wrapper`]: {
[`${componentCls}-tbody > tr${componentCls}-placeholder`]: {
textAlign: "center",
color: token2.colorTextDisabled,
[`
&:hover > th,
&:hover > td,
`]: {
background: token2.colorBgContainer
}
}
}
};
};
const genExpandStyle = (token2) => {
const {
componentCls,
antCls,
motionDurationSlow,
lineWidth,
paddingXS,
lineType,
tableBorderColor,
tableExpandIconBg,
tableExpandColumnWidth,
borderRadius,
tablePaddingVertical,
tablePaddingHorizontal,
tableExpandedRowBg,
paddingXXS,
expandIconMarginTop,
expandIconSize,
expandIconHalfInner,
expandIconScale,
calc
} = token2;
const tableBorder = `${unit$1(lineWidth)} ${lineType} ${tableBorderColor}`;
const expandIconLineOffset = calc(paddingXXS).sub(lineWidth).equal();
return {
[`${componentCls}-wrapper`]: {
[`${componentCls}-expand-icon-col`]: {
width: tableExpandColumnWidth
},
[`${componentCls}-row-expand-icon-cell`]: {
textAlign: "center",
[`${componentCls}-row-expand-icon`]: {
display: "inline-flex",
float: "none",
verticalAlign: "sub"
}
},
[`${componentCls}-row-indent`]: {
height: 1,
float: "left"
},
[`${componentCls}-row-expand-icon`]: Object.assign(Object.assign({}, operationUnit(token2)), {
position: "relative",
float: "left",
width: expandIconSize,
height: expandIconSize,
color: "inherit",
lineHeight: unit$1(expandIconSize),
background: tableExpandIconBg,
border: tableBorder,
borderRadius,
transform: `scale(${expandIconScale})`,
"&:focus, &:hover, &:active": {
borderColor: "currentcolor"
},
"&::before, &::after": {
position: "absolute",
background: "currentcolor",
transition: `transform ${motionDurationSlow} ease-out`,
content: '""'
},
"&::before": {
top: expandIconHalfInner,
insetInlineEnd: expandIconLineOffset,
insetInlineStart: expandIconLineOffset,
height: lineWidth
},
"&::after": {
top: expandIconLineOffset,
bottom: expandIconLineOffset,
insetInlineStart: expandIconHalfInner,
width: lineWidth,
transform: "rotate(90deg)"
},
// Motion effect
"&-collapsed::before": {
transform: "rotate(-180deg)"
},
"&-collapsed::after": {
transform: "rotate(0deg)"
},
"&-spaced": {
"&::before, &::after": {
display: "none",
content: "none"
},
background: "transparent",
border: 0,
visibility: "hidden"
}
}),
[`${componentCls}-row-indent + ${componentCls}-row-expand-icon`]: {
marginTop: expandIconMarginTop,
marginInlineEnd: paddingXS
},
[`tr${componentCls}-expanded-row`]: {
"&, &:hover": {
"> th, > td": {
background: tableExpandedRowBg
}
},
// https://github.com/ant-design/ant-design/issues/25573
[`${antCls}-descriptions-view`]: {
display: "flex",
table: {
flex: "auto",
width: "100%"
}
}
},
// With fixed
[`${componentCls}-expanded-row-fixed`]: {
position: "relative",
margin: `${unit$1(calc(tablePaddingVertical).mul(-1).equal())} ${unit$1(calc(tablePaddingHorizontal).mul(-1).equal())}`,
padding: `${unit$1(tablePaddingVertical)} ${unit$1(tablePaddingHorizontal)}`
}
}
};
};
const genFilterStyle = (token2) => {
const {
componentCls,
antCls,
iconCls,
tableFilterDropdownWidth,
tableFilterDropdownSearchWidth,
paddingXXS,
paddingXS,
colorText,
lineWidth,
lineType,
tableBorderColor,
headerIconColor,
fontSizeSM,
tablePaddingHorizontal,
borderRadius,
motionDurationSlow,
colorTextDescription,
colorPrimary,
tableHeaderFilterActiveBg,
colorTextDisabled,
tableFilterDropdownBg,
tableFilterDropdownHeight,
controlItemBgHover,
controlItemBgActive,
boxShadowSecondary,
filterDropdownMenuBg,
calc
} = token2;
const dropdownPrefixCls = `${antCls}-dropdown`;
const tableFilterDropdownPrefixCls = `${componentCls}-filter-dropdown`;
const treePrefixCls = `${antCls}-tree`;
const tableBorder = `${unit$1(lineWidth)} ${lineType} ${tableBorderColor}`;
return [
{
[`${componentCls}-wrapper`]: {
[`${componentCls}-filter-column`]: {
display: "flex",
justifyContent: "space-between"
},
[`${componentCls}-filter-trigger`]: {
position: "relative",
display: "flex",
alignItems: "center",
marginBlock: calc(paddingXXS).mul(-1).equal(),
marginInline: `${unit$1(paddingXXS)} ${unit$1(calc(tablePaddingHorizontal).div(2).mul(-1).equal())}`,
padding: `0 ${unit$1(paddingXXS)}`,
color: headerIconColor,
fontSize: fontSizeSM,
borderRadius,
cursor: "pointer",
transition: `all ${motionDurationSlow}`,
"&:hover": {
color: colorTextDescription,
background: tableHeaderFilterActiveBg
},
"&.active": {
color: colorPrimary
}
}
}
},
{
// Dropdown
[`${antCls}-dropdown`]: {
[tableFilterDropdownPrefixCls]: Object.assign(Object.assign({}, resetComponent(token2)), {
minWidth: tableFilterDropdownWidth,
backgroundColor: tableFilterDropdownBg,
borderRadius,
boxShadow: boxShadowSecondary,
overflow: "hidden",
// Reset menu
[`${dropdownPrefixCls}-menu`]: {
// https://github.com/ant-design/ant-design/issues/4916
// https://github.com/ant-design/ant-design/issues/19542
maxHeight: tableFilterDropdownHeight,
overflowX: "hidden",
border: 0,
boxShadow: "none",
borderRadius: "unset",
backgroundColor: filterDropdownMenuBg,
"&:empty::after": {
display: "block",
padding: `${unit$1(paddingXS)} 0`,
color: colorTextDisabled,
fontSize: fontSizeSM,
textAlign: "center",
content: '"Not Found"'
}
},
[`${tableFilterDropdownPrefixCls}-tree`]: {
paddingBlock: `${unit$1(paddingXS)} 0`,
paddingInline: paddingXS,
[treePrefixCls]: {
padding: 0
},
[`${treePrefixCls}-treenode ${treePrefixCls}-node-content-wrapper:hover`]: {
backgroundColor: controlItemBgHover
},
[`${treePrefixCls}-treenode-checkbox-checked ${treePrefixCls}-node-content-wrapper`]: {
"&, &:hover": {
backgroundColor: controlItemBgActive
}
}
},
[`${tableFilterDropdownPrefixCls}-search`]: {
padding: paddingXS,
borderBottom: tableBorder,
"&-input": {
input: {
minWidth: tableFilterDropdownSearchWidth
},
[iconCls]: {
color: colorTextDisabled
}
}
},
[`${tableFilterDropdownPrefixCls}-checkall`]: {
width: "100%",
marginBottom: paddingXXS,
marginInlineStart: paddingXXS
},
// Operation
[`${tableFilterDropdownPrefixCls}-btns`]: {
display: "flex",
justifyContent: "space-between",
padding: `${unit$1(calc(paddingXS).sub(lineWidth).equal())} ${unit$1(paddingXS)}`,
overflow: "hidden",
borderTop: tableBorder
}
})
}
},
// Dropdown Menu & SubMenu
{
// submenu of table filter dropdown
[`${antCls}-dropdown ${tableFilterDropdownPrefixCls}, ${tableFilterDropdownPrefixCls}-submenu`]: {
// Checkbox
[`${antCls}-checkbox-wrapper + span`]: {
paddingInlineStart: paddingXS,
color: colorText
},
"> ul": {
maxHeight: "calc(100vh - 130px)",
overflowX: "hidden",
overflowY: "auto"
}
}
}
];
};
const genFixedStyle = (token2) => {
const {
componentCls,
lineWidth,
colorSplit,
motionDurationSlow,
zIndexTableFixed: zIndexTableFixed2,
tableBg,
zIndexTableSticky,
calc
} = token2;
const shadowColor = colorSplit;
return {
[`${componentCls}-wrapper`]: {
[`
${componentCls}-cell-fix-left,
${componentCls}-cell-fix-right
`]: {
position: "sticky !important",
zIndex: zIndexTableFixed2,
background: tableBg
},
[`
${componentCls}-cell-fix-left-first::after,
${componentCls}-cell-fix-left-last::after
`]: {
position: "absolute",
top: 0,
right: {
_skip_check_: true,
value: 0
},
bottom: calc(lineWidth).mul(-1).equal(),
width: 30,
transform: "translateX(100%)",
transition: `box-shadow ${motionDurationSlow}`,
content: '""',
pointerEvents: "none"
},
[`${componentCls}-cell-fix-left-all::after`]: {
display: "none"
},
[`
${componentCls}-cell-fix-right-first::after,
${componentCls}-cell-fix-right-last::after
`]: {
position: "absolute",
top: 0,
bottom: calc(lineWidth).mul(-1).equal(),
left: {
_skip_check_: true,
value: 0
},
width: 30,
transform: "translateX(-100%)",
transition: `box-shadow ${motionDurationSlow}`,
content: '""',
pointerEvents: "none"
},
[`${componentCls}-container`]: {
position: "relative",
"&::before, &::after": {
position: "absolute",
top: 0,
bottom: 0,
zIndex: calc(zIndexTableSticky).add(1).equal({
unit: false
}),
width: 30,
transition: `box-shadow ${motionDurationSlow}`,
content: '""',
pointerEvents: "none"
},
"&::before": {
insetInlineStart: 0
},
"&::after": {
insetInlineEnd: 0
}
},
[`${componentCls}-ping-left`]: {
[`&:not(${componentCls}-has-fix-left) ${componentCls}-container::before`]: {
boxShadow: `inset 10px 0 8px -8px ${shadowColor}`
},
[`
${componentCls}-cell-fix-left-first::after,
${componentCls}-cell-fix-left-last::after
`]: {
boxShadow: `inset 10px 0 8px -8px ${shadowColor}`
},
[`${componentCls}-cell-fix-left-last::before`]: {
backgroundColor: "transparent !important"
}
},
[`${componentCls}-ping-right`]: {
[`&:not(${componentCls}-has-fix-right) ${componentCls}-container::after`]: {
boxShadow: `inset -10px 0 8px -8px ${shadowColor}`
},
[`
${componentCls}-cell-fix-right-first::after,
${componentCls}-cell-fix-right-last::after
`]: {
boxShadow: `inset -10px 0 8px -8px ${shadowColor}`
}
},
// Gapped fixed Columns do not show the shadow
[`${componentCls}-fixed-column-gapped`]: {
[`
${componentCls}-cell-fix-left-first::after,
${componentCls}-cell-fix-left-last::after,
${componentCls}-cell-fix-right-first::after,
${componentCls}-cell-fix-right-last::after
`]: {
boxShadow: "none"
}
}
}
};
};
const genPaginationStyle = (token2) => {
const {
componentCls,
antCls,
margin
} = token2;
return {
[`${componentCls}-wrapper`]: {
// ========================== Pagination ==========================
[`${componentCls}-pagination${antCls}-pagination`]: {
margin: `${unit$1(margin)} 0`
},
[`${componentCls}-pagination`]: {
display: "flex",
flexWrap: "wrap",
rowGap: token2.paddingXS,
"> *": {
flex: "none"
},
"&-left": {
justifyContent: "flex-start"
},
"&-center": {
justifyContent: "center"
},
"&-right": {
justifyContent: "flex-end"
}
}
}
};
};
const genRadiusStyle = (token2) => {
const {
componentCls,
tableRadius
} = token2;
return {
[`${componentCls}-wrapper`]: {
[componentCls]: {
// https://github.com/ant-design/ant-design/issues/39115#issuecomment-1362314574
[`${componentCls}-title, ${componentCls}-header`]: {
borderRadius: `${unit$1(tableRadius)} ${unit$1(tableRadius)} 0 0`
},
[`${componentCls}-title + ${componentCls}-container`]: {
borderStartStartRadius: 0,
borderStartEndRadius: 0,
// https://github.com/ant-design/ant-design/issues/41975
[`${componentCls}-header, table`]: {
borderRadius: 0
},
"table > thead > tr:first-child": {
"th:first-child, th:last-child, td:first-child, td:last-child": {
borderRadius: 0
}
}
},
"&-container": {
borderStartStartRadius: tableRadius,
borderStartEndRadius: tableRadius,
"table > thead > tr:first-child": {
"> *:first-child": {
borderStartStartRadius: tableRadius
},
"> *:last-child": {
borderStartEndRadius: tableRadius
}
}
},
"&-footer": {
borderRadius: `0 0 ${unit$1(tableRadius)} ${unit$1(tableRadius)}`
}
}
}
};
};
const genStyle = (token2) => {
const {
componentCls
} = token2;
return {
[`${componentCls}-wrapper-rtl`]: {
direction: "rtl",
table: {
direction: "rtl"
},
[`${componentCls}-pagination-left`]: {
justifyContent: "flex-end"
},
[`${componentCls}-pagination-right`]: {
justifyContent: "flex-start"
},
[`${componentCls}-row-expand-icon`]: {
float: "right",
"&::after": {
transform: "rotate(-90deg)"
},
"&-collapsed::before": {
transform: "rotate(180deg)"
},
"&-collapsed::after": {
transform: "rotate(0deg)"
}
},
[`${componentCls}-container`]: {
"&::before": {
insetInlineStart: "unset",
insetInlineEnd: 0
},
"&::after": {
insetInlineStart: 0,
insetInlineEnd: "unset"
},
[`${componentCls}-row-indent`]: {
float: "right"
}
}
}
};
};
const genSelectionStyle = (token2) => {
const {
componentCls,
antCls,
iconCls,
fontSizeIcon,
padding,
paddingXS,
headerIconColor,
headerIconHoverColor,
tableSelectionColumnWidth,
tableSelectedRowBg,
tableSelectedRowHoverBg,
tableRowHoverBg,
tablePaddingHorizontal,
calc
} = token2;
return {
[`${componentCls}-wrapper`]: {
// ========================== Selections ==========================
[`${componentCls}-selection-col`]: {
width: tableSelectionColumnWidth,
[`&${componentCls}-selection-col-with-dropdown`]: {
width: calc(tableSelectionColumnWidth).add(fontSizeIcon).add(calc(padding).div(4)).equal()
}
},
[`${componentCls}-bordered ${componentCls}-selection-col`]: {
width: calc(tableSelectionColumnWidth).add(calc(paddingXS).mul(2)).equal(),
[`&${componentCls}-selection-col-with-dropdown`]: {
width: calc(tableSelectionColumnWidth).add(fontSizeIcon).add(calc(padding).div(4)).add(calc(paddingXS).mul(2)).equal()
}
},
[`
table tr th${componentCls}-selection-column,
table tr td${componentCls}-selection-column,
${componentCls}-selection-column
`]: {
paddingInlineEnd: token2.paddingXS,
paddingInlineStart: token2.paddingXS,
textAlign: "center",
[`${antCls}-radio-wrapper`]: {
marginInlineEnd: 0
}
},
[`table tr th${componentCls}-selection-column${componentCls}-cell-fix-left`]: {
zIndex: calc(token2.zIndexTableFixed).add(1).equal({
unit: false
})
},
[`table tr th${componentCls}-selection-column::after`]: {
backgroundColor: "transparent !important"
},
[`${componentCls}-selection`]: {
position: "relative",
display: "inline-flex",
flexDirection: "column"
},
[`${componentCls}-selection-extra`]: {
position: "absolute",
top: 0,
zIndex: 1,
cursor: "pointer",
transition: `all ${token2.motionDurationSlow}`,
marginInlineStart: "100%",
paddingInlineStart: unit$1(calc(tablePaddingHorizontal).div(4).equal()),
[iconCls]: {
color: headerIconColor,
fontSize: fontSizeIcon,
verticalAlign: "baseline",
"&:hover": {
color: headerIconHoverColor
}
}
},
// ============================= Rows =============================
[`${componentCls}-tbody`]: {
[`${componentCls}-row`]: {
[`&${componentCls}-row-selected`]: {
[`> ${componentCls}-cell`]: {
background: tableSelectedRowBg,
"&-row-hover": {
background: tableSelectedRowHoverBg
}
}
},
[`> ${componentCls}-cell-row-hover`]: {
background: tableRowHoverBg
}
}
}
}
};
};
const genSizeStyle = (token2) => {
const {
componentCls,
tableExpandColumnWidth,
calc
} = token2;
const getSizeStyle = (size, paddingVertical, paddingHorizontal, fontSize) => ({
[`${componentCls}${componentCls}-${size}`]: {
fontSize,
[`
${componentCls}-title,
${componentCls}-footer,
${componentCls}-cell,
${componentCls}-thead > tr > th,
${componentCls}-tbody > tr > th,
${componentCls}-tbody > tr > td,
tfoot > tr > th,
tfoot > tr > td
`]: {
padding: `${unit$1(paddingVertical)} ${unit$1(paddingHorizontal)}`
},
[`${componentCls}-filter-trigger`]: {
marginInlineEnd: unit$1(calc(paddingHorizontal).div(2).mul(-1).equal())
},
[`${componentCls}-expanded-row-fixed`]: {
margin: `${unit$1(calc(paddingVertical).mul(-1).equal())} ${unit$1(calc(paddingHorizontal).mul(-1).equal())}`
},
[`${componentCls}-tbody`]: {
// ========================= Nest Table ===========================
[`${componentCls}-wrapper:only-child ${componentCls}`]: {
marginBlock: unit$1(calc(paddingVertical).mul(-1).equal()),
marginInline: `${unit$1(calc(tableExpandColumnWidth).sub(paddingHorizontal).equal())} ${unit$1(calc(paddingHorizontal).mul(-1).equal())}`
}
},
// https://github.com/ant-design/ant-design/issues/35167
[`${componentCls}-selection-extra`]: {
paddingInlineStart: unit$1(calc(paddingHorizontal).div(4).equal())
}
}
});
return {
[`${componentCls}-wrapper`]: Object.assign(Object.assign({}, getSizeStyle("middle", token2.tablePaddingVerticalMiddle, token2.tablePaddingHorizontalMiddle, token2.tableFontSizeMiddle)), getSizeStyle("small", token2.tablePaddingVerticalSmall, token2.tablePaddingHorizontalSmall, token2.tableFontSizeSmall))
};
};
const genSorterStyle = (token2) => {
const {
componentCls,
marginXXS,
fontSizeIcon,
headerIconColor,
headerIconHoverColor
} = token2;
return {
[`${componentCls}-wrapper`]: {
[`${componentCls}-thead th${componentCls}-column-has-sorters`]: {
outline: "none",
cursor: "pointer",
// why left 0s? Avoid column header move with transition when left is changed
// https://github.com/ant-design/ant-design/issues/50588
transition: `all ${token2.motionDurationSlow}, left 0s`,
"&:hover": {
background: token2.tableHeaderSortHoverBg,
"&::before": {
backgroundColor: "transparent !important"
}
},
"&:focus-visible": {
color: token2.colorPrimary
},
// https://github.com/ant-design/ant-design/issues/30969
[`
&${componentCls}-cell-fix-left:hover,
&${componentCls}-cell-fix-right:hover
`]: {
background: token2.tableFixedHeaderSortActiveBg
}
},
[`${componentCls}-thead th${componentCls}-column-sort`]: {
background: token2.tableHeaderSortBg,
"&::before": {
backgroundColor: "transparent !important"
}
},
[`td${componentCls}-column-sort`]: {
background: token2.tableBodySortBg
},
[`${componentCls}-column-title`]: {
position: "relative",
zIndex: 1,
flex: 1
},
[`${componentCls}-column-sorters`]: {
display: "flex",
flex: "auto",
alignItems: "center",
justifyContent: "space-between",
"&::after": {
position: "absolute",
inset: 0,
width: "100%",
height: "100%",
content: '""'
}
},
[`${componentCls}-column-sorters-tooltip-target-sorter`]: {
"&::after": {
content: "none"
}
},
[`${componentCls}-column-sorter`]: {
marginInlineStart: marginXXS,
color: headerIconColor,
fontSize: 0,
transition: `color ${token2.motionDurationSlow}`,
"&-inner": {
display: "inline-flex",
flexDirection: "column",
alignItems: "center"
},
"&-up, &-down": {
fontSize: fontSizeIcon,
"&.active": {
color: token2.colorPrimary
}
},
[`${componentCls}-column-sorter-up + ${componentCls}-column-sorter-down`]: {
marginTop: "-0.3em"
}
},
[`${componentCls}-column-sorters:hover ${componentCls}-column-sorter`]: {
color: headerIconHoverColor
}
}
};
};
const genStickyStyle = (token2) => {
const {
componentCls,
opacityLoading,
tableScrollThumbBg,
tableScrollThumbBgHover,
tableScrollThumbSize,
tableScrollBg,
zIndexTableSticky,
stickyScrollBarBorderRadius,
lineWidth,
lineType,
tableBorderColor
} = token2;
const tableBorder = `${unit$1(lineWidth)} ${lineType} ${tableBorderColor}`;
return {
[`${componentCls}-wrapper`]: {
[`${componentCls}-sticky`]: {
"&-holder": {
position: "sticky",
zIndex: zIndexTableSticky,
background: token2.colorBgContainer
},
"&-scroll": {
position: "sticky",
bottom: 0,
height: `${unit$1(tableScrollThumbSize)} !important`,
zIndex: zIndexTableSticky,
display: "flex",
alignItems: "center",
background: tableScrollBg,
borderTop: tableBorder,
opacity: opacityLoading,
"&:hover": {
transformOrigin: "center bottom"
},
// fake scrollbar style of sticky
"&-bar": {
height: tableScrollThumbSize,
backgroundColor: tableScrollThumbBg,
borderRadius: stickyScrollBarBorderRadius,
transition: `all ${token2.motionDurationSlow}, transform none`,
position: "absolute",
bottom: 0,
"&:hover, &-active": {
backgroundColor: tableScrollThumbBgHover
}
}
}
}
}
};
};
const genSummaryStyle = (token2) => {
const {
componentCls,
lineWidth,
tableBorderColor,
calc
} = token2;
const tableBorder = `${unit$1(lineWidth)} ${token2.lineType} ${tableBorderColor}`;
return {
[`${componentCls}-wrapper`]: {
[`${componentCls}-summary`]: {
position: "relative",
zIndex: token2.zIndexTableFixed,
background: token2.tableBg,
"> tr": {
"> th, > td": {
borderBottom: tableBorder
}
}
},
[`div${componentCls}-summary`]: {
boxShadow: `0 ${unit$1(calc(lineWidth).mul(-1).equal())} 0 ${tableBorderColor}`
}
}
};
};
const genVirtualStyle = (token2) => {
const {
componentCls,
motionDurationMid,
lineWidth,
lineType,
tableBorderColor,
calc
} = token2;
const tableBorder = `${unit$1(lineWidth)} ${lineType} ${tableBorderColor}`;
const rowCellCls = `${componentCls}-expanded-row-cell`;
return {
[`${componentCls}-wrapper`]: {
// ========================== Row ==========================
[`${componentCls}-tbody-virtual`]: {
[`${componentCls}-tbody-virtual-holder-inner`]: {
[`
& > ${componentCls}-row,
& > div:not(${componentCls}-row) > ${componentCls}-row
`]: {
display: "flex",
boxSizing: "border-box",
width: "100%"
}
},
[`${componentCls}-cell`]: {
borderBottom: tableBorder,
transition: `background ${motionDurationMid}`
},
[`${componentCls}-expanded-row`]: {
[`${rowCellCls}${rowCellCls}-fixed`]: {
position: "sticky",
insetInlineStart: 0,
overflow: "hidden",
width: `calc(var(--virtual-width) - ${unit$1(lineWidth)})`,
borderInlineEnd: "none"
}
}
},
// ======================== Border =========================
[`${componentCls}-bordered`]: {
[`${componentCls}-tbody-virtual`]: {
"&:after": {
content: '""',
insetInline: 0,
bottom: 0,
borderBottom: tableBorder,
position: "absolute"
},
[`${componentCls}-cell`]: {
borderInlineEnd: tableBorder,
[`&${componentCls}-cell-fix-right-first:before`]: {
content: '""',
position: "absolute",
insetBlock: 0,
insetInlineStart: calc(lineWidth).mul(-1).equal(),
borderInlineStart: tableBorder
}
}
},
// Empty placeholder
[`&${componentCls}-virtual`]: {
[`${componentCls}-placeholder ${componentCls}-cell`]: {
borderInlineEnd: tableBorder,
borderBottom: tableBorder
}
}
}
}
};
};
const genTableStyle = (token2) => {
const {
componentCls,
fontWeightStrong,
tablePaddingVertical,
tablePaddingHorizontal,
tableExpandColumnWidth,
lineWidth,
lineType,
tableBorderColor,
tableFontSize,
tableBg,
tableRadius,
tableHeaderTextColor,
motionDurationMid,
tableHeaderBg,
tableHeaderCellSplitColor,
tableFooterTextColor,
tableFooterBg,
calc
} = token2;
const tableBorder = `${unit$1(lineWidth)} ${lineType} ${tableBorderColor}`;
return {
[`${componentCls}-wrapper`]: Object.assign(Object.assign({
clear: "both",
maxWidth: "100%"
}, clearFix()), {
[componentCls]: Object.assign(Object.assign({}, resetComponent(token2)), {
fontSize: tableFontSize,
background: tableBg,
borderRadius: `${unit$1(tableRadius)} ${unit$1(tableRadius)} 0 0`,
// https://github.com/ant-design/ant-design/issues/47486
scrollbarColor: `${token2.tableScrollThumbBg} ${token2.tableScrollBg}`
}),
// https://github.com/ant-design/ant-design/issues/17611
table: {
width: "100%",
textAlign: "start",
borderRadius: `${unit$1(tableRadius)} ${unit$1(tableRadius)} 0 0`,
borderCollapse: "separate",
borderSpacing: 0
},
// ============================= Cell ==============================
[`
${componentCls}-cell,
${componentCls}-thead > tr > th,
${componentCls}-tbody > tr > th,
${componentCls}-tbody > tr > td,
tfoot > tr > th,
tfoot > tr > td
`]: {
position: "relative",
padding: `${unit$1(tablePaddingVertical)} ${unit$1(tablePaddingHorizontal)}`,
overflowWrap: "break-word"
},
// ============================ Title =============================
[`${componentCls}-title`]: {
padding: `${unit$1(tablePaddingVertical)} ${unit$1(tablePaddingHorizontal)}`
},
// ============================ Header ============================
[`${componentCls}-thead`]: {
[`
> tr > th,
> tr > td
`]: {
position: "relative",
color: tableHeaderTextColor,
fontWeight: fontWeightStrong,
textAlign: "start",
background: tableHeaderBg,
borderBottom: tableBorder,
transition: `background ${motionDurationMid} ease`,
"&[colspan]:not([colspan='1'])": {
textAlign: "center"
},
[`&:not(:last-child):not(${componentCls}-selection-column):not(${componentCls}-row-expand-icon-cell):not([colspan])::before`]: {
position: "absolute",
top: "50%",
insetInlineEnd: 0,
width: 1,
height: "1.6em",
backgroundColor: tableHeaderCellSplitColor,
transform: "translateY(-50%)",
transition: `background-color ${motionDurationMid}`,
content: '""'
}
},
"> tr:not(:last-child) > th[colspan]": {
borderBottom: 0
}
},
// ============================ Body ============================
[`${componentCls}-tbody`]: {
"> tr": {
"> th, > td": {
transition: `background ${motionDurationMid}, border-color ${motionDurationMid}`,
borderBottom: tableBorder,
// ========================= Nest Table ===========================
[`
> ${componentCls}-wrapper:only-child,
> ${componentCls}-expanded-row-fixed > ${componentCls}-wrapper:only-child
`]: {
[componentCls]: {
marginBlock: unit$1(calc(tablePaddingVertical).mul(-1).equal()),
marginInline: `${unit$1(calc(tableExpandColumnWidth).sub(tablePaddingHorizontal).equal())}
${unit$1(calc(tablePaddingHorizontal).mul(-1).equal())}`,
[`${componentCls}-tbody > tr:last-child > td`]: {
borderBottom: 0,
"&:first-child, &:last-child": {
borderRadius: 0
}
}
}
}
},
"> th": {
position: "relative",
color: tableHeaderTextColor,
fontWeight: fontWeightStrong,
textAlign: "start",
background: tableHeaderBg,
borderBottom: tableBorder,
transition: `background ${motionDurationMid} ease`
}
}
},
// ============================ Footer ============================
[`${componentCls}-footer`]: {
padding: `${unit$1(tablePaddingVertical)} ${unit$1(tablePaddingHorizontal)}`,
color: tableFooterTextColor,
background: tableFooterBg
}
})
};
};
const prepareComponentToken = (token2) => {
const {
colorFillAlter,
colorBgContainer,
colorTextHeading,
colorFillSecondary,
colorFillContent,
controlItemBgActive,
controlItemBgActiveHover,
padding,
paddingSM,
paddingXS,
colorBorderSecondary,
borderRadiusLG,
controlHeight,
colorTextPlaceholder,
fontSize,
fontSizeSM,
lineHeight,
lineWidth,
colorIcon,
colorIconHover,
opacityLoading,
controlInteractiveSize
} = token2;
const colorFillSecondarySolid = new TinyColor(colorFillSecondary).onBackground(colorBgContainer).toHexShortString();
const colorFillContentSolid = new TinyColor(colorFillContent).onBackground(colorBgContainer).toHexShortString();
const colorFillAlterSolid = new TinyColor(colorFillAlter).onBackground(colorBgContainer).toHexShortString();
const baseColorAction = new TinyColor(colorIcon);
const baseColorActionHover = new TinyColor(colorIconHover);
const expandIconHalfInner = controlInteractiveSize / 2 - lineWidth;
const expandIconSize = expandIconHalfInner * 2 + lineWidth * 3;
return {
headerBg: colorFillAlterSolid,
headerColor: colorTextHeading,
headerSortActiveBg: colorFillSecondarySolid,
headerSortHoverBg: colorFillContentSolid,
bodySortBg: colorFillAlterSolid,
rowHoverBg: colorFillAlterSolid,
rowSelectedBg: controlItemBgActive,
rowSelectedHoverBg: controlItemBgActiveHover,
rowExpandedBg: colorFillAlter,
cellPaddingBlock: padding,
cellPaddingInline: padding,
cellPaddingBlockMD: paddingSM,
cellPaddingInlineMD: paddingXS,
cellPaddingBlockSM: paddingXS,
cellPaddingInlineSM: paddingXS,
borderColor: colorBorderSecondary,
headerBorderRadius: borderRadiusLG,
footerBg: colorFillAlterSolid,
footerColor: colorTextHeading,
cellFontSize: fontSize,
cellFontSizeMD: fontSize,
cellFontSizeSM: fontSize,
headerSplitColor: colorBorderSecondary,
fixedHeaderSortActiveBg: colorFillSecondarySolid,
headerFilterHoverBg: colorFillContent,
filterDropdownMenuBg: colorBgContainer,
filterDropdownBg: colorBgContainer,
expandIconBg: colorBgContainer,
selectionColumnWidth: controlHeight,
stickyScrollBarBg: colorTextPlaceholder,
stickyScrollBarBorderRadius: 100,
expandIconMarginTop: (fontSize * lineHeight - lineWidth * 3) / 2 - Math.ceil((fontSizeSM * 1.4 - lineWidth * 3) / 2),
headerIconColor: baseColorAction.clone().setAlpha(baseColorAction.getAlpha() * opacityLoading).toRgbString(),
headerIconHoverColor: baseColorActionHover.clone().setAlpha(baseColorActionHover.getAlpha() * opacityLoading).toRgbString(),
expandIconHalfInner,
expandIconSize,
expandIconScale: controlInteractiveSize / expandIconSize
};
};
const zIndexTableFixed = 2;
const useStyle = genStyleHooks("Table", (token2) => {
const {
colorTextHeading,
colorSplit,
colorBgContainer,
controlInteractiveSize: checkboxSize,
headerBg,
headerColor,
headerSortActiveBg,
headerSortHoverBg,
bodySortBg,
rowHoverBg,
rowSelectedBg,
rowSelectedHoverBg,
rowExpandedBg,
cellPaddingBlock,
cellPaddingInline,
cellPaddingBlockMD,
cellPaddingInlineMD,
cellPaddingBlockSM,
cellPaddingInlineSM,
borderColor,
footerBg,
footerColor,
headerBorderRadius,
cellFontSize,
cellFontSizeMD,
cellFontSizeSM,
headerSplitColor,
fixedHeaderSortActiveBg,
headerFilterHoverBg,
filterDropdownBg,
expandIconBg,
selectionColumnWidth,
stickyScrollBarBg,
calc
} = token2;
const tableToken = merge$1(token2, {
tableFontSize: cellFontSize,
tableBg: colorBgContainer,
tableRadius: headerBorderRadius,
tablePaddingVertical: cellPaddingBlock,
tablePaddingHorizontal: cellPaddingInline,
tablePaddingVerticalMiddle: cellPaddingBlockMD,
tablePaddingHorizontalMiddle: cellPaddingInlineMD,
tablePaddingVerticalSmall: cellPaddingBlockSM,
tablePaddingHorizontalSmall: cellPaddingInlineSM,
tableBorderColor: borderColor,
tableHeaderTextColor: headerColor,
tableHeaderBg: headerBg,
tableFooterTextColor: footerColor,
tableFooterBg: footerBg,
tableHeaderCellSplitColor: headerSplitColor,
tableHeaderSortBg: headerSortActiveBg,
tableHeaderSortHoverBg: headerSortHoverBg,
tableBodySortBg: bodySortBg,
tableFixedHeaderSortActiveBg: fixedHeaderSortActiveBg,
tableHeaderFilterActiveBg: headerFilterHoverBg,
tableFilterDropdownBg: filterDropdownBg,
tableRowHoverBg: rowHoverBg,
tableSelectedRowBg: rowSelectedBg,
tableSelectedRowHoverBg: rowSelectedHoverBg,
zIndexTableFixed,
zIndexTableSticky: calc(zIndexTableFixed).add(1).equal({
unit: false
}),
tableFontSizeMiddle: cellFontSizeMD,
tableFontSizeSmall: cellFontSizeSM,
tableSelectionColumnWidth: selectionColumnWidth,
tableExpandIconBg: expandIconBg,
tableExpandColumnWidth: calc(checkboxSize).add(calc(token2.padding).mul(2)).equal(),
tableExpandedRowBg: rowExpandedBg,
// Dropdown
tableFilterDropdownWidth: 120,
tableFilterDropdownHeight: 264,
tableFilterDropdownSearchWidth: 140,
// Virtual Scroll Bar
tableScrollThumbSize: 8,
// Mac scroll bar size
tableScrollThumbBg: stickyScrollBarBg,
tableScrollThumbBgHover: colorTextHeading,
tableScrollBg: colorSplit
});
return [genTableStyle(tableToken), genPaginationStyle(tableToken), genSummaryStyle(tableToken), genSorterStyle(tableToken), genFilterStyle(tableToken), genBorderedStyle(tableToken), genRadiusStyle(tableToken), genExpandStyle(tableToken), genSummaryStyle(tableToken), genEmptyStyle(tableToken), genSelectionStyle(tableToken), genFixedStyle(tableToken), genStickyStyle(tableToken), genEllipsisStyle(tableToken), genSizeStyle(tableToken), genStyle(tableToken), genVirtualStyle(tableToken)];
}, prepareComponentToken, {
unitless: {
expandIconScale: true
}
});
const EMPTY_LIST = [];
const InternalTable = (props, ref) => {
var _a2, _b2;
const {
prefixCls: customizePrefixCls,
className,
rootClassName,
style: style2,
size: customizeSize,
bordered,
dropdownPrefixCls: customizeDropdownPrefixCls,
dataSource,
pagination,
rowSelection,
rowKey = "key",
rowClassName,
columns,
children,
childrenColumnName: legacyChildrenColumnName,
onChange,
getPopupContainer,
loading,
expandIcon,
expandable,
expandedRowRender,
expandIconColumnIndex,
indentSize,
scroll,
sortDirections,
locale: locale2,
showSorterTooltip = {
target: "full-header"
},
virtual
} = props;
devUseWarning();
const baseColumns = reactExports.useMemo(() => columns || convertChildrenToColumns(children), [columns, children]);
const needResponsive = reactExports.useMemo(() => baseColumns.some((col) => col.responsive), [baseColumns]);
const screens = useBreakpoint(needResponsive);
const mergedColumns = reactExports.useMemo(() => {
const matched = new Set(Object.keys(screens).filter((m2) => screens[m2]));
return baseColumns.filter((c2) => !c2.responsive || c2.responsive.some((r2) => matched.has(r2)));
}, [baseColumns, screens]);
const tableProps = omit(props, ["className", "style", "columns"]);
const {
locale: contextLocale = localeValues$1,
direction,
table,
renderEmpty,
getPrefixCls,
getPopupContainer: getContextPopupContainer
} = reactExports.useContext(ConfigContext);
const mergedSize = useSize(customizeSize);
const tableLocale = Object.assign(Object.assign({}, contextLocale.Table), locale2);
const rawData = dataSource || EMPTY_LIST;
const prefixCls = getPrefixCls("table", customizePrefixCls);
const dropdownPrefixCls = getPrefixCls("dropdown", customizeDropdownPrefixCls);
const [, token2] = useToken();
const rootCls = useCSSVarCls(prefixCls);
const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls, rootCls);
const mergedExpandable = Object.assign(Object.assign({
childrenColumnName: legacyChildrenColumnName,
expandIconColumnIndex
}, expandable), {
expandIcon: (_a2 = expandable === null || expandable === void 0 ? void 0 : expandable.expandIcon) !== null && _a2 !== void 0 ? _a2 : (_b2 = table === null || table === void 0 ? void 0 : table.expandable) === null || _b2 === void 0 ? void 0 : _b2.expandIcon
});
const {
childrenColumnName = "children"
} = mergedExpandable;
const expandType = reactExports.useMemo(() => {
if (rawData.some((item) => item === null || item === void 0 ? void 0 : item[childrenColumnName])) {
return "nest";
}
if (expandedRowRender || (expandable === null || expandable === void 0 ? void 0 : expandable.expandedRowRender)) {
return "row";
}
return null;
}, [rawData]);
const internalRefs = {
body: reactExports.useRef()
};
const getContainerWidth = useContainerWidth(prefixCls);
const rootRef = reactExports.useRef(null);
const tblRef = reactExports.useRef(null);
useProxyImperativeHandle(ref, () => Object.assign(Object.assign({}, tblRef.current), {
nativeElement: rootRef.current
}));
const getRowKey = reactExports.useMemo(() => {
if (typeof rowKey === "function") {
return rowKey;
}
return (record) => record === null || record === void 0 ? void 0 : record[rowKey];
}, [rowKey]);
const [getRecordByKey] = useLazyKVMap(rawData, childrenColumnName, getRowKey);
const changeEventInfo = {};
const triggerOnChange = function(info, action) {
let reset = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
var _a22, _b22, _c2, _d;
const changeInfo = Object.assign(Object.assign({}, changeEventInfo), info);
if (reset) {
(_a22 = changeEventInfo.resetPagination) === null || _a22 === void 0 ? void 0 : _a22.call(changeEventInfo);
if ((_b22 = changeInfo.pagination) === null || _b22 === void 0 ? void 0 : _b22.current) {
changeInfo.pagination.current = 1;
}
if (pagination) {
(_c2 = pagination.onChange) === null || _c2 === void 0 ? void 0 : _c2.call(pagination, 1, (_d = changeInfo.pagination) === null || _d === void 0 ? void 0 : _d.pageSize);
}
}
if (scroll && scroll.scrollToFirstRowOnChange !== false && internalRefs.body.current) {
scrollTo(0, {
getContainer: () => internalRefs.body.current
});
}
onChange === null || onChange === void 0 ? void 0 : onChange(changeInfo.pagination, changeInfo.filters, changeInfo.sorter, {
currentDataSource: getFilterData(getSortData(rawData, changeInfo.sorterStates, childrenColumnName), changeInfo.filterStates, childrenColumnName),
action
});
};
const onSorterChange = (sorter, sorterStates) => {
triggerOnChange({
sorter,
sorterStates
}, "sort", false);
};
const [transformSorterColumns, sortStates, sorterTitleProps, getSorters] = useFilterSorter({
prefixCls,
mergedColumns,
onSorterChange,
sortDirections: sortDirections || ["ascend", "descend"],
tableLocale,
showSorterTooltip
});
const sortedData = reactExports.useMemo(() => getSortData(rawData, sortStates, childrenColumnName), [rawData, sortStates]);
changeEventInfo.sorter = getSorters();
changeEventInfo.sorterStates = sortStates;
const onFilterChange = (filters2, filterStates2) => {
triggerOnChange({
filters: filters2,
filterStates: filterStates2
}, "filter", true);
};
const [transformFilterColumns, filterStates, filters] = useFilter({
prefixCls,
locale: tableLocale,
dropdownPrefixCls,
mergedColumns,
onFilterChange,
getPopupContainer: getPopupContainer || getContextPopupContainer,
rootClassName: cls(rootClassName, rootCls)
});
const mergedData = getFilterData(sortedData, filterStates, childrenColumnName);
changeEventInfo.filters = filters;
changeEventInfo.filterStates = filterStates;
const columnTitleProps = reactExports.useMemo(() => {
const mergedFilters = {};
Object.keys(filters).forEach((filterKey) => {
if (filters[filterKey] !== null) {
mergedFilters[filterKey] = filters[filterKey];
}
});
return Object.assign(Object.assign({}, sorterTitleProps), {
filters: mergedFilters
});
}, [sorterTitleProps, filters]);
const [transformTitleColumns] = useTitleColumns(columnTitleProps);
const onPaginationChange = (current, pageSize) => {
triggerOnChange({
pagination: Object.assign(Object.assign({}, changeEventInfo.pagination), {
current,
pageSize
})
}, "paginate");
};
const [mergedPagination, resetPagination] = usePagination(mergedData.length, onPaginationChange, pagination);
changeEventInfo.pagination = pagination === false ? {} : getPaginationParam(mergedPagination, pagination);
changeEventInfo.resetPagination = resetPagination;
const pageData = reactExports.useMemo(() => {
if (pagination === false || !mergedPagination.pageSize) {
return mergedData;
}
const {
current = 1,
total,
pageSize = DEFAULT_PAGE_SIZE
} = mergedPagination;
if (mergedData.length < total) {
if (mergedData.length > pageSize) {
return mergedData.slice((current - 1) * pageSize, current * pageSize);
}
return mergedData;
}
return mergedData.slice((current - 1) * pageSize, current * pageSize);
}, [!!pagination, mergedData, mergedPagination === null || mergedPagination === void 0 ? void 0 : mergedPagination.current, mergedPagination === null || mergedPagination === void 0 ? void 0 : mergedPagination.pageSize, mergedPagination === null || mergedPagination === void 0 ? void 0 : mergedPagination.total]);
const [transformSelectionColumns, selectedKeySet] = useSelection({
prefixCls,
data: mergedData,
pageData,
getRowKey,
getRecordByKey,
expandType,
childrenColumnName,
locale: tableLocale,
getPopupContainer: getPopupContainer || getContextPopupContainer
}, rowSelection);
const internalRowClassName = (record, index2, indent) => {
let mergedRowClassName;
if (typeof rowClassName === "function") {
mergedRowClassName = cls(rowClassName(record, index2, indent));
} else {
mergedRowClassName = cls(rowClassName);
}
return cls({
[`${prefixCls}-row-selected`]: selectedKeySet.has(getRowKey(record, index2))
}, mergedRowClassName);
};
mergedExpandable.__PARENT_RENDER_ICON__ = mergedExpandable.expandIcon;
mergedExpandable.expandIcon = mergedExpandable.expandIcon || expandIcon || renderExpandIcon(tableLocale);
if (expandType === "nest" && mergedExpandable.expandIconColumnIndex === void 0) {
mergedExpandable.expandIconColumnIndex = rowSelection ? 1 : 0;
} else if (mergedExpandable.expandIconColumnIndex > 0 && rowSelection) {
mergedExpandable.expandIconColumnIndex -= 1;
}
if (typeof mergedExpandable.indentSize !== "number") {
mergedExpandable.indentSize = typeof indentSize === "number" ? indentSize : 15;
}
const transformColumns = reactExports.useCallback((innerColumns) => transformTitleColumns(transformSelectionColumns(transformFilterColumns(transformSorterColumns(innerColumns)))), [transformSorterColumns, transformFilterColumns, transformSelectionColumns]);
let topPaginationNode;
let bottomPaginationNode;
if (pagination !== false && (mergedPagination === null || mergedPagination === void 0 ? void 0 : mergedPagination.total)) {
let paginationSize;
if (mergedPagination.size) {
paginationSize = mergedPagination.size;
} else {
paginationSize = mergedSize === "small" || mergedSize === "middle" ? "small" : void 0;
}
const renderPagination = (position22) => /* @__PURE__ */ reactExports.createElement(Pagination, Object.assign({}, mergedPagination, {
className: cls(`${prefixCls}-pagination ${prefixCls}-pagination-${position22}`, mergedPagination.className),
size: paginationSize
}));
const defaultPosition = direction === "rtl" ? "left" : "right";
const {
position: position2
} = mergedPagination;
if (position2 !== null && Array.isArray(position2)) {
const topPos = position2.find((p2) => p2.includes("top"));
const bottomPos = position2.find((p2) => p2.includes("bottom"));
const isDisable = position2.every((p2) => `${p2}` === "none");
if (!topPos && !bottomPos && !isDisable) {
bottomPaginationNode = renderPagination(defaultPosition);
}
if (topPos) {
topPaginationNode = renderPagination(topPos.toLowerCase().replace("top", ""));
}
if (bottomPos) {
bottomPaginationNode = renderPagination(bottomPos.toLowerCase().replace("bottom", ""));
}
} else {
bottomPaginationNode = renderPagination(defaultPosition);
}
}
let spinProps;
if (typeof loading === "boolean") {
spinProps = {
spinning: loading
};
} else if (typeof loading === "object") {
spinProps = Object.assign({
spinning: true
}, loading);
}
const wrapperClassNames = cls(cssVarCls, rootCls, `${prefixCls}-wrapper`, table === null || table === void 0 ? void 0 : table.className, {
[`${prefixCls}-wrapper-rtl`]: direction === "rtl"
}, className, rootClassName, hashId);
const mergedStyle = Object.assign(Object.assign({}, table === null || table === void 0 ? void 0 : table.style), style2);
const emptyText = typeof (locale2 === null || locale2 === void 0 ? void 0 : locale2.emptyText) !== "undefined" ? locale2.emptyText : (renderEmpty === null || renderEmpty === void 0 ? void 0 : renderEmpty("Table")) || /* @__PURE__ */ reactExports.createElement(DefaultRenderEmpty, {
componentName: "Table"
});
const TableComponent = virtual ? RcVirtualTable : RcTable;
const virtualProps = {};
const listItemHeight = reactExports.useMemo(() => {
const {
fontSize,
lineHeight,
padding,
paddingXS,
paddingSM
} = token2;
const fontHeight = Math.floor(fontSize * lineHeight);
switch (mergedSize) {
case "large":
return padding * 2 + fontHeight;
case "small":
return paddingXS * 2 + fontHeight;
default:
return paddingSM * 2 + fontHeight;
}
}, [token2, mergedSize]);
if (virtual) {
virtualProps.listItemHeight = listItemHeight;
}
return wrapCSSVar(/* @__PURE__ */ reactExports.createElement("div", {
ref: rootRef,
className: wrapperClassNames,
style: mergedStyle
}, /* @__PURE__ */ reactExports.createElement(Spin, Object.assign({
spinning: false
}, spinProps), topPaginationNode, /* @__PURE__ */ reactExports.createElement(TableComponent, Object.assign({}, virtualProps, tableProps, {
ref: tblRef,
columns: mergedColumns,
direction,
expandable: mergedExpandable,
prefixCls,
className: cls({
[`${prefixCls}-middle`]: mergedSize === "middle",
[`${prefixCls}-small`]: mergedSize === "small",
[`${prefixCls}-bordered`]: bordered,
[`${prefixCls}-empty`]: rawData.length === 0
}, cssVarCls, rootCls, hashId),
data: pageData,
rowKey: getRowKey,
rowClassName: internalRowClassName,
emptyText,
// Internal
internalHooks: INTERNAL_HOOKS,
internalRefs,
transformColumns,
getContainerWidth
})), bottomPaginationNode)));
};
const InternalTable$1 = /* @__PURE__ */ reactExports.forwardRef(InternalTable);
const Table = (props, ref) => {
const renderTimesRef = reactExports.useRef(0);
renderTimesRef.current += 1;
return /* @__PURE__ */ reactExports.createElement(InternalTable$1, Object.assign({}, props, {
ref,
_renderTimes: renderTimesRef.current
}));
};
const ForwardTable = /* @__PURE__ */ reactExports.forwardRef(Table);
ForwardTable.SELECTION_COLUMN = SELECTION_COLUMN;
ForwardTable.EXPAND_COLUMN = EXPAND_COLUMN;
ForwardTable.SELECTION_ALL = SELECTION_ALL;
ForwardTable.SELECTION_INVERT = SELECTION_INVERT;
ForwardTable.SELECTION_NONE = SELECTION_NONE;
ForwardTable.Column = Column;
ForwardTable.ColumnGroup = ColumnGroup;
ForwardTable.Summary = FooterComponents;
var toggleSelection = function() {
var selection = document.getSelection();
if (!selection.rangeCount) {
return function() {
};
}
var active = document.activeElement;
var ranges = [];
for (var i = 0; i < selection.rangeCount; i++) {
ranges.push(selection.getRangeAt(i));
}
switch (active.tagName.toUpperCase()) {
case "INPUT":
case "TEXTAREA":
active.blur();
break;
default:
active = null;
break;
}
selection.removeAllRanges();
return function() {
selection.type === "Caret" && selection.removeAllRanges();
if (!selection.rangeCount) {
ranges.forEach(function(range3) {
selection.addRange(range3);
});
}
active && active.focus();
};
};
var deselectCurrent = toggleSelection;
var clipboardToIE11Formatting = {
"text/plain": "Text",
"text/html": "Url",
"default": "Text"
};
var defaultMessage = "Copy to clipboard: #{key}, Enter";
function format$2(message2) {
var copyKey = (/mac os x/i.test(navigator.userAgent) ? "⌘" : "Ctrl") + "+C";
return message2.replace(/#{\s*key\s*}/g, copyKey);
}
function copy$2(text, options) {
var debug, message2, reselectPrevious, range3, selection, mark, success = false;
if (!options) {
options = {};
}
debug = options.debug || false;
try {
reselectPrevious = deselectCurrent();
range3 = document.createRange();
selection = document.getSelection();
mark = document.createElement("span");
mark.textContent = text;
mark.ariaHidden = "true";
mark.style.all = "unset";
mark.style.position = "fixed";
mark.style.top = 0;
mark.style.clip = "rect(0, 0, 0, 0)";
mark.style.whiteSpace = "pre";
mark.style.webkitUserSelect = "text";
mark.style.MozUserSelect = "text";
mark.style.msUserSelect = "text";
mark.style.userSelect = "text";
mark.addEventListener("copy", function(e2) {
e2.stopPropagation();
if (options.format) {
e2.preventDefault();
if (typeof e2.clipboardData === "undefined") {
debug && console.warn("unable to use e.clipboardData");
debug && console.warn("trying IE specific stuff");
window.clipboardData.clearData();
var format2 = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting["default"];
window.clipboardData.setData(format2, text);
} else {
e2.clipboardData.clearData();
e2.clipboardData.setData(options.format, text);
}
}
if (options.onCopy) {
e2.preventDefault();
options.onCopy(e2.clipboardData);
}
});
document.body.appendChild(mark);
range3.selectNodeContents(mark);
selection.addRange(range3);
var successful = document.execCommand("copy");
if (!successful) {
throw new Error("copy command was unsuccessful");
}
success = true;
} catch (err) {
debug && console.error("unable to copy using execCommand: ", err);
debug && console.warn("trying IE specific stuff");
try {
window.clipboardData.setData(options.format || "text", text);
options.onCopy && options.onCopy(window.clipboardData);
success = true;
} catch (err2) {
debug && console.error("unable to copy using clipboardData: ", err2);
debug && console.error("falling back to prompt");
message2 = format$2("message" in options ? options.message : defaultMessage);
window.prompt(message2, text);
}
} finally {
if (selection) {
if (typeof selection.removeRange == "function") {
selection.removeRange(range3);
} else {
selection.removeAllRanges();
}
}
if (mark) {
document.body.removeChild(mark);
}
reselectPrevious();
}
return success;
}
var copyToClipboard = copy$2;
const copy$3 = /* @__PURE__ */ getDefaultExportFromCjs(copyToClipboard);
const customSummaryTab = "custom-antd-module__customSummaryTab___LLyv-";
const customFileStructureTable = "custom-antd-module__customFileStructureTable___mNv5J";
const customConfigPopover = "custom-antd-module__customConfigPopover___3Qv0F";
const customConfigCopyPopover = "custom-antd-module__customConfigCopyPopover___GP1K6";
const styles$3 = {
customSummaryTab,
customFileStructureTable,
customConfigPopover,
customConfigCopyPopover
};
var extendStatics$1 = function(d2, b2) {
extendStatics$1 = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
d3.__proto__ = b3;
} || function(d3, b3) {
for (var p2 in b3) if (Object.prototype.hasOwnProperty.call(b3, p2)) d3[p2] = b3[p2];
};
return extendStatics$1(d2, b2);
};
function __extends$1(d2, b2) {
if (typeof b2 !== "function" && b2 !== null)
throw new TypeError("Class extends value " + String(b2) + " is not a constructor or null");
extendStatics$1(d2, b2);
function __() {
this.constructor = d2;
}
d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
}
var __assign = function() {
__assign = Object.assign || function __assign2(t2) {
for (var s, i = 1, n2 = arguments.length; i < n2; i++) {
s = arguments[i];
for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2)) t2[p2] = s[p2];
}
return t2;
};
return __assign.apply(this, arguments);
};
function __rest(s, e2) {
var t2 = {};
for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0)
t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i]))
t2[p2[i]] = s[p2[i]];
}
return t2;
}
function __spreadArray(to, from2, pack) {
if (pack || arguments.length === 2) for (var i = 0, l2 = from2.length, ar; i < l2; i++) {
if (ar || !(i in from2)) {
if (!ar) ar = Array.prototype.slice.call(from2, 0, i);
ar[i] = from2[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from2));
}
typeof SuppressedError === "function" ? SuppressedError : function(error, suppressed, message2) {
var e2 = new Error(message2);
return e2.name = "SuppressedError", e2.error = error, e2.suppressed = suppressed, e2;
};
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
var extendStatics = function(d2, b2) {
extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
d3.__proto__ = b3;
} || function(d3, b3) {
for (var p2 in b3) if (Object.prototype.hasOwnProperty.call(b3, p2)) d3[p2] = b3[p2];
};
return extendStatics(d2, b2);
};
function __extends(d2, b2) {
if (typeof b2 !== "function" && b2 !== null)
throw new TypeError("Class extends value " + String(b2) + " is not a constructor or null");
extendStatics(d2, b2);
function __() {
this.constructor = d2;
}
d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
}
var Browser = /* @__PURE__ */ function() {
function Browser2() {
this.firefox = false;
this.ie = false;
this.edge = false;
this.newEdge = false;
this.weChat = false;
}
return Browser2;
}();
var Env = /* @__PURE__ */ function() {
function Env2() {
this.browser = new Browser();
this.node = false;
this.wxa = false;
this.worker = false;
this.svgSupported = false;
this.touchEventsSupported = false;
this.pointerEventsSupported = false;
this.domSupported = false;
this.transformSupported = false;
this.transform3dSupported = false;
this.hasGlobalWindow = typeof window !== "undefined";
}
return Env2;
}();
var env = new Env();
if (typeof wx === "object" && typeof wx.getSystemInfoSync === "function") {
env.wxa = true;
env.touchEventsSupported = true;
} else if (typeof document === "undefined" && typeof self !== "undefined") {
env.worker = true;
} else if (typeof navigator === "undefined" || navigator.userAgent.indexOf("Node.js") === 0) {
env.node = true;
env.svgSupported = true;
} else {
detect(navigator.userAgent, env);
}
function detect(ua2, env2) {
var browser = env2.browser;
var firefox = ua2.match(/Firefox\/([\d.]+)/);
var ie2 = ua2.match(/MSIE\s([\d.]+)/) || ua2.match(/Trident\/.+?rv:(([\d.]+))/);
var edge = ua2.match(/Edge?\/([\d.]+)/);
var weChat = /micromessenger/i.test(ua2);
if (firefox) {
browser.firefox = true;
browser.version = firefox[1];
}
if (ie2) {
browser.ie = true;
browser.version = ie2[1];
}
if (edge) {
browser.edge = true;
browser.version = edge[1];
browser.newEdge = +edge[1].split(".")[0] > 18;
}
if (weChat) {
browser.weChat = true;
}
env2.svgSupported = typeof SVGRect !== "undefined";
env2.touchEventsSupported = "ontouchstart" in window && !browser.ie && !browser.edge;
env2.pointerEventsSupported = "onpointerdown" in window && (browser.edge || browser.ie && +browser.version >= 11);
env2.domSupported = typeof document !== "undefined";
var style2 = document.documentElement.style;
env2.transform3dSupported = (browser.ie && "transition" in style2 || browser.edge || "WebKitCSSMatrix" in window && "m11" in new WebKitCSSMatrix() || "MozPerspective" in style2) && !("OTransition" in style2);
env2.transformSupported = env2.transform3dSupported || browser.ie && +browser.version >= 9;
}
var DEFAULT_FONT_SIZE = 12;
var DEFAULT_FONT_FAMILY = "sans-serif";
var DEFAULT_FONT = DEFAULT_FONT_SIZE + "px " + DEFAULT_FONT_FAMILY;
var OFFSET = 20;
var SCALE = 100;
var defaultWidthMapStr = "007LLmW'55;N0500LLLLLLLLLL00NNNLzWW\\\\WQb\\0FWLg\\bWb\\WQ\\WrWWQ000CL5LLFLL0LL**F*gLLLL5F0LF\\FFF5.5N";
function getTextWidthMap(mapStr) {
var map2 = {};
if (typeof JSON === "undefined") {
return map2;
}
for (var i = 0; i < mapStr.length; i++) {
var char2 = String.fromCharCode(i + 32);
var size = (mapStr.charCodeAt(i) - OFFSET) / SCALE;
map2[char2] = size;
}
return map2;
}
var DEFAULT_TEXT_WIDTH_MAP = getTextWidthMap(defaultWidthMapStr);
var platformApi = {
createCanvas: function() {
return typeof document !== "undefined" && document.createElement("canvas");
},
measureText: /* @__PURE__ */ function() {
var _ctx;
var _cachedFont;
return function(text, font) {
if (!_ctx) {
var canvas = platformApi.createCanvas();
_ctx = canvas && canvas.getContext("2d");
}
if (_ctx) {
if (_cachedFont !== font) {
_cachedFont = _ctx.font = font || DEFAULT_FONT;
}
return _ctx.measureText(text);
} else {
text = text || "";
font = font || DEFAULT_FONT;
var res = /((?:\d+)?\.?\d*)px/.exec(font);
var fontSize = res && +res[1] || DEFAULT_FONT_SIZE;
var width = 0;
if (font.indexOf("mono") >= 0) {
width = fontSize * text.length;
} else {
for (var i = 0; i < text.length; i++) {
var preCalcWidth = DEFAULT_TEXT_WIDTH_MAP[text[i]];
width += preCalcWidth == null ? fontSize : preCalcWidth * fontSize;
}
}
return { width };
}
};
}(),
loadImage: function(src, onload, onerror) {
var image = new Image();
image.onload = onload;
image.onerror = onerror;
image.src = src;
return image;
}
};
function setPlatformAPI(newPlatformApis) {
for (var key in platformApi) {
if (newPlatformApis[key]) {
platformApi[key] = newPlatformApis[key];
}
}
}
var BUILTIN_OBJECT = reduce([
"Function",
"RegExp",
"Date",
"Error",
"CanvasGradient",
"CanvasPattern",
"Image",
"Canvas"
], function(obj, val) {
obj["[object " + val + "]"] = true;
return obj;
}, {});
var TYPED_ARRAY = reduce([
"Int8",
"Uint8",
"Uint8Clamped",
"Int16",
"Uint16",
"Int32",
"Uint32",
"Float32",
"Float64"
], function(obj, val) {
obj["[object " + val + "Array]"] = true;
return obj;
}, {});
var objToString = Object.prototype.toString;
var arrayProto = Array.prototype;
var nativeForEach = arrayProto.forEach;
var nativeFilter = arrayProto.filter;
var nativeSlice = arrayProto.slice;
var nativeMap = arrayProto.map;
var ctorFunction = function() {
}.constructor;
var protoFunction = ctorFunction ? ctorFunction.prototype : null;
var protoKey = "__proto__";
var idStart = 2311;
function guid() {
return idStart++;
}
function logError() {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
if (typeof console !== "undefined") {
console.error.apply(console, args);
}
}
function clone$4(source) {
if (source == null || typeof source !== "object") {
return source;
}
var result = source;
var typeStr = objToString.call(source);
if (typeStr === "[object Array]") {
if (!isPrimitive$1(source)) {
result = [];
for (var i = 0, len2 = source.length; i < len2; i++) {
result[i] = clone$4(source[i]);
}
}
} else if (TYPED_ARRAY[typeStr]) {
if (!isPrimitive$1(source)) {
var Ctor = source.constructor;
if (Ctor.from) {
result = Ctor.from(source);
} else {
result = new Ctor(source.length);
for (var i = 0, len2 = source.length; i < len2; i++) {
result[i] = source[i];
}
}
}
} else if (!BUILTIN_OBJECT[typeStr] && !isPrimitive$1(source) && !isDom(source)) {
result = {};
for (var key in source) {
if (source.hasOwnProperty(key) && key !== protoKey) {
result[key] = clone$4(source[key]);
}
}
}
return result;
}
function merge(target, source, overwrite) {
if (!isObject$3(source) || !isObject$3(target)) {
return overwrite ? clone$4(source) : target;
}
for (var key in source) {
if (source.hasOwnProperty(key) && key !== protoKey) {
var targetProp = target[key];
var sourceProp = source[key];
if (isObject$3(sourceProp) && isObject$3(targetProp) && !isArray$1(sourceProp) && !isArray$1(targetProp) && !isDom(sourceProp) && !isDom(targetProp) && !isBuiltInObject(sourceProp) && !isBuiltInObject(targetProp) && !isPrimitive$1(sourceProp) && !isPrimitive$1(targetProp)) {
merge(targetProp, sourceProp, overwrite);
} else if (overwrite || !(key in target)) {
target[key] = clone$4(source[key]);
}
}
}
return target;
}
function mergeAll(targetAndSources, overwrite) {
var result = targetAndSources[0];
for (var i = 1, len2 = targetAndSources.length; i < len2; i++) {
result = merge(result, targetAndSources[i], overwrite);
}
return result;
}
function extend(target, source) {
if (Object.assign) {
Object.assign(target, source);
} else {
for (var key in source) {
if (source.hasOwnProperty(key) && key !== protoKey) {
target[key] = source[key];
}
}
}
return target;
}
function defaults(target, source, overlay) {
var keysArr = keys(source);
for (var i = 0; i < keysArr.length; i++) {
var key = keysArr[i];
if (overlay ? source[key] != null : target[key] == null) {
target[key] = source[key];
}
}
return target;
}
var createCanvas = platformApi.createCanvas;
function indexOf(array4, value) {
if (array4) {
if (array4.indexOf) {
return array4.indexOf(value);
}
for (var i = 0, len2 = array4.length; i < len2; i++) {
if (array4[i] === value) {
return i;
}
}
}
return -1;
}
function inherits(clazz, baseClazz) {
var clazzPrototype = clazz.prototype;
function F2() {
}
F2.prototype = baseClazz.prototype;
clazz.prototype = new F2();
for (var prop in clazzPrototype) {
if (clazzPrototype.hasOwnProperty(prop)) {
clazz.prototype[prop] = clazzPrototype[prop];
}
}
clazz.prototype.constructor = clazz;
clazz.superClass = baseClazz;
}
function mixin(target, source, override) {
target = "prototype" in target ? target.prototype : target;
source = "prototype" in source ? source.prototype : source;
if (Object.getOwnPropertyNames) {
var keyList = Object.getOwnPropertyNames(source);
for (var i = 0; i < keyList.length; i++) {
var key = keyList[i];
if (key !== "constructor") {
if (override ? source[key] != null : target[key] == null) {
target[key] = source[key];
}
}
}
} else {
defaults(target, source, override);
}
}
function isArrayLike(data) {
if (!data) {
return false;
}
if (typeof data === "string") {
return false;
}
return typeof data.length === "number";
}
function each$f(arr, cb2, context) {
if (!(arr && cb2)) {
return;
}
if (arr.forEach && arr.forEach === nativeForEach) {
arr.forEach(cb2, context);
} else if (arr.length === +arr.length) {
for (var i = 0, len2 = arr.length; i < len2; i++) {
cb2.call(context, arr[i], i, arr);
}
} else {
for (var key in arr) {
if (arr.hasOwnProperty(key)) {
cb2.call(context, arr[key], key, arr);
}
}
}
}
function map$1(arr, cb2, context) {
if (!arr) {
return [];
}
if (!cb2) {
return slice(arr);
}
if (arr.map && arr.map === nativeMap) {
return arr.map(cb2, context);
} else {
var result = [];
for (var i = 0, len2 = arr.length; i < len2; i++) {
result.push(cb2.call(context, arr[i], i, arr));
}
return result;
}
}
function reduce(arr, cb2, memo, context) {
if (!(arr && cb2)) {
return;
}
for (var i = 0, len2 = arr.length; i < len2; i++) {
memo = cb2.call(context, memo, arr[i], i, arr);
}
return memo;
}
function filter(arr, cb2, context) {
if (!arr) {
return [];
}
if (!cb2) {
return slice(arr);
}
if (arr.filter && arr.filter === nativeFilter) {
return arr.filter(cb2, context);
} else {
var result = [];
for (var i = 0, len2 = arr.length; i < len2; i++) {
if (cb2.call(context, arr[i], i, arr)) {
result.push(arr[i]);
}
}
return result;
}
}
function find(arr, cb2, context) {
if (!(arr && cb2)) {
return;
}
for (var i = 0, len2 = arr.length; i < len2; i++) {
if (cb2.call(context, arr[i], i, arr)) {
return arr[i];
}
}
}
function keys(obj) {
if (!obj) {
return [];
}
if (Object.keys) {
return Object.keys(obj);
}
var keyList = [];
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
keyList.push(key);
}
}
return keyList;
}
function bindPolyfill(func, context) {
var args = [];
for (var _i = 2; _i < arguments.length; _i++) {
args[_i - 2] = arguments[_i];
}
return function() {
return func.apply(context, args.concat(nativeSlice.call(arguments)));
};
}
var bind$2 = protoFunction && isFunction$1(protoFunction.bind) ? protoFunction.call.bind(protoFunction.bind) : bindPolyfill;
function curry$1(func) {
var args = [];
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i];
}
return function() {
return func.apply(this, args.concat(nativeSlice.call(arguments)));
};
}
function isArray$1(value) {
if (Array.isArray) {
return Array.isArray(value);
}
return objToString.call(value) === "[object Array]";
}
function isFunction$1(value) {
return typeof value === "function";
}
function isString$1(value) {
return typeof value === "string";
}
function isStringSafe(value) {
return objToString.call(value) === "[object String]";
}
function isNumber(value) {
return typeof value === "number";
}
function isObject$3(value) {
var type4 = typeof value;
return type4 === "function" || !!value && type4 === "object";
}
function isBuiltInObject(value) {
return !!BUILTIN_OBJECT[objToString.call(value)];
}
function isTypedArray(value) {
return !!TYPED_ARRAY[objToString.call(value)];
}
function isDom(value) {
return typeof value === "object" && typeof value.nodeType === "number" && typeof value.ownerDocument === "object";
}
function isGradientObject(value) {
return value.colorStops != null;
}
function isImagePatternObject(value) {
return value.image != null;
}
function isRegExp(value) {
return objToString.call(value) === "[object RegExp]";
}
function eqNaN(value) {
return value !== value;
}
function retrieve() {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
for (var i = 0, len2 = args.length; i < len2; i++) {
if (args[i] != null) {
return args[i];
}
}
}
function retrieve2(value0, value1) {
return value0 != null ? value0 : value1;
}
function retrieve3(value0, value1, value2) {
return value0 != null ? value0 : value1 != null ? value1 : value2;
}
function slice(arr) {
var args = [];
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i];
}
return nativeSlice.apply(arr, args);
}
function normalizeCssArray$1(val) {
if (typeof val === "number") {
return [val, val, val, val];
}
var len2 = val.length;
if (len2 === 2) {
return [val[0], val[1], val[0], val[1]];
} else if (len2 === 3) {
return [val[0], val[1], val[2], val[1]];
}
return val;
}
function assert(condition, message2) {
if (!condition) {
throw new Error(message2);
}
}
function trim$1(str) {
if (str == null) {
return null;
} else if (typeof str.trim === "function") {
return str.trim();
} else {
return str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "");
}
}
var primitiveKey = "__ec_primitive__";
function setAsPrimitive(obj) {
obj[primitiveKey] = true;
}
function isPrimitive$1(obj) {
return obj[primitiveKey];
}
var MapPolyfill = function() {
function MapPolyfill2() {
this.data = {};
}
MapPolyfill2.prototype["delete"] = function(key) {
var existed = this.has(key);
if (existed) {
delete this.data[key];
}
return existed;
};
MapPolyfill2.prototype.has = function(key) {
return this.data.hasOwnProperty(key);
};
MapPolyfill2.prototype.get = function(key) {
return this.data[key];
};
MapPolyfill2.prototype.set = function(key, value) {
this.data[key] = value;
return this;
};
MapPolyfill2.prototype.keys = function() {
return keys(this.data);
};
MapPolyfill2.prototype.forEach = function(callback) {
var data = this.data;
for (var key in data) {
if (data.hasOwnProperty(key)) {
callback(data[key], key);
}
}
};
return MapPolyfill2;
}();
var isNativeMapSupported = typeof Map === "function";
function maybeNativeMap() {
return isNativeMapSupported ? /* @__PURE__ */ new Map() : new MapPolyfill();
}
var HashMap = function() {
function HashMap2(obj) {
var isArr = isArray$1(obj);
this.data = maybeNativeMap();
var thisMap = this;
obj instanceof HashMap2 ? obj.each(visit) : obj && each$f(obj, visit);
function visit(value, key) {
isArr ? thisMap.set(value, key) : thisMap.set(key, value);
}
}
HashMap2.prototype.hasKey = function(key) {
return this.data.has(key);
};
HashMap2.prototype.get = function(key) {
return this.data.get(key);
};
HashMap2.prototype.set = function(key, value) {
this.data.set(key, value);
return value;
};
HashMap2.prototype.each = function(cb2, context) {
this.data.forEach(function(value, key) {
cb2.call(context, value, key);
});
};
HashMap2.prototype.keys = function() {
var keys2 = this.data.keys();
return isNativeMapSupported ? Array.from(keys2) : keys2;
};
HashMap2.prototype.removeKey = function(key) {
this.data["delete"](key);
};
return HashMap2;
}();
function createHashMap(obj) {
return new HashMap(obj);
}
function concatArray(a, b2) {
var newArray = new a.constructor(a.length + b2.length);
for (var i = 0; i < a.length; i++) {
newArray[i] = a[i];
}
var offset2 = a.length;
for (var i = 0; i < b2.length; i++) {
newArray[i + offset2] = b2[i];
}
return newArray;
}
function createObject(proto2, properties) {
var obj;
if (Object.create) {
obj = Object.create(proto2);
} else {
var StyleCtor = function() {
};
StyleCtor.prototype = proto2;
obj = new StyleCtor();
}
if (properties) {
extend(obj, properties);
}
return obj;
}
function disableUserSelect(dom) {
var domStyle = dom.style;
domStyle.webkitUserSelect = "none";
domStyle.userSelect = "none";
domStyle.webkitTapHighlightColor = "rgba(0,0,0,0)";
domStyle["-webkit-touch-callout"] = "none";
}
function hasOwn(own, prop) {
return own.hasOwnProperty(prop);
}
function noop2() {
}
var RADIAN_TO_DEGREE = 180 / Math.PI;
const util$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
HashMap,
RADIAN_TO_DEGREE,
assert,
bind: bind$2,
clone: clone$4,
concatArray,
createCanvas,
createHashMap,
createObject,
curry: curry$1,
defaults,
disableUserSelect,
each: each$f,
eqNaN,
extend,
filter,
find,
guid,
hasOwn,
indexOf,
inherits,
isArray: isArray$1,
isArrayLike,
isBuiltInObject,
isDom,
isFunction: isFunction$1,
isGradientObject,
isImagePatternObject,
isNumber,
isObject: isObject$3,
isPrimitive: isPrimitive$1,
isRegExp,
isString: isString$1,
isStringSafe,
isTypedArray,
keys,
logError,
map: map$1,
merge,
mergeAll,
mixin,
noop: noop2,
normalizeCssArray: normalizeCssArray$1,
reduce,
retrieve,
retrieve2,
retrieve3,
setAsPrimitive,
slice,
trim: trim$1
}, Symbol.toStringTag, { value: "Module" }));
function create$2(x2, y2) {
if (x2 == null) {
x2 = 0;
}
if (y2 == null) {
y2 = 0;
}
return [x2, y2];
}
function copy$1(out2, v4) {
out2[0] = v4[0];
out2[1] = v4[1];
return out2;
}
function clone$3(v4) {
return [v4[0], v4[1]];
}
function set$1(out2, a, b2) {
out2[0] = a;
out2[1] = b2;
return out2;
}
function add(out2, v12, v22) {
out2[0] = v12[0] + v22[0];
out2[1] = v12[1] + v22[1];
return out2;
}
function scaleAndAdd$1(out2, v12, v22, a) {
out2[0] = v12[0] + v22[0] * a;
out2[1] = v12[1] + v22[1] * a;
return out2;
}
function sub(out2, v12, v22) {
out2[0] = v12[0] - v22[0];
out2[1] = v12[1] - v22[1];
return out2;
}
function len(v4) {
return Math.sqrt(lenSquare(v4));
}
var length = len;
function lenSquare(v4) {
return v4[0] * v4[0] + v4[1] * v4[1];
}
var lengthSquare = lenSquare;
function mul$1(out2, v12, v22) {
out2[0] = v12[0] * v22[0];
out2[1] = v12[1] * v22[1];
return out2;
}
function div(out2, v12, v22) {
out2[0] = v12[0] / v22[0];
out2[1] = v12[1] / v22[1];
return out2;
}
function dot(v12, v22) {
return v12[0] * v22[0] + v12[1] * v22[1];
}
function scale$2(out2, v4, s) {
out2[0] = v4[0] * s;
out2[1] = v4[1] * s;
return out2;
}
function normalize$3(out2, v4) {
var d2 = len(v4);
if (d2 === 0) {
out2[0] = 0;
out2[1] = 0;
} else {
out2[0] = v4[0] / d2;
out2[1] = v4[1] / d2;
}
return out2;
}
function distance(v12, v22) {
return Math.sqrt((v12[0] - v22[0]) * (v12[0] - v22[0]) + (v12[1] - v22[1]) * (v12[1] - v22[1]));
}
var dist$1 = distance;
function distanceSquare(v12, v22) {
return (v12[0] - v22[0]) * (v12[0] - v22[0]) + (v12[1] - v22[1]) * (v12[1] - v22[1]);
}
var distSquare = distanceSquare;
function negate(out2, v4) {
out2[0] = -v4[0];
out2[1] = -v4[1];
return out2;
}
function lerp$1(out2, v12, v22, t2) {
out2[0] = v12[0] + t2 * (v22[0] - v12[0]);
out2[1] = v12[1] + t2 * (v22[1] - v12[1]);
return out2;
}
function applyTransform$1(out2, v4, m2) {
var x2 = v4[0];
var y2 = v4[1];
out2[0] = m2[0] * x2 + m2[2] * y2 + m2[4];
out2[1] = m2[1] * x2 + m2[3] * y2 + m2[5];
return out2;
}
function min$1(out2, v12, v22) {
out2[0] = Math.min(v12[0], v22[0]);
out2[1] = Math.min(v12[1], v22[1]);
return out2;
}
function max$1(out2, v12, v22) {
out2[0] = Math.max(v12[0], v22[0]);
out2[1] = Math.max(v12[1], v22[1]);
return out2;
}
const vector = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
add,
applyTransform: applyTransform$1,
clone: clone$3,
copy: copy$1,
create: create$2,
dist: dist$1,
distSquare,
distance,
distanceSquare,
div,
dot,
len,
lenSquare,
length,
lengthSquare,
lerp: lerp$1,
max: max$1,
min: min$1,
mul: mul$1,
negate,
normalize: normalize$3,
scale: scale$2,
scaleAndAdd: scaleAndAdd$1,
set: set$1,
sub
}, Symbol.toStringTag, { value: "Module" }));
var Param = /* @__PURE__ */ function() {
function Param2(target, e2) {
this.target = target;
this.topTarget = e2 && e2.topTarget;
}
return Param2;
}();
var Draggable = function() {
function Draggable2(handler) {
this.handler = handler;
handler.on("mousedown", this._dragStart, this);
handler.on("mousemove", this._drag, this);
handler.on("mouseup", this._dragEnd, this);
}
Draggable2.prototype._dragStart = function(e2) {
var draggingTarget = e2.target;
while (draggingTarget && !draggingTarget.draggable) {
draggingTarget = draggingTarget.parent || draggingTarget.__hostTarget;
}
if (draggingTarget) {
this._draggingTarget = draggingTarget;
draggingTarget.dragging = true;
this._x = e2.offsetX;
this._y = e2.offsetY;
this.handler.dispatchToElement(new Param(draggingTarget, e2), "dragstart", e2.event);
}
};
Draggable2.prototype._drag = function(e2) {
var draggingTarget = this._draggingTarget;
if (draggingTarget) {
var x2 = e2.offsetX;
var y2 = e2.offsetY;
var dx = x2 - this._x;
var dy = y2 - this._y;
this._x = x2;
this._y = y2;
draggingTarget.drift(dx, dy, e2);
this.handler.dispatchToElement(new Param(draggingTarget, e2), "drag", e2.event);
var dropTarget = this.handler.findHover(x2, y2, draggingTarget).target;
var lastDropTarget = this._dropTarget;
this._dropTarget = dropTarget;
if (draggingTarget !== dropTarget) {
if (lastDropTarget && dropTarget !== lastDropTarget) {
this.handler.dispatchToElement(new Param(lastDropTarget, e2), "dragleave", e2.event);
}
if (dropTarget && dropTarget !== lastDropTarget) {
this.handler.dispatchToElement(new Param(dropTarget, e2), "dragenter", e2.event);
}
}
}
};
Draggable2.prototype._dragEnd = function(e2) {
var draggingTarget = this._draggingTarget;
if (draggingTarget) {
draggingTarget.dragging = false;
}
this.handler.dispatchToElement(new Param(draggingTarget, e2), "dragend", e2.event);
if (this._dropTarget) {
this.handler.dispatchToElement(new Param(this._dropTarget, e2), "drop", e2.event);
}
this._draggingTarget = null;
this._dropTarget = null;
};
return Draggable2;
}();
var Eventful = function() {
function Eventful2(eventProcessors) {
if (eventProcessors) {
this._$eventProcessor = eventProcessors;
}
}
Eventful2.prototype.on = function(event, query, handler, context) {
if (!this._$handlers) {
this._$handlers = {};
}
var _h = this._$handlers;
if (typeof query === "function") {
context = handler;
handler = query;
query = null;
}
if (!handler || !event) {
return this;
}
var eventProcessor = this._$eventProcessor;
if (query != null && eventProcessor && eventProcessor.normalizeQuery) {
query = eventProcessor.normalizeQuery(query);
}
if (!_h[event]) {
_h[event] = [];
}
for (var i = 0; i < _h[event].length; i++) {
if (_h[event][i].h === handler) {
return this;
}
}
var wrap = {
h: handler,
query,
ctx: context || this,
callAtLast: handler.zrEventfulCallAtLast
};
var lastIndex = _h[event].length - 1;
var lastWrap = _h[event][lastIndex];
lastWrap && lastWrap.callAtLast ? _h[event].splice(lastIndex, 0, wrap) : _h[event].push(wrap);
return this;
};
Eventful2.prototype.isSilent = function(eventName) {
var _h = this._$handlers;
return !_h || !_h[eventName] || !_h[eventName].length;
};
Eventful2.prototype.off = function(eventType, handler) {
var _h = this._$handlers;
if (!_h) {
return this;
}
if (!eventType) {
this._$handlers = {};
return this;
}
if (handler) {
if (_h[eventType]) {
var newList = [];
for (var i = 0, l2 = _h[eventType].length; i < l2; i++) {
if (_h[eventType][i].h !== handler) {
newList.push(_h[eventType][i]);
}
}
_h[eventType] = newList;
}
if (_h[eventType] && _h[eventType].length === 0) {
delete _h[eventType];
}
} else {
delete _h[eventType];
}
return this;
};
Eventful2.prototype.trigger = function(eventType) {
var args = [];
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i];
}
if (!this._$handlers) {
return this;
}
var _h = this._$handlers[eventType];
var eventProcessor = this._$eventProcessor;
if (_h) {
var argLen = args.length;
var len2 = _h.length;
for (var i = 0; i < len2; i++) {
var hItem = _h[i];
if (eventProcessor && eventProcessor.filter && hItem.query != null && !eventProcessor.filter(eventType, hItem.query)) {
continue;
}
switch (argLen) {
case 0:
hItem.h.call(hItem.ctx);
break;
case 1:
hItem.h.call(hItem.ctx, args[0]);
break;
case 2:
hItem.h.call(hItem.ctx, args[0], args[1]);
break;
default:
hItem.h.apply(hItem.ctx, args);
break;
}
}
}
eventProcessor && eventProcessor.afterTrigger && eventProcessor.afterTrigger(eventType);
return this;
};
Eventful2.prototype.triggerWithContext = function(type4) {
var args = [];
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i];
}
if (!this._$handlers) {
return this;
}
var _h = this._$handlers[type4];
var eventProcessor = this._$eventProcessor;
if (_h) {
var argLen = args.length;
var ctx = args[argLen - 1];
var len2 = _h.length;
for (var i = 0; i < len2; i++) {
var hItem = _h[i];
if (eventProcessor && eventProcessor.filter && hItem.query != null && !eventProcessor.filter(type4, hItem.query)) {
continue;
}
switch (argLen) {
case 0:
hItem.h.call(ctx);
break;
case 1:
hItem.h.call(ctx, args[0]);
break;
case 2:
hItem.h.call(ctx, args[0], args[1]);
break;
default:
hItem.h.apply(ctx, args.slice(1, argLen - 1));
break;
}
}
}
eventProcessor && eventProcessor.afterTrigger && eventProcessor.afterTrigger(type4);
return this;
};
return Eventful2;
}();
var LN2 = Math.log(2);
function determinant(rows, rank, rowStart, rowMask, colMask, detCache) {
var cacheKey = rowMask + "-" + colMask;
var fullRank = rows.length;
if (detCache.hasOwnProperty(cacheKey)) {
return detCache[cacheKey];
}
if (rank === 1) {
var colStart = Math.round(Math.log((1 << fullRank) - 1 & ~colMask) / LN2);
return rows[rowStart][colStart];
}
var subRowMask = rowMask | 1 << rowStart;
var subRowStart = rowStart + 1;
while (rowMask & 1 << subRowStart) {
subRowStart++;
}
var sum2 = 0;
for (var j = 0, colLocalIdx = 0; j < fullRank; j++) {
var colTag = 1 << j;
if (!(colTag & colMask)) {
sum2 += (colLocalIdx % 2 ? -1 : 1) * rows[rowStart][j] * determinant(rows, rank - 1, subRowStart, subRowMask, colMask | colTag, detCache);
colLocalIdx++;
}
}
detCache[cacheKey] = sum2;
return sum2;
}
function buildTransformer(src, dest) {
var mA = [
[src[0], src[1], 1, 0, 0, 0, -dest[0] * src[0], -dest[0] * src[1]],
[0, 0, 0, src[0], src[1], 1, -dest[1] * src[0], -dest[1] * src[1]],
[src[2], src[3], 1, 0, 0, 0, -dest[2] * src[2], -dest[2] * src[3]],
[0, 0, 0, src[2], src[3], 1, -dest[3] * src[2], -dest[3] * src[3]],
[src[4], src[5], 1, 0, 0, 0, -dest[4] * src[4], -dest[4] * src[5]],
[0, 0, 0, src[4], src[5], 1, -dest[5] * src[4], -dest[5] * src[5]],
[src[6], src[7], 1, 0, 0, 0, -dest[6] * src[6], -dest[6] * src[7]],
[0, 0, 0, src[6], src[7], 1, -dest[7] * src[6], -dest[7] * src[7]]
];
var detCache = {};
var det = determinant(mA, 8, 0, 0, 0, detCache);
if (det === 0) {
return;
}
var vh2 = [];
for (var i = 0; i < 8; i++) {
for (var j = 0; j < 8; j++) {
vh2[j] == null && (vh2[j] = 0);
vh2[j] += ((i + j) % 2 ? -1 : 1) * determinant(mA, 7, i === 0 ? 1 : 0, 1 << i, 1 << j, detCache) / det * dest[i];
}
}
return function(out2, srcPointX, srcPointY) {
var pk2 = srcPointX * vh2[6] + srcPointY * vh2[7] + 1;
out2[0] = (srcPointX * vh2[0] + srcPointY * vh2[1] + vh2[2]) / pk2;
out2[1] = (srcPointX * vh2[3] + srcPointY * vh2[4] + vh2[5]) / pk2;
};
}
var EVENT_SAVED_PROP = "___zrEVENTSAVED";
var _calcOut$1 = [];
function transformLocalCoord(out2, elFrom, elTarget, inX, inY) {
return transformCoordWithViewport(_calcOut$1, elFrom, inX, inY, true) && transformCoordWithViewport(out2, elTarget, _calcOut$1[0], _calcOut$1[1]);
}
function transformCoordWithViewport(out2, el2, inX, inY, inverse) {
if (el2.getBoundingClientRect && env.domSupported && !isCanvasEl(el2)) {
var saved = el2[EVENT_SAVED_PROP] || (el2[EVENT_SAVED_PROP] = {});
var markers = prepareCoordMarkers(el2, saved);
var transformer = preparePointerTransformer(markers, saved, inverse);
if (transformer) {
transformer(out2, inX, inY);
return true;
}
}
return false;
}
function prepareCoordMarkers(el2, saved) {
var markers = saved.markers;
if (markers) {
return markers;
}
markers = saved.markers = [];
var propLR = ["left", "right"];
var propTB = ["top", "bottom"];
for (var i = 0; i < 4; i++) {
var marker = document.createElement("div");
var stl = marker.style;
var idxLR = i % 2;
var idxTB = (i >> 1) % 2;
stl.cssText = [
"position: absolute",
"visibility: hidden",
"padding: 0",
"margin: 0",
"border-width: 0",
"user-select: none",
"width:0",
"height:0",
propLR[idxLR] + ":0",
propTB[idxTB] + ":0",
propLR[1 - idxLR] + ":auto",
propTB[1 - idxTB] + ":auto",
""
].join("!important;");
el2.appendChild(marker);
markers.push(marker);
}
return markers;
}
function preparePointerTransformer(markers, saved, inverse) {
var transformerName = inverse ? "invTrans" : "trans";
var transformer = saved[transformerName];
var oldSrcCoords = saved.srcCoords;
var srcCoords = [];
var destCoords = [];
var oldCoordTheSame = true;
for (var i = 0; i < 4; i++) {
var rect = markers[i].getBoundingClientRect();
var ii2 = 2 * i;
var x2 = rect.left;
var y2 = rect.top;
srcCoords.push(x2, y2);
oldCoordTheSame = oldCoordTheSame && oldSrcCoords && x2 === oldSrcCoords[ii2] && y2 === oldSrcCoords[ii2 + 1];
destCoords.push(markers[i].offsetLeft, markers[i].offsetTop);
}
return oldCoordTheSame && transformer ? transformer : (saved.srcCoords = srcCoords, saved[transformerName] = inverse ? buildTransformer(destCoords, srcCoords) : buildTransformer(srcCoords, destCoords));
}
function isCanvasEl(el2) {
return el2.nodeName.toUpperCase() === "CANVAS";
}
var replaceReg = /([&<>"'])/g;
var replaceMap = {
"&": "&",
"<": "<",
">": ">",
'"': """,
"'": "'"
};
function encodeHTML(source) {
return source == null ? "" : (source + "").replace(replaceReg, function(str, c2) {
return replaceMap[c2];
});
}
var MOUSE_EVENT_REG = /^(?:mouse|pointer|contextmenu|drag|drop)|click/;
var _calcOut = [];
var firefoxNotSupportOffsetXY = env.browser.firefox && +env.browser.version.split(".")[0] < 39;
function clientToLocal(el2, e2, out2, calculate) {
out2 = out2 || {};
if (calculate) {
calculateZrXY(el2, e2, out2);
} else if (firefoxNotSupportOffsetXY && e2.layerX != null && e2.layerX !== e2.offsetX) {
out2.zrX = e2.layerX;
out2.zrY = e2.layerY;
} else if (e2.offsetX != null) {
out2.zrX = e2.offsetX;
out2.zrY = e2.offsetY;
} else {
calculateZrXY(el2, e2, out2);
}
return out2;
}
function calculateZrXY(el2, e2, out2) {
if (env.domSupported && el2.getBoundingClientRect) {
var ex = e2.clientX;
var ey = e2.clientY;
if (isCanvasEl(el2)) {
var box2 = el2.getBoundingClientRect();
out2.zrX = ex - box2.left;
out2.zrY = ey - box2.top;
return;
} else {
if (transformCoordWithViewport(_calcOut, el2, ex, ey)) {
out2.zrX = _calcOut[0];
out2.zrY = _calcOut[1];
return;
}
}
}
out2.zrX = out2.zrY = 0;
}
function getNativeEvent(e2) {
return e2 || window.event;
}
function normalizeEvent(el2, e2, calculate) {
e2 = getNativeEvent(e2);
if (e2.zrX != null) {
return e2;
}
var eventType = e2.type;
var isTouch = eventType && eventType.indexOf("touch") >= 0;
if (!isTouch) {
clientToLocal(el2, e2, e2, calculate);
var wheelDelta = getWheelDeltaMayPolyfill(e2);
e2.zrDelta = wheelDelta ? wheelDelta / 120 : -(e2.detail || 0) / 3;
} else {
var touch = eventType !== "touchend" ? e2.targetTouches[0] : e2.changedTouches[0];
touch && clientToLocal(el2, touch, e2, calculate);
}
var button = e2.button;
if (e2.which == null && button !== void 0 && MOUSE_EVENT_REG.test(e2.type)) {
e2.which = button & 1 ? 1 : button & 2 ? 3 : button & 4 ? 2 : 0;
}
return e2;
}
function getWheelDeltaMayPolyfill(e2) {
var rawWheelDelta = e2.wheelDelta;
if (rawWheelDelta) {
return rawWheelDelta;
}
var deltaX = e2.deltaX;
var deltaY = e2.deltaY;
if (deltaX == null || deltaY == null) {
return rawWheelDelta;
}
var delta = deltaY !== 0 ? Math.abs(deltaY) : Math.abs(deltaX);
var sign = deltaY > 0 ? -1 : deltaY < 0 ? 1 : deltaX > 0 ? -1 : 1;
return 3 * delta * sign;
}
function addEventListener(el2, name, handler, opt) {
el2.addEventListener(name, handler, opt);
}
function removeEventListener(el2, name, handler, opt) {
el2.removeEventListener(name, handler, opt);
}
var stop = function(e2) {
e2.preventDefault();
e2.stopPropagation();
e2.cancelBubble = true;
};
function isMiddleOrRightButtonOnMouseUpDown(e2) {
return e2.which === 2 || e2.which === 3;
}
var GestureMgr = function() {
function GestureMgr2() {
this._track = [];
}
GestureMgr2.prototype.recognize = function(event, target, root) {
this._doTrack(event, target, root);
return this._recognize(event);
};
GestureMgr2.prototype.clear = function() {
this._track.length = 0;
return this;
};
GestureMgr2.prototype._doTrack = function(event, target, root) {
var touches = event.touches;
if (!touches) {
return;
}
var trackItem = {
points: [],
touches: [],
target,
event
};
for (var i = 0, len2 = touches.length; i < len2; i++) {
var touch = touches[i];
var pos = clientToLocal(root, touch, {});
trackItem.points.push([pos.zrX, pos.zrY]);
trackItem.touches.push(touch);
}
this._track.push(trackItem);
};
GestureMgr2.prototype._recognize = function(event) {
for (var eventName in recognizers) {
if (recognizers.hasOwnProperty(eventName)) {
var gestureInfo = recognizers[eventName](this._track, event);
if (gestureInfo) {
return gestureInfo;
}
}
}
};
return GestureMgr2;
}();
function dist(pointPair) {
var dx = pointPair[1][0] - pointPair[0][0];
var dy = pointPair[1][1] - pointPair[0][1];
return Math.sqrt(dx * dx + dy * dy);
}
function center$1(pointPair) {
return [
(pointPair[0][0] + pointPair[1][0]) / 2,
(pointPair[0][1] + pointPair[1][1]) / 2
];
}
var recognizers = {
pinch: function(tracks, event) {
var trackLen = tracks.length;
if (!trackLen) {
return;
}
var pinchEnd = (tracks[trackLen - 1] || {}).points;
var pinchPre = (tracks[trackLen - 2] || {}).points || pinchEnd;
if (pinchPre && pinchPre.length > 1 && pinchEnd && pinchEnd.length > 1) {
var pinchScale = dist(pinchEnd) / dist(pinchPre);
!isFinite(pinchScale) && (pinchScale = 1);
event.pinchScale = pinchScale;
var pinchCenter = center$1(pinchEnd);
event.pinchX = pinchCenter[0];
event.pinchY = pinchCenter[1];
return {
type: "pinch",
target: tracks[0].target,
event
};
}
}
};
function create$1() {
return [1, 0, 0, 1, 0, 0];
}
function identity(out2) {
out2[0] = 1;
out2[1] = 0;
out2[2] = 0;
out2[3] = 1;
out2[4] = 0;
out2[5] = 0;
return out2;
}
function copy(out2, m2) {
out2[0] = m2[0];
out2[1] = m2[1];
out2[2] = m2[2];
out2[3] = m2[3];
out2[4] = m2[4];
out2[5] = m2[5];
return out2;
}
function mul(out2, m1, m2) {
var out0 = m1[0] * m2[0] + m1[2] * m2[1];
var out1 = m1[1] * m2[0] + m1[3] * m2[1];
var out22 = m1[0] * m2[2] + m1[2] * m2[3];
var out3 = m1[1] * m2[2] + m1[3] * m2[3];
var out4 = m1[0] * m2[4] + m1[2] * m2[5] + m1[4];
var out5 = m1[1] * m2[4] + m1[3] * m2[5] + m1[5];
out2[0] = out0;
out2[1] = out1;
out2[2] = out22;
out2[3] = out3;
out2[4] = out4;
out2[5] = out5;
return out2;
}
function translate(out2, a, v4) {
out2[0] = a[0];
out2[1] = a[1];
out2[2] = a[2];
out2[3] = a[3];
out2[4] = a[4] + v4[0];
out2[5] = a[5] + v4[1];
return out2;
}
function rotate(out2, a, rad, pivot) {
if (pivot === void 0) {
pivot = [0, 0];
}
var aa2 = a[0];
var ac2 = a[2];
var atx = a[4];
var ab2 = a[1];
var ad2 = a[3];
var aty = a[5];
var st = Math.sin(rad);
var ct = Math.cos(rad);
out2[0] = aa2 * ct + ab2 * st;
out2[1] = -aa2 * st + ab2 * ct;
out2[2] = ac2 * ct + ad2 * st;
out2[3] = -ac2 * st + ct * ad2;
out2[4] = ct * (atx - pivot[0]) + st * (aty - pivot[1]) + pivot[0];
out2[5] = ct * (aty - pivot[1]) - st * (atx - pivot[0]) + pivot[1];
return out2;
}
function scale$1(out2, a, v4) {
var vx = v4[0];
var vy = v4[1];
out2[0] = a[0] * vx;
out2[1] = a[1] * vy;
out2[2] = a[2] * vx;
out2[3] = a[3] * vy;
out2[4] = a[4] * vx;
out2[5] = a[5] * vy;
return out2;
}
function invert(out2, a) {
var aa2 = a[0];
var ac2 = a[2];
var atx = a[4];
var ab2 = a[1];
var ad2 = a[3];
var aty = a[5];
var det = aa2 * ad2 - ab2 * ac2;
if (!det) {
return null;
}
det = 1 / det;
out2[0] = ad2 * det;
out2[1] = -ab2 * det;
out2[2] = -ac2 * det;
out2[3] = aa2 * det;
out2[4] = (ac2 * aty - ad2 * atx) * det;
out2[5] = (ab2 * atx - aa2 * aty) * det;
return out2;
}
function clone$2(a) {
var b2 = create$1();
copy(b2, a);
return b2;
}
const matrix = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
clone: clone$2,
copy,
create: create$1,
identity,
invert,
mul,
rotate,
scale: scale$1,
translate
}, Symbol.toStringTag, { value: "Module" }));
var Point = function() {
function Point2(x2, y2) {
this.x = x2 || 0;
this.y = y2 || 0;
}
Point2.prototype.copy = function(other) {
this.x = other.x;
this.y = other.y;
return this;
};
Point2.prototype.clone = function() {
return new Point2(this.x, this.y);
};
Point2.prototype.set = function(x2, y2) {
this.x = x2;
this.y = y2;
return this;
};
Point2.prototype.equal = function(other) {
return other.x === this.x && other.y === this.y;
};
Point2.prototype.add = function(other) {
this.x += other.x;
this.y += other.y;
return this;
};
Point2.prototype.scale = function(scalar) {
this.x *= scalar;
this.y *= scalar;
};
Point2.prototype.scaleAndAdd = function(other, scalar) {
this.x += other.x * scalar;
this.y += other.y * scalar;
};
Point2.prototype.sub = function(other) {
this.x -= other.x;
this.y -= other.y;
return this;
};
Point2.prototype.dot = function(other) {
return this.x * other.x + this.y * other.y;
};
Point2.prototype.len = function() {
return Math.sqrt(this.x * this.x + this.y * this.y);
};
Point2.prototype.lenSquare = function() {
return this.x * this.x + this.y * this.y;
};
Point2.prototype.normalize = function() {
var len2 = this.len();
this.x /= len2;
this.y /= len2;
return this;
};
Point2.prototype.distance = function(other) {
var dx = this.x - other.x;
var dy = this.y - other.y;
return Math.sqrt(dx * dx + dy * dy);
};
Point2.prototype.distanceSquare = function(other) {
var dx = this.x - other.x;
var dy = this.y - other.y;
return dx * dx + dy * dy;
};
Point2.prototype.negate = function() {
this.x = -this.x;
this.y = -this.y;
return this;
};
Point2.prototype.transform = function(m2) {
if (!m2) {
return;
}
var x2 = this.x;
var y2 = this.y;
this.x = m2[0] * x2 + m2[2] * y2 + m2[4];
this.y = m2[1] * x2 + m2[3] * y2 + m2[5];
return this;
};
Point2.prototype.toArray = function(out2) {
out2[0] = this.x;
out2[1] = this.y;
return out2;
};
Point2.prototype.fromArray = function(input) {
this.x = input[0];
this.y = input[1];
};
Point2.set = function(p2, x2, y2) {
p2.x = x2;
p2.y = y2;
};
Point2.copy = function(p2, p22) {
p2.x = p22.x;
p2.y = p22.y;
};
Point2.len = function(p2) {
return Math.sqrt(p2.x * p2.x + p2.y * p2.y);
};
Point2.lenSquare = function(p2) {
return p2.x * p2.x + p2.y * p2.y;
};
Point2.dot = function(p0, p1) {
return p0.x * p1.x + p0.y * p1.y;
};
Point2.add = function(out2, p0, p1) {
out2.x = p0.x + p1.x;
out2.y = p0.y + p1.y;
};
Point2.sub = function(out2, p0, p1) {
out2.x = p0.x - p1.x;
out2.y = p0.y - p1.y;
};
Point2.scale = function(out2, p0, scalar) {
out2.x = p0.x * scalar;
out2.y = p0.y * scalar;
};
Point2.scaleAndAdd = function(out2, p0, p1, scalar) {
out2.x = p0.x + p1.x * scalar;
out2.y = p0.y + p1.y * scalar;
};
Point2.lerp = function(out2, p0, p1, t2) {
var onet = 1 - t2;
out2.x = onet * p0.x + t2 * p1.x;
out2.y = onet * p0.y + t2 * p1.y;
};
return Point2;
}();
var mathMin$a = Math.min;
var mathMax$a = Math.max;
var lt = new Point();
var rb = new Point();
var lb = new Point();
var rt = new Point();
var minTv$1 = new Point();
var maxTv$1 = new Point();
var BoundingRect = function() {
function BoundingRect2(x2, y2, width, height) {
if (width < 0) {
x2 = x2 + width;
width = -width;
}
if (height < 0) {
y2 = y2 + height;
height = -height;
}
this.x = x2;
this.y = y2;
this.width = width;
this.height = height;
}
BoundingRect2.prototype.union = function(other) {
var x2 = mathMin$a(other.x, this.x);
var y2 = mathMin$a(other.y, this.y);
if (isFinite(this.x) && isFinite(this.width)) {
this.width = mathMax$a(other.x + other.width, this.x + this.width) - x2;
} else {
this.width = other.width;
}
if (isFinite(this.y) && isFinite(this.height)) {
this.height = mathMax$a(other.y + other.height, this.y + this.height) - y2;
} else {
this.height = other.height;
}
this.x = x2;
this.y = y2;
};
BoundingRect2.prototype.applyTransform = function(m2) {
BoundingRect2.applyTransform(this, this, m2);
};
BoundingRect2.prototype.calculateTransform = function(b2) {
var a = this;
var sx = b2.width / a.width;
var sy = b2.height / a.height;
var m2 = create$1();
translate(m2, m2, [-a.x, -a.y]);
scale$1(m2, m2, [sx, sy]);
translate(m2, m2, [b2.x, b2.y]);
return m2;
};
BoundingRect2.prototype.intersect = function(b2, mtv) {
if (!b2) {
return false;
}
if (!(b2 instanceof BoundingRect2)) {
b2 = BoundingRect2.create(b2);
}
var a = this;
var ax0 = a.x;
var ax1 = a.x + a.width;
var ay0 = a.y;
var ay1 = a.y + a.height;
var bx0 = b2.x;
var bx1 = b2.x + b2.width;
var by0 = b2.y;
var by1 = b2.y + b2.height;
var overlap = !(ax1 < bx0 || bx1 < ax0 || ay1 < by0 || by1 < ay0);
if (mtv) {
var dMin = Infinity;
var dMax = 0;
var d0 = Math.abs(ax1 - bx0);
var d1 = Math.abs(bx1 - ax0);
var d2 = Math.abs(ay1 - by0);
var d3 = Math.abs(by1 - ay0);
var dx = Math.min(d0, d1);
var dy = Math.min(d2, d3);
if (ax1 < bx0 || bx1 < ax0) {
if (dx > dMax) {
dMax = dx;
if (d0 < d1) {
Point.set(maxTv$1, -d0, 0);
} else {
Point.set(maxTv$1, d1, 0);
}
}
} else {
if (dx < dMin) {
dMin = dx;
if (d0 < d1) {
Point.set(minTv$1, d0, 0);
} else {
Point.set(minTv$1, -d1, 0);
}
}
}
if (ay1 < by0 || by1 < ay0) {
if (dy > dMax) {
dMax = dy;
if (d2 < d3) {
Point.set(maxTv$1, 0, -d2);
} else {
Point.set(maxTv$1, 0, d3);
}
}
} else {
if (dx < dMin) {
dMin = dx;
if (d2 < d3) {
Point.set(minTv$1, 0, d2);
} else {
Point.set(minTv$1, 0, -d3);
}
}
}
}
if (mtv) {
Point.copy(mtv, overlap ? minTv$1 : maxTv$1);
}
return overlap;
};
BoundingRect2.prototype.contain = function(x2, y2) {
var rect = this;
return x2 >= rect.x && x2 <= rect.x + rect.width && y2 >= rect.y && y2 <= rect.y + rect.height;
};
BoundingRect2.prototype.clone = function() {
return new BoundingRect2(this.x, this.y, this.width, this.height);
};
BoundingRect2.prototype.copy = function(other) {
BoundingRect2.copy(this, other);
};
BoundingRect2.prototype.plain = function() {
return {
x: this.x,
y: this.y,
width: this.width,
height: this.height
};
};
BoundingRect2.prototype.isFinite = function() {
return isFinite(this.x) && isFinite(this.y) && isFinite(this.width) && isFinite(this.height);
};
BoundingRect2.prototype.isZero = function() {
return this.width === 0 || this.height === 0;
};
BoundingRect2.create = function(rect) {
return new BoundingRect2(rect.x, rect.y, rect.width, rect.height);
};
BoundingRect2.copy = function(target, source) {
target.x = source.x;
target.y = source.y;
target.width = source.width;
target.height = source.height;
};
BoundingRect2.applyTransform = function(target, source, m2) {
if (!m2) {
if (target !== source) {
BoundingRect2.copy(target, source);
}
return;
}
if (m2[1] < 1e-5 && m2[1] > -1e-5 && m2[2] < 1e-5 && m2[2] > -1e-5) {
var sx = m2[0];
var sy = m2[3];
var tx = m2[4];
var ty = m2[5];
target.x = source.x * sx + tx;
target.y = source.y * sy + ty;
target.width = source.width * sx;
target.height = source.height * sy;
if (target.width < 0) {
target.x += target.width;
target.width = -target.width;
}
if (target.height < 0) {
target.y += target.height;
target.height = -target.height;
}
return;
}
lt.x = lb.x = source.x;
lt.y = rt.y = source.y;
rb.x = rt.x = source.x + source.width;
rb.y = lb.y = source.y + source.height;
lt.transform(m2);
rt.transform(m2);
rb.transform(m2);
lb.transform(m2);
target.x = mathMin$a(lt.x, rb.x, lb.x, rt.x);
target.y = mathMin$a(lt.y, rb.y, lb.y, rt.y);
var maxX = mathMax$a(lt.x, rb.x, lb.x, rt.x);
var maxY = mathMax$a(lt.y, rb.y, lb.y, rt.y);
target.width = maxX - target.x;
target.height = maxY - target.y;
};
return BoundingRect2;
}();
var SILENT = "silent";
function makeEventPacket(eveType, targetInfo, event) {
return {
type: eveType,
event,
target: targetInfo.target,
topTarget: targetInfo.topTarget,
cancelBubble: false,
offsetX: event.zrX,
offsetY: event.zrY,
gestureEvent: event.gestureEvent,
pinchX: event.pinchX,
pinchY: event.pinchY,
pinchScale: event.pinchScale,
wheelDelta: event.zrDelta,
zrByTouch: event.zrByTouch,
which: event.which,
stop: stopEvent
};
}
function stopEvent() {
stop(this.event);
}
var EmptyProxy = function(_super) {
__extends(EmptyProxy2, _super);
function EmptyProxy2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.handler = null;
return _this;
}
EmptyProxy2.prototype.dispose = function() {
};
EmptyProxy2.prototype.setCursor = function() {
};
return EmptyProxy2;
}(Eventful);
var HoveredResult = /* @__PURE__ */ function() {
function HoveredResult2(x2, y2) {
this.x = x2;
this.y = y2;
}
return HoveredResult2;
}();
var handlerNames = [
"click",
"dblclick",
"mousewheel",
"mouseout",
"mouseup",
"mousedown",
"mousemove",
"contextmenu"
];
var tmpRect$1 = new BoundingRect(0, 0, 0, 0);
var Handler = function(_super) {
__extends(Handler2, _super);
function Handler2(storage2, painter, proxy, painterRoot, pointerSize) {
var _this = _super.call(this) || this;
_this._hovered = new HoveredResult(0, 0);
_this.storage = storage2;
_this.painter = painter;
_this.painterRoot = painterRoot;
_this._pointerSize = pointerSize;
proxy = proxy || new EmptyProxy();
_this.proxy = null;
_this.setHandlerProxy(proxy);
_this._draggingMgr = new Draggable(_this);
return _this;
}
Handler2.prototype.setHandlerProxy = function(proxy) {
if (this.proxy) {
this.proxy.dispose();
}
if (proxy) {
each$f(handlerNames, function(name) {
proxy.on && proxy.on(name, this[name], this);
}, this);
proxy.handler = this;
}
this.proxy = proxy;
};
Handler2.prototype.mousemove = function(event) {
var x2 = event.zrX;
var y2 = event.zrY;
var isOutside = isOutsideBoundary(this, x2, y2);
var lastHovered = this._hovered;
var lastHoveredTarget = lastHovered.target;
if (lastHoveredTarget && !lastHoveredTarget.__zr) {
lastHovered = this.findHover(lastHovered.x, lastHovered.y);
lastHoveredTarget = lastHovered.target;
}
var hovered = this._hovered = isOutside ? new HoveredResult(x2, y2) : this.findHover(x2, y2);
var hoveredTarget = hovered.target;
var proxy = this.proxy;
proxy.setCursor && proxy.setCursor(hoveredTarget ? hoveredTarget.cursor : "default");
if (lastHoveredTarget && hoveredTarget !== lastHoveredTarget) {
this.dispatchToElement(lastHovered, "mouseout", event);
}
this.dispatchToElement(hovered, "mousemove", event);
if (hoveredTarget && hoveredTarget !== lastHoveredTarget) {
this.dispatchToElement(hovered, "mouseover", event);
}
};
Handler2.prototype.mouseout = function(event) {
var eventControl = event.zrEventControl;
if (eventControl !== "only_globalout") {
this.dispatchToElement(this._hovered, "mouseout", event);
}
if (eventControl !== "no_globalout") {
this.trigger("globalout", { type: "globalout", event });
}
};
Handler2.prototype.resize = function() {
this._hovered = new HoveredResult(0, 0);
};
Handler2.prototype.dispatch = function(eventName, eventArgs) {
var handler = this[eventName];
handler && handler.call(this, eventArgs);
};
Handler2.prototype.dispose = function() {
this.proxy.dispose();
this.storage = null;
this.proxy = null;
this.painter = null;
};
Handler2.prototype.setCursorStyle = function(cursorStyle) {
var proxy = this.proxy;
proxy.setCursor && proxy.setCursor(cursorStyle);
};
Handler2.prototype.dispatchToElement = function(targetInfo, eventName, event) {
targetInfo = targetInfo || {};
var el2 = targetInfo.target;
if (el2 && el2.silent) {
return;
}
var eventKey = "on" + eventName;
var eventPacket = makeEventPacket(eventName, targetInfo, event);
while (el2) {
el2[eventKey] && (eventPacket.cancelBubble = !!el2[eventKey].call(el2, eventPacket));
el2.trigger(eventName, eventPacket);
el2 = el2.__hostTarget ? el2.__hostTarget : el2.parent;
if (eventPacket.cancelBubble) {
break;
}
}
if (!eventPacket.cancelBubble) {
this.trigger(eventName, eventPacket);
if (this.painter && this.painter.eachOtherLayer) {
this.painter.eachOtherLayer(function(layer) {
if (typeof layer[eventKey] === "function") {
layer[eventKey].call(layer, eventPacket);
}
if (layer.trigger) {
layer.trigger(eventName, eventPacket);
}
});
}
}
};
Handler2.prototype.findHover = function(x2, y2, exclude) {
var list = this.storage.getDisplayList();
var out2 = new HoveredResult(x2, y2);
setHoverTarget(list, out2, x2, y2, exclude);
if (this._pointerSize && !out2.target) {
var candidates = [];
var pointerSize = this._pointerSize;
var targetSizeHalf = pointerSize / 2;
var pointerRect = new BoundingRect(x2 - targetSizeHalf, y2 - targetSizeHalf, pointerSize, pointerSize);
for (var i = list.length - 1; i >= 0; i--) {
var el2 = list[i];
if (el2 !== exclude && !el2.ignore && !el2.ignoreCoarsePointer && (!el2.parent || !el2.parent.ignoreCoarsePointer)) {
tmpRect$1.copy(el2.getBoundingRect());
if (el2.transform) {
tmpRect$1.applyTransform(el2.transform);
}
if (tmpRect$1.intersect(pointerRect)) {
candidates.push(el2);
}
}
}
if (candidates.length) {
var rStep = 4;
var thetaStep = Math.PI / 12;
var PI22 = Math.PI * 2;
for (var r2 = 0; r2 < targetSizeHalf; r2 += rStep) {
for (var theta = 0; theta < PI22; theta += thetaStep) {
var x1 = x2 + r2 * Math.cos(theta);
var y1 = y2 + r2 * Math.sin(theta);
setHoverTarget(candidates, out2, x1, y1, exclude);
if (out2.target) {
return out2;
}
}
}
}
}
return out2;
};
Handler2.prototype.processGesture = function(event, stage) {
if (!this._gestureMgr) {
this._gestureMgr = new GestureMgr();
}
var gestureMgr = this._gestureMgr;
stage === "start" && gestureMgr.clear();
var gestureInfo = gestureMgr.recognize(event, this.findHover(event.zrX, event.zrY, null).target, this.proxy.dom);
stage === "end" && gestureMgr.clear();
if (gestureInfo) {
var type4 = gestureInfo.type;
event.gestureEvent = type4;
var res = new HoveredResult();
res.target = gestureInfo.target;
this.dispatchToElement(res, type4, gestureInfo.event);
}
};
return Handler2;
}(Eventful);
each$f(["click", "mousedown", "mouseup", "mousewheel", "dblclick", "contextmenu"], function(name) {
Handler.prototype[name] = function(event) {
var x2 = event.zrX;
var y2 = event.zrY;
var isOutside = isOutsideBoundary(this, x2, y2);
var hovered;
var hoveredTarget;
if (name !== "mouseup" || !isOutside) {
hovered = this.findHover(x2, y2);
hoveredTarget = hovered.target;
}
if (name === "mousedown") {
this._downEl = hoveredTarget;
this._downPoint = [event.zrX, event.zrY];
this._upEl = hoveredTarget;
} else if (name === "mouseup") {
this._upEl = hoveredTarget;
} else if (name === "click") {
if (this._downEl !== this._upEl || !this._downPoint || dist$1(this._downPoint, [event.zrX, event.zrY]) > 4) {
return;
}
this._downPoint = null;
}
this.dispatchToElement(hovered, name, event);
};
});
function isHover(displayable, x2, y2) {
if (displayable[displayable.rectHover ? "rectContain" : "contain"](x2, y2)) {
var el2 = displayable;
var isSilent = void 0;
var ignoreClip = false;
while (el2) {
if (el2.ignoreClip) {
ignoreClip = true;
}
if (!ignoreClip) {
var clipPath = el2.getClipPath();
if (clipPath && !clipPath.contain(x2, y2)) {
return false;
}
}
if (el2.silent) {
isSilent = true;
}
var hostEl = el2.__hostTarget;
el2 = hostEl ? hostEl : el2.parent;
}
return isSilent ? SILENT : true;
}
return false;
}
function setHoverTarget(list, out2, x2, y2, exclude) {
for (var i = list.length - 1; i >= 0; i--) {
var el2 = list[i];
var hoverCheckResult = void 0;
if (el2 !== exclude && !el2.ignore && (hoverCheckResult = isHover(el2, x2, y2))) {
!out2.topTarget && (out2.topTarget = el2);
if (hoverCheckResult !== SILENT) {
out2.target = el2;
break;
}
}
}
}
function isOutsideBoundary(handlerInstance, x2, y2) {
var painter = handlerInstance.painter;
return x2 < 0 || x2 > painter.getWidth() || y2 < 0 || y2 > painter.getHeight();
}
var DEFAULT_MIN_MERGE = 32;
var DEFAULT_MIN_GALLOPING = 7;
function minRunLength(n2) {
var r2 = 0;
while (n2 >= DEFAULT_MIN_MERGE) {
r2 |= n2 & 1;
n2 >>= 1;
}
return n2 + r2;
}
function makeAscendingRun(array4, lo, hi2, compare2) {
var runHi = lo + 1;
if (runHi === hi2) {
return 1;
}
if (compare2(array4[runHi++], array4[lo]) < 0) {
while (runHi < hi2 && compare2(array4[runHi], array4[runHi - 1]) < 0) {
runHi++;
}
reverseRun(array4, lo, runHi);
} else {
while (runHi < hi2 && compare2(array4[runHi], array4[runHi - 1]) >= 0) {
runHi++;
}
}
return runHi - lo;
}
function reverseRun(array4, lo, hi2) {
hi2--;
while (lo < hi2) {
var t2 = array4[lo];
array4[lo++] = array4[hi2];
array4[hi2--] = t2;
}
}
function binaryInsertionSort(array4, lo, hi2, start2, compare2) {
if (start2 === lo) {
start2++;
}
for (; start2 < hi2; start2++) {
var pivot = array4[start2];
var left = lo;
var right = start2;
var mid;
while (left < right) {
mid = left + right >>> 1;
if (compare2(pivot, array4[mid]) < 0) {
right = mid;
} else {
left = mid + 1;
}
}
var n2 = start2 - left;
switch (n2) {
case 3:
array4[left + 3] = array4[left + 2];
case 2:
array4[left + 2] = array4[left + 1];
case 1:
array4[left + 1] = array4[left];
break;
default:
while (n2 > 0) {
array4[left + n2] = array4[left + n2 - 1];
n2--;
}
}
array4[left] = pivot;
}
}
function gallopLeft(value, array4, start2, length2, hint, compare2) {
var lastOffset = 0;
var maxOffset = 0;
var offset2 = 1;
if (compare2(value, array4[start2 + hint]) > 0) {
maxOffset = length2 - hint;
while (offset2 < maxOffset && compare2(value, array4[start2 + hint + offset2]) > 0) {
lastOffset = offset2;
offset2 = (offset2 << 1) + 1;
if (offset2 <= 0) {
offset2 = maxOffset;
}
}
if (offset2 > maxOffset) {
offset2 = maxOffset;
}
lastOffset += hint;
offset2 += hint;
} else {
maxOffset = hint + 1;
while (offset2 < maxOffset && compare2(value, array4[start2 + hint - offset2]) <= 0) {
lastOffset = offset2;
offset2 = (offset2 << 1) + 1;
if (offset2 <= 0) {
offset2 = maxOffset;
}
}
if (offset2 > maxOffset) {
offset2 = maxOffset;
}
var tmp = lastOffset;
lastOffset = hint - offset2;
offset2 = hint - tmp;
}
lastOffset++;
while (lastOffset < offset2) {
var m2 = lastOffset + (offset2 - lastOffset >>> 1);
if (compare2(value, array4[start2 + m2]) > 0) {
lastOffset = m2 + 1;
} else {
offset2 = m2;
}
}
return offset2;
}
function gallopRight(value, array4, start2, length2, hint, compare2) {
var lastOffset = 0;
var maxOffset = 0;
var offset2 = 1;
if (compare2(value, array4[start2 + hint]) < 0) {
maxOffset = hint + 1;
while (offset2 < maxOffset && compare2(value, array4[start2 + hint - offset2]) < 0) {
lastOffset = offset2;
offset2 = (offset2 << 1) + 1;
if (offset2 <= 0) {
offset2 = maxOffset;
}
}
if (offset2 > maxOffset) {
offset2 = maxOffset;
}
var tmp = lastOffset;
lastOffset = hint - offset2;
offset2 = hint - tmp;
} else {
maxOffset = length2 - hint;
while (offset2 < maxOffset && compare2(value, array4[start2 + hint + offset2]) >= 0) {
lastOffset = offset2;
offset2 = (offset2 << 1) + 1;
if (offset2 <= 0) {
offset2 = maxOffset;
}
}
if (offset2 > maxOffset) {
offset2 = maxOffset;
}
lastOffset += hint;
offset2 += hint;
}
lastOffset++;
while (lastOffset < offset2) {
var m2 = lastOffset + (offset2 - lastOffset >>> 1);
if (compare2(value, array4[start2 + m2]) < 0) {
offset2 = m2;
} else {
lastOffset = m2 + 1;
}
}
return offset2;
}
function TimSort(array4, compare2) {
var minGallop = DEFAULT_MIN_GALLOPING;
var runStart;
var runLength;
var stackSize = 0;
var tmp = [];
runStart = [];
runLength = [];
function pushRun(_runStart, _runLength) {
runStart[stackSize] = _runStart;
runLength[stackSize] = _runLength;
stackSize += 1;
}
function mergeRuns() {
while (stackSize > 1) {
var n2 = stackSize - 2;
if (n2 >= 1 && runLength[n2 - 1] <= runLength[n2] + runLength[n2 + 1] || n2 >= 2 && runLength[n2 - 2] <= runLength[n2] + runLength[n2 - 1]) {
if (runLength[n2 - 1] < runLength[n2 + 1]) {
n2--;
}
} else if (runLength[n2] > runLength[n2 + 1]) {
break;
}
mergeAt(n2);
}
}
function forceMergeRuns() {
while (stackSize > 1) {
var n2 = stackSize - 2;
if (n2 > 0 && runLength[n2 - 1] < runLength[n2 + 1]) {
n2--;
}
mergeAt(n2);
}
}
function mergeAt(i) {
var start1 = runStart[i];
var length1 = runLength[i];
var start2 = runStart[i + 1];
var length2 = runLength[i + 1];
runLength[i] = length1 + length2;
if (i === stackSize - 3) {
runStart[i + 1] = runStart[i + 2];
runLength[i + 1] = runLength[i + 2];
}
stackSize--;
var k2 = gallopRight(array4[start2], array4, start1, length1, 0, compare2);
start1 += k2;
length1 -= k2;
if (length1 === 0) {
return;
}
length2 = gallopLeft(array4[start1 + length1 - 1], array4, start2, length2, length2 - 1, compare2);
if (length2 === 0) {
return;
}
if (length1 <= length2) {
mergeLow(start1, length1, start2, length2);
} else {
mergeHigh(start1, length1, start2, length2);
}
}
function mergeLow(start1, length1, start2, length2) {
var i = 0;
for (i = 0; i < length1; i++) {
tmp[i] = array4[start1 + i];
}
var cursor1 = 0;
var cursor2 = start2;
var dest = start1;
array4[dest++] = array4[cursor2++];
if (--length2 === 0) {
for (i = 0; i < length1; i++) {
array4[dest + i] = tmp[cursor1 + i];
}
return;
}
if (length1 === 1) {
for (i = 0; i < length2; i++) {
array4[dest + i] = array4[cursor2 + i];
}
array4[dest + length2] = tmp[cursor1];
return;
}
var _minGallop = minGallop;
var count1;
var count2;
var exit;
while (1) {
count1 = 0;
count2 = 0;
exit = false;
do {
if (compare2(array4[cursor2], tmp[cursor1]) < 0) {
array4[dest++] = array4[cursor2++];
count2++;
count1 = 0;
if (--length2 === 0) {
exit = true;
break;
}
} else {
array4[dest++] = tmp[cursor1++];
count1++;
count2 = 0;
if (--length1 === 1) {
exit = true;
break;
}
}
} while ((count1 | count2) < _minGallop);
if (exit) {
break;
}
do {
count1 = gallopRight(array4[cursor2], tmp, cursor1, length1, 0, compare2);
if (count1 !== 0) {
for (i = 0; i < count1; i++) {
array4[dest + i] = tmp[cursor1 + i];
}
dest += count1;
cursor1 += count1;
length1 -= count1;
if (length1 <= 1) {
exit = true;
break;
}
}
array4[dest++] = array4[cursor2++];
if (--length2 === 0) {
exit = true;
break;
}
count2 = gallopLeft(tmp[cursor1], array4, cursor2, length2, 0, compare2);
if (count2 !== 0) {
for (i = 0; i < count2; i++) {
array4[dest + i] = array4[cursor2 + i];
}
dest += count2;
cursor2 += count2;
length2 -= count2;
if (length2 === 0) {
exit = true;
break;
}
}
array4[dest++] = tmp[cursor1++];
if (--length1 === 1) {
exit = true;
break;
}
_minGallop--;
} while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);
if (exit) {
break;
}
if (_minGallop < 0) {
_minGallop = 0;
}
_minGallop += 2;
}
minGallop = _minGallop;
minGallop < 1 && (minGallop = 1);
if (length1 === 1) {
for (i = 0; i < length2; i++) {
array4[dest + i] = array4[cursor2 + i];
}
array4[dest + length2] = tmp[cursor1];
} else if (length1 === 0) {
throw new Error();
} else {
for (i = 0; i < length1; i++) {
array4[dest + i] = tmp[cursor1 + i];
}
}
}
function mergeHigh(start1, length1, start2, length2) {
var i = 0;
for (i = 0; i < length2; i++) {
tmp[i] = array4[start2 + i];
}
var cursor1 = start1 + length1 - 1;
var cursor2 = length2 - 1;
var dest = start2 + length2 - 1;
var customCursor = 0;
var customDest = 0;
array4[dest--] = array4[cursor1--];
if (--length1 === 0) {
customCursor = dest - (length2 - 1);
for (i = 0; i < length2; i++) {
array4[customCursor + i] = tmp[i];
}
return;
}
if (length2 === 1) {
dest -= length1;
cursor1 -= length1;
customDest = dest + 1;
customCursor = cursor1 + 1;
for (i = length1 - 1; i >= 0; i--) {
array4[customDest + i] = array4[customCursor + i];
}
array4[dest] = tmp[cursor2];
return;
}
var _minGallop = minGallop;
while (true) {
var count1 = 0;
var count2 = 0;
var exit = false;
do {
if (compare2(tmp[cursor2], array4[cursor1]) < 0) {
array4[dest--] = array4[cursor1--];
count1++;
count2 = 0;
if (--length1 === 0) {
exit = true;
break;
}
} else {
array4[dest--] = tmp[cursor2--];
count2++;
count1 = 0;
if (--length2 === 1) {
exit = true;
break;
}
}
} while ((count1 | count2) < _minGallop);
if (exit) {
break;
}
do {
count1 = length1 - gallopRight(tmp[cursor2], array4, start1, length1, length1 - 1, compare2);
if (count1 !== 0) {
dest -= count1;
cursor1 -= count1;
length1 -= count1;
customDest = dest + 1;
customCursor = cursor1 + 1;
for (i = count1 - 1; i >= 0; i--) {
array4[customDest + i] = array4[customCursor + i];
}
if (length1 === 0) {
exit = true;
break;
}
}
array4[dest--] = tmp[cursor2--];
if (--length2 === 1) {
exit = true;
break;
}
count2 = length2 - gallopLeft(array4[cursor1], tmp, 0, length2, length2 - 1, compare2);
if (count2 !== 0) {
dest -= count2;
cursor2 -= count2;
length2 -= count2;
customDest = dest + 1;
customCursor = cursor2 + 1;
for (i = 0; i < count2; i++) {
array4[customDest + i] = tmp[customCursor + i];
}
if (length2 <= 1) {
exit = true;
break;
}
}
array4[dest--] = array4[cursor1--];
if (--length1 === 0) {
exit = true;
break;
}
_minGallop--;
} while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);
if (exit) {
break;
}
if (_minGallop < 0) {
_minGallop = 0;
}
_minGallop += 2;
}
minGallop = _minGallop;
if (minGallop < 1) {
minGallop = 1;
}
if (length2 === 1) {
dest -= length1;
cursor1 -= length1;
customDest = dest + 1;
customCursor = cursor1 + 1;
for (i = length1 - 1; i >= 0; i--) {
array4[customDest + i] = array4[customCursor + i];
}
array4[dest] = tmp[cursor2];
} else if (length2 === 0) {
throw new Error();
} else {
customCursor = dest - (length2 - 1);
for (i = 0; i < length2; i++) {
array4[customCursor + i] = tmp[i];
}
}
}
return {
mergeRuns,
forceMergeRuns,
pushRun
};
}
function sort$2(array4, compare2, lo, hi2) {
if (!lo) {
lo = 0;
}
if (!hi2) {
hi2 = array4.length;
}
var remaining = hi2 - lo;
if (remaining < 2) {
return;
}
var runLength = 0;
if (remaining < DEFAULT_MIN_MERGE) {
runLength = makeAscendingRun(array4, lo, hi2, compare2);
binaryInsertionSort(array4, lo, hi2, lo + runLength, compare2);
return;
}
var ts = TimSort(array4, compare2);
var minRun = minRunLength(remaining);
do {
runLength = makeAscendingRun(array4, lo, hi2, compare2);
if (runLength < minRun) {
var force = remaining;
if (force > minRun) {
force = minRun;
}
binaryInsertionSort(array4, lo, lo + force, lo + runLength, compare2);
runLength = force;
}
ts.pushRun(lo, runLength);
ts.mergeRuns();
remaining -= runLength;
lo += runLength;
} while (remaining !== 0);
ts.forceMergeRuns();
}
var REDRAW_BIT = 1;
var STYLE_CHANGED_BIT = 2;
var SHAPE_CHANGED_BIT = 4;
var invalidZErrorLogged = false;
function logInvalidZError() {
if (invalidZErrorLogged) {
return;
}
invalidZErrorLogged = true;
console.warn("z / z2 / zlevel of displayable is invalid, which may cause unexpected errors");
}
function shapeCompareFunc(a, b2) {
if (a.zlevel === b2.zlevel) {
if (a.z === b2.z) {
return a.z2 - b2.z2;
}
return a.z - b2.z;
}
return a.zlevel - b2.zlevel;
}
var Storage = function() {
function Storage2() {
this._roots = [];
this._displayList = [];
this._displayListLen = 0;
this.displayableSortFunc = shapeCompareFunc;
}
Storage2.prototype.traverse = function(cb2, context) {
for (var i = 0; i < this._roots.length; i++) {
this._roots[i].traverse(cb2, context);
}
};
Storage2.prototype.getDisplayList = function(update, includeIgnore) {
includeIgnore = includeIgnore || false;
var displayList = this._displayList;
if (update || !displayList.length) {
this.updateDisplayList(includeIgnore);
}
return displayList;
};
Storage2.prototype.updateDisplayList = function(includeIgnore) {
this._displayListLen = 0;
var roots2 = this._roots;
var displayList = this._displayList;
for (var i = 0, len2 = roots2.length; i < len2; i++) {
this._updateAndAddDisplayable(roots2[i], null, includeIgnore);
}
displayList.length = this._displayListLen;
sort$2(displayList, shapeCompareFunc);
};
Storage2.prototype._updateAndAddDisplayable = function(el2, clipPaths, includeIgnore) {
if (el2.ignore && !includeIgnore) {
return;
}
el2.beforeUpdate();
el2.update();
el2.afterUpdate();
var userSetClipPath = el2.getClipPath();
if (el2.ignoreClip) {
clipPaths = null;
} else if (userSetClipPath) {
if (clipPaths) {
clipPaths = clipPaths.slice();
} else {
clipPaths = [];
}
var currentClipPath = userSetClipPath;
var parentClipPath = el2;
while (currentClipPath) {
currentClipPath.parent = parentClipPath;
currentClipPath.updateTransform();
clipPaths.push(currentClipPath);
parentClipPath = currentClipPath;
currentClipPath = currentClipPath.getClipPath();
}
}
if (el2.childrenRef) {
var children = el2.childrenRef();
for (var i = 0; i < children.length; i++) {
var child = children[i];
if (el2.__dirty) {
child.__dirty |= REDRAW_BIT;
}
this._updateAndAddDisplayable(child, clipPaths, includeIgnore);
}
el2.__dirty = 0;
} else {
var disp = el2;
if (clipPaths && clipPaths.length) {
disp.__clipPaths = clipPaths;
} else if (disp.__clipPaths && disp.__clipPaths.length > 0) {
disp.__clipPaths = [];
}
if (isNaN(disp.z)) {
logInvalidZError();
disp.z = 0;
}
if (isNaN(disp.z2)) {
logInvalidZError();
disp.z2 = 0;
}
if (isNaN(disp.zlevel)) {
logInvalidZError();
disp.zlevel = 0;
}
this._displayList[this._displayListLen++] = disp;
}
var decalEl = el2.getDecalElement && el2.getDecalElement();
if (decalEl) {
this._updateAndAddDisplayable(decalEl, clipPaths, includeIgnore);
}
var textGuide = el2.getTextGuideLine();
if (textGuide) {
this._updateAndAddDisplayable(textGuide, clipPaths, includeIgnore);
}
var textEl = el2.getTextContent();
if (textEl) {
this._updateAndAddDisplayable(textEl, clipPaths, includeIgnore);
}
};
Storage2.prototype.addRoot = function(el2) {
if (el2.__zr && el2.__zr.storage === this) {
return;
}
this._roots.push(el2);
};
Storage2.prototype.delRoot = function(el2) {
if (el2 instanceof Array) {
for (var i = 0, l2 = el2.length; i < l2; i++) {
this.delRoot(el2[i]);
}
return;
}
var idx = indexOf(this._roots, el2);
if (idx >= 0) {
this._roots.splice(idx, 1);
}
};
Storage2.prototype.delAllRoots = function() {
this._roots = [];
this._displayList = [];
this._displayListLen = 0;
return;
};
Storage2.prototype.getRoots = function() {
return this._roots;
};
Storage2.prototype.dispose = function() {
this._displayList = null;
this._roots = null;
};
return Storage2;
}();
var requestAnimationFrame$1;
requestAnimationFrame$1 = env.hasGlobalWindow && (window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.msRequestAnimationFrame && window.msRequestAnimationFrame.bind(window) || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame) || function(func) {
return setTimeout(func, 16);
};
var easingFuncs = {
linear: function(k2) {
return k2;
},
quadraticIn: function(k2) {
return k2 * k2;
},
quadraticOut: function(k2) {
return k2 * (2 - k2);
},
quadraticInOut: function(k2) {
if ((k2 *= 2) < 1) {
return 0.5 * k2 * k2;
}
return -0.5 * (--k2 * (k2 - 2) - 1);
},
cubicIn: function(k2) {
return k2 * k2 * k2;
},
cubicOut: function(k2) {
return --k2 * k2 * k2 + 1;
},
cubicInOut: function(k2) {
if ((k2 *= 2) < 1) {
return 0.5 * k2 * k2 * k2;
}
return 0.5 * ((k2 -= 2) * k2 * k2 + 2);
},
quarticIn: function(k2) {
return k2 * k2 * k2 * k2;
},
quarticOut: function(k2) {
return 1 - --k2 * k2 * k2 * k2;
},
quarticInOut: function(k2) {
if ((k2 *= 2) < 1) {
return 0.5 * k2 * k2 * k2 * k2;
}
return -0.5 * ((k2 -= 2) * k2 * k2 * k2 - 2);
},
quinticIn: function(k2) {
return k2 * k2 * k2 * k2 * k2;
},
quinticOut: function(k2) {
return --k2 * k2 * k2 * k2 * k2 + 1;
},
quinticInOut: function(k2) {
if ((k2 *= 2) < 1) {
return 0.5 * k2 * k2 * k2 * k2 * k2;
}
return 0.5 * ((k2 -= 2) * k2 * k2 * k2 * k2 + 2);
},
sinusoidalIn: function(k2) {
return 1 - Math.cos(k2 * Math.PI / 2);
},
sinusoidalOut: function(k2) {
return Math.sin(k2 * Math.PI / 2);
},
sinusoidalInOut: function(k2) {
return 0.5 * (1 - Math.cos(Math.PI * k2));
},
exponentialIn: function(k2) {
return k2 === 0 ? 0 : Math.pow(1024, k2 - 1);
},
exponentialOut: function(k2) {
return k2 === 1 ? 1 : 1 - Math.pow(2, -10 * k2);
},
exponentialInOut: function(k2) {
if (k2 === 0) {
return 0;
}
if (k2 === 1) {
return 1;
}
if ((k2 *= 2) < 1) {
return 0.5 * Math.pow(1024, k2 - 1);
}
return 0.5 * (-Math.pow(2, -10 * (k2 - 1)) + 2);
},
circularIn: function(k2) {
return 1 - Math.sqrt(1 - k2 * k2);
},
circularOut: function(k2) {
return Math.sqrt(1 - --k2 * k2);
},
circularInOut: function(k2) {
if ((k2 *= 2) < 1) {
return -0.5 * (Math.sqrt(1 - k2 * k2) - 1);
}
return 0.5 * (Math.sqrt(1 - (k2 -= 2) * k2) + 1);
},
elasticIn: function(k2) {
var s;
var a = 0.1;
var p2 = 0.4;
if (k2 === 0) {
return 0;
}
if (k2 === 1) {
return 1;
}
if (!a || a < 1) {
a = 1;
s = p2 / 4;
} else {
s = p2 * Math.asin(1 / a) / (2 * Math.PI);
}
return -(a * Math.pow(2, 10 * (k2 -= 1)) * Math.sin((k2 - s) * (2 * Math.PI) / p2));
},
elasticOut: function(k2) {
var s;
var a = 0.1;
var p2 = 0.4;
if (k2 === 0) {
return 0;
}
if (k2 === 1) {
return 1;
}
if (!a || a < 1) {
a = 1;
s = p2 / 4;
} else {
s = p2 * Math.asin(1 / a) / (2 * Math.PI);
}
return a * Math.pow(2, -10 * k2) * Math.sin((k2 - s) * (2 * Math.PI) / p2) + 1;
},
elasticInOut: function(k2) {
var s;
var a = 0.1;
var p2 = 0.4;
if (k2 === 0) {
return 0;
}
if (k2 === 1) {
return 1;
}
if (!a || a < 1) {
a = 1;
s = p2 / 4;
} else {
s = p2 * Math.asin(1 / a) / (2 * Math.PI);
}
if ((k2 *= 2) < 1) {
return -0.5 * (a * Math.pow(2, 10 * (k2 -= 1)) * Math.sin((k2 - s) * (2 * Math.PI) / p2));
}
return a * Math.pow(2, -10 * (k2 -= 1)) * Math.sin((k2 - s) * (2 * Math.PI) / p2) * 0.5 + 1;
},
backIn: function(k2) {
var s = 1.70158;
return k2 * k2 * ((s + 1) * k2 - s);
},
backOut: function(k2) {
var s = 1.70158;
return --k2 * k2 * ((s + 1) * k2 + s) + 1;
},
backInOut: function(k2) {
var s = 1.70158 * 1.525;
if ((k2 *= 2) < 1) {
return 0.5 * (k2 * k2 * ((s + 1) * k2 - s));
}
return 0.5 * ((k2 -= 2) * k2 * ((s + 1) * k2 + s) + 2);
},
bounceIn: function(k2) {
return 1 - easingFuncs.bounceOut(1 - k2);
},
bounceOut: function(k2) {
if (k2 < 1 / 2.75) {
return 7.5625 * k2 * k2;
} else if (k2 < 2 / 2.75) {
return 7.5625 * (k2 -= 1.5 / 2.75) * k2 + 0.75;
} else if (k2 < 2.5 / 2.75) {
return 7.5625 * (k2 -= 2.25 / 2.75) * k2 + 0.9375;
} else {
return 7.5625 * (k2 -= 2.625 / 2.75) * k2 + 0.984375;
}
},
bounceInOut: function(k2) {
if (k2 < 0.5) {
return easingFuncs.bounceIn(k2 * 2) * 0.5;
}
return easingFuncs.bounceOut(k2 * 2 - 1) * 0.5 + 0.5;
}
};
var mathPow$2 = Math.pow;
var mathSqrt$3 = Math.sqrt;
var EPSILON$4 = 1e-8;
var EPSILON_NUMERIC = 1e-4;
var THREE_SQRT = mathSqrt$3(3);
var ONE_THIRD = 1 / 3;
var _v0 = create$2();
var _v1 = create$2();
var _v2 = create$2();
function isAroundZero$1(val) {
return val > -EPSILON$4 && val < EPSILON$4;
}
function isNotAroundZero$1(val) {
return val > EPSILON$4 || val < -EPSILON$4;
}
function cubicAt(p0, p1, p2, p3, t2) {
var onet = 1 - t2;
return onet * onet * (onet * p0 + 3 * t2 * p1) + t2 * t2 * (t2 * p3 + 3 * onet * p2);
}
function cubicDerivativeAt(p0, p1, p2, p3, t2) {
var onet = 1 - t2;
return 3 * (((p1 - p0) * onet + 2 * (p2 - p1) * t2) * onet + (p3 - p2) * t2 * t2);
}
function cubicRootAt(p0, p1, p2, p3, val, roots2) {
var a = p3 + 3 * (p1 - p2) - p0;
var b2 = 3 * (p2 - p1 * 2 + p0);
var c2 = 3 * (p1 - p0);
var d2 = p0 - val;
var A2 = b2 * b2 - 3 * a * c2;
var B2 = b2 * c2 - 9 * a * d2;
var C2 = c2 * c2 - 3 * b2 * d2;
var n2 = 0;
if (isAroundZero$1(A2) && isAroundZero$1(B2)) {
if (isAroundZero$1(b2)) {
roots2[0] = 0;
} else {
var t1 = -c2 / b2;
if (t1 >= 0 && t1 <= 1) {
roots2[n2++] = t1;
}
}
} else {
var disc = B2 * B2 - 4 * A2 * C2;
if (isAroundZero$1(disc)) {
var K2 = B2 / A2;
var t1 = -b2 / a + K2;
var t2 = -K2 / 2;
if (t1 >= 0 && t1 <= 1) {
roots2[n2++] = t1;
}
if (t2 >= 0 && t2 <= 1) {
roots2[n2++] = t2;
}
} else if (disc > 0) {
var discSqrt = mathSqrt$3(disc);
var Y1 = A2 * b2 + 1.5 * a * (-B2 + discSqrt);
var Y2 = A2 * b2 + 1.5 * a * (-B2 - discSqrt);
if (Y1 < 0) {
Y1 = -mathPow$2(-Y1, ONE_THIRD);
} else {
Y1 = mathPow$2(Y1, ONE_THIRD);
}
if (Y2 < 0) {
Y2 = -mathPow$2(-Y2, ONE_THIRD);
} else {
Y2 = mathPow$2(Y2, ONE_THIRD);
}
var t1 = (-b2 - (Y1 + Y2)) / (3 * a);
if (t1 >= 0 && t1 <= 1) {
roots2[n2++] = t1;
}
} else {
var T2 = (2 * A2 * b2 - 3 * a * B2) / (2 * mathSqrt$3(A2 * A2 * A2));
var theta = Math.acos(T2) / 3;
var ASqrt = mathSqrt$3(A2);
var tmp = Math.cos(theta);
var t1 = (-b2 - 2 * ASqrt * tmp) / (3 * a);
var t2 = (-b2 + ASqrt * (tmp + THREE_SQRT * Math.sin(theta))) / (3 * a);
var t3 = (-b2 + ASqrt * (tmp - THREE_SQRT * Math.sin(theta))) / (3 * a);
if (t1 >= 0 && t1 <= 1) {
roots2[n2++] = t1;
}
if (t2 >= 0 && t2 <= 1) {
roots2[n2++] = t2;
}
if (t3 >= 0 && t3 <= 1) {
roots2[n2++] = t3;
}
}
}
return n2;
}
function cubicExtrema(p0, p1, p2, p3, extrema2) {
var b2 = 6 * p2 - 12 * p1 + 6 * p0;
var a = 9 * p1 + 3 * p3 - 3 * p0 - 9 * p2;
var c2 = 3 * p1 - 3 * p0;
var n2 = 0;
if (isAroundZero$1(a)) {
if (isNotAroundZero$1(b2)) {
var t1 = -c2 / b2;
if (t1 >= 0 && t1 <= 1) {
extrema2[n2++] = t1;
}
}
} else {
var disc = b2 * b2 - 4 * a * c2;
if (isAroundZero$1(disc)) {
extrema2[0] = -b2 / (2 * a);
} else if (disc > 0) {
var discSqrt = mathSqrt$3(disc);
var t1 = (-b2 + discSqrt) / (2 * a);
var t2 = (-b2 - discSqrt) / (2 * a);
if (t1 >= 0 && t1 <= 1) {
extrema2[n2++] = t1;
}
if (t2 >= 0 && t2 <= 1) {
extrema2[n2++] = t2;
}
}
}
return n2;
}
function cubicSubdivide(p0, p1, p2, p3, t2, out2) {
var p01 = (p1 - p0) * t2 + p0;
var p12 = (p2 - p1) * t2 + p1;
var p23 = (p3 - p2) * t2 + p2;
var p012 = (p12 - p01) * t2 + p01;
var p123 = (p23 - p12) * t2 + p12;
var p0123 = (p123 - p012) * t2 + p012;
out2[0] = p0;
out2[1] = p01;
out2[2] = p012;
out2[3] = p0123;
out2[4] = p0123;
out2[5] = p123;
out2[6] = p23;
out2[7] = p3;
}
function cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x4, y4, out2) {
var t2;
var interval = 5e-3;
var d2 = Infinity;
var prev2;
var next2;
var d1;
var d22;
_v0[0] = x4;
_v0[1] = y4;
for (var _t = 0; _t < 1; _t += 0.05) {
_v1[0] = cubicAt(x0, x1, x2, x3, _t);
_v1[1] = cubicAt(y0, y1, y2, y3, _t);
d1 = distSquare(_v0, _v1);
if (d1 < d2) {
t2 = _t;
d2 = d1;
}
}
d2 = Infinity;
for (var i = 0; i < 32; i++) {
if (interval < EPSILON_NUMERIC) {
break;
}
prev2 = t2 - interval;
next2 = t2 + interval;
_v1[0] = cubicAt(x0, x1, x2, x3, prev2);
_v1[1] = cubicAt(y0, y1, y2, y3, prev2);
d1 = distSquare(_v1, _v0);
if (prev2 >= 0 && d1 < d2) {
t2 = prev2;
d2 = d1;
} else {
_v2[0] = cubicAt(x0, x1, x2, x3, next2);
_v2[1] = cubicAt(y0, y1, y2, y3, next2);
d22 = distSquare(_v2, _v0);
if (next2 <= 1 && d22 < d2) {
t2 = next2;
d2 = d22;
} else {
interval *= 0.5;
}
}
}
if (out2) {
out2[0] = cubicAt(x0, x1, x2, x3, t2);
out2[1] = cubicAt(y0, y1, y2, y3, t2);
}
return mathSqrt$3(d2);
}
function cubicLength(x0, y0, x1, y1, x2, y2, x3, y3, iteration) {
var px = x0;
var py = y0;
var d2 = 0;
var step = 1 / iteration;
for (var i = 1; i <= iteration; i++) {
var t2 = i * step;
var x4 = cubicAt(x0, x1, x2, x3, t2);
var y4 = cubicAt(y0, y1, y2, y3, t2);
var dx = x4 - px;
var dy = y4 - py;
d2 += Math.sqrt(dx * dx + dy * dy);
px = x4;
py = y4;
}
return d2;
}
function quadraticAt$1(p0, p1, p2, t2) {
var onet = 1 - t2;
return onet * (onet * p0 + 2 * t2 * p1) + t2 * t2 * p2;
}
function quadraticDerivativeAt(p0, p1, p2, t2) {
return 2 * ((1 - t2) * (p1 - p0) + t2 * (p2 - p1));
}
function quadraticRootAt(p0, p1, p2, val, roots2) {
var a = p0 - 2 * p1 + p2;
var b2 = 2 * (p1 - p0);
var c2 = p0 - val;
var n2 = 0;
if (isAroundZero$1(a)) {
if (isNotAroundZero$1(b2)) {
var t1 = -c2 / b2;
if (t1 >= 0 && t1 <= 1) {
roots2[n2++] = t1;
}
}
} else {
var disc = b2 * b2 - 4 * a * c2;
if (isAroundZero$1(disc)) {
var t1 = -b2 / (2 * a);
if (t1 >= 0 && t1 <= 1) {
roots2[n2++] = t1;
}
} else if (disc > 0) {
var discSqrt = mathSqrt$3(disc);
var t1 = (-b2 + discSqrt) / (2 * a);
var t2 = (-b2 - discSqrt) / (2 * a);
if (t1 >= 0 && t1 <= 1) {
roots2[n2++] = t1;
}
if (t2 >= 0 && t2 <= 1) {
roots2[n2++] = t2;
}
}
}
return n2;
}
function quadraticExtremum(p0, p1, p2) {
var divider = p0 + p2 - 2 * p1;
if (divider === 0) {
return 0.5;
} else {
return (p0 - p1) / divider;
}
}
function quadraticSubdivide(p0, p1, p2, t2, out2) {
var p01 = (p1 - p0) * t2 + p0;
var p12 = (p2 - p1) * t2 + p1;
var p012 = (p12 - p01) * t2 + p01;
out2[0] = p0;
out2[1] = p01;
out2[2] = p012;
out2[3] = p012;
out2[4] = p12;
out2[5] = p2;
}
function quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, out2) {
var t2;
var interval = 5e-3;
var d2 = Infinity;
_v0[0] = x3;
_v0[1] = y3;
for (var _t = 0; _t < 1; _t += 0.05) {
_v1[0] = quadraticAt$1(x0, x1, x2, _t);
_v1[1] = quadraticAt$1(y0, y1, y2, _t);
var d1 = distSquare(_v0, _v1);
if (d1 < d2) {
t2 = _t;
d2 = d1;
}
}
d2 = Infinity;
for (var i = 0; i < 32; i++) {
if (interval < EPSILON_NUMERIC) {
break;
}
var prev2 = t2 - interval;
var next2 = t2 + interval;
_v1[0] = quadraticAt$1(x0, x1, x2, prev2);
_v1[1] = quadraticAt$1(y0, y1, y2, prev2);
var d1 = distSquare(_v1, _v0);
if (prev2 >= 0 && d1 < d2) {
t2 = prev2;
d2 = d1;
} else {
_v2[0] = quadraticAt$1(x0, x1, x2, next2);
_v2[1] = quadraticAt$1(y0, y1, y2, next2);
var d22 = distSquare(_v2, _v0);
if (next2 <= 1 && d22 < d2) {
t2 = next2;
d2 = d22;
} else {
interval *= 0.5;
}
}
}
if (out2) {
out2[0] = quadraticAt$1(x0, x1, x2, t2);
out2[1] = quadraticAt$1(y0, y1, y2, t2);
}
return mathSqrt$3(d2);
}
function quadraticLength(x0, y0, x1, y1, x2, y2, iteration) {
var px = x0;
var py = y0;
var d2 = 0;
var step = 1 / iteration;
for (var i = 1; i <= iteration; i++) {
var t2 = i * step;
var x3 = quadraticAt$1(x0, x1, x2, t2);
var y3 = quadraticAt$1(y0, y1, y2, t2);
var dx = x3 - px;
var dy = y3 - py;
d2 += Math.sqrt(dx * dx + dy * dy);
px = x3;
py = y3;
}
return d2;
}
var regexp3 = /cubic-bezier\(([0-9,\.e ]+)\)/;
function createCubicEasingFunc(cubicEasingStr) {
var cubic = cubicEasingStr && regexp3.exec(cubicEasingStr);
if (cubic) {
var points2 = cubic[1].split(",");
var a_1 = +trim$1(points2[0]);
var b_1 = +trim$1(points2[1]);
var c_1 = +trim$1(points2[2]);
var d_1 = +trim$1(points2[3]);
if (isNaN(a_1 + b_1 + c_1 + d_1)) {
return;
}
var roots_1 = [];
return function(p2) {
return p2 <= 0 ? 0 : p2 >= 1 ? 1 : cubicRootAt(0, a_1, c_1, 1, p2, roots_1) && cubicAt(0, b_1, d_1, 1, roots_1[0]);
};
}
}
var Clip = function() {
function Clip2(opts) {
this._inited = false;
this._startTime = 0;
this._pausedTime = 0;
this._paused = false;
this._life = opts.life || 1e3;
this._delay = opts.delay || 0;
this.loop = opts.loop || false;
this.onframe = opts.onframe || noop2;
this.ondestroy = opts.ondestroy || noop2;
this.onrestart = opts.onrestart || noop2;
opts.easing && this.setEasing(opts.easing);
}
Clip2.prototype.step = function(globalTime, deltaTime) {
if (!this._inited) {
this._startTime = globalTime + this._delay;
this._inited = true;
}
if (this._paused) {
this._pausedTime += deltaTime;
return;
}
var life = this._life;
var elapsedTime = globalTime - this._startTime - this._pausedTime;
var percent = elapsedTime / life;
if (percent < 0) {
percent = 0;
}
percent = Math.min(percent, 1);
var easingFunc = this.easingFunc;
var schedule = easingFunc ? easingFunc(percent) : percent;
this.onframe(schedule);
if (percent === 1) {
if (this.loop) {
var remainder = elapsedTime % life;
this._startTime = globalTime - remainder;
this._pausedTime = 0;
this.onrestart();
} else {
return true;
}
}
return false;
};
Clip2.prototype.pause = function() {
this._paused = true;
};
Clip2.prototype.resume = function() {
this._paused = false;
};
Clip2.prototype.setEasing = function(easing) {
this.easing = easing;
this.easingFunc = isFunction$1(easing) ? easing : easingFuncs[easing] || createCubicEasingFunc(easing);
};
return Clip2;
}();
var Entry = /* @__PURE__ */ function() {
function Entry2(val) {
this.value = val;
}
return Entry2;
}();
var LinkedList = function() {
function LinkedList2() {
this._len = 0;
}
LinkedList2.prototype.insert = function(val) {
var entry = new Entry(val);
this.insertEntry(entry);
return entry;
};
LinkedList2.prototype.insertEntry = function(entry) {
if (!this.head) {
this.head = this.tail = entry;
} else {
this.tail.next = entry;
entry.prev = this.tail;
entry.next = null;
this.tail = entry;
}
this._len++;
};
LinkedList2.prototype.remove = function(entry) {
var prev2 = entry.prev;
var next2 = entry.next;
if (prev2) {
prev2.next = next2;
} else {
this.head = next2;
}
if (next2) {
next2.prev = prev2;
} else {
this.tail = prev2;
}
entry.next = entry.prev = null;
this._len--;
};
LinkedList2.prototype.len = function() {
return this._len;
};
LinkedList2.prototype.clear = function() {
this.head = this.tail = null;
this._len = 0;
};
return LinkedList2;
}();
var LRU = function() {
function LRU2(maxSize) {
this._list = new LinkedList();
this._maxSize = 10;
this._map = {};
this._maxSize = maxSize;
}
LRU2.prototype.put = function(key, value) {
var list = this._list;
var map2 = this._map;
var removed = null;
if (map2[key] == null) {
var len2 = list.len();
var entry = this._lastRemovedEntry;
if (len2 >= this._maxSize && len2 > 0) {
var leastUsedEntry = list.head;
list.remove(leastUsedEntry);
delete map2[leastUsedEntry.key];
removed = leastUsedEntry.value;
this._lastRemovedEntry = leastUsedEntry;
}
if (entry) {
entry.value = value;
} else {
entry = new Entry(value);
}
entry.key = key;
list.insertEntry(entry);
map2[key] = entry;
}
return removed;
};
LRU2.prototype.get = function(key) {
var entry = this._map[key];
var list = this._list;
if (entry != null) {
if (entry !== list.tail) {
list.remove(entry);
list.insertEntry(entry);
}
return entry.value;
}
};
LRU2.prototype.clear = function() {
this._list.clear();
this._map = {};
};
LRU2.prototype.len = function() {
return this._list.len();
};
return LRU2;
}();
var kCSSColorTable = {
"transparent": [0, 0, 0, 0],
"aliceblue": [240, 248, 255, 1],
"antiquewhite": [250, 235, 215, 1],
"aqua": [0, 255, 255, 1],
"aquamarine": [127, 255, 212, 1],
"azure": [240, 255, 255, 1],
"beige": [245, 245, 220, 1],
"bisque": [255, 228, 196, 1],
"black": [0, 0, 0, 1],
"blanchedalmond": [255, 235, 205, 1],
"blue": [0, 0, 255, 1],
"blueviolet": [138, 43, 226, 1],
"brown": [165, 42, 42, 1],
"burlywood": [222, 184, 135, 1],
"cadetblue": [95, 158, 160, 1],
"chartreuse": [127, 255, 0, 1],
"chocolate": [210, 105, 30, 1],
"coral": [255, 127, 80, 1],
"cornflowerblue": [100, 149, 237, 1],
"cornsilk": [255, 248, 220, 1],
"crimson": [220, 20, 60, 1],
"cyan": [0, 255, 255, 1],
"darkblue": [0, 0, 139, 1],
"darkcyan": [0, 139, 139, 1],
"darkgoldenrod": [184, 134, 11, 1],
"darkgray": [169, 169, 169, 1],
"darkgreen": [0, 100, 0, 1],
"darkgrey": [169, 169, 169, 1],
"darkkhaki": [189, 183, 107, 1],
"darkmagenta": [139, 0, 139, 1],
"darkolivegreen": [85, 107, 47, 1],
"darkorange": [255, 140, 0, 1],
"darkorchid": [153, 50, 204, 1],
"darkred": [139, 0, 0, 1],
"darksalmon": [233, 150, 122, 1],
"darkseagreen": [143, 188, 143, 1],
"darkslateblue": [72, 61, 139, 1],
"darkslategray": [47, 79, 79, 1],
"darkslategrey": [47, 79, 79, 1],
"darkturquoise": [0, 206, 209, 1],
"darkviolet": [148, 0, 211, 1],
"deeppink": [255, 20, 147, 1],
"deepskyblue": [0, 191, 255, 1],
"dimgray": [105, 105, 105, 1],
"dimgrey": [105, 105, 105, 1],
"dodgerblue": [30, 144, 255, 1],
"firebrick": [178, 34, 34, 1],
"floralwhite": [255, 250, 240, 1],
"forestgreen": [34, 139, 34, 1],
"fuchsia": [255, 0, 255, 1],
"gainsboro": [220, 220, 220, 1],
"ghostwhite": [248, 248, 255, 1],
"gold": [255, 215, 0, 1],
"goldenrod": [218, 165, 32, 1],
"gray": [128, 128, 128, 1],
"green": [0, 128, 0, 1],
"greenyellow": [173, 255, 47, 1],
"grey": [128, 128, 128, 1],
"honeydew": [240, 255, 240, 1],
"hotpink": [255, 105, 180, 1],
"indianred": [205, 92, 92, 1],
"indigo": [75, 0, 130, 1],
"ivory": [255, 255, 240, 1],
"khaki": [240, 230, 140, 1],
"lavender": [230, 230, 250, 1],
"lavenderblush": [255, 240, 245, 1],
"lawngreen": [124, 252, 0, 1],
"lemonchiffon": [255, 250, 205, 1],
"lightblue": [173, 216, 230, 1],
"lightcoral": [240, 128, 128, 1],
"lightcyan": [224, 255, 255, 1],
"lightgoldenrodyellow": [250, 250, 210, 1],
"lightgray": [211, 211, 211, 1],
"lightgreen": [144, 238, 144, 1],
"lightgrey": [211, 211, 211, 1],
"lightpink": [255, 182, 193, 1],
"lightsalmon": [255, 160, 122, 1],
"lightseagreen": [32, 178, 170, 1],
"lightskyblue": [135, 206, 250, 1],
"lightslategray": [119, 136, 153, 1],
"lightslategrey": [119, 136, 153, 1],
"lightsteelblue": [176, 196, 222, 1],
"lightyellow": [255, 255, 224, 1],
"lime": [0, 255, 0, 1],
"limegreen": [50, 205, 50, 1],
"linen": [250, 240, 230, 1],
"magenta": [255, 0, 255, 1],
"maroon": [128, 0, 0, 1],
"mediumaquamarine": [102, 205, 170, 1],
"mediumblue": [0, 0, 205, 1],
"mediumorchid": [186, 85, 211, 1],
"mediumpurple": [147, 112, 219, 1],
"mediumseagreen": [60, 179, 113, 1],
"mediumslateblue": [123, 104, 238, 1],
"mediumspringgreen": [0, 250, 154, 1],
"mediumturquoise": [72, 209, 204, 1],
"mediumvioletred": [199, 21, 133, 1],
"midnightblue": [25, 25, 112, 1],
"mintcream": [245, 255, 250, 1],
"mistyrose": [255, 228, 225, 1],
"moccasin": [255, 228, 181, 1],
"navajowhite": [255, 222, 173, 1],
"navy": [0, 0, 128, 1],
"oldlace": [253, 245, 230, 1],
"olive": [128, 128, 0, 1],
"olivedrab": [107, 142, 35, 1],
"orange": [255, 165, 0, 1],
"orangered": [255, 69, 0, 1],
"orchid": [218, 112, 214, 1],
"palegoldenrod": [238, 232, 170, 1],
"palegreen": [152, 251, 152, 1],
"paleturquoise": [175, 238, 238, 1],
"palevioletred": [219, 112, 147, 1],
"papayawhip": [255, 239, 213, 1],
"peachpuff": [255, 218, 185, 1],
"peru": [205, 133, 63, 1],
"pink": [255, 192, 203, 1],
"plum": [221, 160, 221, 1],
"powderblue": [176, 224, 230, 1],
"purple": [128, 0, 128, 1],
"red": [255, 0, 0, 1],
"rosybrown": [188, 143, 143, 1],
"royalblue": [65, 105, 225, 1],
"saddlebrown": [139, 69, 19, 1],
"salmon": [250, 128, 114, 1],
"sandybrown": [244, 164, 96, 1],
"seagreen": [46, 139, 87, 1],
"seashell": [255, 245, 238, 1],
"sienna": [160, 82, 45, 1],
"silver": [192, 192, 192, 1],
"skyblue": [135, 206, 235, 1],
"slateblue": [106, 90, 205, 1],
"slategray": [112, 128, 144, 1],
"slategrey": [112, 128, 144, 1],
"snow": [255, 250, 250, 1],
"springgreen": [0, 255, 127, 1],
"steelblue": [70, 130, 180, 1],
"tan": [210, 180, 140, 1],
"teal": [0, 128, 128, 1],
"thistle": [216, 191, 216, 1],
"tomato": [255, 99, 71, 1],
"turquoise": [64, 224, 208, 1],
"violet": [238, 130, 238, 1],
"wheat": [245, 222, 179, 1],
"white": [255, 255, 255, 1],
"whitesmoke": [245, 245, 245, 1],
"yellow": [255, 255, 0, 1],
"yellowgreen": [154, 205, 50, 1]
};
function clampCssByte(i) {
i = Math.round(i);
return i < 0 ? 0 : i > 255 ? 255 : i;
}
function clampCssAngle(i) {
i = Math.round(i);
return i < 0 ? 0 : i > 360 ? 360 : i;
}
function clampCssFloat(f2) {
return f2 < 0 ? 0 : f2 > 1 ? 1 : f2;
}
function parseCssInt(val) {
var str = val;
if (str.length && str.charAt(str.length - 1) === "%") {
return clampCssByte(parseFloat(str) / 100 * 255);
}
return clampCssByte(parseInt(str, 10));
}
function parseCssFloat(val) {
var str = val;
if (str.length && str.charAt(str.length - 1) === "%") {
return clampCssFloat(parseFloat(str) / 100);
}
return clampCssFloat(parseFloat(str));
}
function cssHueToRgb(m1, m2, h2) {
if (h2 < 0) {
h2 += 1;
} else if (h2 > 1) {
h2 -= 1;
}
if (h2 * 6 < 1) {
return m1 + (m2 - m1) * h2 * 6;
}
if (h2 * 2 < 1) {
return m2;
}
if (h2 * 3 < 2) {
return m1 + (m2 - m1) * (2 / 3 - h2) * 6;
}
return m1;
}
function lerpNumber(a, b2, p2) {
return a + (b2 - a) * p2;
}
function setRgba(out2, r2, g2, b2, a) {
out2[0] = r2;
out2[1] = g2;
out2[2] = b2;
out2[3] = a;
return out2;
}
function copyRgba(out2, a) {
out2[0] = a[0];
out2[1] = a[1];
out2[2] = a[2];
out2[3] = a[3];
return out2;
}
var colorCache = new LRU(20);
var lastRemovedArr = null;
function putToCache(colorStr, rgbaArr) {
if (lastRemovedArr) {
copyRgba(lastRemovedArr, rgbaArr);
}
lastRemovedArr = colorCache.put(colorStr, lastRemovedArr || rgbaArr.slice());
}
function parse$1(colorStr, rgbaArr) {
if (!colorStr) {
return;
}
rgbaArr = rgbaArr || [];
var cached2 = colorCache.get(colorStr);
if (cached2) {
return copyRgba(rgbaArr, cached2);
}
colorStr = colorStr + "";
var str = colorStr.replace(/ /g, "").toLowerCase();
if (str in kCSSColorTable) {
copyRgba(rgbaArr, kCSSColorTable[str]);
putToCache(colorStr, rgbaArr);
return rgbaArr;
}
var strLen = str.length;
if (str.charAt(0) === "#") {
if (strLen === 4 || strLen === 5) {
var iv = parseInt(str.slice(1, 4), 16);
if (!(iv >= 0 && iv <= 4095)) {
setRgba(rgbaArr, 0, 0, 0, 1);
return;
}
setRgba(rgbaArr, (iv & 3840) >> 4 | (iv & 3840) >> 8, iv & 240 | (iv & 240) >> 4, iv & 15 | (iv & 15) << 4, strLen === 5 ? parseInt(str.slice(4), 16) / 15 : 1);
putToCache(colorStr, rgbaArr);
return rgbaArr;
} else if (strLen === 7 || strLen === 9) {
var iv = parseInt(str.slice(1, 7), 16);
if (!(iv >= 0 && iv <= 16777215)) {
setRgba(rgbaArr, 0, 0, 0, 1);
return;
}
setRgba(rgbaArr, (iv & 16711680) >> 16, (iv & 65280) >> 8, iv & 255, strLen === 9 ? parseInt(str.slice(7), 16) / 255 : 1);
putToCache(colorStr, rgbaArr);
return rgbaArr;
}
return;
}
var op = str.indexOf("(");
var ep = str.indexOf(")");
if (op !== -1 && ep + 1 === strLen) {
var fname = str.substr(0, op);
var params = str.substr(op + 1, ep - (op + 1)).split(",");
var alpha = 1;
switch (fname) {
case "rgba":
if (params.length !== 4) {
return params.length === 3 ? setRgba(rgbaArr, +params[0], +params[1], +params[2], 1) : setRgba(rgbaArr, 0, 0, 0, 1);
}
alpha = parseCssFloat(params.pop());
case "rgb":
if (params.length >= 3) {
setRgba(rgbaArr, parseCssInt(params[0]), parseCssInt(params[1]), parseCssInt(params[2]), params.length === 3 ? alpha : parseCssFloat(params[3]));
putToCache(colorStr, rgbaArr);
return rgbaArr;
} else {
setRgba(rgbaArr, 0, 0, 0, 1);
return;
}
case "hsla":
if (params.length !== 4) {
setRgba(rgbaArr, 0, 0, 0, 1);
return;
}
params[3] = parseCssFloat(params[3]);
hsla2rgba(params, rgbaArr);
putToCache(colorStr, rgbaArr);
return rgbaArr;
case "hsl":
if (params.length !== 3) {
setRgba(rgbaArr, 0, 0, 0, 1);
return;
}
hsla2rgba(params, rgbaArr);
putToCache(colorStr, rgbaArr);
return rgbaArr;
default:
return;
}
}
setRgba(rgbaArr, 0, 0, 0, 1);
return;
}
function hsla2rgba(hsla, rgba) {
var h2 = (parseFloat(hsla[0]) % 360 + 360) % 360 / 360;
var s = parseCssFloat(hsla[1]);
var l2 = parseCssFloat(hsla[2]);
var m2 = l2 <= 0.5 ? l2 * (s + 1) : l2 + s - l2 * s;
var m1 = l2 * 2 - m2;
rgba = rgba || [];
setRgba(rgba, clampCssByte(cssHueToRgb(m1, m2, h2 + 1 / 3) * 255), clampCssByte(cssHueToRgb(m1, m2, h2) * 255), clampCssByte(cssHueToRgb(m1, m2, h2 - 1 / 3) * 255), 1);
if (hsla.length === 4) {
rgba[3] = hsla[3];
}
return rgba;
}
function rgba2hsla(rgba) {
if (!rgba) {
return;
}
var R2 = rgba[0] / 255;
var G2 = rgba[1] / 255;
var B2 = rgba[2] / 255;
var vMin = Math.min(R2, G2, B2);
var vMax = Math.max(R2, G2, B2);
var delta = vMax - vMin;
var L2 = (vMax + vMin) / 2;
var H2;
var S2;
if (delta === 0) {
H2 = 0;
S2 = 0;
} else {
if (L2 < 0.5) {
S2 = delta / (vMax + vMin);
} else {
S2 = delta / (2 - vMax - vMin);
}
var deltaR = ((vMax - R2) / 6 + delta / 2) / delta;
var deltaG = ((vMax - G2) / 6 + delta / 2) / delta;
var deltaB = ((vMax - B2) / 6 + delta / 2) / delta;
if (R2 === vMax) {
H2 = deltaB - deltaG;
} else if (G2 === vMax) {
H2 = 1 / 3 + deltaR - deltaB;
} else if (B2 === vMax) {
H2 = 2 / 3 + deltaG - deltaR;
}
if (H2 < 0) {
H2 += 1;
}
if (H2 > 1) {
H2 -= 1;
}
}
var hsla = [H2 * 360, S2, L2];
if (rgba[3] != null) {
hsla.push(rgba[3]);
}
return hsla;
}
function lift(color2, level) {
var colorArr = parse$1(color2);
if (colorArr) {
for (var i = 0; i < 3; i++) {
if (level < 0) {
colorArr[i] = colorArr[i] * (1 - level) | 0;
} else {
colorArr[i] = (255 - colorArr[i]) * level + colorArr[i] | 0;
}
if (colorArr[i] > 255) {
colorArr[i] = 255;
} else if (colorArr[i] < 0) {
colorArr[i] = 0;
}
}
return stringify(colorArr, colorArr.length === 4 ? "rgba" : "rgb");
}
}
function toHex(color2) {
var colorArr = parse$1(color2);
if (colorArr) {
return ((1 << 24) + (colorArr[0] << 16) + (colorArr[1] << 8) + +colorArr[2]).toString(16).slice(1);
}
}
function fastLerp(normalizedValue, colors, out2) {
if (!(colors && colors.length) || !(normalizedValue >= 0 && normalizedValue <= 1)) {
return;
}
out2 = out2 || [];
var value = normalizedValue * (colors.length - 1);
var leftIndex = Math.floor(value);
var rightIndex = Math.ceil(value);
var leftColor = colors[leftIndex];
var rightColor = colors[rightIndex];
var dv = value - leftIndex;
out2[0] = clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv));
out2[1] = clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv));
out2[2] = clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv));
out2[3] = clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv));
return out2;
}
var fastMapToColor = fastLerp;
function lerp(normalizedValue, colors, fullOutput) {
if (!(colors && colors.length) || !(normalizedValue >= 0 && normalizedValue <= 1)) {
return;
}
var value = normalizedValue * (colors.length - 1);
var leftIndex = Math.floor(value);
var rightIndex = Math.ceil(value);
var leftColor = parse$1(colors[leftIndex]);
var rightColor = parse$1(colors[rightIndex]);
var dv = value - leftIndex;
var color2 = stringify([
clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv)),
clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv)),
clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv)),
clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv))
], "rgba");
return fullOutput ? {
color: color2,
leftIndex,
rightIndex,
value
} : color2;
}
var mapToColor = lerp;
function modifyHSL(color2, h2, s, l2) {
var colorArr = parse$1(color2);
if (color2) {
colorArr = rgba2hsla(colorArr);
h2 != null && (colorArr[0] = clampCssAngle(h2));
s != null && (colorArr[1] = parseCssFloat(s));
l2 != null && (colorArr[2] = parseCssFloat(l2));
return stringify(hsla2rgba(colorArr), "rgba");
}
}
function modifyAlpha(color2, alpha) {
var colorArr = parse$1(color2);
if (colorArr && alpha != null) {
colorArr[3] = clampCssFloat(alpha);
return stringify(colorArr, "rgba");
}
}
function stringify(arrColor, type4) {
if (!arrColor || !arrColor.length) {
return;
}
var colorStr = arrColor[0] + "," + arrColor[1] + "," + arrColor[2];
if (type4 === "rgba" || type4 === "hsva" || type4 === "hsla") {
colorStr += "," + arrColor[3];
}
return type4 + "(" + colorStr + ")";
}
function lum(color2, backgroundLum) {
var arr = parse$1(color2);
return arr ? (0.299 * arr[0] + 0.587 * arr[1] + 0.114 * arr[2]) * arr[3] / 255 + (1 - arr[3]) * backgroundLum : 0;
}
function random() {
return stringify([
Math.round(Math.random() * 255),
Math.round(Math.random() * 255),
Math.round(Math.random() * 255)
], "rgb");
}
var liftedColorCache = new LRU(100);
function liftColor(color2) {
if (isString$1(color2)) {
var liftedColor = liftedColorCache.get(color2);
if (!liftedColor) {
liftedColor = lift(color2, -0.1);
liftedColorCache.put(color2, liftedColor);
}
return liftedColor;
} else if (isGradientObject(color2)) {
var ret = extend({}, color2);
ret.colorStops = map$1(color2.colorStops, function(stop2) {
return {
offset: stop2.offset,
color: lift(stop2.color, -0.1)
};
});
return ret;
}
return color2;
}
const color = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
fastLerp,
fastMapToColor,
lerp,
lift,
liftColor,
lum,
mapToColor,
modifyAlpha,
modifyHSL,
parse: parse$1,
random,
stringify,
toHex
}, Symbol.toStringTag, { value: "Module" }));
var mathRound$1 = Math.round;
function normalizeColor(color2) {
var opacity;
if (!color2 || color2 === "transparent") {
color2 = "none";
} else if (typeof color2 === "string" && color2.indexOf("rgba") > -1) {
var arr = parse$1(color2);
if (arr) {
color2 = "rgb(" + arr[0] + "," + arr[1] + "," + arr[2] + ")";
opacity = arr[3];
}
}
return {
color: color2,
opacity: opacity == null ? 1 : opacity
};
}
var EPSILON$3 = 1e-4;
function isAroundZero(transform2) {
return transform2 < EPSILON$3 && transform2 > -EPSILON$3;
}
function round3(transform2) {
return mathRound$1(transform2 * 1e3) / 1e3;
}
function round4(transform2) {
return mathRound$1(transform2 * 1e4) / 1e4;
}
function getMatrixStr(m2) {
return "matrix(" + round3(m2[0]) + "," + round3(m2[1]) + "," + round3(m2[2]) + "," + round3(m2[3]) + "," + round4(m2[4]) + "," + round4(m2[5]) + ")";
}
var TEXT_ALIGN_TO_ANCHOR = {
left: "start",
right: "end",
center: "middle",
middle: "middle"
};
function adjustTextY$1(y2, lineHeight, textBaseline) {
if (textBaseline === "top") {
y2 += lineHeight / 2;
} else if (textBaseline === "bottom") {
y2 -= lineHeight / 2;
}
return y2;
}
function hasShadow(style2) {
return style2 && (style2.shadowBlur || style2.shadowOffsetX || style2.shadowOffsetY);
}
function getShadowKey(displayable) {
var style2 = displayable.style;
var globalScale = displayable.getGlobalScale();
return [
style2.shadowColor,
(style2.shadowBlur || 0).toFixed(2),
(style2.shadowOffsetX || 0).toFixed(2),
(style2.shadowOffsetY || 0).toFixed(2),
globalScale[0],
globalScale[1]
].join(",");
}
function isImagePattern(val) {
return val && !!val.image;
}
function isSVGPattern(val) {
return val && !!val.svgElement;
}
function isPattern(val) {
return isImagePattern(val) || isSVGPattern(val);
}
function isLinearGradient(val) {
return val.type === "linear";
}
function isRadialGradient(val) {
return val.type === "radial";
}
function isGradient(val) {
return val && (val.type === "linear" || val.type === "radial");
}
function getIdURL(id2) {
return "url(#" + id2 + ")";
}
function getPathPrecision(el2) {
var scale2 = el2.getGlobalScale();
var size = Math.max(scale2[0], scale2[1]);
return Math.max(Math.ceil(Math.log(size) / Math.log(10)), 1);
}
function getSRTTransformString(transform2) {
var x2 = transform2.x || 0;
var y2 = transform2.y || 0;
var rotation = (transform2.rotation || 0) * RADIAN_TO_DEGREE;
var scaleX = retrieve2(transform2.scaleX, 1);
var scaleY = retrieve2(transform2.scaleY, 1);
var skewX = transform2.skewX || 0;
var skewY = transform2.skewY || 0;
var res = [];
if (x2 || y2) {
res.push("translate(" + x2 + "px," + y2 + "px)");
}
if (rotation) {
res.push("rotate(" + rotation + ")");
}
if (scaleX !== 1 || scaleY !== 1) {
res.push("scale(" + scaleX + "," + scaleY + ")");
}
if (skewX || skewY) {
res.push("skew(" + mathRound$1(skewX * RADIAN_TO_DEGREE) + "deg, " + mathRound$1(skewY * RADIAN_TO_DEGREE) + "deg)");
}
return res.join(" ");
}
var encodeBase64 = function() {
if (env.hasGlobalWindow && isFunction$1(window.btoa)) {
return function(str) {
return window.btoa(unescape(encodeURIComponent(str)));
};
}
if (typeof Buffer !== "undefined") {
return function(str) {
return Buffer.from(str).toString("base64");
};
}
return function(str) {
return null;
};
}();
var arraySlice = Array.prototype.slice;
function interpolateNumber$1(p0, p1, percent) {
return (p1 - p0) * percent + p0;
}
function interpolate1DArray(out2, p0, p1, percent) {
var len2 = p0.length;
for (var i = 0; i < len2; i++) {
out2[i] = interpolateNumber$1(p0[i], p1[i], percent);
}
return out2;
}
function interpolate2DArray(out2, p0, p1, percent) {
var len2 = p0.length;
var len22 = len2 && p0[0].length;
for (var i = 0; i < len2; i++) {
if (!out2[i]) {
out2[i] = [];
}
for (var j = 0; j < len22; j++) {
out2[i][j] = interpolateNumber$1(p0[i][j], p1[i][j], percent);
}
}
return out2;
}
function add1DArray(out2, p0, p1, sign) {
var len2 = p0.length;
for (var i = 0; i < len2; i++) {
out2[i] = p0[i] + p1[i] * sign;
}
return out2;
}
function add2DArray(out2, p0, p1, sign) {
var len2 = p0.length;
var len22 = len2 && p0[0].length;
for (var i = 0; i < len2; i++) {
if (!out2[i]) {
out2[i] = [];
}
for (var j = 0; j < len22; j++) {
out2[i][j] = p0[i][j] + p1[i][j] * sign;
}
}
return out2;
}
function fillColorStops(val0, val1) {
var len0 = val0.length;
var len1 = val1.length;
var shorterArr = len0 > len1 ? val1 : val0;
var shorterLen = Math.min(len0, len1);
var last = shorterArr[shorterLen - 1] || { color: [0, 0, 0, 0], offset: 0 };
for (var i = shorterLen; i < Math.max(len0, len1); i++) {
shorterArr.push({
offset: last.offset,
color: last.color.slice()
});
}
}
function fillArray(val0, val1, arrDim) {
var arr0 = val0;
var arr1 = val1;
if (!arr0.push || !arr1.push) {
return;
}
var arr0Len = arr0.length;
var arr1Len = arr1.length;
if (arr0Len !== arr1Len) {
var isPreviousLarger = arr0Len > arr1Len;
if (isPreviousLarger) {
arr0.length = arr1Len;
} else {
for (var i = arr0Len; i < arr1Len; i++) {
arr0.push(arrDim === 1 ? arr1[i] : arraySlice.call(arr1[i]));
}
}
}
var len2 = arr0[0] && arr0[0].length;
for (var i = 0; i < arr0.length; i++) {
if (arrDim === 1) {
if (isNaN(arr0[i])) {
arr0[i] = arr1[i];
}
} else {
for (var j = 0; j < len2; j++) {
if (isNaN(arr0[i][j])) {
arr0[i][j] = arr1[i][j];
}
}
}
}
}
function cloneValue(value) {
if (isArrayLike(value)) {
var len2 = value.length;
if (isArrayLike(value[0])) {
var ret = [];
for (var i = 0; i < len2; i++) {
ret.push(arraySlice.call(value[i]));
}
return ret;
}
return arraySlice.call(value);
}
return value;
}
function rgba2String(rgba) {
rgba[0] = Math.floor(rgba[0]) || 0;
rgba[1] = Math.floor(rgba[1]) || 0;
rgba[2] = Math.floor(rgba[2]) || 0;
rgba[3] = rgba[3] == null ? 1 : rgba[3];
return "rgba(" + rgba.join(",") + ")";
}
function guessArrayDim(value) {
return isArrayLike(value && value[0]) ? 2 : 1;
}
var VALUE_TYPE_NUMBER = 0;
var VALUE_TYPE_1D_ARRAY = 1;
var VALUE_TYPE_2D_ARRAY = 2;
var VALUE_TYPE_COLOR = 3;
var VALUE_TYPE_LINEAR_GRADIENT = 4;
var VALUE_TYPE_RADIAL_GRADIENT = 5;
var VALUE_TYPE_UNKOWN = 6;
function isGradientValueType(valType) {
return valType === VALUE_TYPE_LINEAR_GRADIENT || valType === VALUE_TYPE_RADIAL_GRADIENT;
}
function isArrayValueType(valType) {
return valType === VALUE_TYPE_1D_ARRAY || valType === VALUE_TYPE_2D_ARRAY;
}
var tmpRgba = [0, 0, 0, 0];
var Track = function() {
function Track2(propName) {
this.keyframes = [];
this.discrete = false;
this._invalid = false;
this._needsSort = false;
this._lastFr = 0;
this._lastFrP = 0;
this.propName = propName;
}
Track2.prototype.isFinished = function() {
return this._finished;
};
Track2.prototype.setFinished = function() {
this._finished = true;
if (this._additiveTrack) {
this._additiveTrack.setFinished();
}
};
Track2.prototype.needsAnimate = function() {
return this.keyframes.length >= 1;
};
Track2.prototype.getAdditiveTrack = function() {
return this._additiveTrack;
};
Track2.prototype.addKeyframe = function(time2, rawValue, easing) {
this._needsSort = true;
var keyframes = this.keyframes;
var len2 = keyframes.length;
var discrete = false;
var valType = VALUE_TYPE_UNKOWN;
var value = rawValue;
if (isArrayLike(rawValue)) {
var arrayDim = guessArrayDim(rawValue);
valType = arrayDim;
if (arrayDim === 1 && !isNumber(rawValue[0]) || arrayDim === 2 && !isNumber(rawValue[0][0])) {
discrete = true;
}
} else {
if (isNumber(rawValue) && !eqNaN(rawValue)) {
valType = VALUE_TYPE_NUMBER;
} else if (isString$1(rawValue)) {
if (!isNaN(+rawValue)) {
valType = VALUE_TYPE_NUMBER;
} else {
var colorArray = parse$1(rawValue);
if (colorArray) {
value = colorArray;
valType = VALUE_TYPE_COLOR;
}
}
} else if (isGradientObject(rawValue)) {
var parsedGradient = extend({}, value);
parsedGradient.colorStops = map$1(rawValue.colorStops, function(colorStop) {
return {
offset: colorStop.offset,
color: parse$1(colorStop.color)
};
});
if (isLinearGradient(rawValue)) {
valType = VALUE_TYPE_LINEAR_GRADIENT;
} else if (isRadialGradient(rawValue)) {
valType = VALUE_TYPE_RADIAL_GRADIENT;
}
value = parsedGradient;
}
}
if (len2 === 0) {
this.valType = valType;
} else if (valType !== this.valType || valType === VALUE_TYPE_UNKOWN) {
discrete = true;
}
this.discrete = this.discrete || discrete;
var kf = {
time: time2,
value,
rawValue,
percent: 0
};
if (easing) {
kf.easing = easing;
kf.easingFunc = isFunction$1(easing) ? easing : easingFuncs[easing] || createCubicEasingFunc(easing);
}
keyframes.push(kf);
return kf;
};
Track2.prototype.prepare = function(maxTime, additiveTrack) {
var kfs = this.keyframes;
if (this._needsSort) {
kfs.sort(function(a, b2) {
return a.time - b2.time;
});
}
var valType = this.valType;
var kfsLen = kfs.length;
var lastKf = kfs[kfsLen - 1];
var isDiscrete = this.discrete;
var isArr = isArrayValueType(valType);
var isGradient2 = isGradientValueType(valType);
for (var i = 0; i < kfsLen; i++) {
var kf = kfs[i];
var value = kf.value;
var lastValue = lastKf.value;
kf.percent = kf.time / maxTime;
if (!isDiscrete) {
if (isArr && i !== kfsLen - 1) {
fillArray(value, lastValue, valType);
} else if (isGradient2) {
fillColorStops(value.colorStops, lastValue.colorStops);
}
}
}
if (!isDiscrete && valType !== VALUE_TYPE_RADIAL_GRADIENT && additiveTrack && this.needsAnimate() && additiveTrack.needsAnimate() && valType === additiveTrack.valType && !additiveTrack._finished) {
this._additiveTrack = additiveTrack;
var startValue = kfs[0].value;
for (var i = 0; i < kfsLen; i++) {
if (valType === VALUE_TYPE_NUMBER) {
kfs[i].additiveValue = kfs[i].value - startValue;
} else if (valType === VALUE_TYPE_COLOR) {
kfs[i].additiveValue = add1DArray([], kfs[i].value, startValue, -1);
} else if (isArrayValueType(valType)) {
kfs[i].additiveValue = valType === VALUE_TYPE_1D_ARRAY ? add1DArray([], kfs[i].value, startValue, -1) : add2DArray([], kfs[i].value, startValue, -1);
}
}
}
};
Track2.prototype.step = function(target, percent) {
if (this._finished) {
return;
}
if (this._additiveTrack && this._additiveTrack._finished) {
this._additiveTrack = null;
}
var isAdditive = this._additiveTrack != null;
var valueKey = isAdditive ? "additiveValue" : "value";
var valType = this.valType;
var keyframes = this.keyframes;
var kfsNum = keyframes.length;
var propName = this.propName;
var isValueColor = valType === VALUE_TYPE_COLOR;
var frameIdx;
var lastFrame = this._lastFr;
var mathMin2 = Math.min;
var frame;
var nextFrame;
if (kfsNum === 1) {
frame = nextFrame = keyframes[0];
} else {
if (percent < 0) {
frameIdx = 0;
} else if (percent < this._lastFrP) {
var start2 = mathMin2(lastFrame + 1, kfsNum - 1);
for (frameIdx = start2; frameIdx >= 0; frameIdx--) {
if (keyframes[frameIdx].percent <= percent) {
break;
}
}
frameIdx = mathMin2(frameIdx, kfsNum - 2);
} else {
for (frameIdx = lastFrame; frameIdx < kfsNum; frameIdx++) {
if (keyframes[frameIdx].percent > percent) {
break;
}
}
frameIdx = mathMin2(frameIdx - 1, kfsNum - 2);
}
nextFrame = keyframes[frameIdx + 1];
frame = keyframes[frameIdx];
}
if (!(frame && nextFrame)) {
return;
}
this._lastFr = frameIdx;
this._lastFrP = percent;
var interval = nextFrame.percent - frame.percent;
var w2 = interval === 0 ? 1 : mathMin2((percent - frame.percent) / interval, 1);
if (nextFrame.easingFunc) {
w2 = nextFrame.easingFunc(w2);
}
var targetArr = isAdditive ? this._additiveValue : isValueColor ? tmpRgba : target[propName];
if ((isArrayValueType(valType) || isValueColor) && !targetArr) {
targetArr = this._additiveValue = [];
}
if (this.discrete) {
target[propName] = w2 < 1 ? frame.rawValue : nextFrame.rawValue;
} else if (isArrayValueType(valType)) {
valType === VALUE_TYPE_1D_ARRAY ? interpolate1DArray(targetArr, frame[valueKey], nextFrame[valueKey], w2) : interpolate2DArray(targetArr, frame[valueKey], nextFrame[valueKey], w2);
} else if (isGradientValueType(valType)) {
var val = frame[valueKey];
var nextVal_1 = nextFrame[valueKey];
var isLinearGradient_1 = valType === VALUE_TYPE_LINEAR_GRADIENT;
target[propName] = {
type: isLinearGradient_1 ? "linear" : "radial",
x: interpolateNumber$1(val.x, nextVal_1.x, w2),
y: interpolateNumber$1(val.y, nextVal_1.y, w2),
colorStops: map$1(val.colorStops, function(colorStop, idx) {
var nextColorStop = nextVal_1.colorStops[idx];
return {
offset: interpolateNumber$1(colorStop.offset, nextColorStop.offset, w2),
color: rgba2String(interpolate1DArray([], colorStop.color, nextColorStop.color, w2))
};
}),
global: nextVal_1.global
};
if (isLinearGradient_1) {
target[propName].x2 = interpolateNumber$1(val.x2, nextVal_1.x2, w2);
target[propName].y2 = interpolateNumber$1(val.y2, nextVal_1.y2, w2);
} else {
target[propName].r = interpolateNumber$1(val.r, nextVal_1.r, w2);
}
} else if (isValueColor) {
interpolate1DArray(targetArr, frame[valueKey], nextFrame[valueKey], w2);
if (!isAdditive) {
target[propName] = rgba2String(targetArr);
}
} else {
var value = interpolateNumber$1(frame[valueKey], nextFrame[valueKey], w2);
if (isAdditive) {
this._additiveValue = value;
} else {
target[propName] = value;
}
}
if (isAdditive) {
this._addToTarget(target);
}
};
Track2.prototype._addToTarget = function(target) {
var valType = this.valType;
var propName = this.propName;
var additiveValue = this._additiveValue;
if (valType === VALUE_TYPE_NUMBER) {
target[propName] = target[propName] + additiveValue;
} else if (valType === VALUE_TYPE_COLOR) {
parse$1(target[propName], tmpRgba);
add1DArray(tmpRgba, tmpRgba, additiveValue, 1);
target[propName] = rgba2String(tmpRgba);
} else if (valType === VALUE_TYPE_1D_ARRAY) {
add1DArray(target[propName], target[propName], additiveValue, 1);
} else if (valType === VALUE_TYPE_2D_ARRAY) {
add2DArray(target[propName], target[propName], additiveValue, 1);
}
};
return Track2;
}();
var Animator = function() {
function Animator2(target, loop, allowDiscreteAnimation, additiveTo) {
this._tracks = {};
this._trackKeys = [];
this._maxTime = 0;
this._started = 0;
this._clip = null;
this._target = target;
this._loop = loop;
if (loop && additiveTo) {
logError("Can' use additive animation on looped animation.");
return;
}
this._additiveAnimators = additiveTo;
this._allowDiscrete = allowDiscreteAnimation;
}
Animator2.prototype.getMaxTime = function() {
return this._maxTime;
};
Animator2.prototype.getDelay = function() {
return this._delay;
};
Animator2.prototype.getLoop = function() {
return this._loop;
};
Animator2.prototype.getTarget = function() {
return this._target;
};
Animator2.prototype.changeTarget = function(target) {
this._target = target;
};
Animator2.prototype.when = function(time2, props, easing) {
return this.whenWithKeys(time2, props, keys(props), easing);
};
Animator2.prototype.whenWithKeys = function(time2, props, propNames, easing) {
var tracks = this._tracks;
for (var i = 0; i < propNames.length; i++) {
var propName = propNames[i];
var track = tracks[propName];
if (!track) {
track = tracks[propName] = new Track(propName);
var initialValue = void 0;
var additiveTrack = this._getAdditiveTrack(propName);
if (additiveTrack) {
var addtiveTrackKfs = additiveTrack.keyframes;
var lastFinalKf = addtiveTrackKfs[addtiveTrackKfs.length - 1];
initialValue = lastFinalKf && lastFinalKf.value;
if (additiveTrack.valType === VALUE_TYPE_COLOR && initialValue) {
initialValue = rgba2String(initialValue);
}
} else {
initialValue = this._target[propName];
}
if (initialValue == null) {
continue;
}
if (time2 > 0) {
track.addKeyframe(0, cloneValue(initialValue), easing);
}
this._trackKeys.push(propName);
}
track.addKeyframe(time2, cloneValue(props[propName]), easing);
}
this._maxTime = Math.max(this._maxTime, time2);
return this;
};
Animator2.prototype.pause = function() {
this._clip.pause();
this._paused = true;
};
Animator2.prototype.resume = function() {
this._clip.resume();
this._paused = false;
};
Animator2.prototype.isPaused = function() {
return !!this._paused;
};
Animator2.prototype.duration = function(duration) {
this._maxTime = duration;
this._force = true;
return this;
};
Animator2.prototype._doneCallback = function() {
this._setTracksFinished();
this._clip = null;
var doneList = this._doneCbs;
if (doneList) {
var len2 = doneList.length;
for (var i = 0; i < len2; i++) {
doneList[i].call(this);
}
}
};
Animator2.prototype._abortedCallback = function() {
this._setTracksFinished();
var animation = this.animation;
var abortedList = this._abortedCbs;
if (animation) {
animation.removeClip(this._clip);
}
this._clip = null;
if (abortedList) {
for (var i = 0; i < abortedList.length; i++) {
abortedList[i].call(this);
}
}
};
Animator2.prototype._setTracksFinished = function() {
var tracks = this._tracks;
var tracksKeys = this._trackKeys;
for (var i = 0; i < tracksKeys.length; i++) {
tracks[tracksKeys[i]].setFinished();
}
};
Animator2.prototype._getAdditiveTrack = function(trackName) {
var additiveTrack;
var additiveAnimators = this._additiveAnimators;
if (additiveAnimators) {
for (var i = 0; i < additiveAnimators.length; i++) {
var track = additiveAnimators[i].getTrack(trackName);
if (track) {
additiveTrack = track;
}
}
}
return additiveTrack;
};
Animator2.prototype.start = function(easing) {
if (this._started > 0) {
return;
}
this._started = 1;
var self2 = this;
var tracks = [];
var maxTime = this._maxTime || 0;
for (var i = 0; i < this._trackKeys.length; i++) {
var propName = this._trackKeys[i];
var track = this._tracks[propName];
var additiveTrack = this._getAdditiveTrack(propName);
var kfs = track.keyframes;
var kfsNum = kfs.length;
track.prepare(maxTime, additiveTrack);
if (track.needsAnimate()) {
if (!this._allowDiscrete && track.discrete) {
var lastKf = kfs[kfsNum - 1];
if (lastKf) {
self2._target[track.propName] = lastKf.rawValue;
}
track.setFinished();
} else {
tracks.push(track);
}
}
}
if (tracks.length || this._force) {
var clip2 = new Clip({
life: maxTime,
loop: this._loop,
delay: this._delay || 0,
onframe: function(percent) {
self2._started = 2;
var additiveAnimators = self2._additiveAnimators;
if (additiveAnimators) {
var stillHasAdditiveAnimator = false;
for (var i2 = 0; i2 < additiveAnimators.length; i2++) {
if (additiveAnimators[i2]._clip) {
stillHasAdditiveAnimator = true;
break;
}
}
if (!stillHasAdditiveAnimator) {
self2._additiveAnimators = null;
}
}
for (var i2 = 0; i2 < tracks.length; i2++) {
tracks[i2].step(self2._target, percent);
}
var onframeList = self2._onframeCbs;
if (onframeList) {
for (var i2 = 0; i2 < onframeList.length; i2++) {
onframeList[i2](self2._target, percent);
}
}
},
ondestroy: function() {
self2._doneCallback();
}
});
this._clip = clip2;
if (this.animation) {
this.animation.addClip(clip2);
}
if (easing) {
clip2.setEasing(easing);
}
} else {
this._doneCallback();
}
return this;
};
Animator2.prototype.stop = function(forwardToLast) {
if (!this._clip) {
return;
}
var clip2 = this._clip;
if (forwardToLast) {
clip2.onframe(1);
}
this._abortedCallback();
};
Animator2.prototype.delay = function(time2) {
this._delay = time2;
return this;
};
Animator2.prototype.during = function(cb2) {
if (cb2) {
if (!this._onframeCbs) {
this._onframeCbs = [];
}
this._onframeCbs.push(cb2);
}
return this;
};
Animator2.prototype.done = function(cb2) {
if (cb2) {
if (!this._doneCbs) {
this._doneCbs = [];
}
this._doneCbs.push(cb2);
}
return this;
};
Animator2.prototype.aborted = function(cb2) {
if (cb2) {
if (!this._abortedCbs) {
this._abortedCbs = [];
}
this._abortedCbs.push(cb2);
}
return this;
};
Animator2.prototype.getClip = function() {
return this._clip;
};
Animator2.prototype.getTrack = function(propName) {
return this._tracks[propName];
};
Animator2.prototype.getTracks = function() {
var _this = this;
return map$1(this._trackKeys, function(key) {
return _this._tracks[key];
});
};
Animator2.prototype.stopTracks = function(propNames, forwardToLast) {
if (!propNames.length || !this._clip) {
return true;
}
var tracks = this._tracks;
var tracksKeys = this._trackKeys;
for (var i = 0; i < propNames.length; i++) {
var track = tracks[propNames[i]];
if (track && !track.isFinished()) {
if (forwardToLast) {
track.step(this._target, 1);
} else if (this._started === 1) {
track.step(this._target, 0);
}
track.setFinished();
}
}
var allAborted = true;
for (var i = 0; i < tracksKeys.length; i++) {
if (!tracks[tracksKeys[i]].isFinished()) {
allAborted = false;
break;
}
}
if (allAborted) {
this._abortedCallback();
}
return allAborted;
};
Animator2.prototype.saveTo = function(target, trackKeys, firstOrLast) {
if (!target) {
return;
}
trackKeys = trackKeys || this._trackKeys;
for (var i = 0; i < trackKeys.length; i++) {
var propName = trackKeys[i];
var track = this._tracks[propName];
if (!track || track.isFinished()) {
continue;
}
var kfs = track.keyframes;
var kf = kfs[firstOrLast ? 0 : kfs.length - 1];
if (kf) {
target[propName] = cloneValue(kf.rawValue);
}
}
};
Animator2.prototype.__changeFinalValue = function(finalProps, trackKeys) {
trackKeys = trackKeys || keys(finalProps);
for (var i = 0; i < trackKeys.length; i++) {
var propName = trackKeys[i];
var track = this._tracks[propName];
if (!track) {
continue;
}
var kfs = track.keyframes;
if (kfs.length > 1) {
var lastKf = kfs.pop();
track.addKeyframe(lastKf.time, finalProps[propName]);
track.prepare(this._maxTime, track.getAdditiveTrack());
}
}
};
return Animator2;
}();
function getTime() {
return (/* @__PURE__ */ new Date()).getTime();
}
var Animation = function(_super) {
__extends(Animation2, _super);
function Animation2(opts) {
var _this = _super.call(this) || this;
_this._running = false;
_this._time = 0;
_this._pausedTime = 0;
_this._pauseStart = 0;
_this._paused = false;
opts = opts || {};
_this.stage = opts.stage || {};
return _this;
}
Animation2.prototype.addClip = function(clip2) {
if (clip2.animation) {
this.removeClip(clip2);
}
if (!this._head) {
this._head = this._tail = clip2;
} else {
this._tail.next = clip2;
clip2.prev = this._tail;
clip2.next = null;
this._tail = clip2;
}
clip2.animation = this;
};
Animation2.prototype.addAnimator = function(animator) {
animator.animation = this;
var clip2 = animator.getClip();
if (clip2) {
this.addClip(clip2);
}
};
Animation2.prototype.removeClip = function(clip2) {
if (!clip2.animation) {
return;
}
var prev2 = clip2.prev;
var next2 = clip2.next;
if (prev2) {
prev2.next = next2;
} else {
this._head = next2;
}
if (next2) {
next2.prev = prev2;
} else {
this._tail = prev2;
}
clip2.next = clip2.prev = clip2.animation = null;
};
Animation2.prototype.removeAnimator = function(animator) {
var clip2 = animator.getClip();
if (clip2) {
this.removeClip(clip2);
}
animator.animation = null;
};
Animation2.prototype.update = function(notTriggerFrameAndStageUpdate) {
var time2 = getTime() - this._pausedTime;
var delta = time2 - this._time;
var clip2 = this._head;
while (clip2) {
var nextClip = clip2.next;
var finished = clip2.step(time2, delta);
if (finished) {
clip2.ondestroy();
this.removeClip(clip2);
clip2 = nextClip;
} else {
clip2 = nextClip;
}
}
this._time = time2;
if (!notTriggerFrameAndStageUpdate) {
this.trigger("frame", delta);
this.stage.update && this.stage.update();
}
};
Animation2.prototype._startLoop = function() {
var self2 = this;
this._running = true;
function step() {
if (self2._running) {
requestAnimationFrame$1(step);
!self2._paused && self2.update();
}
}
requestAnimationFrame$1(step);
};
Animation2.prototype.start = function() {
if (this._running) {
return;
}
this._time = getTime();
this._pausedTime = 0;
this._startLoop();
};
Animation2.prototype.stop = function() {
this._running = false;
};
Animation2.prototype.pause = function() {
if (!this._paused) {
this._pauseStart = getTime();
this._paused = true;
}
};
Animation2.prototype.resume = function() {
if (this._paused) {
this._pausedTime += getTime() - this._pauseStart;
this._paused = false;
}
};
Animation2.prototype.clear = function() {
var clip2 = this._head;
while (clip2) {
var nextClip = clip2.next;
clip2.prev = clip2.next = clip2.animation = null;
clip2 = nextClip;
}
this._head = this._tail = null;
};
Animation2.prototype.isFinished = function() {
return this._head == null;
};
Animation2.prototype.animate = function(target, options) {
options = options || {};
this.start();
var animator = new Animator(target, options.loop);
this.addAnimator(animator);
return animator;
};
return Animation2;
}(Eventful);
var TOUCH_CLICK_DELAY = 300;
var globalEventSupported = env.domSupported;
var localNativeListenerNames = function() {
var mouseHandlerNames = [
"click",
"dblclick",
"mousewheel",
"wheel",
"mouseout",
"mouseup",
"mousedown",
"mousemove",
"contextmenu"
];
var touchHandlerNames = [
"touchstart",
"touchend",
"touchmove"
];
var pointerEventNameMap = {
pointerdown: 1,
pointerup: 1,
pointermove: 1,
pointerout: 1
};
var pointerHandlerNames = map$1(mouseHandlerNames, function(name) {
var nm = name.replace("mouse", "pointer");
return pointerEventNameMap.hasOwnProperty(nm) ? nm : name;
});
return {
mouse: mouseHandlerNames,
touch: touchHandlerNames,
pointer: pointerHandlerNames
};
}();
var globalNativeListenerNames = {
mouse: ["mousemove", "mouseup"],
pointer: ["pointermove", "pointerup"]
};
var wheelEventSupported = false;
function isPointerFromTouch(event) {
var pointerType = event.pointerType;
return pointerType === "pen" || pointerType === "touch";
}
function setTouchTimer(scope) {
scope.touching = true;
if (scope.touchTimer != null) {
clearTimeout(scope.touchTimer);
scope.touchTimer = null;
}
scope.touchTimer = setTimeout(function() {
scope.touching = false;
scope.touchTimer = null;
}, 700);
}
function markTouch(event) {
event && (event.zrByTouch = true);
}
function normalizeGlobalEvent(instance, event) {
return normalizeEvent(instance.dom, new FakeGlobalEvent(instance, event), true);
}
function isLocalEl(instance, el2) {
var elTmp = el2;
var isLocal = false;
while (elTmp && elTmp.nodeType !== 9 && !(isLocal = elTmp.domBelongToZr || elTmp !== el2 && elTmp === instance.painterRoot)) {
elTmp = elTmp.parentNode;
}
return isLocal;
}
var FakeGlobalEvent = /* @__PURE__ */ function() {
function FakeGlobalEvent2(instance, event) {
this.stopPropagation = noop2;
this.stopImmediatePropagation = noop2;
this.preventDefault = noop2;
this.type = event.type;
this.target = this.currentTarget = instance.dom;
this.pointerType = event.pointerType;
this.clientX = event.clientX;
this.clientY = event.clientY;
}
return FakeGlobalEvent2;
}();
var localDOMHandlers = {
mousedown: function(event) {
event = normalizeEvent(this.dom, event);
this.__mayPointerCapture = [event.zrX, event.zrY];
this.trigger("mousedown", event);
},
mousemove: function(event) {
event = normalizeEvent(this.dom, event);
var downPoint = this.__mayPointerCapture;
if (downPoint && (event.zrX !== downPoint[0] || event.zrY !== downPoint[1])) {
this.__togglePointerCapture(true);
}
this.trigger("mousemove", event);
},
mouseup: function(event) {
event = normalizeEvent(this.dom, event);
this.__togglePointerCapture(false);
this.trigger("mouseup", event);
},
mouseout: function(event) {
event = normalizeEvent(this.dom, event);
var element = event.toElement || event.relatedTarget;
if (!isLocalEl(this, element)) {
if (this.__pointerCapturing) {
event.zrEventControl = "no_globalout";
}
this.trigger("mouseout", event);
}
},
wheel: function(event) {
wheelEventSupported = true;
event = normalizeEvent(this.dom, event);
this.trigger("mousewheel", event);
},
mousewheel: function(event) {
if (wheelEventSupported) {
return;
}
event = normalizeEvent(this.dom, event);
this.trigger("mousewheel", event);
},
touchstart: function(event) {
event = normalizeEvent(this.dom, event);
markTouch(event);
this.__lastTouchMoment = /* @__PURE__ */ new Date();
this.handler.processGesture(event, "start");
localDOMHandlers.mousemove.call(this, event);
localDOMHandlers.mousedown.call(this, event);
},
touchmove: function(event) {
event = normalizeEvent(this.dom, event);
markTouch(event);
this.handler.processGesture(event, "change");
localDOMHandlers.mousemove.call(this, event);
},
touchend: function(event) {
event = normalizeEvent(this.dom, event);
markTouch(event);
this.handler.processGesture(event, "end");
localDOMHandlers.mouseup.call(this, event);
if (+/* @__PURE__ */ new Date() - +this.__lastTouchMoment < TOUCH_CLICK_DELAY) {
localDOMHandlers.click.call(this, event);
}
},
pointerdown: function(event) {
localDOMHandlers.mousedown.call(this, event);
},
pointermove: function(event) {
if (!isPointerFromTouch(event)) {
localDOMHandlers.mousemove.call(this, event);
}
},
pointerup: function(event) {
localDOMHandlers.mouseup.call(this, event);
},
pointerout: function(event) {
if (!isPointerFromTouch(event)) {
localDOMHandlers.mouseout.call(this, event);
}
}
};
each$f(["click", "dblclick", "contextmenu"], function(name) {
localDOMHandlers[name] = function(event) {
event = normalizeEvent(this.dom, event);
this.trigger(name, event);
};
});
var globalDOMHandlers = {
pointermove: function(event) {
if (!isPointerFromTouch(event)) {
globalDOMHandlers.mousemove.call(this, event);
}
},
pointerup: function(event) {
globalDOMHandlers.mouseup.call(this, event);
},
mousemove: function(event) {
this.trigger("mousemove", event);
},
mouseup: function(event) {
var pointerCaptureReleasing = this.__pointerCapturing;
this.__togglePointerCapture(false);
this.trigger("mouseup", event);
if (pointerCaptureReleasing) {
event.zrEventControl = "only_globalout";
this.trigger("mouseout", event);
}
}
};
function mountLocalDOMEventListeners(instance, scope) {
var domHandlers = scope.domHandlers;
if (env.pointerEventsSupported) {
each$f(localNativeListenerNames.pointer, function(nativeEventName) {
mountSingleDOMEventListener(scope, nativeEventName, function(event) {
domHandlers[nativeEventName].call(instance, event);
});
});
} else {
if (env.touchEventsSupported) {
each$f(localNativeListenerNames.touch, function(nativeEventName) {
mountSingleDOMEventListener(scope, nativeEventName, function(event) {
domHandlers[nativeEventName].call(instance, event);
setTouchTimer(scope);
});
});
}
each$f(localNativeListenerNames.mouse, function(nativeEventName) {
mountSingleDOMEventListener(scope, nativeEventName, function(event) {
event = getNativeEvent(event);
if (!scope.touching) {
domHandlers[nativeEventName].call(instance, event);
}
});
});
}
}
function mountGlobalDOMEventListeners(instance, scope) {
if (env.pointerEventsSupported) {
each$f(globalNativeListenerNames.pointer, mount);
} else if (!env.touchEventsSupported) {
each$f(globalNativeListenerNames.mouse, mount);
}
function mount(nativeEventName) {
function nativeEventListener(event) {
event = getNativeEvent(event);
if (!isLocalEl(instance, event.target)) {
event = normalizeGlobalEvent(instance, event);
scope.domHandlers[nativeEventName].call(instance, event);
}
}
mountSingleDOMEventListener(scope, nativeEventName, nativeEventListener, { capture: true });
}
}
function mountSingleDOMEventListener(scope, nativeEventName, listener, opt) {
scope.mounted[nativeEventName] = listener;
scope.listenerOpts[nativeEventName] = opt;
addEventListener(scope.domTarget, nativeEventName, listener, opt);
}
function unmountDOMEventListeners(scope) {
var mounted = scope.mounted;
for (var nativeEventName in mounted) {
if (mounted.hasOwnProperty(nativeEventName)) {
removeEventListener(scope.domTarget, nativeEventName, mounted[nativeEventName], scope.listenerOpts[nativeEventName]);
}
}
scope.mounted = {};
}
var DOMHandlerScope = /* @__PURE__ */ function() {
function DOMHandlerScope2(domTarget, domHandlers) {
this.mounted = {};
this.listenerOpts = {};
this.touching = false;
this.domTarget = domTarget;
this.domHandlers = domHandlers;
}
return DOMHandlerScope2;
}();
var HandlerDomProxy = function(_super) {
__extends(HandlerDomProxy2, _super);
function HandlerDomProxy2(dom, painterRoot) {
var _this = _super.call(this) || this;
_this.__pointerCapturing = false;
_this.dom = dom;
_this.painterRoot = painterRoot;
_this._localHandlerScope = new DOMHandlerScope(dom, localDOMHandlers);
if (globalEventSupported) {
_this._globalHandlerScope = new DOMHandlerScope(document, globalDOMHandlers);
}
mountLocalDOMEventListeners(_this, _this._localHandlerScope);
return _this;
}
HandlerDomProxy2.prototype.dispose = function() {
unmountDOMEventListeners(this._localHandlerScope);
if (globalEventSupported) {
unmountDOMEventListeners(this._globalHandlerScope);
}
};
HandlerDomProxy2.prototype.setCursor = function(cursorStyle) {
this.dom.style && (this.dom.style.cursor = cursorStyle || "default");
};
HandlerDomProxy2.prototype.__togglePointerCapture = function(isPointerCapturing) {
this.__mayPointerCapture = null;
if (globalEventSupported && +this.__pointerCapturing ^ +isPointerCapturing) {
this.__pointerCapturing = isPointerCapturing;
var globalHandlerScope = this._globalHandlerScope;
isPointerCapturing ? mountGlobalDOMEventListeners(this, globalHandlerScope) : unmountDOMEventListeners(globalHandlerScope);
}
};
return HandlerDomProxy2;
}(Eventful);
var dpr = 1;
if (env.hasGlobalWindow) {
dpr = Math.max(window.devicePixelRatio || window.screen && window.screen.deviceXDPI / window.screen.logicalXDPI || 1, 1);
}
var devicePixelRatio = dpr;
var DARK_MODE_THRESHOLD = 0.4;
var DARK_LABEL_COLOR = "#333";
var LIGHT_LABEL_COLOR = "#ccc";
var LIGHTER_LABEL_COLOR = "#eee";
var mIdentity = identity;
var EPSILON$2 = 5e-5;
function isNotAroundZero(val) {
return val > EPSILON$2 || val < -EPSILON$2;
}
var scaleTmp = [];
var tmpTransform = [];
var originTransform = create$1();
var abs = Math.abs;
var Transformable = function() {
function Transformable2() {
}
Transformable2.prototype.getLocalTransform = function(m2) {
return Transformable2.getLocalTransform(this, m2);
};
Transformable2.prototype.setPosition = function(arr) {
this.x = arr[0];
this.y = arr[1];
};
Transformable2.prototype.setScale = function(arr) {
this.scaleX = arr[0];
this.scaleY = arr[1];
};
Transformable2.prototype.setSkew = function(arr) {
this.skewX = arr[0];
this.skewY = arr[1];
};
Transformable2.prototype.setOrigin = function(arr) {
this.originX = arr[0];
this.originY = arr[1];
};
Transformable2.prototype.needLocalTransform = function() {
return isNotAroundZero(this.rotation) || isNotAroundZero(this.x) || isNotAroundZero(this.y) || isNotAroundZero(this.scaleX - 1) || isNotAroundZero(this.scaleY - 1) || isNotAroundZero(this.skewX) || isNotAroundZero(this.skewY);
};
Transformable2.prototype.updateTransform = function() {
var parentTransform = this.parent && this.parent.transform;
var needLocalTransform = this.needLocalTransform();
var m2 = this.transform;
if (!(needLocalTransform || parentTransform)) {
if (m2) {
mIdentity(m2);
this.invTransform = null;
}
return;
}
m2 = m2 || create$1();
if (needLocalTransform) {
this.getLocalTransform(m2);
} else {
mIdentity(m2);
}
if (parentTransform) {
if (needLocalTransform) {
mul(m2, parentTransform, m2);
} else {
copy(m2, parentTransform);
}
}
this.transform = m2;
this._resolveGlobalScaleRatio(m2);
};
Transformable2.prototype._resolveGlobalScaleRatio = function(m2) {
var globalScaleRatio = this.globalScaleRatio;
if (globalScaleRatio != null && globalScaleRatio !== 1) {
this.getGlobalScale(scaleTmp);
var relX = scaleTmp[0] < 0 ? -1 : 1;
var relY = scaleTmp[1] < 0 ? -1 : 1;
var sx = ((scaleTmp[0] - relX) * globalScaleRatio + relX) / scaleTmp[0] || 0;
var sy = ((scaleTmp[1] - relY) * globalScaleRatio + relY) / scaleTmp[1] || 0;
m2[0] *= sx;
m2[1] *= sx;
m2[2] *= sy;
m2[3] *= sy;
}
this.invTransform = this.invTransform || create$1();
invert(this.invTransform, m2);
};
Transformable2.prototype.getComputedTransform = function() {
var transformNode = this;
var ancestors = [];
while (transformNode) {
ancestors.push(transformNode);
transformNode = transformNode.parent;
}
while (transformNode = ancestors.pop()) {
transformNode.updateTransform();
}
return this.transform;
};
Transformable2.prototype.setLocalTransform = function(m2) {
if (!m2) {
return;
}
var sx = m2[0] * m2[0] + m2[1] * m2[1];
var sy = m2[2] * m2[2] + m2[3] * m2[3];
var rotation = Math.atan2(m2[1], m2[0]);
var shearX = Math.PI / 2 + rotation - Math.atan2(m2[3], m2[2]);
sy = Math.sqrt(sy) * Math.cos(shearX);
sx = Math.sqrt(sx);
this.skewX = shearX;
this.skewY = 0;
this.rotation = -rotation;
this.x = +m2[4];
this.y = +m2[5];
this.scaleX = sx;
this.scaleY = sy;
this.originX = 0;
this.originY = 0;
};
Transformable2.prototype.decomposeTransform = function() {
if (!this.transform) {
return;
}
var parent = this.parent;
var m2 = this.transform;
if (parent && parent.transform) {
parent.invTransform = parent.invTransform || create$1();
mul(tmpTransform, parent.invTransform, m2);
m2 = tmpTransform;
}
var ox = this.originX;
var oy = this.originY;
if (ox || oy) {
originTransform[4] = ox;
originTransform[5] = oy;
mul(tmpTransform, m2, originTransform);
tmpTransform[4] -= ox;
tmpTransform[5] -= oy;
m2 = tmpTransform;
}
this.setLocalTransform(m2);
};
Transformable2.prototype.getGlobalScale = function(out2) {
var m2 = this.transform;
out2 = out2 || [];
if (!m2) {
out2[0] = 1;
out2[1] = 1;
return out2;
}
out2[0] = Math.sqrt(m2[0] * m2[0] + m2[1] * m2[1]);
out2[1] = Math.sqrt(m2[2] * m2[2] + m2[3] * m2[3]);
if (m2[0] < 0) {
out2[0] = -out2[0];
}
if (m2[3] < 0) {
out2[1] = -out2[1];
}
return out2;
};
Transformable2.prototype.transformCoordToLocal = function(x2, y2) {
var v22 = [x2, y2];
var invTransform = this.invTransform;
if (invTransform) {
applyTransform$1(v22, v22, invTransform);
}
return v22;
};
Transformable2.prototype.transformCoordToGlobal = function(x2, y2) {
var v22 = [x2, y2];
var transform2 = this.transform;
if (transform2) {
applyTransform$1(v22, v22, transform2);
}
return v22;
};
Transformable2.prototype.getLineScale = function() {
var m2 = this.transform;
return m2 && abs(m2[0] - 1) > 1e-10 && abs(m2[3] - 1) > 1e-10 ? Math.sqrt(abs(m2[0] * m2[3] - m2[2] * m2[1])) : 1;
};
Transformable2.prototype.copyTransform = function(source) {
copyTransform(this, source);
};
Transformable2.getLocalTransform = function(target, m2) {
m2 = m2 || [];
var ox = target.originX || 0;
var oy = target.originY || 0;
var sx = target.scaleX;
var sy = target.scaleY;
var ax = target.anchorX;
var ay = target.anchorY;
var rotation = target.rotation || 0;
var x2 = target.x;
var y2 = target.y;
var skewX = target.skewX ? Math.tan(target.skewX) : 0;
var skewY = target.skewY ? Math.tan(-target.skewY) : 0;
if (ox || oy || ax || ay) {
var dx = ox + ax;
var dy = oy + ay;
m2[4] = -dx * sx - skewX * dy * sy;
m2[5] = -dy * sy - skewY * dx * sx;
} else {
m2[4] = m2[5] = 0;
}
m2[0] = sx;
m2[3] = sy;
m2[1] = skewY * sx;
m2[2] = skewX * sy;
rotation && rotate(m2, m2, rotation);
m2[4] += ox + x2;
m2[5] += oy + y2;
return m2;
};
Transformable2.initDefaultProps = function() {
var proto2 = Transformable2.prototype;
proto2.scaleX = proto2.scaleY = proto2.globalScaleRatio = 1;
proto2.x = proto2.y = proto2.originX = proto2.originY = proto2.skewX = proto2.skewY = proto2.rotation = proto2.anchorX = proto2.anchorY = 0;
}();
return Transformable2;
}();
var TRANSFORMABLE_PROPS = [
"x",
"y",
"originX",
"originY",
"anchorX",
"anchorY",
"rotation",
"scaleX",
"scaleY",
"skewX",
"skewY"
];
function copyTransform(target, source) {
for (var i = 0; i < TRANSFORMABLE_PROPS.length; i++) {
var propName = TRANSFORMABLE_PROPS[i];
target[propName] = source[propName];
}
}
var textWidthCache = {};
function getWidth(text, font) {
font = font || DEFAULT_FONT;
var cacheOfFont = textWidthCache[font];
if (!cacheOfFont) {
cacheOfFont = textWidthCache[font] = new LRU(500);
}
var width = cacheOfFont.get(text);
if (width == null) {
width = platformApi.measureText(text, font).width;
cacheOfFont.put(text, width);
}
return width;
}
function innerGetBoundingRect(text, font, textAlign, textBaseline) {
var width = getWidth(text, font);
var height = getLineHeight(font);
var x2 = adjustTextX(0, width, textAlign);
var y2 = adjustTextY(0, height, textBaseline);
var rect = new BoundingRect(x2, y2, width, height);
return rect;
}
function getBoundingRect(text, font, textAlign, textBaseline) {
var textLines = ((text || "") + "").split("\n");
var len2 = textLines.length;
if (len2 === 1) {
return innerGetBoundingRect(textLines[0], font, textAlign, textBaseline);
} else {
var uniondRect = new BoundingRect(0, 0, 0, 0);
for (var i = 0; i < textLines.length; i++) {
var rect = innerGetBoundingRect(textLines[i], font, textAlign, textBaseline);
i === 0 ? uniondRect.copy(rect) : uniondRect.union(rect);
}
return uniondRect;
}
}
function adjustTextX(x2, width, textAlign) {
if (textAlign === "right") {
x2 -= width;
} else if (textAlign === "center") {
x2 -= width / 2;
}
return x2;
}
function adjustTextY(y2, height, verticalAlign) {
if (verticalAlign === "middle") {
y2 -= height / 2;
} else if (verticalAlign === "bottom") {
y2 -= height;
}
return y2;
}
function getLineHeight(font) {
return getWidth("国", font);
}
function parsePercent$1(value, maxValue) {
if (typeof value === "string") {
if (value.lastIndexOf("%") >= 0) {
return parseFloat(value) / 100 * maxValue;
}
return parseFloat(value);
}
return value;
}
function calculateTextPosition(out2, opts, rect) {
var textPosition = opts.position || "inside";
var distance2 = opts.distance != null ? opts.distance : 5;
var height = rect.height;
var width = rect.width;
var halfHeight = height / 2;
var x2 = rect.x;
var y2 = rect.y;
var textAlign = "left";
var textVerticalAlign = "top";
if (textPosition instanceof Array) {
x2 += parsePercent$1(textPosition[0], rect.width);
y2 += parsePercent$1(textPosition[1], rect.height);
textAlign = null;
textVerticalAlign = null;
} else {
switch (textPosition) {
case "left":
x2 -= distance2;
y2 += halfHeight;
textAlign = "right";
textVerticalAlign = "middle";
break;
case "right":
x2 += distance2 + width;
y2 += halfHeight;
textVerticalAlign = "middle";
break;
case "top":
x2 += width / 2;
y2 -= distance2;
textAlign = "center";
textVerticalAlign = "bottom";
break;
case "bottom":
x2 += width / 2;
y2 += height + distance2;
textAlign = "center";
break;
case "inside":
x2 += width / 2;
y2 += halfHeight;
textAlign = "center";
textVerticalAlign = "middle";
break;
case "insideLeft":
x2 += distance2;
y2 += halfHeight;
textVerticalAlign = "middle";
break;
case "insideRight":
x2 += width - distance2;
y2 += halfHeight;
textAlign = "right";
textVerticalAlign = "middle";
break;
case "insideTop":
x2 += width / 2;
y2 += distance2;
textAlign = "center";
break;
case "insideBottom":
x2 += width / 2;
y2 += height - distance2;
textAlign = "center";
textVerticalAlign = "bottom";
break;
case "insideTopLeft":
x2 += distance2;
y2 += distance2;
break;
case "insideTopRight":
x2 += width - distance2;
y2 += distance2;
textAlign = "right";
break;
case "insideBottomLeft":
x2 += distance2;
y2 += height - distance2;
textVerticalAlign = "bottom";
break;
case "insideBottomRight":
x2 += width - distance2;
y2 += height - distance2;
textAlign = "right";
textVerticalAlign = "bottom";
break;
}
}
out2 = out2 || {};
out2.x = x2;
out2.y = y2;
out2.align = textAlign;
out2.verticalAlign = textVerticalAlign;
return out2;
}
var PRESERVED_NORMAL_STATE = "__zr_normal__";
var PRIMARY_STATES_KEYS$1 = TRANSFORMABLE_PROPS.concat(["ignore"]);
var DEFAULT_ANIMATABLE_MAP = reduce(TRANSFORMABLE_PROPS, function(obj, key) {
obj[key] = true;
return obj;
}, { ignore: false });
var tmpTextPosCalcRes = {};
var tmpBoundingRect = new BoundingRect(0, 0, 0, 0);
var Element$1 = function() {
function Element2(props) {
this.id = guid();
this.animators = [];
this.currentStates = [];
this.states = {};
this._init(props);
}
Element2.prototype._init = function(props) {
this.attr(props);
};
Element2.prototype.drift = function(dx, dy, e2) {
switch (this.draggable) {
case "horizontal":
dy = 0;
break;
case "vertical":
dx = 0;
break;
}
var m2 = this.transform;
if (!m2) {
m2 = this.transform = [1, 0, 0, 1, 0, 0];
}
m2[4] += dx;
m2[5] += dy;
this.decomposeTransform();
this.markRedraw();
};
Element2.prototype.beforeUpdate = function() {
};
Element2.prototype.afterUpdate = function() {
};
Element2.prototype.update = function() {
this.updateTransform();
if (this.__dirty) {
this.updateInnerText();
}
};
Element2.prototype.updateInnerText = function(forceUpdate) {
var textEl = this._textContent;
if (textEl && (!textEl.ignore || forceUpdate)) {
if (!this.textConfig) {
this.textConfig = {};
}
var textConfig = this.textConfig;
var isLocal = textConfig.local;
var innerTransformable = textEl.innerTransformable;
var textAlign = void 0;
var textVerticalAlign = void 0;
var textStyleChanged = false;
innerTransformable.parent = isLocal ? this : null;
var innerOrigin = false;
innerTransformable.copyTransform(textEl);
if (textConfig.position != null) {
var layoutRect = tmpBoundingRect;
if (textConfig.layoutRect) {
layoutRect.copy(textConfig.layoutRect);
} else {
layoutRect.copy(this.getBoundingRect());
}
if (!isLocal) {
layoutRect.applyTransform(this.transform);
}
if (this.calculateTextPosition) {
this.calculateTextPosition(tmpTextPosCalcRes, textConfig, layoutRect);
} else {
calculateTextPosition(tmpTextPosCalcRes, textConfig, layoutRect);
}
innerTransformable.x = tmpTextPosCalcRes.x;
innerTransformable.y = tmpTextPosCalcRes.y;
textAlign = tmpTextPosCalcRes.align;
textVerticalAlign = tmpTextPosCalcRes.verticalAlign;
var textOrigin = textConfig.origin;
if (textOrigin && textConfig.rotation != null) {
var relOriginX = void 0;
var relOriginY = void 0;
if (textOrigin === "center") {
relOriginX = layoutRect.width * 0.5;
relOriginY = layoutRect.height * 0.5;
} else {
relOriginX = parsePercent$1(textOrigin[0], layoutRect.width);
relOriginY = parsePercent$1(textOrigin[1], layoutRect.height);
}
innerOrigin = true;
innerTransformable.originX = -innerTransformable.x + relOriginX + (isLocal ? 0 : layoutRect.x);
innerTransformable.originY = -innerTransformable.y + relOriginY + (isLocal ? 0 : layoutRect.y);
}
}
if (textConfig.rotation != null) {
innerTransformable.rotation = textConfig.rotation;
}
var textOffset = textConfig.offset;
if (textOffset) {
innerTransformable.x += textOffset[0];
innerTransformable.y += textOffset[1];
if (!innerOrigin) {
innerTransformable.originX = -textOffset[0];
innerTransformable.originY = -textOffset[1];
}
}
var isInside = textConfig.inside == null ? typeof textConfig.position === "string" && textConfig.position.indexOf("inside") >= 0 : textConfig.inside;
var innerTextDefaultStyle = this._innerTextDefaultStyle || (this._innerTextDefaultStyle = {});
var textFill = void 0;
var textStroke = void 0;
var autoStroke = void 0;
if (isInside && this.canBeInsideText()) {
textFill = textConfig.insideFill;
textStroke = textConfig.insideStroke;
if (textFill == null || textFill === "auto") {
textFill = this.getInsideTextFill();
}
if (textStroke == null || textStroke === "auto") {
textStroke = this.getInsideTextStroke(textFill);
autoStroke = true;
}
} else {
textFill = textConfig.outsideFill;
textStroke = textConfig.outsideStroke;
if (textFill == null || textFill === "auto") {
textFill = this.getOutsideFill();
}
if (textStroke == null || textStroke === "auto") {
textStroke = this.getOutsideStroke(textFill);
autoStroke = true;
}
}
textFill = textFill || "#000";
if (textFill !== innerTextDefaultStyle.fill || textStroke !== innerTextDefaultStyle.stroke || autoStroke !== innerTextDefaultStyle.autoStroke || textAlign !== innerTextDefaultStyle.align || textVerticalAlign !== innerTextDefaultStyle.verticalAlign) {
textStyleChanged = true;
innerTextDefaultStyle.fill = textFill;
innerTextDefaultStyle.stroke = textStroke;
innerTextDefaultStyle.autoStroke = autoStroke;
innerTextDefaultStyle.align = textAlign;
innerTextDefaultStyle.verticalAlign = textVerticalAlign;
textEl.setDefaultTextStyle(innerTextDefaultStyle);
}
textEl.__dirty |= REDRAW_BIT;
if (textStyleChanged) {
textEl.dirtyStyle(true);
}
}
};
Element2.prototype.canBeInsideText = function() {
return true;
};
Element2.prototype.getInsideTextFill = function() {
return "#fff";
};
Element2.prototype.getInsideTextStroke = function(textFill) {
return "#000";
};
Element2.prototype.getOutsideFill = function() {
return this.__zr && this.__zr.isDarkMode() ? LIGHT_LABEL_COLOR : DARK_LABEL_COLOR;
};
Element2.prototype.getOutsideStroke = function(textFill) {
var backgroundColor2 = this.__zr && this.__zr.getBackgroundColor();
var colorArr = typeof backgroundColor2 === "string" && parse$1(backgroundColor2);
if (!colorArr) {
colorArr = [255, 255, 255, 1];
}
var alpha = colorArr[3];
var isDark2 = this.__zr.isDarkMode();
for (var i = 0; i < 3; i++) {
colorArr[i] = colorArr[i] * alpha + (isDark2 ? 0 : 255) * (1 - alpha);
}
colorArr[3] = 1;
return stringify(colorArr, "rgba");
};
Element2.prototype.traverse = function(cb2, context) {
};
Element2.prototype.attrKV = function(key, value) {
if (key === "textConfig") {
this.setTextConfig(value);
} else if (key === "textContent") {
this.setTextContent(value);
} else if (key === "clipPath") {
this.setClipPath(value);
} else if (key === "extra") {
this.extra = this.extra || {};
extend(this.extra, value);
} else {
this[key] = value;
}
};
Element2.prototype.hide = function() {
this.ignore = true;
this.markRedraw();
};
Element2.prototype.show = function() {
this.ignore = false;
this.markRedraw();
};
Element2.prototype.attr = function(keyOrObj, value) {
if (typeof keyOrObj === "string") {
this.attrKV(keyOrObj, value);
} else if (isObject$3(keyOrObj)) {
var obj = keyOrObj;
var keysArr = keys(obj);
for (var i = 0; i < keysArr.length; i++) {
var key = keysArr[i];
this.attrKV(key, keyOrObj[key]);
}
}
this.markRedraw();
return this;
};
Element2.prototype.saveCurrentToNormalState = function(toState) {
this._innerSaveToNormal(toState);
var normalState = this._normalState;
for (var i = 0; i < this.animators.length; i++) {
var animator = this.animators[i];
var fromStateTransition = animator.__fromStateTransition;
if (animator.getLoop() || fromStateTransition && fromStateTransition !== PRESERVED_NORMAL_STATE) {
continue;
}
var targetName = animator.targetName;
var target = targetName ? normalState[targetName] : normalState;
animator.saveTo(target);
}
};
Element2.prototype._innerSaveToNormal = function(toState) {
var normalState = this._normalState;
if (!normalState) {
normalState = this._normalState = {};
}
if (toState.textConfig && !normalState.textConfig) {
normalState.textConfig = this.textConfig;
}
this._savePrimaryToNormal(toState, normalState, PRIMARY_STATES_KEYS$1);
};
Element2.prototype._savePrimaryToNormal = function(toState, normalState, primaryKeys) {
for (var i = 0; i < primaryKeys.length; i++) {
var key = primaryKeys[i];
if (toState[key] != null && !(key in normalState)) {
normalState[key] = this[key];
}
}
};
Element2.prototype.hasState = function() {
return this.currentStates.length > 0;
};
Element2.prototype.getState = function(name) {
return this.states[name];
};
Element2.prototype.ensureState = function(name) {
var states = this.states;
if (!states[name]) {
states[name] = {};
}
return states[name];
};
Element2.prototype.clearStates = function(noAnimation) {
this.useState(PRESERVED_NORMAL_STATE, false, noAnimation);
};
Element2.prototype.useState = function(stateName, keepCurrentStates, noAnimation, forceUseHoverLayer) {
var toNormalState = stateName === PRESERVED_NORMAL_STATE;
var hasStates = this.hasState();
if (!hasStates && toNormalState) {
return;
}
var currentStates = this.currentStates;
var animationCfg = this.stateTransition;
if (indexOf(currentStates, stateName) >= 0 && (keepCurrentStates || currentStates.length === 1)) {
return;
}
var state;
if (this.stateProxy && !toNormalState) {
state = this.stateProxy(stateName);
}
if (!state) {
state = this.states && this.states[stateName];
}
if (!state && !toNormalState) {
logError("State " + stateName + " not exists.");
return;
}
if (!toNormalState) {
this.saveCurrentToNormalState(state);
}
var useHoverLayer = !!(state && state.hoverLayer || forceUseHoverLayer);
if (useHoverLayer) {
this._toggleHoverLayerFlag(true);
}
this._applyStateObj(stateName, state, this._normalState, keepCurrentStates, !noAnimation && !this.__inHover && animationCfg && animationCfg.duration > 0, animationCfg);
var textContent = this._textContent;
var textGuide = this._textGuide;
if (textContent) {
textContent.useState(stateName, keepCurrentStates, noAnimation, useHoverLayer);
}
if (textGuide) {
textGuide.useState(stateName, keepCurrentStates, noAnimation, useHoverLayer);
}
if (toNormalState) {
this.currentStates = [];
this._normalState = {};
} else {
if (!keepCurrentStates) {
this.currentStates = [stateName];
} else {
this.currentStates.push(stateName);
}
}
this._updateAnimationTargets();
this.markRedraw();
if (!useHoverLayer && this.__inHover) {
this._toggleHoverLayerFlag(false);
this.__dirty &= ~REDRAW_BIT;
}
return state;
};
Element2.prototype.useStates = function(states, noAnimation, forceUseHoverLayer) {
if (!states.length) {
this.clearStates();
} else {
var stateObjects = [];
var currentStates = this.currentStates;
var len2 = states.length;
var notChange = len2 === currentStates.length;
if (notChange) {
for (var i = 0; i < len2; i++) {
if (states[i] !== currentStates[i]) {
notChange = false;
break;
}
}
}
if (notChange) {
return;
}
for (var i = 0; i < len2; i++) {
var stateName = states[i];
var stateObj = void 0;
if (this.stateProxy) {
stateObj = this.stateProxy(stateName, states);
}
if (!stateObj) {
stateObj = this.states[stateName];
}
if (stateObj) {
stateObjects.push(stateObj);
}
}
var lastStateObj = stateObjects[len2 - 1];
var useHoverLayer = !!(lastStateObj && lastStateObj.hoverLayer || forceUseHoverLayer);
if (useHoverLayer) {
this._toggleHoverLayerFlag(true);
}
var mergedState = this._mergeStates(stateObjects);
var animationCfg = this.stateTransition;
this.saveCurrentToNormalState(mergedState);
this._applyStateObj(states.join(","), mergedState, this._normalState, false, !noAnimation && !this.__inHover && animationCfg && animationCfg.duration > 0, animationCfg);
var textContent = this._textContent;
var textGuide = this._textGuide;
if (textContent) {
textContent.useStates(states, noAnimation, useHoverLayer);
}
if (textGuide) {
textGuide.useStates(states, noAnimation, useHoverLayer);
}
this._updateAnimationTargets();
this.currentStates = states.slice();
this.markRedraw();
if (!useHoverLayer && this.__inHover) {
this._toggleHoverLayerFlag(false);
this.__dirty &= ~REDRAW_BIT;
}
}
};
Element2.prototype.isSilent = function() {
var isSilent = this.silent;
var ancestor = this.parent;
while (!isSilent && ancestor) {
if (ancestor.silent) {
isSilent = true;
break;
}
ancestor = ancestor.parent;
}
return isSilent;
};
Element2.prototype._updateAnimationTargets = function() {
for (var i = 0; i < this.animators.length; i++) {
var animator = this.animators[i];
if (animator.targetName) {
animator.changeTarget(this[animator.targetName]);
}
}
};
Element2.prototype.removeState = function(state) {
var idx = indexOf(this.currentStates, state);
if (idx >= 0) {
var currentStates = this.currentStates.slice();
currentStates.splice(idx, 1);
this.useStates(currentStates);
}
};
Element2.prototype.replaceState = function(oldState, newState, forceAdd) {
var currentStates = this.currentStates.slice();
var idx = indexOf(currentStates, oldState);
var newStateExists = indexOf(currentStates, newState) >= 0;
if (idx >= 0) {
if (!newStateExists) {
currentStates[idx] = newState;
} else {
currentStates.splice(idx, 1);
}
} else if (forceAdd && !newStateExists) {
currentStates.push(newState);
}
this.useStates(currentStates);
};
Element2.prototype.toggleState = function(state, enable) {
if (enable) {
this.useState(state, true);
} else {
this.removeState(state);
}
};
Element2.prototype._mergeStates = function(states) {
var mergedState = {};
var mergedTextConfig;
for (var i = 0; i < states.length; i++) {
var state = states[i];
extend(mergedState, state);
if (state.textConfig) {
mergedTextConfig = mergedTextConfig || {};
extend(mergedTextConfig, state.textConfig);
}
}
if (mergedTextConfig) {
mergedState.textConfig = mergedTextConfig;
}
return mergedState;
};
Element2.prototype._applyStateObj = function(stateName, state, normalState, keepCurrentStates, transition, animationCfg) {
var needsRestoreToNormal = !(state && keepCurrentStates);
if (state && state.textConfig) {
this.textConfig = extend({}, keepCurrentStates ? this.textConfig : normalState.textConfig);
extend(this.textConfig, state.textConfig);
} else if (needsRestoreToNormal) {
if (normalState.textConfig) {
this.textConfig = normalState.textConfig;
}
}
var transitionTarget = {};
var hasTransition = false;
for (var i = 0; i < PRIMARY_STATES_KEYS$1.length; i++) {
var key = PRIMARY_STATES_KEYS$1[i];
var propNeedsTransition = transition && DEFAULT_ANIMATABLE_MAP[key];
if (state && state[key] != null) {
if (propNeedsTransition) {
hasTransition = true;
transitionTarget[key] = state[key];
} else {
this[key] = state[key];
}
} else if (needsRestoreToNormal) {
if (normalState[key] != null) {
if (propNeedsTransition) {
hasTransition = true;
transitionTarget[key] = normalState[key];
} else {
this[key] = normalState[key];
}
}
}
}
if (!transition) {
for (var i = 0; i < this.animators.length; i++) {
var animator = this.animators[i];
var targetName = animator.targetName;
if (!animator.getLoop()) {
animator.__changeFinalValue(targetName ? (state || normalState)[targetName] : state || normalState);
}
}
}
if (hasTransition) {
this._transitionState(stateName, transitionTarget, animationCfg);
}
};
Element2.prototype._attachComponent = function(componentEl) {
if (componentEl.__zr && !componentEl.__hostTarget) {
return;
}
if (componentEl === this) {
return;
}
var zr = this.__zr;
if (zr) {
componentEl.addSelfToZr(zr);
}
componentEl.__zr = zr;
componentEl.__hostTarget = this;
};
Element2.prototype._detachComponent = function(componentEl) {
if (componentEl.__zr) {
componentEl.removeSelfFromZr(componentEl.__zr);
}
componentEl.__zr = null;
componentEl.__hostTarget = null;
};
Element2.prototype.getClipPath = function() {
return this._clipPath;
};
Element2.prototype.setClipPath = function(clipPath) {
if (this._clipPath && this._clipPath !== clipPath) {
this.removeClipPath();
}
this._attachComponent(clipPath);
this._clipPath = clipPath;
this.markRedraw();
};
Element2.prototype.removeClipPath = function() {
var clipPath = this._clipPath;
if (clipPath) {
this._detachComponent(clipPath);
this._clipPath = null;
this.markRedraw();
}
};
Element2.prototype.getTextContent = function() {
return this._textContent;
};
Element2.prototype.setTextContent = function(textEl) {
var previousTextContent = this._textContent;
if (previousTextContent === textEl) {
return;
}
if (previousTextContent && previousTextContent !== textEl) {
this.removeTextContent();
}
textEl.innerTransformable = new Transformable();
this._attachComponent(textEl);
this._textContent = textEl;
this.markRedraw();
};
Element2.prototype.setTextConfig = function(cfg) {
if (!this.textConfig) {
this.textConfig = {};
}
extend(this.textConfig, cfg);
this.markRedraw();
};
Element2.prototype.removeTextConfig = function() {
this.textConfig = null;
this.markRedraw();
};
Element2.prototype.removeTextContent = function() {
var textEl = this._textContent;
if (textEl) {
textEl.innerTransformable = null;
this._detachComponent(textEl);
this._textContent = null;
this._innerTextDefaultStyle = null;
this.markRedraw();
}
};
Element2.prototype.getTextGuideLine = function() {
return this._textGuide;
};
Element2.prototype.setTextGuideLine = function(guideLine) {
if (this._textGuide && this._textGuide !== guideLine) {
this.removeTextGuideLine();
}
this._attachComponent(guideLine);
this._textGuide = guideLine;
this.markRedraw();
};
Element2.prototype.removeTextGuideLine = function() {
var textGuide = this._textGuide;
if (textGuide) {
this._detachComponent(textGuide);
this._textGuide = null;
this.markRedraw();
}
};
Element2.prototype.markRedraw = function() {
this.__dirty |= REDRAW_BIT;
var zr = this.__zr;
if (zr) {
if (this.__inHover) {
zr.refreshHover();
} else {
zr.refresh();
}
}
if (this.__hostTarget) {
this.__hostTarget.markRedraw();
}
};
Element2.prototype.dirty = function() {
this.markRedraw();
};
Element2.prototype._toggleHoverLayerFlag = function(inHover) {
this.__inHover = inHover;
var textContent = this._textContent;
var textGuide = this._textGuide;
if (textContent) {
textContent.__inHover = inHover;
}
if (textGuide) {
textGuide.__inHover = inHover;
}
};
Element2.prototype.addSelfToZr = function(zr) {
if (this.__zr === zr) {
return;
}
this.__zr = zr;
var animators = this.animators;
if (animators) {
for (var i = 0; i < animators.length; i++) {
zr.animation.addAnimator(animators[i]);
}
}
if (this._clipPath) {
this._clipPath.addSelfToZr(zr);
}
if (this._textContent) {
this._textContent.addSelfToZr(zr);
}
if (this._textGuide) {
this._textGuide.addSelfToZr(zr);
}
};
Element2.prototype.removeSelfFromZr = function(zr) {
if (!this.__zr) {
return;
}
this.__zr = null;
var animators = this.animators;
if (animators) {
for (var i = 0; i < animators.length; i++) {
zr.animation.removeAnimator(animators[i]);
}
}
if (this._clipPath) {
this._clipPath.removeSelfFromZr(zr);
}
if (this._textContent) {
this._textContent.removeSelfFromZr(zr);
}
if (this._textGuide) {
this._textGuide.removeSelfFromZr(zr);
}
};
Element2.prototype.animate = function(key, loop, allowDiscreteAnimation) {
var target = key ? this[key] : this;
var animator = new Animator(target, loop, allowDiscreteAnimation);
key && (animator.targetName = key);
this.addAnimator(animator, key);
return animator;
};
Element2.prototype.addAnimator = function(animator, key) {
var zr = this.__zr;
var el2 = this;
animator.during(function() {
el2.updateDuringAnimation(key);
}).done(function() {
var animators = el2.animators;
var idx = indexOf(animators, animator);
if (idx >= 0) {
animators.splice(idx, 1);
}
});
this.animators.push(animator);
if (zr) {
zr.animation.addAnimator(animator);
}
zr && zr.wakeUp();
};
Element2.prototype.updateDuringAnimation = function(key) {
this.markRedraw();
};
Element2.prototype.stopAnimation = function(scope, forwardToLast) {
var animators = this.animators;
var len2 = animators.length;
var leftAnimators = [];
for (var i = 0; i < len2; i++) {
var animator = animators[i];
if (!scope || scope === animator.scope) {
animator.stop(forwardToLast);
} else {
leftAnimators.push(animator);
}
}
this.animators = leftAnimators;
return this;
};
Element2.prototype.animateTo = function(target, cfg, animationProps) {
animateTo(this, target, cfg, animationProps);
};
Element2.prototype.animateFrom = function(target, cfg, animationProps) {
animateTo(this, target, cfg, animationProps, true);
};
Element2.prototype._transitionState = function(stateName, target, cfg, animationProps) {
var animators = animateTo(this, target, cfg, animationProps);
for (var i = 0; i < animators.length; i++) {
animators[i].__fromStateTransition = stateName;
}
};
Element2.prototype.getBoundingRect = function() {
return null;
};
Element2.prototype.getPaintRect = function() {
return null;
};
Element2.initDefaultProps = function() {
var elProto = Element2.prototype;
elProto.type = "element";
elProto.name = "";
elProto.ignore = elProto.silent = elProto.isGroup = elProto.draggable = elProto.dragging = elProto.ignoreClip = elProto.__inHover = false;
elProto.__dirty = REDRAW_BIT;
function createLegacyProperty(key, privateKey, xKey, yKey) {
Object.defineProperty(elProto, key, {
get: function() {
if (!this[privateKey]) {
var pos = this[privateKey] = [];
enhanceArray(this, pos);
}
return this[privateKey];
},
set: function(pos) {
this[xKey] = pos[0];
this[yKey] = pos[1];
this[privateKey] = pos;
enhanceArray(this, pos);
}
});
function enhanceArray(self2, pos) {
Object.defineProperty(pos, 0, {
get: function() {
return self2[xKey];
},
set: function(val) {
self2[xKey] = val;
}
});
Object.defineProperty(pos, 1, {
get: function() {
return self2[yKey];
},
set: function(val) {
self2[yKey] = val;
}
});
}
}
if (Object.defineProperty) {
createLegacyProperty("position", "_legacyPos", "x", "y");
createLegacyProperty("scale", "_legacyScale", "scaleX", "scaleY");
createLegacyProperty("origin", "_legacyOrigin", "originX", "originY");
}
}();
return Element2;
}();
mixin(Element$1, Eventful);
mixin(Element$1, Transformable);
function animateTo(animatable, target, cfg, animationProps, reverse2) {
cfg = cfg || {};
var animators = [];
animateToShallow(animatable, "", animatable, target, cfg, animationProps, animators, reverse2);
var finishCount = animators.length;
var doneHappened = false;
var cfgDone = cfg.done;
var cfgAborted = cfg.aborted;
var doneCb = function() {
doneHappened = true;
finishCount--;
if (finishCount <= 0) {
doneHappened ? cfgDone && cfgDone() : cfgAborted && cfgAborted();
}
};
var abortedCb = function() {
finishCount--;
if (finishCount <= 0) {
doneHappened ? cfgDone && cfgDone() : cfgAborted && cfgAborted();
}
};
if (!finishCount) {
cfgDone && cfgDone();
}
if (animators.length > 0 && cfg.during) {
animators[0].during(function(target2, percent) {
cfg.during(percent);
});
}
for (var i = 0; i < animators.length; i++) {
var animator = animators[i];
if (doneCb) {
animator.done(doneCb);
}
if (abortedCb) {
animator.aborted(abortedCb);
}
if (cfg.force) {
animator.duration(cfg.duration);
}
animator.start(cfg.easing);
}
return animators;
}
function copyArrShallow(source, target, len2) {
for (var i = 0; i < len2; i++) {
source[i] = target[i];
}
}
function is2DArray(value) {
return isArrayLike(value[0]);
}
function copyValue(target, source, key) {
if (isArrayLike(source[key])) {
if (!isArrayLike(target[key])) {
target[key] = [];
}
if (isTypedArray(source[key])) {
var len2 = source[key].length;
if (target[key].length !== len2) {
target[key] = new source[key].constructor(len2);
copyArrShallow(target[key], source[key], len2);
}
} else {
var sourceArr = source[key];
var targetArr = target[key];
var len0 = sourceArr.length;
if (is2DArray(sourceArr)) {
var len1 = sourceArr[0].length;
for (var i = 0; i < len0; i++) {
if (!targetArr[i]) {
targetArr[i] = Array.prototype.slice.call(sourceArr[i]);
} else {
copyArrShallow(targetArr[i], sourceArr[i], len1);
}
}
} else {
copyArrShallow(targetArr, sourceArr, len0);
}
targetArr.length = sourceArr.length;
}
} else {
target[key] = source[key];
}
}
function isValueSame(val1, val2) {
return val1 === val2 || isArrayLike(val1) && isArrayLike(val2) && is1DArraySame(val1, val2);
}
function is1DArraySame(arr0, arr1) {
var len2 = arr0.length;
if (len2 !== arr1.length) {
return false;
}
for (var i = 0; i < len2; i++) {
if (arr0[i] !== arr1[i]) {
return false;
}
}
return true;
}
function animateToShallow(animatable, topKey, animateObj, target, cfg, animationProps, animators, reverse2) {
var targetKeys = keys(target);
var duration = cfg.duration;
var delay = cfg.delay;
var additive = cfg.additive;
var setToFinal = cfg.setToFinal;
var animateAll = !isObject$3(animationProps);
var existsAnimators = animatable.animators;
var animationKeys = [];
for (var k2 = 0; k2 < targetKeys.length; k2++) {
var innerKey = targetKeys[k2];
var targetVal = target[innerKey];
if (targetVal != null && animateObj[innerKey] != null && (animateAll || animationProps[innerKey])) {
if (isObject$3(targetVal) && !isArrayLike(targetVal) && !isGradientObject(targetVal)) {
if (topKey) {
if (!reverse2) {
animateObj[innerKey] = targetVal;
animatable.updateDuringAnimation(topKey);
}
continue;
}
animateToShallow(animatable, innerKey, animateObj[innerKey], targetVal, cfg, animationProps && animationProps[innerKey], animators, reverse2);
} else {
animationKeys.push(innerKey);
}
} else if (!reverse2) {
animateObj[innerKey] = targetVal;
animatable.updateDuringAnimation(topKey);
animationKeys.push(innerKey);
}
}
var keyLen = animationKeys.length;
if (!additive && keyLen) {
for (var i = 0; i < existsAnimators.length; i++) {
var animator = existsAnimators[i];
if (animator.targetName === topKey) {
var allAborted = animator.stopTracks(animationKeys);
if (allAborted) {
var idx = indexOf(existsAnimators, animator);
existsAnimators.splice(idx, 1);
}
}
}
}
if (!cfg.force) {
animationKeys = filter(animationKeys, function(key) {
return !isValueSame(target[key], animateObj[key]);
});
keyLen = animationKeys.length;
}
if (keyLen > 0 || cfg.force && !animators.length) {
var revertedSource = void 0;
var reversedTarget = void 0;
var sourceClone = void 0;
if (reverse2) {
reversedTarget = {};
if (setToFinal) {
revertedSource = {};
}
for (var i = 0; i < keyLen; i++) {
var innerKey = animationKeys[i];
reversedTarget[innerKey] = animateObj[innerKey];
if (setToFinal) {
revertedSource[innerKey] = target[innerKey];
} else {
animateObj[innerKey] = target[innerKey];
}
}
} else if (setToFinal) {
sourceClone = {};
for (var i = 0; i < keyLen; i++) {
var innerKey = animationKeys[i];
sourceClone[innerKey] = cloneValue(animateObj[innerKey]);
copyValue(animateObj, target, innerKey);
}
}
var animator = new Animator(animateObj, false, false, additive ? filter(existsAnimators, function(animator2) {
return animator2.targetName === topKey;
}) : null);
animator.targetName = topKey;
if (cfg.scope) {
animator.scope = cfg.scope;
}
if (setToFinal && revertedSource) {
animator.whenWithKeys(0, revertedSource, animationKeys);
}
if (sourceClone) {
animator.whenWithKeys(0, sourceClone, animationKeys);
}
animator.whenWithKeys(duration == null ? 500 : duration, reverse2 ? reversedTarget : target, animationKeys).delay(delay || 0);
animatable.addAnimator(animator, topKey);
animators.push(animator);
}
}
var Group$3 = function(_super) {
__extends(Group2, _super);
function Group2(opts) {
var _this = _super.call(this) || this;
_this.isGroup = true;
_this._children = [];
_this.attr(opts);
return _this;
}
Group2.prototype.childrenRef = function() {
return this._children;
};
Group2.prototype.children = function() {
return this._children.slice();
};
Group2.prototype.childAt = function(idx) {
return this._children[idx];
};
Group2.prototype.childOfName = function(name) {
var children = this._children;
for (var i = 0; i < children.length; i++) {
if (children[i].name === name) {
return children[i];
}
}
};
Group2.prototype.childCount = function() {
return this._children.length;
};
Group2.prototype.add = function(child) {
if (child) {
if (child !== this && child.parent !== this) {
this._children.push(child);
this._doAdd(child);
}
}
return this;
};
Group2.prototype.addBefore = function(child, nextSibling2) {
if (child && child !== this && child.parent !== this && nextSibling2 && nextSibling2.parent === this) {
var children = this._children;
var idx = children.indexOf(nextSibling2);
if (idx >= 0) {
children.splice(idx, 0, child);
this._doAdd(child);
}
}
return this;
};
Group2.prototype.replace = function(oldChild, newChild) {
var idx = indexOf(this._children, oldChild);
if (idx >= 0) {
this.replaceAt(newChild, idx);
}
return this;
};
Group2.prototype.replaceAt = function(child, index2) {
var children = this._children;
var old = children[index2];
if (child && child !== this && child.parent !== this && child !== old) {
children[index2] = child;
old.parent = null;
var zr = this.__zr;
if (zr) {
old.removeSelfFromZr(zr);
}
this._doAdd(child);
}
return this;
};
Group2.prototype._doAdd = function(child) {
if (child.parent) {
child.parent.remove(child);
}
child.parent = this;
var zr = this.__zr;
if (zr && zr !== child.__zr) {
child.addSelfToZr(zr);
}
zr && zr.refresh();
};
Group2.prototype.remove = function(child) {
var zr = this.__zr;
var children = this._children;
var idx = indexOf(children, child);
if (idx < 0) {
return this;
}
children.splice(idx, 1);
child.parent = null;
if (zr) {
child.removeSelfFromZr(zr);
}
zr && zr.refresh();
return this;
};
Group2.prototype.removeAll = function() {
var children = this._children;
var zr = this.__zr;
for (var i = 0; i < children.length; i++) {
var child = children[i];
if (zr) {
child.removeSelfFromZr(zr);
}
child.parent = null;
}
children.length = 0;
return this;
};
Group2.prototype.eachChild = function(cb2, context) {
var children = this._children;
for (var i = 0; i < children.length; i++) {
var child = children[i];
cb2.call(context, child, i);
}
return this;
};
Group2.prototype.traverse = function(cb2, context) {
for (var i = 0; i < this._children.length; i++) {
var child = this._children[i];
var stopped = cb2.call(context, child);
if (child.isGroup && !stopped) {
child.traverse(cb2, context);
}
}
return this;
};
Group2.prototype.addSelfToZr = function(zr) {
_super.prototype.addSelfToZr.call(this, zr);
for (var i = 0; i < this._children.length; i++) {
var child = this._children[i];
child.addSelfToZr(zr);
}
};
Group2.prototype.removeSelfFromZr = function(zr) {
_super.prototype.removeSelfFromZr.call(this, zr);
for (var i = 0; i < this._children.length; i++) {
var child = this._children[i];
child.removeSelfFromZr(zr);
}
};
Group2.prototype.getBoundingRect = function(includeChildren) {
var tmpRect2 = new BoundingRect(0, 0, 0, 0);
var children = includeChildren || this._children;
var tmpMat = [];
var rect = null;
for (var i = 0; i < children.length; i++) {
var child = children[i];
if (child.ignore || child.invisible) {
continue;
}
var childRect = child.getBoundingRect();
var transform2 = child.getLocalTransform(tmpMat);
if (transform2) {
BoundingRect.applyTransform(tmpRect2, childRect, transform2);
rect = rect || tmpRect2.clone();
rect.union(tmpRect2);
} else {
rect = rect || childRect.clone();
rect.union(childRect);
}
}
return rect || tmpRect2;
};
return Group2;
}(Element$1);
Group$3.prototype.type = "group";
/*!
* ZRender, a high performance 2d drawing library.
*
* Copyright (c) 2013, Baidu Inc.
* All rights reserved.
*
* LICENSE
* https://github.com/ecomfe/zrender/blob/master/LICENSE.txt
*/
var painterCtors = {};
var instances$1 = {};
function delInstance(id2) {
delete instances$1[id2];
}
function isDarkMode(backgroundColor2) {
if (!backgroundColor2) {
return false;
}
if (typeof backgroundColor2 === "string") {
return lum(backgroundColor2, 1) < DARK_MODE_THRESHOLD;
} else if (backgroundColor2.colorStops) {
var colorStops = backgroundColor2.colorStops;
var totalLum = 0;
var len2 = colorStops.length;
for (var i = 0; i < len2; i++) {
totalLum += lum(colorStops[i].color, 1);
}
totalLum /= len2;
return totalLum < DARK_MODE_THRESHOLD;
}
return false;
}
var ZRender = function() {
function ZRender2(id2, dom, opts) {
var _this = this;
this._sleepAfterStill = 10;
this._stillFrameAccum = 0;
this._needsRefresh = true;
this._needsRefreshHover = true;
this._darkMode = false;
opts = opts || {};
this.dom = dom;
this.id = id2;
var storage2 = new Storage();
var rendererType = opts.renderer || "canvas";
if (!painterCtors[rendererType]) {
rendererType = keys(painterCtors)[0];
}
opts.useDirtyRect = opts.useDirtyRect == null ? false : opts.useDirtyRect;
var painter = new painterCtors[rendererType](dom, storage2, opts, id2);
var ssrMode = opts.ssr || painter.ssrOnly;
this.storage = storage2;
this.painter = painter;
var handlerProxy = !env.node && !env.worker && !ssrMode ? new HandlerDomProxy(painter.getViewportRoot(), painter.root) : null;
var useCoarsePointer = opts.useCoarsePointer;
var usePointerSize = useCoarsePointer == null || useCoarsePointer === "auto" ? env.touchEventsSupported : !!useCoarsePointer;
var defaultPointerSize = 44;
var pointerSize;
if (usePointerSize) {
pointerSize = retrieve2(opts.pointerSize, defaultPointerSize);
}
this.handler = new Handler(storage2, painter, handlerProxy, painter.root, pointerSize);
this.animation = new Animation({
stage: {
update: ssrMode ? null : function() {
return _this._flush(true);
}
}
});
if (!ssrMode) {
this.animation.start();
}
}
ZRender2.prototype.add = function(el2) {
if (this._disposed || !el2) {
return;
}
this.storage.addRoot(el2);
el2.addSelfToZr(this);
this.refresh();
};
ZRender2.prototype.remove = function(el2) {
if (this._disposed || !el2) {
return;
}
this.storage.delRoot(el2);
el2.removeSelfFromZr(this);
this.refresh();
};
ZRender2.prototype.configLayer = function(zLevel, config) {
if (this._disposed) {
return;
}
if (this.painter.configLayer) {
this.painter.configLayer(zLevel, config);
}
this.refresh();
};
ZRender2.prototype.setBackgroundColor = function(backgroundColor2) {
if (this._disposed) {
return;
}
if (this.painter.setBackgroundColor) {
this.painter.setBackgroundColor(backgroundColor2);
}
this.refresh();
this._backgroundColor = backgroundColor2;
this._darkMode = isDarkMode(backgroundColor2);
};
ZRender2.prototype.getBackgroundColor = function() {
return this._backgroundColor;
};
ZRender2.prototype.setDarkMode = function(darkMode) {
this._darkMode = darkMode;
};
ZRender2.prototype.isDarkMode = function() {
return this._darkMode;
};
ZRender2.prototype.refreshImmediately = function(fromInside) {
if (this._disposed) {
return;
}
if (!fromInside) {
this.animation.update(true);
}
this._needsRefresh = false;
this.painter.refresh();
this._needsRefresh = false;
};
ZRender2.prototype.refresh = function() {
if (this._disposed) {
return;
}
this._needsRefresh = true;
this.animation.start();
};
ZRender2.prototype.flush = function() {
if (this._disposed) {
return;
}
this._flush(false);
};
ZRender2.prototype._flush = function(fromInside) {
var triggerRendered;
var start2 = getTime();
if (this._needsRefresh) {
triggerRendered = true;
this.refreshImmediately(fromInside);
}
if (this._needsRefreshHover) {
triggerRendered = true;
this.refreshHoverImmediately();
}
var end2 = getTime();
if (triggerRendered) {
this._stillFrameAccum = 0;
this.trigger("rendered", {
elapsedTime: end2 - start2
});
} else if (this._sleepAfterStill > 0) {
this._stillFrameAccum++;
if (this._stillFrameAccum > this._sleepAfterStill) {
this.animation.stop();
}
}
};
ZRender2.prototype.setSleepAfterStill = function(stillFramesCount) {
this._sleepAfterStill = stillFramesCount;
};
ZRender2.prototype.wakeUp = function() {
if (this._disposed) {
return;
}
this.animation.start();
this._stillFrameAccum = 0;
};
ZRender2.prototype.refreshHover = function() {
this._needsRefreshHover = true;
};
ZRender2.prototype.refreshHoverImmediately = function() {
if (this._disposed) {
return;
}
this._needsRefreshHover = false;
if (this.painter.refreshHover && this.painter.getType() === "canvas") {
this.painter.refreshHover();
}
};
ZRender2.prototype.resize = function(opts) {
if (this._disposed) {
return;
}
opts = opts || {};
this.painter.resize(opts.width, opts.height);
this.handler.resize();
};
ZRender2.prototype.clearAnimation = function() {
if (this._disposed) {
return;
}
this.animation.clear();
};
ZRender2.prototype.getWidth = function() {
if (this._disposed) {
return;
}
return this.painter.getWidth();
};
ZRender2.prototype.getHeight = function() {
if (this._disposed) {
return;
}
return this.painter.getHeight();
};
ZRender2.prototype.setCursorStyle = function(cursorStyle) {
if (this._disposed) {
return;
}
this.handler.setCursorStyle(cursorStyle);
};
ZRender2.prototype.findHover = function(x2, y2) {
if (this._disposed) {
return;
}
return this.handler.findHover(x2, y2);
};
ZRender2.prototype.on = function(eventName, eventHandler, context) {
if (!this._disposed) {
this.handler.on(eventName, eventHandler, context);
}
return this;
};
ZRender2.prototype.off = function(eventName, eventHandler) {
if (this._disposed) {
return;
}
this.handler.off(eventName, eventHandler);
};
ZRender2.prototype.trigger = function(eventName, event) {
if (this._disposed) {
return;
}
this.handler.trigger(eventName, event);
};
ZRender2.prototype.clear = function() {
if (this._disposed) {
return;
}
var roots2 = this.storage.getRoots();
for (var i = 0; i < roots2.length; i++) {
if (roots2[i] instanceof Group$3) {
roots2[i].removeSelfFromZr(this);
}
}
this.storage.delAllRoots();
this.painter.clear();
};
ZRender2.prototype.dispose = function() {
if (this._disposed) {
return;
}
this.animation.stop();
this.clear();
this.storage.dispose();
this.painter.dispose();
this.handler.dispose();
this.animation = this.storage = this.painter = this.handler = null;
this._disposed = true;
delInstance(this.id);
};
return ZRender2;
}();
function init$2(dom, opts) {
var zr = new ZRender(guid(), dom, opts);
instances$1[zr.id] = zr;
return zr;
}
function dispose$1(zr) {
zr.dispose();
}
function disposeAll() {
for (var key in instances$1) {
if (instances$1.hasOwnProperty(key)) {
instances$1[key].dispose();
}
}
instances$1 = {};
}
function getInstance(id2) {
return instances$1[id2];
}
function registerPainter(name, Ctor) {
painterCtors[name] = Ctor;
}
var ssrDataGetter;
function getElementSSRData(el2) {
if (typeof ssrDataGetter === "function") {
return ssrDataGetter(el2);
}
}
function registerSSRDataGetter(getter) {
ssrDataGetter = getter;
}
var version$1 = "5.6.0";
const zrender = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
dispose: dispose$1,
disposeAll,
getElementSSRData,
getInstance,
init: init$2,
registerPainter,
registerSSRDataGetter,
version: version$1
}, Symbol.toStringTag, { value: "Module" }));
var RADIAN_EPSILON = 1e-4;
var ROUND_SUPPORTED_PRECISION_MAX = 20;
function _trim(str) {
return str.replace(/^\s+|\s+$/g, "");
}
function linearMap$2(val, domain, range3, clamp2) {
var d0 = domain[0];
var d1 = domain[1];
var r0 = range3[0];
var r1 = range3[1];
var subDomain = d1 - d0;
var subRange = r1 - r0;
if (subDomain === 0) {
return subRange === 0 ? r0 : (r0 + r1) / 2;
}
if (clamp2) {
if (subDomain > 0) {
if (val <= d0) {
return r0;
} else if (val >= d1) {
return r1;
}
} else {
if (val >= d0) {
return r0;
} else if (val <= d1) {
return r1;
}
}
} else {
if (val === d0) {
return r0;
}
if (val === d1) {
return r1;
}
}
return (val - d0) / subDomain * subRange + r0;
}
function parsePercent(percent, all) {
switch (percent) {
case "center":
case "middle":
percent = "50%";
break;
case "left":
case "top":
percent = "0%";
break;
case "right":
case "bottom":
percent = "100%";
break;
}
if (isString$1(percent)) {
if (_trim(percent).match(/%$/)) {
return parseFloat(percent) / 100 * all;
}
return parseFloat(percent);
}
return percent == null ? NaN : +percent;
}
function round$3(x2, precision, returnStr) {
if (precision == null) {
precision = 10;
}
precision = Math.min(Math.max(0, precision), ROUND_SUPPORTED_PRECISION_MAX);
x2 = (+x2).toFixed(precision);
return returnStr ? x2 : +x2;
}
function asc$2(arr) {
arr.sort(function(a, b2) {
return a - b2;
});
return arr;
}
function getPrecision(val) {
val = +val;
if (isNaN(val)) {
return 0;
}
if (val > 1e-14) {
var e2 = 1;
for (var i = 0; i < 15; i++, e2 *= 10) {
if (Math.round(val * e2) / e2 === val) {
return i;
}
}
}
return getPrecisionSafe(val);
}
function getPrecisionSafe(val) {
var str = val.toString().toLowerCase();
var eIndex = str.indexOf("e");
var exp = eIndex > 0 ? +str.slice(eIndex + 1) : 0;
var significandPartLen = eIndex > 0 ? eIndex : str.length;
var dotIndex = str.indexOf(".");
var decimalPartLen = dotIndex < 0 ? 0 : significandPartLen - 1 - dotIndex;
return Math.max(0, decimalPartLen - exp);
}
function getPixelPrecision(dataExtent, pixelExtent) {
var log = Math.log;
var LN10 = Math.LN10;
var dataQuantity = Math.floor(log(dataExtent[1] - dataExtent[0]) / LN10);
var sizeQuantity = Math.round(log(Math.abs(pixelExtent[1] - pixelExtent[0])) / LN10);
var precision = Math.min(Math.max(-dataQuantity + sizeQuantity, 0), 20);
return !isFinite(precision) ? 20 : precision;
}
function getPercentWithPrecision(valueList, idx, precision) {
if (!valueList[idx]) {
return 0;
}
var seats = getPercentSeats(valueList, precision);
return seats[idx] || 0;
}
function getPercentSeats(valueList, precision) {
var sum2 = reduce(valueList, function(acc, val) {
return acc + (isNaN(val) ? 0 : val);
}, 0);
if (sum2 === 0) {
return [];
}
var digits = Math.pow(10, precision);
var votesPerQuota = map$1(valueList, function(val) {
return (isNaN(val) ? 0 : val) / sum2 * digits * 100;
});
var targetSeats = digits * 100;
var seats = map$1(votesPerQuota, function(votes) {
return Math.floor(votes);
});
var currentSum = reduce(seats, function(acc, val) {
return acc + val;
}, 0);
var remainder = map$1(votesPerQuota, function(votes, idx) {
return votes - seats[idx];
});
while (currentSum < targetSeats) {
var max3 = Number.NEGATIVE_INFINITY;
var maxId = null;
for (var i = 0, len2 = remainder.length; i < len2; ++i) {
if (remainder[i] > max3) {
max3 = remainder[i];
maxId = i;
}
}
++seats[maxId];
remainder[maxId] = 0;
++currentSum;
}
return map$1(seats, function(seat) {
return seat / digits;
});
}
function addSafe(val0, val1) {
var maxPrecision = Math.max(getPrecision(val0), getPrecision(val1));
var sum2 = val0 + val1;
return maxPrecision > ROUND_SUPPORTED_PRECISION_MAX ? sum2 : round$3(sum2, maxPrecision);
}
var MAX_SAFE_INTEGER = 9007199254740991;
function remRadian(radian) {
var pi2 = Math.PI * 2;
return (radian % pi2 + pi2) % pi2;
}
function isRadianAroundZero(val) {
return val > -RADIAN_EPSILON && val < RADIAN_EPSILON;
}
var TIME_REG = /^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d{1,2})(?::(\d{1,2})(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/;
function parseDate(value) {
if (value instanceof Date) {
return value;
} else if (isString$1(value)) {
var match2 = TIME_REG.exec(value);
if (!match2) {
return /* @__PURE__ */ new Date(NaN);
}
if (!match2[8]) {
return new Date(+match2[1], +(match2[2] || 1) - 1, +match2[3] || 1, +match2[4] || 0, +(match2[5] || 0), +match2[6] || 0, match2[7] ? +match2[7].substring(0, 3) : 0);
} else {
var hour = +match2[4] || 0;
if (match2[8].toUpperCase() !== "Z") {
hour -= +match2[8].slice(0, 3);
}
return new Date(Date.UTC(+match2[1], +(match2[2] || 1) - 1, +match2[3] || 1, hour, +(match2[5] || 0), +match2[6] || 0, match2[7] ? +match2[7].substring(0, 3) : 0));
}
} else if (value == null) {
return /* @__PURE__ */ new Date(NaN);
}
return new Date(Math.round(value));
}
function quantity(val) {
return Math.pow(10, quantityExponent(val));
}
function quantityExponent(val) {
if (val === 0) {
return 0;
}
var exp = Math.floor(Math.log(val) / Math.LN10);
if (val / Math.pow(10, exp) >= 10) {
exp++;
}
return exp;
}
function nice(val, round2) {
var exponent = quantityExponent(val);
var exp10 = Math.pow(10, exponent);
var f2 = val / exp10;
var nf2;
if (round2) {
if (f2 < 1.5) {
nf2 = 1;
} else if (f2 < 2.5) {
nf2 = 2;
} else if (f2 < 4) {
nf2 = 3;
} else if (f2 < 7) {
nf2 = 5;
} else {
nf2 = 10;
}
} else {
if (f2 < 1) {
nf2 = 1;
} else if (f2 < 2) {
nf2 = 2;
} else if (f2 < 3) {
nf2 = 3;
} else if (f2 < 5) {
nf2 = 5;
} else {
nf2 = 10;
}
}
val = nf2 * exp10;
return exponent >= -20 ? +val.toFixed(exponent < 0 ? -exponent : 0) : val;
}
function quantile(ascArr, p2) {
var H2 = (ascArr.length - 1) * p2 + 1;
var h2 = Math.floor(H2);
var v4 = +ascArr[h2 - 1];
var e2 = H2 - h2;
return e2 ? v4 + e2 * (ascArr[h2] - v4) : v4;
}
function reformIntervals(list) {
list.sort(function(a, b2) {
return littleThan2(a, b2, 0) ? -1 : 1;
});
var curr = -Infinity;
var currClose = 1;
for (var i = 0; i < list.length; ) {
var interval = list[i].interval;
var close_1 = list[i].close;
for (var lg2 = 0; lg2 < 2; lg2++) {
if (interval[lg2] <= curr) {
interval[lg2] = curr;
close_1[lg2] = !lg2 ? 1 - currClose : 1;
}
curr = interval[lg2];
currClose = close_1[lg2];
}
if (interval[0] === interval[1] && close_1[0] * close_1[1] !== 1) {
list.splice(i, 1);
} else {
i++;
}
}
return list;
function littleThan2(a, b2, lg3) {
return a.interval[lg3] < b2.interval[lg3] || a.interval[lg3] === b2.interval[lg3] && (a.close[lg3] - b2.close[lg3] === (!lg3 ? 1 : -1) || !lg3 && littleThan2(a, b2, 1));
}
}
function numericToNumber(val) {
var valFloat = parseFloat(val);
return valFloat == val && (valFloat !== 0 || !isString$1(val) || val.indexOf("x") <= 0) ? valFloat : NaN;
}
function isNumeric(val) {
return !isNaN(numericToNumber(val));
}
function getRandomIdBase() {
return Math.round(Math.random() * 9);
}
function getGreatestCommonDividor(a, b2) {
if (b2 === 0) {
return a;
}
return getGreatestCommonDividor(b2, a % b2);
}
function getLeastCommonMultiple(a, b2) {
if (a == null) {
return b2;
}
if (b2 == null) {
return a;
}
return a * b2 / getGreatestCommonDividor(a, b2);
}
var ECHARTS_PREFIX = "[ECharts] ";
var storedLogs = {};
var hasConsole = typeof console !== "undefined" && console.warn && console.log;
function outputLog(type4, str, onlyOnce) {
if (hasConsole) {
{
if (storedLogs[str]) {
return;
}
storedLogs[str] = true;
}
console[type4](ECHARTS_PREFIX + str);
}
}
function warn(str, onlyOnce) {
outputLog("warn", str);
}
function throwError(msg) {
throw new Error(msg);
}
function interpolateNumber(p0, p1, percent) {
return (p1 - p0) * percent + p0;
}
var DUMMY_COMPONENT_NAME_PREFIX = "series\0";
var INTERNAL_COMPONENT_ID_PREFIX = "\0_ec_\0";
function normalizeToArray(value) {
return value instanceof Array ? value : value == null ? [] : [value];
}
function defaultEmphasis(opt, key, subOpts) {
if (opt) {
opt[key] = opt[key] || {};
opt.emphasis = opt.emphasis || {};
opt.emphasis[key] = opt.emphasis[key] || {};
for (var i = 0, len2 = subOpts.length; i < len2; i++) {
var subOptName = subOpts[i];
if (!opt.emphasis[key].hasOwnProperty(subOptName) && opt[key].hasOwnProperty(subOptName)) {
opt.emphasis[key][subOptName] = opt[key][subOptName];
}
}
}
}
var TEXT_STYLE_OPTIONS = ["fontStyle", "fontWeight", "fontSize", "fontFamily", "rich", "tag", "color", "textBorderColor", "textBorderWidth", "width", "height", "lineHeight", "align", "verticalAlign", "baseline", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY", "textShadowColor", "textShadowBlur", "textShadowOffsetX", "textShadowOffsetY", "backgroundColor", "borderColor", "borderWidth", "borderRadius", "padding"];
function getDataItemValue(dataItem) {
return isObject$3(dataItem) && !isArray$1(dataItem) && !(dataItem instanceof Date) ? dataItem.value : dataItem;
}
function isDataItemOption(dataItem) {
return isObject$3(dataItem) && !(dataItem instanceof Array);
}
function mappingToExists(existings, newCmptOptions, mode) {
var isNormalMergeMode = mode === "normalMerge";
var isReplaceMergeMode = mode === "replaceMerge";
var isReplaceAllMode = mode === "replaceAll";
existings = existings || [];
newCmptOptions = (newCmptOptions || []).slice();
var existingIdIdxMap = createHashMap();
each$f(newCmptOptions, function(cmptOption, index2) {
if (!isObject$3(cmptOption)) {
newCmptOptions[index2] = null;
return;
}
});
var result = prepareResult(existings, existingIdIdxMap, mode);
if (isNormalMergeMode || isReplaceMergeMode) {
mappingById(result, existings, existingIdIdxMap, newCmptOptions);
}
if (isNormalMergeMode) {
mappingByName(result, newCmptOptions);
}
if (isNormalMergeMode || isReplaceMergeMode) {
mappingByIndex(result, newCmptOptions, isReplaceMergeMode);
} else if (isReplaceAllMode) {
mappingInReplaceAllMode(result, newCmptOptions);
}
makeIdAndName(result);
return result;
}
function prepareResult(existings, existingIdIdxMap, mode) {
var result = [];
if (mode === "replaceAll") {
return result;
}
for (var index2 = 0; index2 < existings.length; index2++) {
var existing = existings[index2];
if (existing && existing.id != null) {
existingIdIdxMap.set(existing.id, index2);
}
result.push({
existing: mode === "replaceMerge" || isComponentIdInternal(existing) ? null : existing,
newOption: null,
keyInfo: null,
brandNew: null
});
}
return result;
}
function mappingById(result, existings, existingIdIdxMap, newCmptOptions) {
each$f(newCmptOptions, function(cmptOption, index2) {
if (!cmptOption || cmptOption.id == null) {
return;
}
var optionId = makeComparableKey(cmptOption.id);
var existingIdx = existingIdIdxMap.get(optionId);
if (existingIdx != null) {
var resultItem = result[existingIdx];
assert(!resultItem.newOption, 'Duplicated option on id "' + optionId + '".');
resultItem.newOption = cmptOption;
resultItem.existing = existings[existingIdx];
newCmptOptions[index2] = null;
}
});
}
function mappingByName(result, newCmptOptions) {
each$f(newCmptOptions, function(cmptOption, index2) {
if (!cmptOption || cmptOption.name == null) {
return;
}
for (var i = 0; i < result.length; i++) {
var existing = result[i].existing;
if (!result[i].newOption && existing && (existing.id == null || cmptOption.id == null) && !isComponentIdInternal(cmptOption) && !isComponentIdInternal(existing) && keyExistAndEqual("name", existing, cmptOption)) {
result[i].newOption = cmptOption;
newCmptOptions[index2] = null;
return;
}
}
});
}
function mappingByIndex(result, newCmptOptions, brandNew) {
each$f(newCmptOptions, function(cmptOption) {
if (!cmptOption) {
return;
}
var resultItem;
var nextIdx = 0;
while (
// Be `!resultItem` only when `nextIdx >= result.length`.
(resultItem = result[nextIdx]) && (resultItem.newOption || isComponentIdInternal(resultItem.existing) || // In mode "replaceMerge", here no not-mapped-non-internal-existing.
resultItem.existing && cmptOption.id != null && !keyExistAndEqual("id", cmptOption, resultItem.existing))
) {
nextIdx++;
}
if (resultItem) {
resultItem.newOption = cmptOption;
resultItem.brandNew = brandNew;
} else {
result.push({
newOption: cmptOption,
brandNew,
existing: null,
keyInfo: null
});
}
nextIdx++;
});
}
function mappingInReplaceAllMode(result, newCmptOptions) {
each$f(newCmptOptions, function(cmptOption) {
result.push({
newOption: cmptOption,
brandNew: true,
existing: null,
keyInfo: null
});
});
}
function makeIdAndName(mapResult) {
var idMap = createHashMap();
each$f(mapResult, function(item) {
var existing = item.existing;
existing && idMap.set(existing.id, item);
});
each$f(mapResult, function(item) {
var opt = item.newOption;
assert(!opt || opt.id == null || !idMap.get(opt.id) || idMap.get(opt.id) === item, "id duplicates: " + (opt && opt.id));
opt && opt.id != null && idMap.set(opt.id, item);
!item.keyInfo && (item.keyInfo = {});
});
each$f(mapResult, function(item, index2) {
var existing = item.existing;
var opt = item.newOption;
var keyInfo = item.keyInfo;
if (!isObject$3(opt)) {
return;
}
keyInfo.name = opt.name != null ? makeComparableKey(opt.name) : existing ? existing.name : DUMMY_COMPONENT_NAME_PREFIX + index2;
if (existing) {
keyInfo.id = makeComparableKey(existing.id);
} else if (opt.id != null) {
keyInfo.id = makeComparableKey(opt.id);
} else {
var idNum = 0;
do {
keyInfo.id = "\0" + keyInfo.name + "\0" + idNum++;
} while (idMap.get(keyInfo.id));
}
idMap.set(keyInfo.id, item);
});
}
function keyExistAndEqual(attr, obj1, obj2) {
var key1 = convertOptionIdName(obj1[attr], null);
var key2 = convertOptionIdName(obj2[attr], null);
return key1 != null && key2 != null && key1 === key2;
}
function makeComparableKey(val) {
return convertOptionIdName(val, "");
}
function convertOptionIdName(idOrName, defaultValue) {
if (idOrName == null) {
return defaultValue;
}
return isString$1(idOrName) ? idOrName : isNumber(idOrName) || isStringSafe(idOrName) ? idOrName + "" : defaultValue;
}
function isNameSpecified(componentModel) {
var name = componentModel.name;
return !!(name && name.indexOf(DUMMY_COMPONENT_NAME_PREFIX));
}
function isComponentIdInternal(cmptOption) {
return cmptOption && cmptOption.id != null && makeComparableKey(cmptOption.id).indexOf(INTERNAL_COMPONENT_ID_PREFIX) === 0;
}
function makeInternalComponentId(idSuffix) {
return INTERNAL_COMPONENT_ID_PREFIX + idSuffix;
}
function setComponentTypeToKeyInfo(mappingResult, mainType, componentModelCtor) {
each$f(mappingResult, function(item) {
var newOption = item.newOption;
if (isObject$3(newOption)) {
item.keyInfo.mainType = mainType;
item.keyInfo.subType = determineSubType(mainType, newOption, item.existing, componentModelCtor);
}
});
}
function determineSubType(mainType, newCmptOption, existComponent, componentModelCtor) {
var subType = newCmptOption.type ? newCmptOption.type : existComponent ? existComponent.subType : componentModelCtor.determineSubType(mainType, newCmptOption);
return subType;
}
function compressBatches(batchA, batchB) {
var mapA = {};
var mapB = {};
makeMap(batchA || [], mapA);
makeMap(batchB || [], mapB, mapA);
return [mapToArray(mapA), mapToArray(mapB)];
function makeMap(sourceBatch, map2, otherMap) {
for (var i = 0, len2 = sourceBatch.length; i < len2; i++) {
var seriesId = convertOptionIdName(sourceBatch[i].seriesId, null);
if (seriesId == null) {
return;
}
var dataIndices = normalizeToArray(sourceBatch[i].dataIndex);
var otherDataIndices = otherMap && otherMap[seriesId];
for (var j = 0, lenj = dataIndices.length; j < lenj; j++) {
var dataIndex = dataIndices[j];
if (otherDataIndices && otherDataIndices[dataIndex]) {
otherDataIndices[dataIndex] = null;
} else {
(map2[seriesId] || (map2[seriesId] = {}))[dataIndex] = 1;
}
}
}
}
function mapToArray(map2, isData) {
var result = [];
for (var i in map2) {
if (map2.hasOwnProperty(i) && map2[i] != null) {
if (isData) {
result.push(+i);
} else {
var dataIndices = mapToArray(map2[i], true);
dataIndices.length && result.push({
seriesId: i,
dataIndex: dataIndices
});
}
}
}
return result;
}
}
function queryDataIndex(data, payload) {
if (payload.dataIndexInside != null) {
return payload.dataIndexInside;
} else if (payload.dataIndex != null) {
return isArray$1(payload.dataIndex) ? map$1(payload.dataIndex, function(value) {
return data.indexOfRawIndex(value);
}) : data.indexOfRawIndex(payload.dataIndex);
} else if (payload.name != null) {
return isArray$1(payload.name) ? map$1(payload.name, function(value) {
return data.indexOfName(value);
}) : data.indexOfName(payload.name);
}
}
function makeInner() {
var key = "__ec_inner_" + innerUniqueIndex++;
return function(hostObj) {
return hostObj[key] || (hostObj[key] = {});
};
}
var innerUniqueIndex = getRandomIdBase();
function parseFinder$1(ecModel, finderInput, opt) {
var _a2 = preParseFinder(finderInput, opt), mainTypeSpecified = _a2.mainTypeSpecified, queryOptionMap = _a2.queryOptionMap, others = _a2.others;
var result = others;
var defaultMainType = opt ? opt.defaultMainType : null;
if (!mainTypeSpecified && defaultMainType) {
queryOptionMap.set(defaultMainType, {});
}
queryOptionMap.each(function(queryOption, mainType) {
var queryResult = queryReferringComponents(ecModel, mainType, queryOption, {
useDefault: defaultMainType === mainType,
enableAll: opt && opt.enableAll != null ? opt.enableAll : true,
enableNone: opt && opt.enableNone != null ? opt.enableNone : true
});
result[mainType + "Models"] = queryResult.models;
result[mainType + "Model"] = queryResult.models[0];
});
return result;
}
function preParseFinder(finderInput, opt) {
var finder;
if (isString$1(finderInput)) {
var obj = {};
obj[finderInput + "Index"] = 0;
finder = obj;
} else {
finder = finderInput;
}
var queryOptionMap = createHashMap();
var others = {};
var mainTypeSpecified = false;
each$f(finder, function(value, key) {
if (key === "dataIndex" || key === "dataIndexInside") {
others[key] = value;
return;
}
var parsedKey = key.match(/^(\w+)(Index|Id|Name)$/) || [];
var mainType = parsedKey[1];
var queryType = (parsedKey[2] || "").toLowerCase();
if (!mainType || !queryType || opt && opt.includeMainTypes && indexOf(opt.includeMainTypes, mainType) < 0) {
return;
}
mainTypeSpecified = mainTypeSpecified || !!mainType;
var queryOption = queryOptionMap.get(mainType) || queryOptionMap.set(mainType, {});
queryOption[queryType] = value;
});
return {
mainTypeSpecified,
queryOptionMap,
others
};
}
var SINGLE_REFERRING = {
useDefault: true,
enableAll: false,
enableNone: false
};
var MULTIPLE_REFERRING = {
useDefault: false,
enableAll: true,
enableNone: true
};
function queryReferringComponents(ecModel, mainType, userOption, opt) {
opt = opt || SINGLE_REFERRING;
var indexOption = userOption.index;
var idOption = userOption.id;
var nameOption = userOption.name;
var result = {
models: null,
specified: indexOption != null || idOption != null || nameOption != null
};
if (!result.specified) {
var firstCmpt = void 0;
result.models = opt.useDefault && (firstCmpt = ecModel.getComponent(mainType)) ? [firstCmpt] : [];
return result;
}
if (indexOption === "none" || indexOption === false) {
assert(opt.enableNone, '`"none"` or `false` is not a valid value on index option.');
result.models = [];
return result;
}
if (indexOption === "all") {
assert(opt.enableAll, '`"all"` is not a valid value on index option.');
indexOption = idOption = nameOption = null;
}
result.models = ecModel.queryComponents({
mainType,
index: indexOption,
id: idOption,
name: nameOption
});
return result;
}
function setAttribute(dom, key, value) {
dom.setAttribute ? dom.setAttribute(key, value) : dom[key] = value;
}
function getAttribute(dom, key) {
return dom.getAttribute ? dom.getAttribute(key) : dom[key];
}
function getTooltipRenderMode(renderModeOption) {
if (renderModeOption === "auto") {
return env.domSupported ? "html" : "richText";
} else {
return renderModeOption || "html";
}
}
function groupData(array4, getKey2) {
var buckets = createHashMap();
var keys2 = [];
each$f(array4, function(item) {
var key = getKey2(item);
(buckets.get(key) || (keys2.push(key), buckets.set(key, []))).push(item);
});
return {
keys: keys2,
buckets
};
}
function interpolateRawValues(data, precision, sourceValue, targetValue, percent) {
var isAutoPrecision = precision == null || precision === "auto";
if (targetValue == null) {
return targetValue;
}
if (isNumber(targetValue)) {
var value = interpolateNumber(sourceValue || 0, targetValue, percent);
return round$3(value, isAutoPrecision ? Math.max(getPrecision(sourceValue || 0), getPrecision(targetValue)) : precision);
} else if (isString$1(targetValue)) {
return percent < 1 ? sourceValue : targetValue;
} else {
var interpolated = [];
var leftArr = sourceValue;
var rightArr = targetValue;
var length_1 = Math.max(leftArr ? leftArr.length : 0, rightArr.length);
for (var i = 0; i < length_1; ++i) {
var info = data.getDimensionInfo(i);
if (info && info.type === "ordinal") {
interpolated[i] = (percent < 1 && leftArr ? leftArr : rightArr)[i];
} else {
var leftVal = leftArr && leftArr[i] ? leftArr[i] : 0;
var rightVal = rightArr[i];
var value = interpolateNumber(leftVal, rightVal, percent);
interpolated[i] = round$3(value, isAutoPrecision ? Math.max(getPrecision(leftVal), getPrecision(rightVal)) : precision);
}
}
return interpolated;
}
}
var TYPE_DELIMITER = ".";
var IS_CONTAINER = "___EC__COMPONENT__CONTAINER___";
var IS_EXTENDED_CLASS = "___EC__EXTENDED_CLASS___";
function parseClassType(componentType) {
var ret = {
main: "",
sub: ""
};
if (componentType) {
var typeArr = componentType.split(TYPE_DELIMITER);
ret.main = typeArr[0] || "";
ret.sub = typeArr[1] || "";
}
return ret;
}
function checkClassType(componentType) {
assert(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(componentType), 'componentType "' + componentType + '" illegal');
}
function isExtendedClass(clz) {
return !!(clz && clz[IS_EXTENDED_CLASS]);
}
function enableClassExtend(rootClz, mandatoryMethods) {
rootClz.$constructor = rootClz;
rootClz.extend = function(proto2) {
var superClass = this;
var ExtendedClass;
if (isESClass(superClass)) {
ExtendedClass = /** @class */
function(_super) {
__extends(class_1, _super);
function class_1() {
return _super.apply(this, arguments) || this;
}
return class_1;
}(superClass);
} else {
ExtendedClass = function() {
(proto2.$constructor || superClass).apply(this, arguments);
};
inherits(ExtendedClass, this);
}
extend(ExtendedClass.prototype, proto2);
ExtendedClass[IS_EXTENDED_CLASS] = true;
ExtendedClass.extend = this.extend;
ExtendedClass.superCall = superCall;
ExtendedClass.superApply = superApply;
ExtendedClass.superClass = superClass;
return ExtendedClass;
};
}
function isESClass(fn) {
return isFunction$1(fn) && /^class\s/.test(Function.prototype.toString.call(fn));
}
function mountExtend(SubClz, SupperClz) {
SubClz.extend = SupperClz.extend;
}
var classBase = Math.round(Math.random() * 10);
function enableClassCheck(target) {
var classAttr = ["__\0is_clz", classBase++].join("_");
target.prototype[classAttr] = true;
target.isInstance = function(obj) {
return !!(obj && obj[classAttr]);
};
}
function superCall(context, methodName) {
var args = [];
for (var _i = 2; _i < arguments.length; _i++) {
args[_i - 2] = arguments[_i];
}
return this.superClass.prototype[methodName].apply(context, args);
}
function superApply(context, methodName, args) {
return this.superClass.prototype[methodName].apply(context, args);
}
function enableClassManagement(target) {
var storage2 = {};
target.registerClass = function(clz) {
var componentFullType = clz.type || clz.prototype.type;
if (componentFullType) {
checkClassType(componentFullType);
clz.prototype.type = componentFullType;
var componentTypeInfo = parseClassType(componentFullType);
if (!componentTypeInfo.sub) {
storage2[componentTypeInfo.main] = clz;
} else if (componentTypeInfo.sub !== IS_CONTAINER) {
var container = makeContainer(componentTypeInfo);
container[componentTypeInfo.sub] = clz;
}
}
return clz;
};
target.getClass = function(mainType, subType, throwWhenNotFound) {
var clz = storage2[mainType];
if (clz && clz[IS_CONTAINER]) {
clz = subType ? clz[subType] : null;
}
if (throwWhenNotFound && !clz) {
throw new Error(!subType ? mainType + ".type should be specified." : "Component " + mainType + "." + (subType || "") + " is used but not imported.");
}
return clz;
};
target.getClassesByMainType = function(componentType) {
var componentTypeInfo = parseClassType(componentType);
var result = [];
var obj = storage2[componentTypeInfo.main];
if (obj && obj[IS_CONTAINER]) {
each$f(obj, function(o, type4) {
type4 !== IS_CONTAINER && result.push(o);
});
} else {
result.push(obj);
}
return result;
};
target.hasClass = function(componentType) {
var componentTypeInfo = parseClassType(componentType);
return !!storage2[componentTypeInfo.main];
};
target.getAllClassMainTypes = function() {
var types2 = [];
each$f(storage2, function(obj, type4) {
types2.push(type4);
});
return types2;
};
target.hasSubTypes = function(componentType) {
var componentTypeInfo = parseClassType(componentType);
var obj = storage2[componentTypeInfo.main];
return obj && obj[IS_CONTAINER];
};
function makeContainer(componentTypeInfo) {
var container = storage2[componentTypeInfo.main];
if (!container || !container[IS_CONTAINER]) {
container = storage2[componentTypeInfo.main] = {};
container[IS_CONTAINER] = true;
}
return container;
}
}
function makeStyleMapper(properties, ignoreParent) {
for (var i = 0; i < properties.length; i++) {
if (!properties[i][1]) {
properties[i][1] = properties[i][0];
}
}
ignoreParent = ignoreParent || false;
return function(model, excludes, includes2) {
var style2 = {};
for (var i2 = 0; i2 < properties.length; i2++) {
var propName = properties[i2][1];
if (excludes && indexOf(excludes, propName) >= 0 || includes2 && indexOf(includes2, propName) < 0) {
continue;
}
var val = model.getShallow(propName, ignoreParent);
if (val != null) {
style2[properties[i2][0]] = val;
}
}
return style2;
};
}
var AREA_STYLE_KEY_MAP = [
["fill", "color"],
["shadowBlur"],
["shadowOffsetX"],
["shadowOffsetY"],
["opacity"],
["shadowColor"]
// Option decal is in `DecalObject` but style.decal is in `PatternObject`.
// So do not transfer decal directly.
];
var getAreaStyle = makeStyleMapper(AREA_STYLE_KEY_MAP);
var AreaStyleMixin = (
/** @class */
function() {
function AreaStyleMixin2() {
}
AreaStyleMixin2.prototype.getAreaStyle = function(excludes, includes2) {
return getAreaStyle(this, excludes, includes2);
};
return AreaStyleMixin2;
}()
);
var globalImageCache = new LRU(50);
function findExistImage(newImageOrSrc) {
if (typeof newImageOrSrc === "string") {
var cachedImgObj = globalImageCache.get(newImageOrSrc);
return cachedImgObj && cachedImgObj.image;
} else {
return newImageOrSrc;
}
}
function createOrUpdateImage(newImageOrSrc, image, hostEl, onload, cbPayload) {
if (!newImageOrSrc) {
return image;
} else if (typeof newImageOrSrc === "string") {
if (image && image.__zrImageSrc === newImageOrSrc || !hostEl) {
return image;
}
var cachedImgObj = globalImageCache.get(newImageOrSrc);
var pendingWrap = { hostEl, cb: onload, cbPayload };
if (cachedImgObj) {
image = cachedImgObj.image;
!isImageReady(image) && cachedImgObj.pending.push(pendingWrap);
} else {
image = platformApi.loadImage(newImageOrSrc, imageOnLoad, imageOnLoad);
image.__zrImageSrc = newImageOrSrc;
globalImageCache.put(newImageOrSrc, image.__cachedImgObj = {
image,
pending: [pendingWrap]
});
}
return image;
} else {
return newImageOrSrc;
}
}
function imageOnLoad() {
var cachedImgObj = this.__cachedImgObj;
this.onload = this.onerror = this.__cachedImgObj = null;
for (var i = 0; i < cachedImgObj.pending.length; i++) {
var pendingWrap = cachedImgObj.pending[i];
var cb2 = pendingWrap.cb;
cb2 && cb2(this, pendingWrap.cbPayload);
pendingWrap.hostEl.dirty();
}
cachedImgObj.pending.length = 0;
}
function isImageReady(image) {
return image && image.width && image.height;
}
var STYLE_REG = /\{([a-zA-Z0-9_]+)\|([^}]*)\}/g;
function truncateText(text, containerWidth, font, ellipsis, options) {
if (!containerWidth) {
return "";
}
var textLines = (text + "").split("\n");
options = prepareTruncateOptions(containerWidth, font, ellipsis, options);
for (var i = 0, len2 = textLines.length; i < len2; i++) {
textLines[i] = truncateSingleLine(textLines[i], options);
}
return textLines.join("\n");
}
function prepareTruncateOptions(containerWidth, font, ellipsis, options) {
options = options || {};
var preparedOpts = extend({}, options);
preparedOpts.font = font;
ellipsis = retrieve2(ellipsis, "...");
preparedOpts.maxIterations = retrieve2(options.maxIterations, 2);
var minChar = preparedOpts.minChar = retrieve2(options.minChar, 0);
preparedOpts.cnCharWidth = getWidth("国", font);
var ascCharWidth = preparedOpts.ascCharWidth = getWidth("a", font);
preparedOpts.placeholder = retrieve2(options.placeholder, "");
var contentWidth = containerWidth = Math.max(0, containerWidth - 1);
for (var i = 0; i < minChar && contentWidth >= ascCharWidth; i++) {
contentWidth -= ascCharWidth;
}
var ellipsisWidth = getWidth(ellipsis, font);
if (ellipsisWidth > contentWidth) {
ellipsis = "";
ellipsisWidth = 0;
}
contentWidth = containerWidth - ellipsisWidth;
preparedOpts.ellipsis = ellipsis;
preparedOpts.ellipsisWidth = ellipsisWidth;
preparedOpts.contentWidth = contentWidth;
preparedOpts.containerWidth = containerWidth;
return preparedOpts;
}
function truncateSingleLine(textLine, options) {
var containerWidth = options.containerWidth;
var font = options.font;
var contentWidth = options.contentWidth;
if (!containerWidth) {
return "";
}
var lineWidth = getWidth(textLine, font);
if (lineWidth <= containerWidth) {
return textLine;
}
for (var j = 0; ; j++) {
if (lineWidth <= contentWidth || j >= options.maxIterations) {
textLine += options.ellipsis;
break;
}
var subLength = j === 0 ? estimateLength(textLine, contentWidth, options.ascCharWidth, options.cnCharWidth) : lineWidth > 0 ? Math.floor(textLine.length * contentWidth / lineWidth) : 0;
textLine = textLine.substr(0, subLength);
lineWidth = getWidth(textLine, font);
}
if (textLine === "") {
textLine = options.placeholder;
}
return textLine;
}
function estimateLength(text, contentWidth, ascCharWidth, cnCharWidth) {
var width = 0;
var i = 0;
for (var len2 = text.length; i < len2 && width < contentWidth; i++) {
var charCode = text.charCodeAt(i);
width += 0 <= charCode && charCode <= 127 ? ascCharWidth : cnCharWidth;
}
return i;
}
function parsePlainText(text, style2) {
text != null && (text += "");
var overflow = style2.overflow;
var padding = style2.padding;
var font = style2.font;
var truncate = overflow === "truncate";
var calculatedLineHeight = getLineHeight(font);
var lineHeight = retrieve2(style2.lineHeight, calculatedLineHeight);
var bgColorDrawn = !!style2.backgroundColor;
var truncateLineOverflow = style2.lineOverflow === "truncate";
var width = style2.width;
var lines;
if (width != null && (overflow === "break" || overflow === "breakAll")) {
lines = text ? wrapText(text, style2.font, width, overflow === "breakAll", 0).lines : [];
} else {
lines = text ? text.split("\n") : [];
}
var contentHeight = lines.length * lineHeight;
var height = retrieve2(style2.height, contentHeight);
if (contentHeight > height && truncateLineOverflow) {
var lineCount = Math.floor(height / lineHeight);
lines = lines.slice(0, lineCount);
}
if (text && truncate && width != null) {
var options = prepareTruncateOptions(width, font, style2.ellipsis, {
minChar: style2.truncateMinChar,
placeholder: style2.placeholder
});
for (var i = 0; i < lines.length; i++) {
lines[i] = truncateSingleLine(lines[i], options);
}
}
var outerHeight = height;
var contentWidth = 0;
for (var i = 0; i < lines.length; i++) {
contentWidth = Math.max(getWidth(lines[i], font), contentWidth);
}
if (width == null) {
width = contentWidth;
}
var outerWidth = contentWidth;
if (padding) {
outerHeight += padding[0] + padding[2];
outerWidth += padding[1] + padding[3];
width += padding[1] + padding[3];
}
if (bgColorDrawn) {
outerWidth = width;
}
return {
lines,
height,
outerWidth,
outerHeight,
lineHeight,
calculatedLineHeight,
contentWidth,
contentHeight,
width
};
}
var RichTextToken = /* @__PURE__ */ function() {
function RichTextToken2() {
}
return RichTextToken2;
}();
var RichTextLine = /* @__PURE__ */ function() {
function RichTextLine2(tokens) {
this.tokens = [];
if (tokens) {
this.tokens = tokens;
}
}
return RichTextLine2;
}();
var RichTextContentBlock = /* @__PURE__ */ function() {
function RichTextContentBlock2() {
this.width = 0;
this.height = 0;
this.contentWidth = 0;
this.contentHeight = 0;
this.outerWidth = 0;
this.outerHeight = 0;
this.lines = [];
}
return RichTextContentBlock2;
}();
function parseRichText(text, style2) {
var contentBlock = new RichTextContentBlock();
text != null && (text += "");
if (!text) {
return contentBlock;
}
var topWidth = style2.width;
var topHeight = style2.height;
var overflow = style2.overflow;
var wrapInfo = (overflow === "break" || overflow === "breakAll") && topWidth != null ? { width: topWidth, accumWidth: 0, breakAll: overflow === "breakAll" } : null;
var lastIndex = STYLE_REG.lastIndex = 0;
var result;
while ((result = STYLE_REG.exec(text)) != null) {
var matchedIndex = result.index;
if (matchedIndex > lastIndex) {
pushTokens(contentBlock, text.substring(lastIndex, matchedIndex), style2, wrapInfo);
}
pushTokens(contentBlock, result[2], style2, wrapInfo, result[1]);
lastIndex = STYLE_REG.lastIndex;
}
if (lastIndex < text.length) {
pushTokens(contentBlock, text.substring(lastIndex, text.length), style2, wrapInfo);
}
var pendingList = [];
var calculatedHeight = 0;
var calculatedWidth = 0;
var stlPadding = style2.padding;
var truncate = overflow === "truncate";
var truncateLine = style2.lineOverflow === "truncate";
function finishLine(line3, lineWidth2, lineHeight2) {
line3.width = lineWidth2;
line3.lineHeight = lineHeight2;
calculatedHeight += lineHeight2;
calculatedWidth = Math.max(calculatedWidth, lineWidth2);
}
outer: for (var i = 0; i < contentBlock.lines.length; i++) {
var line2 = contentBlock.lines[i];
var lineHeight = 0;
var lineWidth = 0;
for (var j = 0; j < line2.tokens.length; j++) {
var token2 = line2.tokens[j];
var tokenStyle = token2.styleName && style2.rich[token2.styleName] || {};
var textPadding = token2.textPadding = tokenStyle.padding;
var paddingH = textPadding ? textPadding[1] + textPadding[3] : 0;
var font = token2.font = tokenStyle.font || style2.font;
token2.contentHeight = getLineHeight(font);
var tokenHeight = retrieve2(tokenStyle.height, token2.contentHeight);
token2.innerHeight = tokenHeight;
textPadding && (tokenHeight += textPadding[0] + textPadding[2]);
token2.height = tokenHeight;
token2.lineHeight = retrieve3(tokenStyle.lineHeight, style2.lineHeight, tokenHeight);
token2.align = tokenStyle && tokenStyle.align || style2.align;
token2.verticalAlign = tokenStyle && tokenStyle.verticalAlign || "middle";
if (truncateLine && topHeight != null && calculatedHeight + token2.lineHeight > topHeight) {
if (j > 0) {
line2.tokens = line2.tokens.slice(0, j);
finishLine(line2, lineWidth, lineHeight);
contentBlock.lines = contentBlock.lines.slice(0, i + 1);
} else {
contentBlock.lines = contentBlock.lines.slice(0, i);
}
break outer;
}
var styleTokenWidth = tokenStyle.width;
var tokenWidthNotSpecified = styleTokenWidth == null || styleTokenWidth === "auto";
if (typeof styleTokenWidth === "string" && styleTokenWidth.charAt(styleTokenWidth.length - 1) === "%") {
token2.percentWidth = styleTokenWidth;
pendingList.push(token2);
token2.contentWidth = getWidth(token2.text, font);
} else {
if (tokenWidthNotSpecified) {
var textBackgroundColor = tokenStyle.backgroundColor;
var bgImg = textBackgroundColor && textBackgroundColor.image;
if (bgImg) {
bgImg = findExistImage(bgImg);
if (isImageReady(bgImg)) {
token2.width = Math.max(token2.width, bgImg.width * tokenHeight / bgImg.height);
}
}
}
var remainTruncWidth = truncate && topWidth != null ? topWidth - lineWidth : null;
if (remainTruncWidth != null && remainTruncWidth < token2.width) {
if (!tokenWidthNotSpecified || remainTruncWidth < paddingH) {
token2.text = "";
token2.width = token2.contentWidth = 0;
} else {
token2.text = truncateText(token2.text, remainTruncWidth - paddingH, font, style2.ellipsis, { minChar: style2.truncateMinChar });
token2.width = token2.contentWidth = getWidth(token2.text, font);
}
} else {
token2.contentWidth = getWidth(token2.text, font);
}
}
token2.width += paddingH;
lineWidth += token2.width;
tokenStyle && (lineHeight = Math.max(lineHeight, token2.lineHeight));
}
finishLine(line2, lineWidth, lineHeight);
}
contentBlock.outerWidth = contentBlock.width = retrieve2(topWidth, calculatedWidth);
contentBlock.outerHeight = contentBlock.height = retrieve2(topHeight, calculatedHeight);
contentBlock.contentHeight = calculatedHeight;
contentBlock.contentWidth = calculatedWidth;
if (stlPadding) {
contentBlock.outerWidth += stlPadding[1] + stlPadding[3];
contentBlock.outerHeight += stlPadding[0] + stlPadding[2];
}
for (var i = 0; i < pendingList.length; i++) {
var token2 = pendingList[i];
var percentWidth = token2.percentWidth;
token2.width = parseInt(percentWidth, 10) / 100 * contentBlock.width;
}
return contentBlock;
}
function pushTokens(block, str, style2, wrapInfo, styleName) {
var isEmptyStr = str === "";
var tokenStyle = styleName && style2.rich[styleName] || {};
var lines = block.lines;
var font = tokenStyle.font || style2.font;
var newLine = false;
var strLines;
var linesWidths;
if (wrapInfo) {
var tokenPadding = tokenStyle.padding;
var tokenPaddingH = tokenPadding ? tokenPadding[1] + tokenPadding[3] : 0;
if (tokenStyle.width != null && tokenStyle.width !== "auto") {
var outerWidth_1 = parsePercent$1(tokenStyle.width, wrapInfo.width) + tokenPaddingH;
if (lines.length > 0) {
if (outerWidth_1 + wrapInfo.accumWidth > wrapInfo.width) {
strLines = str.split("\n");
newLine = true;
}
}
wrapInfo.accumWidth = outerWidth_1;
} else {
var res = wrapText(str, font, wrapInfo.width, wrapInfo.breakAll, wrapInfo.accumWidth);
wrapInfo.accumWidth = res.accumWidth + tokenPaddingH;
linesWidths = res.linesWidths;
strLines = res.lines;
}
} else {
strLines = str.split("\n");
}
for (var i = 0; i < strLines.length; i++) {
var text = strLines[i];
var token2 = new RichTextToken();
token2.styleName = styleName;
token2.text = text;
token2.isLineHolder = !text && !isEmptyStr;
if (typeof tokenStyle.width === "number") {
token2.width = tokenStyle.width;
} else {
token2.width = linesWidths ? linesWidths[i] : getWidth(text, font);
}
if (!i && !newLine) {
var tokens = (lines[lines.length - 1] || (lines[0] = new RichTextLine())).tokens;
var tokensLen = tokens.length;
tokensLen === 1 && tokens[0].isLineHolder ? tokens[0] = token2 : (text || !tokensLen || isEmptyStr) && tokens.push(token2);
} else {
lines.push(new RichTextLine([token2]));
}
}
}
function isAlphabeticLetter(ch2) {
var code = ch2.charCodeAt(0);
return code >= 32 && code <= 591 || code >= 880 && code <= 4351 || code >= 4608 && code <= 5119 || code >= 7680 && code <= 8303;
}
var breakCharMap = reduce(",&?/;] ".split(""), function(obj, ch2) {
obj[ch2] = true;
return obj;
}, {});
function isWordBreakChar(ch2) {
if (isAlphabeticLetter(ch2)) {
if (breakCharMap[ch2]) {
return true;
}
return false;
}
return true;
}
function wrapText(text, font, lineWidth, isBreakAll, lastAccumWidth) {
var lines = [];
var linesWidths = [];
var line2 = "";
var currentWord = "";
var currentWordWidth = 0;
var accumWidth = 0;
for (var i = 0; i < text.length; i++) {
var ch2 = text.charAt(i);
if (ch2 === "\n") {
if (currentWord) {
line2 += currentWord;
accumWidth += currentWordWidth;
}
lines.push(line2);
linesWidths.push(accumWidth);
line2 = "";
currentWord = "";
currentWordWidth = 0;
accumWidth = 0;
continue;
}
var chWidth = getWidth(ch2, font);
var inWord = isBreakAll ? false : !isWordBreakChar(ch2);
if (!lines.length ? lastAccumWidth + accumWidth + chWidth > lineWidth : accumWidth + chWidth > lineWidth) {
if (!accumWidth) {
if (inWord) {
lines.push(currentWord);
linesWidths.push(currentWordWidth);
currentWord = ch2;
currentWordWidth = chWidth;
} else {
lines.push(ch2);
linesWidths.push(chWidth);
}
} else if (line2 || currentWord) {
if (inWord) {
if (!line2) {
line2 = currentWord;
currentWord = "";
currentWordWidth = 0;
accumWidth = currentWordWidth;
}
lines.push(line2);
linesWidths.push(accumWidth - currentWordWidth);
currentWord += ch2;
currentWordWidth += chWidth;
line2 = "";
accumWidth = currentWordWidth;
} else {
if (currentWord) {
line2 += currentWord;
currentWord = "";
currentWordWidth = 0;
}
lines.push(line2);
linesWidths.push(accumWidth);
line2 = ch2;
accumWidth = chWidth;
}
}
continue;
}
accumWidth += chWidth;
if (inWord) {
currentWord += ch2;
currentWordWidth += chWidth;
} else {
if (currentWord) {
line2 += currentWord;
currentWord = "";
currentWordWidth = 0;
}
line2 += ch2;
}
}
if (!lines.length && !line2) {
line2 = text;
currentWord = "";
currentWordWidth = 0;
}
if (currentWord) {
line2 += currentWord;
}
if (line2) {
lines.push(line2);
linesWidths.push(accumWidth);
}
if (lines.length === 1) {
accumWidth += lastAccumWidth;
}
return {
accumWidth,
lines,
linesWidths
};
}
var STYLE_MAGIC_KEY = "__zr_style_" + Math.round(Math.random() * 10);
var DEFAULT_COMMON_STYLE = {
shadowBlur: 0,
shadowOffsetX: 0,
shadowOffsetY: 0,
shadowColor: "#000",
opacity: 1,
blend: "source-over"
};
var DEFAULT_COMMON_ANIMATION_PROPS = {
style: {
shadowBlur: true,
shadowOffsetX: true,
shadowOffsetY: true,
shadowColor: true,
opacity: true
}
};
DEFAULT_COMMON_STYLE[STYLE_MAGIC_KEY] = true;
var PRIMARY_STATES_KEYS = ["z", "z2", "invisible"];
var PRIMARY_STATES_KEYS_IN_HOVER_LAYER = ["invisible"];
var Displayable = function(_super) {
__extends(Displayable2, _super);
function Displayable2(props) {
return _super.call(this, props) || this;
}
Displayable2.prototype._init = function(props) {
var keysArr = keys(props);
for (var i = 0; i < keysArr.length; i++) {
var key = keysArr[i];
if (key === "style") {
this.useStyle(props[key]);
} else {
_super.prototype.attrKV.call(this, key, props[key]);
}
}
if (!this.style) {
this.useStyle({});
}
};
Displayable2.prototype.beforeBrush = function() {
};
Displayable2.prototype.afterBrush = function() {
};
Displayable2.prototype.innerBeforeBrush = function() {
};
Displayable2.prototype.innerAfterBrush = function() {
};
Displayable2.prototype.shouldBePainted = function(viewWidth, viewHeight, considerClipPath, considerAncestors) {
var m2 = this.transform;
if (this.ignore || this.invisible || this.style.opacity === 0 || this.culling && isDisplayableCulled(this, viewWidth, viewHeight) || m2 && !m2[0] && !m2[3]) {
return false;
}
if (considerClipPath && this.__clipPaths) {
for (var i = 0; i < this.__clipPaths.length; ++i) {
if (this.__clipPaths[i].isZeroArea()) {
return false;
}
}
}
if (considerAncestors && this.parent) {
var parent_1 = this.parent;
while (parent_1) {
if (parent_1.ignore) {
return false;
}
parent_1 = parent_1.parent;
}
}
return true;
};
Displayable2.prototype.contain = function(x2, y2) {
return this.rectContain(x2, y2);
};
Displayable2.prototype.traverse = function(cb2, context) {
cb2.call(context, this);
};
Displayable2.prototype.rectContain = function(x2, y2) {
var coord = this.transformCoordToLocal(x2, y2);
var rect = this.getBoundingRect();
return rect.contain(coord[0], coord[1]);
};
Displayable2.prototype.getPaintRect = function() {
var rect = this._paintRect;
if (!this._paintRect || this.__dirty) {
var transform2 = this.transform;
var elRect = this.getBoundingRect();
var style2 = this.style;
var shadowSize = style2.shadowBlur || 0;
var shadowOffsetX = style2.shadowOffsetX || 0;
var shadowOffsetY = style2.shadowOffsetY || 0;
rect = this._paintRect || (this._paintRect = new BoundingRect(0, 0, 0, 0));
if (transform2) {
BoundingRect.applyTransform(rect, elRect, transform2);
} else {
rect.copy(elRect);
}
if (shadowSize || shadowOffsetX || shadowOffsetY) {
rect.width += shadowSize * 2 + Math.abs(shadowOffsetX);
rect.height += shadowSize * 2 + Math.abs(shadowOffsetY);
rect.x = Math.min(rect.x, rect.x + shadowOffsetX - shadowSize);
rect.y = Math.min(rect.y, rect.y + shadowOffsetY - shadowSize);
}
var tolerance = this.dirtyRectTolerance;
if (!rect.isZero()) {
rect.x = Math.floor(rect.x - tolerance);
rect.y = Math.floor(rect.y - tolerance);
rect.width = Math.ceil(rect.width + 1 + tolerance * 2);
rect.height = Math.ceil(rect.height + 1 + tolerance * 2);
}
}
return rect;
};
Displayable2.prototype.setPrevPaintRect = function(paintRect) {
if (paintRect) {
this._prevPaintRect = this._prevPaintRect || new BoundingRect(0, 0, 0, 0);
this._prevPaintRect.copy(paintRect);
} else {
this._prevPaintRect = null;
}
};
Displayable2.prototype.getPrevPaintRect = function() {
return this._prevPaintRect;
};
Displayable2.prototype.animateStyle = function(loop) {
return this.animate("style", loop);
};
Displayable2.prototype.updateDuringAnimation = function(targetKey) {
if (targetKey === "style") {
this.dirtyStyle();
} else {
this.markRedraw();
}
};
Displayable2.prototype.attrKV = function(key, value) {
if (key !== "style") {
_super.prototype.attrKV.call(this, key, value);
} else {
if (!this.style) {
this.useStyle(value);
} else {
this.setStyle(value);
}
}
};
Displayable2.prototype.setStyle = function(keyOrObj, value) {
if (typeof keyOrObj === "string") {
this.style[keyOrObj] = value;
} else {
extend(this.style, keyOrObj);
}
this.dirtyStyle();
return this;
};
Displayable2.prototype.dirtyStyle = function(notRedraw) {
if (!notRedraw) {
this.markRedraw();
}
this.__dirty |= STYLE_CHANGED_BIT;
if (this._rect) {
this._rect = null;
}
};
Displayable2.prototype.dirty = function() {
this.dirtyStyle();
};
Displayable2.prototype.styleChanged = function() {
return !!(this.__dirty & STYLE_CHANGED_BIT);
};
Displayable2.prototype.styleUpdated = function() {
this.__dirty &= ~STYLE_CHANGED_BIT;
};
Displayable2.prototype.createStyle = function(obj) {
return createObject(DEFAULT_COMMON_STYLE, obj);
};
Displayable2.prototype.useStyle = function(obj) {
if (!obj[STYLE_MAGIC_KEY]) {
obj = this.createStyle(obj);
}
if (this.__inHover) {
this.__hoverStyle = obj;
} else {
this.style = obj;
}
this.dirtyStyle();
};
Displayable2.prototype.isStyleObject = function(obj) {
return obj[STYLE_MAGIC_KEY];
};
Displayable2.prototype._innerSaveToNormal = function(toState) {
_super.prototype._innerSaveToNormal.call(this, toState);
var normalState = this._normalState;
if (toState.style && !normalState.style) {
normalState.style = this._mergeStyle(this.createStyle(), this.style);
}
this._savePrimaryToNormal(toState, normalState, PRIMARY_STATES_KEYS);
};
Displayable2.prototype._applyStateObj = function(stateName, state, normalState, keepCurrentStates, transition, animationCfg) {
_super.prototype._applyStateObj.call(this, stateName, state, normalState, keepCurrentStates, transition, animationCfg);
var needsRestoreToNormal = !(state && keepCurrentStates);
var targetStyle;
if (state && state.style) {
if (transition) {
if (keepCurrentStates) {
targetStyle = state.style;
} else {
targetStyle = this._mergeStyle(this.createStyle(), normalState.style);
this._mergeStyle(targetStyle, state.style);
}
} else {
targetStyle = this._mergeStyle(this.createStyle(), keepCurrentStates ? this.style : normalState.style);
this._mergeStyle(targetStyle, state.style);
}
} else if (needsRestoreToNormal) {
targetStyle = normalState.style;
}
if (targetStyle) {
if (transition) {
var sourceStyle = this.style;
this.style = this.createStyle(needsRestoreToNormal ? {} : sourceStyle);
if (needsRestoreToNormal) {
var changedKeys = keys(sourceStyle);
for (var i = 0; i < changedKeys.length; i++) {
var key = changedKeys[i];
if (key in targetStyle) {
targetStyle[key] = targetStyle[key];
this.style[key] = sourceStyle[key];
}
}
}
var targetKeys = keys(targetStyle);
for (var i = 0; i < targetKeys.length; i++) {
var key = targetKeys[i];
this.style[key] = this.style[key];
}
this._transitionState(stateName, {
style: targetStyle
}, animationCfg, this.getAnimationStyleProps());
} else {
this.useStyle(targetStyle);
}
}
var statesKeys = this.__inHover ? PRIMARY_STATES_KEYS_IN_HOVER_LAYER : PRIMARY_STATES_KEYS;
for (var i = 0; i < statesKeys.length; i++) {
var key = statesKeys[i];
if (state && state[key] != null) {
this[key] = state[key];
} else if (needsRestoreToNormal) {
if (normalState[key] != null) {
this[key] = normalState[key];
}
}
}
};
Displayable2.prototype._mergeStates = function(states) {
var mergedState = _super.prototype._mergeStates.call(this, states);
var mergedStyle;
for (var i = 0; i < states.length; i++) {
var state = states[i];
if (state.style) {
mergedStyle = mergedStyle || {};
this._mergeStyle(mergedStyle, state.style);
}
}
if (mergedStyle) {
mergedState.style = mergedStyle;
}
return mergedState;
};
Displayable2.prototype._mergeStyle = function(targetStyle, sourceStyle) {
extend(targetStyle, sourceStyle);
return targetStyle;
};
Displayable2.prototype.getAnimationStyleProps = function() {
return DEFAULT_COMMON_ANIMATION_PROPS;
};
Displayable2.initDefaultProps = function() {
var dispProto = Displayable2.prototype;
dispProto.type = "displayable";
dispProto.invisible = false;
dispProto.z = 0;
dispProto.z2 = 0;
dispProto.zlevel = 0;
dispProto.culling = false;
dispProto.cursor = "pointer";
dispProto.rectHover = false;
dispProto.incremental = false;
dispProto._rect = null;
dispProto.dirtyRectTolerance = 0;
dispProto.__dirty = REDRAW_BIT | STYLE_CHANGED_BIT;
}();
return Displayable2;
}(Element$1);
var tmpRect = new BoundingRect(0, 0, 0, 0);
var viewRect = new BoundingRect(0, 0, 0, 0);
function isDisplayableCulled(el2, width, height) {
tmpRect.copy(el2.getBoundingRect());
if (el2.transform) {
tmpRect.applyTransform(el2.transform);
}
viewRect.width = width;
viewRect.height = height;
return !tmpRect.intersect(viewRect);
}
var mathMin$9 = Math.min;
var mathMax$9 = Math.max;
var mathSin$4 = Math.sin;
var mathCos$4 = Math.cos;
var PI2$8 = Math.PI * 2;
var start = create$2();
var end = create$2();
var extremity = create$2();
function fromPoints(points2, min3, max3) {
if (points2.length === 0) {
return;
}
var p2 = points2[0];
var left = p2[0];
var right = p2[0];
var top = p2[1];
var bottom = p2[1];
for (var i = 1; i < points2.length; i++) {
p2 = points2[i];
left = mathMin$9(left, p2[0]);
right = mathMax$9(right, p2[0]);
top = mathMin$9(top, p2[1]);
bottom = mathMax$9(bottom, p2[1]);
}
min3[0] = left;
min3[1] = top;
max3[0] = right;
max3[1] = bottom;
}
function fromLine(x0, y0, x1, y1, min3, max3) {
min3[0] = mathMin$9(x0, x1);
min3[1] = mathMin$9(y0, y1);
max3[0] = mathMax$9(x0, x1);
max3[1] = mathMax$9(y0, y1);
}
var xDim = [];
var yDim = [];
function fromCubic(x0, y0, x1, y1, x2, y2, x3, y3, min3, max3) {
var cubicExtrema$1 = cubicExtrema;
var cubicAt$1 = cubicAt;
var n2 = cubicExtrema$1(x0, x1, x2, x3, xDim);
min3[0] = Infinity;
min3[1] = Infinity;
max3[0] = -Infinity;
max3[1] = -Infinity;
for (var i = 0; i < n2; i++) {
var x4 = cubicAt$1(x0, x1, x2, x3, xDim[i]);
min3[0] = mathMin$9(x4, min3[0]);
max3[0] = mathMax$9(x4, max3[0]);
}
n2 = cubicExtrema$1(y0, y1, y2, y3, yDim);
for (var i = 0; i < n2; i++) {
var y4 = cubicAt$1(y0, y1, y2, y3, yDim[i]);
min3[1] = mathMin$9(y4, min3[1]);
max3[1] = mathMax$9(y4, max3[1]);
}
min3[0] = mathMin$9(x0, min3[0]);
max3[0] = mathMax$9(x0, max3[0]);
min3[0] = mathMin$9(x3, min3[0]);
max3[0] = mathMax$9(x3, max3[0]);
min3[1] = mathMin$9(y0, min3[1]);
max3[1] = mathMax$9(y0, max3[1]);
min3[1] = mathMin$9(y3, min3[1]);
max3[1] = mathMax$9(y3, max3[1]);
}
function fromQuadratic(x0, y0, x1, y1, x2, y2, min3, max3) {
var quadraticExtremum$1 = quadraticExtremum;
var quadraticAt2 = quadraticAt$1;
var tx = mathMax$9(mathMin$9(quadraticExtremum$1(x0, x1, x2), 1), 0);
var ty = mathMax$9(mathMin$9(quadraticExtremum$1(y0, y1, y2), 1), 0);
var x3 = quadraticAt2(x0, x1, x2, tx);
var y3 = quadraticAt2(y0, y1, y2, ty);
min3[0] = mathMin$9(x0, x2, x3);
min3[1] = mathMin$9(y0, y2, y3);
max3[0] = mathMax$9(x0, x2, x3);
max3[1] = mathMax$9(y0, y2, y3);
}
function fromArc(x2, y2, rx, ry, startAngle, endAngle, anticlockwise, min3, max3) {
var vec2Min = min$1;
var vec2Max = max$1;
var diff = Math.abs(startAngle - endAngle);
if (diff % PI2$8 < 1e-4 && diff > 1e-4) {
min3[0] = x2 - rx;
min3[1] = y2 - ry;
max3[0] = x2 + rx;
max3[1] = y2 + ry;
return;
}
start[0] = mathCos$4(startAngle) * rx + x2;
start[1] = mathSin$4(startAngle) * ry + y2;
end[0] = mathCos$4(endAngle) * rx + x2;
end[1] = mathSin$4(endAngle) * ry + y2;
vec2Min(min3, start, end);
vec2Max(max3, start, end);
startAngle = startAngle % PI2$8;
if (startAngle < 0) {
startAngle = startAngle + PI2$8;
}
endAngle = endAngle % PI2$8;
if (endAngle < 0) {
endAngle = endAngle + PI2$8;
}
if (startAngle > endAngle && !anticlockwise) {
endAngle += PI2$8;
} else if (startAngle < endAngle && anticlockwise) {
startAngle += PI2$8;
}
if (anticlockwise) {
var tmp = endAngle;
endAngle = startAngle;
startAngle = tmp;
}
for (var angle = 0; angle < endAngle; angle += Math.PI / 2) {
if (angle > startAngle) {
extremity[0] = mathCos$4(angle) * rx + x2;
extremity[1] = mathSin$4(angle) * ry + y2;
vec2Min(min3, extremity, min3);
vec2Max(max3, extremity, max3);
}
}
}
var CMD$4 = {
M: 1,
L: 2,
C: 3,
Q: 4,
A: 5,
Z: 6,
R: 7
};
var tmpOutX = [];
var tmpOutY = [];
var min = [];
var max = [];
var min2 = [];
var max2 = [];
var mathMin$8 = Math.min;
var mathMax$8 = Math.max;
var mathCos$3 = Math.cos;
var mathSin$3 = Math.sin;
var mathAbs$2 = Math.abs;
var PI$8 = Math.PI;
var PI2$7 = PI$8 * 2;
var hasTypedArray = typeof Float32Array !== "undefined";
var tmpAngles = [];
function modPI2(radian) {
var n2 = Math.round(radian / PI$8 * 1e8) / 1e8;
return n2 % 2 * PI$8;
}
function normalizeArcAngles(angles, anticlockwise) {
var newStartAngle = modPI2(angles[0]);
if (newStartAngle < 0) {
newStartAngle += PI2$7;
}
var delta = newStartAngle - angles[0];
var newEndAngle = angles[1];
newEndAngle += delta;
if (!anticlockwise && newEndAngle - newStartAngle >= PI2$7) {
newEndAngle = newStartAngle + PI2$7;
} else if (anticlockwise && newStartAngle - newEndAngle >= PI2$7) {
newEndAngle = newStartAngle - PI2$7;
} else if (!anticlockwise && newStartAngle > newEndAngle) {
newEndAngle = newStartAngle + (PI2$7 - modPI2(newStartAngle - newEndAngle));
} else if (anticlockwise && newStartAngle < newEndAngle) {
newEndAngle = newStartAngle - (PI2$7 - modPI2(newEndAngle - newStartAngle));
}
angles[0] = newStartAngle;
angles[1] = newEndAngle;
}
var PathProxy = function() {
function PathProxy2(notSaveData) {
this.dpr = 1;
this._xi = 0;
this._yi = 0;
this._x0 = 0;
this._y0 = 0;
this._len = 0;
if (notSaveData) {
this._saveData = false;
}
if (this._saveData) {
this.data = [];
}
}
PathProxy2.prototype.increaseVersion = function() {
this._version++;
};
PathProxy2.prototype.getVersion = function() {
return this._version;
};
PathProxy2.prototype.setScale = function(sx, sy, segmentIgnoreThreshold) {
segmentIgnoreThreshold = segmentIgnoreThreshold || 0;
if (segmentIgnoreThreshold > 0) {
this._ux = mathAbs$2(segmentIgnoreThreshold / devicePixelRatio / sx) || 0;
this._uy = mathAbs$2(segmentIgnoreThreshold / devicePixelRatio / sy) || 0;
}
};
PathProxy2.prototype.setDPR = function(dpr2) {
this.dpr = dpr2;
};
PathProxy2.prototype.setContext = function(ctx) {
this._ctx = ctx;
};
PathProxy2.prototype.getContext = function() {
return this._ctx;
};
PathProxy2.prototype.beginPath = function() {
this._ctx && this._ctx.beginPath();
this.reset();
return this;
};
PathProxy2.prototype.reset = function() {
if (this._saveData) {
this._len = 0;
}
if (this._pathSegLen) {
this._pathSegLen = null;
this._pathLen = 0;
}
this._version++;
};
PathProxy2.prototype.moveTo = function(x2, y2) {
this._drawPendingPt();
this.addData(CMD$4.M, x2, y2);
this._ctx && this._ctx.moveTo(x2, y2);
this._x0 = x2;
this._y0 = y2;
this._xi = x2;
this._yi = y2;
return this;
};
PathProxy2.prototype.lineTo = function(x2, y2) {
var dx = mathAbs$2(x2 - this._xi);
var dy = mathAbs$2(y2 - this._yi);
var exceedUnit = dx > this._ux || dy > this._uy;
this.addData(CMD$4.L, x2, y2);
if (this._ctx && exceedUnit) {
this._ctx.lineTo(x2, y2);
}
if (exceedUnit) {
this._xi = x2;
this._yi = y2;
this._pendingPtDist = 0;
} else {
var d2 = dx * dx + dy * dy;
if (d2 > this._pendingPtDist) {
this._pendingPtX = x2;
this._pendingPtY = y2;
this._pendingPtDist = d2;
}
}
return this;
};
PathProxy2.prototype.bezierCurveTo = function(x1, y1, x2, y2, x3, y3) {
this._drawPendingPt();
this.addData(CMD$4.C, x1, y1, x2, y2, x3, y3);
if (this._ctx) {
this._ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);
}
this._xi = x3;
this._yi = y3;
return this;
};
PathProxy2.prototype.quadraticCurveTo = function(x1, y1, x2, y2) {
this._drawPendingPt();
this.addData(CMD$4.Q, x1, y1, x2, y2);
if (this._ctx) {
this._ctx.quadraticCurveTo(x1, y1, x2, y2);
}
this._xi = x2;
this._yi = y2;
return this;
};
PathProxy2.prototype.arc = function(cx, cy, r2, startAngle, endAngle, anticlockwise) {
this._drawPendingPt();
tmpAngles[0] = startAngle;
tmpAngles[1] = endAngle;
normalizeArcAngles(tmpAngles, anticlockwise);
startAngle = tmpAngles[0];
endAngle = tmpAngles[1];
var delta = endAngle - startAngle;
this.addData(CMD$4.A, cx, cy, r2, r2, startAngle, delta, 0, anticlockwise ? 0 : 1);
this._ctx && this._ctx.arc(cx, cy, r2, startAngle, endAngle, anticlockwise);
this._xi = mathCos$3(endAngle) * r2 + cx;
this._yi = mathSin$3(endAngle) * r2 + cy;
return this;
};
PathProxy2.prototype.arcTo = function(x1, y1, x2, y2, radius2) {
this._drawPendingPt();
if (this._ctx) {
this._ctx.arcTo(x1, y1, x2, y2, radius2);
}
return this;
};
PathProxy2.prototype.rect = function(x2, y2, w2, h2) {
this._drawPendingPt();
this._ctx && this._ctx.rect(x2, y2, w2, h2);
this.addData(CMD$4.R, x2, y2, w2, h2);
return this;
};
PathProxy2.prototype.closePath = function() {
this._drawPendingPt();
this.addData(CMD$4.Z);
var ctx = this._ctx;
var x0 = this._x0;
var y0 = this._y0;
if (ctx) {
ctx.closePath();
}
this._xi = x0;
this._yi = y0;
return this;
};
PathProxy2.prototype.fill = function(ctx) {
ctx && ctx.fill();
this.toStatic();
};
PathProxy2.prototype.stroke = function(ctx) {
ctx && ctx.stroke();
this.toStatic();
};
PathProxy2.prototype.len = function() {
return this._len;
};
PathProxy2.prototype.setData = function(data) {
var len2 = data.length;
if (!(this.data && this.data.length === len2) && hasTypedArray) {
this.data = new Float32Array(len2);
}
for (var i = 0; i < len2; i++) {
this.data[i] = data[i];
}
this._len = len2;
};
PathProxy2.prototype.appendPath = function(path) {
if (!(path instanceof Array)) {
path = [path];
}
var len2 = path.length;
var appendSize = 0;
var offset2 = this._len;
for (var i = 0; i < len2; i++) {
appendSize += path[i].len();
}
if (hasTypedArray && this.data instanceof Float32Array) {
this.data = new Float32Array(offset2 + appendSize);
}
for (var i = 0; i < len2; i++) {
var appendPathData = path[i].data;
for (var k2 = 0; k2 < appendPathData.length; k2++) {
this.data[offset2++] = appendPathData[k2];
}
}
this._len = offset2;
};
PathProxy2.prototype.addData = function(cmd, a, b2, c2, d2, e2, f2, g2, h2) {
if (!this._saveData) {
return;
}
var data = this.data;
if (this._len + arguments.length > data.length) {
this._expandData();
data = this.data;
}
for (var i = 0; i < arguments.length; i++) {
data[this._len++] = arguments[i];
}
};
PathProxy2.prototype._drawPendingPt = function() {
if (this._pendingPtDist > 0) {
this._ctx && this._ctx.lineTo(this._pendingPtX, this._pendingPtY);
this._pendingPtDist = 0;
}
};
PathProxy2.prototype._expandData = function() {
if (!(this.data instanceof Array)) {
var newData = [];
for (var i = 0; i < this._len; i++) {
newData[i] = this.data[i];
}
this.data = newData;
}
};
PathProxy2.prototype.toStatic = function() {
if (!this._saveData) {
return;
}
this._drawPendingPt();
var data = this.data;
if (data instanceof Array) {
data.length = this._len;
if (hasTypedArray && this._len > 11) {
this.data = new Float32Array(data);
}
}
};
PathProxy2.prototype.getBoundingRect = function() {
min[0] = min[1] = min2[0] = min2[1] = Number.MAX_VALUE;
max[0] = max[1] = max2[0] = max2[1] = -Number.MAX_VALUE;
var data = this.data;
var xi2 = 0;
var yi2 = 0;
var x0 = 0;
var y0 = 0;
var i;
for (i = 0; i < this._len; ) {
var cmd = data[i++];
var isFirst = i === 1;
if (isFirst) {
xi2 = data[i];
yi2 = data[i + 1];
x0 = xi2;
y0 = yi2;
}
switch (cmd) {
case CMD$4.M:
xi2 = x0 = data[i++];
yi2 = y0 = data[i++];
min2[0] = x0;
min2[1] = y0;
max2[0] = x0;
max2[1] = y0;
break;
case CMD$4.L:
fromLine(xi2, yi2, data[i], data[i + 1], min2, max2);
xi2 = data[i++];
yi2 = data[i++];
break;
case CMD$4.C:
fromCubic(xi2, yi2, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], min2, max2);
xi2 = data[i++];
yi2 = data[i++];
break;
case CMD$4.Q:
fromQuadratic(xi2, yi2, data[i++], data[i++], data[i], data[i + 1], min2, max2);
xi2 = data[i++];
yi2 = data[i++];
break;
case CMD$4.A:
var cx = data[i++];
var cy = data[i++];
var rx = data[i++];
var ry = data[i++];
var startAngle = data[i++];
var endAngle = data[i++] + startAngle;
i += 1;
var anticlockwise = !data[i++];
if (isFirst) {
x0 = mathCos$3(startAngle) * rx + cx;
y0 = mathSin$3(startAngle) * ry + cy;
}
fromArc(cx, cy, rx, ry, startAngle, endAngle, anticlockwise, min2, max2);
xi2 = mathCos$3(endAngle) * rx + cx;
yi2 = mathSin$3(endAngle) * ry + cy;
break;
case CMD$4.R:
x0 = xi2 = data[i++];
y0 = yi2 = data[i++];
var width = data[i++];
var height = data[i++];
fromLine(x0, y0, x0 + width, y0 + height, min2, max2);
break;
case CMD$4.Z:
xi2 = x0;
yi2 = y0;
break;
}
min$1(min, min, min2);
max$1(max, max, max2);
}
if (i === 0) {
min[0] = min[1] = max[0] = max[1] = 0;
}
return new BoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);
};
PathProxy2.prototype._calculateLength = function() {
var data = this.data;
var len2 = this._len;
var ux = this._ux;
var uy = this._uy;
var xi2 = 0;
var yi2 = 0;
var x0 = 0;
var y0 = 0;
if (!this._pathSegLen) {
this._pathSegLen = [];
}
var pathSegLen = this._pathSegLen;
var pathTotalLen = 0;
var segCount = 0;
for (var i = 0; i < len2; ) {
var cmd = data[i++];
var isFirst = i === 1;
if (isFirst) {
xi2 = data[i];
yi2 = data[i + 1];
x0 = xi2;
y0 = yi2;
}
var l2 = -1;
switch (cmd) {
case CMD$4.M:
xi2 = x0 = data[i++];
yi2 = y0 = data[i++];
break;
case CMD$4.L: {
var x2 = data[i++];
var y2 = data[i++];
var dx = x2 - xi2;
var dy = y2 - yi2;
if (mathAbs$2(dx) > ux || mathAbs$2(dy) > uy || i === len2 - 1) {
l2 = Math.sqrt(dx * dx + dy * dy);
xi2 = x2;
yi2 = y2;
}
break;
}
case CMD$4.C: {
var x1 = data[i++];
var y1 = data[i++];
var x2 = data[i++];
var y2 = data[i++];
var x3 = data[i++];
var y3 = data[i++];
l2 = cubicLength(xi2, yi2, x1, y1, x2, y2, x3, y3, 10);
xi2 = x3;
yi2 = y3;
break;
}
case CMD$4.Q: {
var x1 = data[i++];
var y1 = data[i++];
var x2 = data[i++];
var y2 = data[i++];
l2 = quadraticLength(xi2, yi2, x1, y1, x2, y2, 10);
xi2 = x2;
yi2 = y2;
break;
}
case CMD$4.A:
var cx = data[i++];
var cy = data[i++];
var rx = data[i++];
var ry = data[i++];
var startAngle = data[i++];
var delta = data[i++];
var endAngle = delta + startAngle;
i += 1;
if (isFirst) {
x0 = mathCos$3(startAngle) * rx + cx;
y0 = mathSin$3(startAngle) * ry + cy;
}
l2 = mathMax$8(rx, ry) * mathMin$8(PI2$7, Math.abs(delta));
xi2 = mathCos$3(endAngle) * rx + cx;
yi2 = mathSin$3(endAngle) * ry + cy;
break;
case CMD$4.R: {
x0 = xi2 = data[i++];
y0 = yi2 = data[i++];
var width = data[i++];
var height = data[i++];
l2 = width * 2 + height * 2;
break;
}
case CMD$4.Z: {
var dx = x0 - xi2;
var dy = y0 - yi2;
l2 = Math.sqrt(dx * dx + dy * dy);
xi2 = x0;
yi2 = y0;
break;
}
}
if (l2 >= 0) {
pathSegLen[segCount++] = l2;
pathTotalLen += l2;
}
}
this._pathLen = pathTotalLen;
return pathTotalLen;
};
PathProxy2.prototype.rebuildPath = function(ctx, percent) {
var d2 = this.data;
var ux = this._ux;
var uy = this._uy;
var len2 = this._len;
var x0;
var y0;
var xi2;
var yi2;
var x2;
var y2;
var drawPart = percent < 1;
var pathSegLen;
var pathTotalLen;
var accumLength = 0;
var segCount = 0;
var displayedLength;
var pendingPtDist = 0;
var pendingPtX;
var pendingPtY;
if (drawPart) {
if (!this._pathSegLen) {
this._calculateLength();
}
pathSegLen = this._pathSegLen;
pathTotalLen = this._pathLen;
displayedLength = percent * pathTotalLen;
if (!displayedLength) {
return;
}
}
lo: for (var i = 0; i < len2; ) {
var cmd = d2[i++];
var isFirst = i === 1;
if (isFirst) {
xi2 = d2[i];
yi2 = d2[i + 1];
x0 = xi2;
y0 = yi2;
}
if (cmd !== CMD$4.L && pendingPtDist > 0) {
ctx.lineTo(pendingPtX, pendingPtY);
pendingPtDist = 0;
}
switch (cmd) {
case CMD$4.M:
x0 = xi2 = d2[i++];
y0 = yi2 = d2[i++];
ctx.moveTo(xi2, yi2);
break;
case CMD$4.L: {
x2 = d2[i++];
y2 = d2[i++];
var dx = mathAbs$2(x2 - xi2);
var dy = mathAbs$2(y2 - yi2);
if (dx > ux || dy > uy) {
if (drawPart) {
var l2 = pathSegLen[segCount++];
if (accumLength + l2 > displayedLength) {
var t2 = (displayedLength - accumLength) / l2;
ctx.lineTo(xi2 * (1 - t2) + x2 * t2, yi2 * (1 - t2) + y2 * t2);
break lo;
}
accumLength += l2;
}
ctx.lineTo(x2, y2);
xi2 = x2;
yi2 = y2;
pendingPtDist = 0;
} else {
var d22 = dx * dx + dy * dy;
if (d22 > pendingPtDist) {
pendingPtX = x2;
pendingPtY = y2;
pendingPtDist = d22;
}
}
break;
}
case CMD$4.C: {
var x1 = d2[i++];
var y1 = d2[i++];
var x22 = d2[i++];
var y22 = d2[i++];
var x3 = d2[i++];
var y3 = d2[i++];
if (drawPart) {
var l2 = pathSegLen[segCount++];
if (accumLength + l2 > displayedLength) {
var t2 = (displayedLength - accumLength) / l2;
cubicSubdivide(xi2, x1, x22, x3, t2, tmpOutX);
cubicSubdivide(yi2, y1, y22, y3, t2, tmpOutY);
ctx.bezierCurveTo(tmpOutX[1], tmpOutY[1], tmpOutX[2], tmpOutY[2], tmpOutX[3], tmpOutY[3]);
break lo;
}
accumLength += l2;
}
ctx.bezierCurveTo(x1, y1, x22, y22, x3, y3);
xi2 = x3;
yi2 = y3;
break;
}
case CMD$4.Q: {
var x1 = d2[i++];
var y1 = d2[i++];
var x22 = d2[i++];
var y22 = d2[i++];
if (drawPart) {
var l2 = pathSegLen[segCount++];
if (accumLength + l2 > displayedLength) {
var t2 = (displayedLength - accumLength) / l2;
quadraticSubdivide(xi2, x1, x22, t2, tmpOutX);
quadraticSubdivide(yi2, y1, y22, t2, tmpOutY);
ctx.quadraticCurveTo(tmpOutX[1], tmpOutY[1], tmpOutX[2], tmpOutY[2]);
break lo;
}
accumLength += l2;
}
ctx.quadraticCurveTo(x1, y1, x22, y22);
xi2 = x22;
yi2 = y22;
break;
}
case CMD$4.A:
var cx = d2[i++];
var cy = d2[i++];
var rx = d2[i++];
var ry = d2[i++];
var startAngle = d2[i++];
var delta = d2[i++];
var psi = d2[i++];
var anticlockwise = !d2[i++];
var r2 = rx > ry ? rx : ry;
var isEllipse = mathAbs$2(rx - ry) > 1e-3;
var endAngle = startAngle + delta;
var breakBuild = false;
if (drawPart) {
var l2 = pathSegLen[segCount++];
if (accumLength + l2 > displayedLength) {
endAngle = startAngle + delta * (displayedLength - accumLength) / l2;
breakBuild = true;
}
accumLength += l2;
}
if (isEllipse && ctx.ellipse) {
ctx.ellipse(cx, cy, rx, ry, psi, startAngle, endAngle, anticlockwise);
} else {
ctx.arc(cx, cy, r2, startAngle, endAngle, anticlockwise);
}
if (breakBuild) {
break lo;
}
if (isFirst) {
x0 = mathCos$3(startAngle) * rx + cx;
y0 = mathSin$3(startAngle) * ry + cy;
}
xi2 = mathCos$3(endAngle) * rx + cx;
yi2 = mathSin$3(endAngle) * ry + cy;
break;
case CMD$4.R:
x0 = xi2 = d2[i];
y0 = yi2 = d2[i + 1];
x2 = d2[i++];
y2 = d2[i++];
var width = d2[i++];
var height = d2[i++];
if (drawPart) {
var l2 = pathSegLen[segCount++];
if (accumLength + l2 > displayedLength) {
var d_1 = displayedLength - accumLength;
ctx.moveTo(x2, y2);
ctx.lineTo(x2 + mathMin$8(d_1, width), y2);
d_1 -= width;
if (d_1 > 0) {
ctx.lineTo(x2 + width, y2 + mathMin$8(d_1, height));
}
d_1 -= height;
if (d_1 > 0) {
ctx.lineTo(x2 + mathMax$8(width - d_1, 0), y2 + height);
}
d_1 -= width;
if (d_1 > 0) {
ctx.lineTo(x2, y2 + mathMax$8(height - d_1, 0));
}
break lo;
}
accumLength += l2;
}
ctx.rect(x2, y2, width, height);
break;
case CMD$4.Z:
if (drawPart) {
var l2 = pathSegLen[segCount++];
if (accumLength + l2 > displayedLength) {
var t2 = (displayedLength - accumLength) / l2;
ctx.lineTo(xi2 * (1 - t2) + x0 * t2, yi2 * (1 - t2) + y0 * t2);
break lo;
}
accumLength += l2;
}
ctx.closePath();
xi2 = x0;
yi2 = y0;
}
}
};
PathProxy2.prototype.clone = function() {
var newProxy = new PathProxy2();
var data = this.data;
newProxy.data = data.slice ? data.slice() : Array.prototype.slice.call(data);
newProxy._len = this._len;
return newProxy;
};
PathProxy2.CMD = CMD$4;
PathProxy2.initDefaultProps = function() {
var proto2 = PathProxy2.prototype;
proto2._saveData = true;
proto2._ux = 0;
proto2._uy = 0;
proto2._pendingPtDist = 0;
proto2._version = 0;
}();
return PathProxy2;
}();
function containStroke$4(x0, y0, x1, y1, lineWidth, x2, y2) {
if (lineWidth === 0) {
return false;
}
var _l = lineWidth;
var _a2 = 0;
var _b2 = x0;
if (y2 > y0 + _l && y2 > y1 + _l || y2 < y0 - _l && y2 < y1 - _l || x2 > x0 + _l && x2 > x1 + _l || x2 < x0 - _l && x2 < x1 - _l) {
return false;
}
if (x0 !== x1) {
_a2 = (y0 - y1) / (x0 - x1);
_b2 = (x0 * y1 - x1 * y0) / (x0 - x1);
} else {
return Math.abs(x2 - x0) <= _l / 2;
}
var tmp = _a2 * x2 - y2 + _b2;
var _s = tmp * tmp / (_a2 * _a2 + 1);
return _s <= _l / 2 * _l / 2;
}
function containStroke$3(x0, y0, x1, y1, x2, y2, x3, y3, lineWidth, x4, y4) {
if (lineWidth === 0) {
return false;
}
var _l = lineWidth;
if (y4 > y0 + _l && y4 > y1 + _l && y4 > y2 + _l && y4 > y3 + _l || y4 < y0 - _l && y4 < y1 - _l && y4 < y2 - _l && y4 < y3 - _l || x4 > x0 + _l && x4 > x1 + _l && x4 > x2 + _l && x4 > x3 + _l || x4 < x0 - _l && x4 < x1 - _l && x4 < x2 - _l && x4 < x3 - _l) {
return false;
}
var d2 = cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x4, y4, null);
return d2 <= _l / 2;
}
function containStroke$2(x0, y0, x1, y1, x2, y2, lineWidth, x3, y3) {
if (lineWidth === 0) {
return false;
}
var _l = lineWidth;
if (y3 > y0 + _l && y3 > y1 + _l && y3 > y2 + _l || y3 < y0 - _l && y3 < y1 - _l && y3 < y2 - _l || x3 > x0 + _l && x3 > x1 + _l && x3 > x2 + _l || x3 < x0 - _l && x3 < x1 - _l && x3 < x2 - _l) {
return false;
}
var d2 = quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, null);
return d2 <= _l / 2;
}
var PI2$6 = Math.PI * 2;
function normalizeRadian(angle) {
angle %= PI2$6;
if (angle < 0) {
angle += PI2$6;
}
return angle;
}
var PI2$5 = Math.PI * 2;
function containStroke$1(cx, cy, r2, startAngle, endAngle, anticlockwise, lineWidth, x2, y2) {
if (lineWidth === 0) {
return false;
}
var _l = lineWidth;
x2 -= cx;
y2 -= cy;
var d2 = Math.sqrt(x2 * x2 + y2 * y2);
if (d2 - _l > r2 || d2 + _l < r2) {
return false;
}
if (Math.abs(startAngle - endAngle) % PI2$5 < 1e-4) {
return true;
}
if (anticlockwise) {
var tmp = startAngle;
startAngle = normalizeRadian(endAngle);
endAngle = normalizeRadian(tmp);
} else {
startAngle = normalizeRadian(startAngle);
endAngle = normalizeRadian(endAngle);
}
if (startAngle > endAngle) {
endAngle += PI2$5;
}
var angle = Math.atan2(y2, x2);
if (angle < 0) {
angle += PI2$5;
}
return angle >= startAngle && angle <= endAngle || angle + PI2$5 >= startAngle && angle + PI2$5 <= endAngle;
}
function windingLine(x0, y0, x1, y1, x2, y2) {
if (y2 > y0 && y2 > y1 || y2 < y0 && y2 < y1) {
return 0;
}
if (y1 === y0) {
return 0;
}
var t2 = (y2 - y0) / (y1 - y0);
var dir3 = y1 < y0 ? 1 : -1;
if (t2 === 1 || t2 === 0) {
dir3 = y1 < y0 ? 0.5 : -0.5;
}
var x_ = t2 * (x1 - x0) + x0;
return x_ === x2 ? Infinity : x_ > x2 ? dir3 : 0;
}
var CMD$3 = PathProxy.CMD;
var PI2$4 = Math.PI * 2;
var EPSILON$1 = 1e-4;
function isAroundEqual$1(a, b2) {
return Math.abs(a - b2) < EPSILON$1;
}
var roots = [-1, -1, -1];
var extrema = [-1, -1];
function swapExtrema() {
var tmp = extrema[0];
extrema[0] = extrema[1];
extrema[1] = tmp;
}
function windingCubic(x0, y0, x1, y1, x2, y2, x3, y3, x4, y4) {
if (y4 > y0 && y4 > y1 && y4 > y2 && y4 > y3 || y4 < y0 && y4 < y1 && y4 < y2 && y4 < y3) {
return 0;
}
var nRoots = cubicRootAt(y0, y1, y2, y3, y4, roots);
if (nRoots === 0) {
return 0;
} else {
var w2 = 0;
var nExtrema = -1;
var y0_ = void 0;
var y1_ = void 0;
for (var i = 0; i < nRoots; i++) {
var t2 = roots[i];
var unit2 = t2 === 0 || t2 === 1 ? 0.5 : 1;
var x_ = cubicAt(x0, x1, x2, x3, t2);
if (x_ < x4) {
continue;
}
if (nExtrema < 0) {
nExtrema = cubicExtrema(y0, y1, y2, y3, extrema);
if (extrema[1] < extrema[0] && nExtrema > 1) {
swapExtrema();
}
y0_ = cubicAt(y0, y1, y2, y3, extrema[0]);
if (nExtrema > 1) {
y1_ = cubicAt(y0, y1, y2, y3, extrema[1]);
}
}
if (nExtrema === 2) {
if (t2 < extrema[0]) {
w2 += y0_ < y0 ? unit2 : -unit2;
} else if (t2 < extrema[1]) {
w2 += y1_ < y0_ ? unit2 : -unit2;
} else {
w2 += y3 < y1_ ? unit2 : -unit2;
}
} else {
if (t2 < extrema[0]) {
w2 += y0_ < y0 ? unit2 : -unit2;
} else {
w2 += y3 < y0_ ? unit2 : -unit2;
}
}
}
return w2;
}
}
function windingQuadratic(x0, y0, x1, y1, x2, y2, x3, y3) {
if (y3 > y0 && y3 > y1 && y3 > y2 || y3 < y0 && y3 < y1 && y3 < y2) {
return 0;
}
var nRoots = quadraticRootAt(y0, y1, y2, y3, roots);
if (nRoots === 0) {
return 0;
} else {
var t2 = quadraticExtremum(y0, y1, y2);
if (t2 >= 0 && t2 <= 1) {
var w2 = 0;
var y_ = quadraticAt$1(y0, y1, y2, t2);
for (var i = 0; i < nRoots; i++) {
var unit2 = roots[i] === 0 || roots[i] === 1 ? 0.5 : 1;
var x_ = quadraticAt$1(x0, x1, x2, roots[i]);
if (x_ < x3) {
continue;
}
if (roots[i] < t2) {
w2 += y_ < y0 ? unit2 : -unit2;
} else {
w2 += y2 < y_ ? unit2 : -unit2;
}
}
return w2;
} else {
var unit2 = roots[0] === 0 || roots[0] === 1 ? 0.5 : 1;
var x_ = quadraticAt$1(x0, x1, x2, roots[0]);
if (x_ < x3) {
return 0;
}
return y2 < y0 ? unit2 : -unit2;
}
}
}
function windingArc(cx, cy, r2, startAngle, endAngle, anticlockwise, x2, y2) {
y2 -= cy;
if (y2 > r2 || y2 < -r2) {
return 0;
}
var tmp = Math.sqrt(r2 * r2 - y2 * y2);
roots[0] = -tmp;
roots[1] = tmp;
var dTheta = Math.abs(startAngle - endAngle);
if (dTheta < 1e-4) {
return 0;
}
if (dTheta >= PI2$4 - 1e-4) {
startAngle = 0;
endAngle = PI2$4;
var dir3 = anticlockwise ? 1 : -1;
if (x2 >= roots[0] + cx && x2 <= roots[1] + cx) {
return dir3;
} else {
return 0;
}
}
if (startAngle > endAngle) {
var tmp_1 = startAngle;
startAngle = endAngle;
endAngle = tmp_1;
}
if (startAngle < 0) {
startAngle += PI2$4;
endAngle += PI2$4;
}
var w2 = 0;
for (var i = 0; i < 2; i++) {
var x_ = roots[i];
if (x_ + cx > x2) {
var angle = Math.atan2(y2, x_);
var dir3 = anticlockwise ? 1 : -1;
if (angle < 0) {
angle = PI2$4 + angle;
}
if (angle >= startAngle && angle <= endAngle || angle + PI2$4 >= startAngle && angle + PI2$4 <= endAngle) {
if (angle > Math.PI / 2 && angle < Math.PI * 1.5) {
dir3 = -dir3;
}
w2 += dir3;
}
}
}
return w2;
}
function containPath(path, lineWidth, isStroke, x2, y2) {
var data = path.data;
var len2 = path.len();
var w2 = 0;
var xi2 = 0;
var yi2 = 0;
var x0 = 0;
var y0 = 0;
var x1;
var y1;
for (var i = 0; i < len2; ) {
var cmd = data[i++];
var isFirst = i === 1;
if (cmd === CMD$3.M && i > 1) {
if (!isStroke) {
w2 += windingLine(xi2, yi2, x0, y0, x2, y2);
}
}
if (isFirst) {
xi2 = data[i];
yi2 = data[i + 1];
x0 = xi2;
y0 = yi2;
}
switch (cmd) {
case CMD$3.M:
x0 = data[i++];
y0 = data[i++];
xi2 = x0;
yi2 = y0;
break;
case CMD$3.L:
if (isStroke) {
if (containStroke$4(xi2, yi2, data[i], data[i + 1], lineWidth, x2, y2)) {
return true;
}
} else {
w2 += windingLine(xi2, yi2, data[i], data[i + 1], x2, y2) || 0;
}
xi2 = data[i++];
yi2 = data[i++];
break;
case CMD$3.C:
if (isStroke) {
if (containStroke$3(xi2, yi2, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], lineWidth, x2, y2)) {
return true;
}
} else {
w2 += windingCubic(xi2, yi2, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], x2, y2) || 0;
}
xi2 = data[i++];
yi2 = data[i++];
break;
case CMD$3.Q:
if (isStroke) {
if (containStroke$2(xi2, yi2, data[i++], data[i++], data[i], data[i + 1], lineWidth, x2, y2)) {
return true;
}
} else {
w2 += windingQuadratic(xi2, yi2, data[i++], data[i++], data[i], data[i + 1], x2, y2) || 0;
}
xi2 = data[i++];
yi2 = data[i++];
break;
case CMD$3.A:
var cx = data[i++];
var cy = data[i++];
var rx = data[i++];
var ry = data[i++];
var theta = data[i++];
var dTheta = data[i++];
i += 1;
var anticlockwise = !!(1 - data[i++]);
x1 = Math.cos(theta) * rx + cx;
y1 = Math.sin(theta) * ry + cy;
if (!isFirst) {
w2 += windingLine(xi2, yi2, x1, y1, x2, y2);
} else {
x0 = x1;
y0 = y1;
}
var _x = (x2 - cx) * ry / rx + cx;
if (isStroke) {
if (containStroke$1(cx, cy, ry, theta, theta + dTheta, anticlockwise, lineWidth, _x, y2)) {
return true;
}
} else {
w2 += windingArc(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y2);
}
xi2 = Math.cos(theta + dTheta) * rx + cx;
yi2 = Math.sin(theta + dTheta) * ry + cy;
break;
case CMD$3.R:
x0 = xi2 = data[i++];
y0 = yi2 = data[i++];
var width = data[i++];
var height = data[i++];
x1 = x0 + width;
y1 = y0 + height;
if (isStroke) {
if (containStroke$4(x0, y0, x1, y0, lineWidth, x2, y2) || containStroke$4(x1, y0, x1, y1, lineWidth, x2, y2) || containStroke$4(x1, y1, x0, y1, lineWidth, x2, y2) || containStroke$4(x0, y1, x0, y0, lineWidth, x2, y2)) {
return true;
}
} else {
w2 += windingLine(x1, y0, x1, y1, x2, y2);
w2 += windingLine(x0, y1, x0, y0, x2, y2);
}
break;
case CMD$3.Z:
if (isStroke) {
if (containStroke$4(xi2, yi2, x0, y0, lineWidth, x2, y2)) {
return true;
}
} else {
w2 += windingLine(xi2, yi2, x0, y0, x2, y2);
}
xi2 = x0;
yi2 = y0;
break;
}
}
if (!isStroke && !isAroundEqual$1(yi2, y0)) {
w2 += windingLine(xi2, yi2, x0, y0, x2, y2) || 0;
}
return w2 !== 0;
}
function contain$2(pathProxy, x2, y2) {
return containPath(pathProxy, 0, false, x2, y2);
}
function containStroke(pathProxy, lineWidth, x2, y2) {
return containPath(pathProxy, lineWidth, true, x2, y2);
}
var DEFAULT_PATH_STYLE = defaults({
fill: "#000",
stroke: null,
strokePercent: 1,
fillOpacity: 1,
strokeOpacity: 1,
lineDashOffset: 0,
lineWidth: 1,
lineCap: "butt",
miterLimit: 10,
strokeNoScale: false,
strokeFirst: false
}, DEFAULT_COMMON_STYLE);
var DEFAULT_PATH_ANIMATION_PROPS = {
style: defaults({
fill: true,
stroke: true,
strokePercent: true,
fillOpacity: true,
strokeOpacity: true,
lineDashOffset: true,
lineWidth: true,
miterLimit: true
}, DEFAULT_COMMON_ANIMATION_PROPS.style)
};
var pathCopyParams = TRANSFORMABLE_PROPS.concat([
"invisible",
"culling",
"z",
"z2",
"zlevel",
"parent"
]);
var Path = function(_super) {
__extends(Path2, _super);
function Path2(opts) {
return _super.call(this, opts) || this;
}
Path2.prototype.update = function() {
var _this = this;
_super.prototype.update.call(this);
var style2 = this.style;
if (style2.decal) {
var decalEl = this._decalEl = this._decalEl || new Path2();
if (decalEl.buildPath === Path2.prototype.buildPath) {
decalEl.buildPath = function(ctx) {
_this.buildPath(ctx, _this.shape);
};
}
decalEl.silent = true;
var decalElStyle = decalEl.style;
for (var key in style2) {
if (decalElStyle[key] !== style2[key]) {
decalElStyle[key] = style2[key];
}
}
decalElStyle.fill = style2.fill ? style2.decal : null;
decalElStyle.decal = null;
decalElStyle.shadowColor = null;
style2.strokeFirst && (decalElStyle.stroke = null);
for (var i = 0; i < pathCopyParams.length; ++i) {
decalEl[pathCopyParams[i]] = this[pathCopyParams[i]];
}
decalEl.__dirty |= REDRAW_BIT;
} else if (this._decalEl) {
this._decalEl = null;
}
};
Path2.prototype.getDecalElement = function() {
return this._decalEl;
};
Path2.prototype._init = function(props) {
var keysArr = keys(props);
this.shape = this.getDefaultShape();
var defaultStyle = this.getDefaultStyle();
if (defaultStyle) {
this.useStyle(defaultStyle);
}
for (var i = 0; i < keysArr.length; i++) {
var key = keysArr[i];
var value = props[key];
if (key === "style") {
if (!this.style) {
this.useStyle(value);
} else {
extend(this.style, value);
}
} else if (key === "shape") {
extend(this.shape, value);
} else {
_super.prototype.attrKV.call(this, key, value);
}
}
if (!this.style) {
this.useStyle({});
}
};
Path2.prototype.getDefaultStyle = function() {
return null;
};
Path2.prototype.getDefaultShape = function() {
return {};
};
Path2.prototype.canBeInsideText = function() {
return this.hasFill();
};
Path2.prototype.getInsideTextFill = function() {
var pathFill = this.style.fill;
if (pathFill !== "none") {
if (isString$1(pathFill)) {
var fillLum = lum(pathFill, 0);
if (fillLum > 0.5) {
return DARK_LABEL_COLOR;
} else if (fillLum > 0.2) {
return LIGHTER_LABEL_COLOR;
}
return LIGHT_LABEL_COLOR;
} else if (pathFill) {
return LIGHT_LABEL_COLOR;
}
}
return DARK_LABEL_COLOR;
};
Path2.prototype.getInsideTextStroke = function(textFill) {
var pathFill = this.style.fill;
if (isString$1(pathFill)) {
var zr = this.__zr;
var isDarkMode2 = !!(zr && zr.isDarkMode());
var isDarkLabel = lum(textFill, 0) < DARK_MODE_THRESHOLD;
if (isDarkMode2 === isDarkLabel) {
return pathFill;
}
}
};
Path2.prototype.buildPath = function(ctx, shapeCfg, inBatch) {
};
Path2.prototype.pathUpdated = function() {
this.__dirty &= ~SHAPE_CHANGED_BIT;
};
Path2.prototype.getUpdatedPathProxy = function(inBatch) {
!this.path && this.createPathProxy();
this.path.beginPath();
this.buildPath(this.path, this.shape, inBatch);
return this.path;
};
Path2.prototype.createPathProxy = function() {
this.path = new PathProxy(false);
};
Path2.prototype.hasStroke = function() {
var style2 = this.style;
var stroke = style2.stroke;
return !(stroke == null || stroke === "none" || !(style2.lineWidth > 0));
};
Path2.prototype.hasFill = function() {
var style2 = this.style;
var fill = style2.fill;
return fill != null && fill !== "none";
};
Path2.prototype.getBoundingRect = function() {
var rect = this._rect;
var style2 = this.style;
var needsUpdateRect = !rect;
if (needsUpdateRect) {
var firstInvoke = false;
if (!this.path) {
firstInvoke = true;
this.createPathProxy();
}
var path = this.path;
if (firstInvoke || this.__dirty & SHAPE_CHANGED_BIT) {
path.beginPath();
this.buildPath(path, this.shape, false);
this.pathUpdated();
}
rect = path.getBoundingRect();
}
this._rect = rect;
if (this.hasStroke() && this.path && this.path.len() > 0) {
var rectStroke = this._rectStroke || (this._rectStroke = rect.clone());
if (this.__dirty || needsUpdateRect) {
rectStroke.copy(rect);
var lineScale = style2.strokeNoScale ? this.getLineScale() : 1;
var w2 = style2.lineWidth;
if (!this.hasFill()) {
var strokeContainThreshold = this.strokeContainThreshold;
w2 = Math.max(w2, strokeContainThreshold == null ? 4 : strokeContainThreshold);
}
if (lineScale > 1e-10) {
rectStroke.width += w2 / lineScale;
rectStroke.height += w2 / lineScale;
rectStroke.x -= w2 / lineScale / 2;
rectStroke.y -= w2 / lineScale / 2;
}
}
return rectStroke;
}
return rect;
};
Path2.prototype.contain = function(x2, y2) {
var localPos = this.transformCoordToLocal(x2, y2);
var rect = this.getBoundingRect();
var style2 = this.style;
x2 = localPos[0];
y2 = localPos[1];
if (rect.contain(x2, y2)) {
var pathProxy = this.path;
if (this.hasStroke()) {
var lineWidth = style2.lineWidth;
var lineScale = style2.strokeNoScale ? this.getLineScale() : 1;
if (lineScale > 1e-10) {
if (!this.hasFill()) {
lineWidth = Math.max(lineWidth, this.strokeContainThreshold);
}
if (containStroke(pathProxy, lineWidth / lineScale, x2, y2)) {
return true;
}
}
}
if (this.hasFill()) {
return contain$2(pathProxy, x2, y2);
}
}
return false;
};
Path2.prototype.dirtyShape = function() {
this.__dirty |= SHAPE_CHANGED_BIT;
if (this._rect) {
this._rect = null;
}
if (this._decalEl) {
this._decalEl.dirtyShape();
}
this.markRedraw();
};
Path2.prototype.dirty = function() {
this.dirtyStyle();
this.dirtyShape();
};
Path2.prototype.animateShape = function(loop) {
return this.animate("shape", loop);
};
Path2.prototype.updateDuringAnimation = function(targetKey) {
if (targetKey === "style") {
this.dirtyStyle();
} else if (targetKey === "shape") {
this.dirtyShape();
} else {
this.markRedraw();
}
};
Path2.prototype.attrKV = function(key, value) {
if (key === "shape") {
this.setShape(value);
} else {
_super.prototype.attrKV.call(this, key, value);
}
};
Path2.prototype.setShape = function(keyOrObj, value) {
var shape = this.shape;
if (!shape) {
shape = this.shape = {};
}
if (typeof keyOrObj === "string") {
shape[keyOrObj] = value;
} else {
extend(shape, keyOrObj);
}
this.dirtyShape();
return this;
};
Path2.prototype.shapeChanged = function() {
return !!(this.__dirty & SHAPE_CHANGED_BIT);
};
Path2.prototype.createStyle = function(obj) {
return createObject(DEFAULT_PATH_STYLE, obj);
};
Path2.prototype._innerSaveToNormal = function(toState) {
_super.prototype._innerSaveToNormal.call(this, toState);
var normalState = this._normalState;
if (toState.shape && !normalState.shape) {
normalState.shape = extend({}, this.shape);
}
};
Path2.prototype._applyStateObj = function(stateName, state, normalState, keepCurrentStates, transition, animationCfg) {
_super.prototype._applyStateObj.call(this, stateName, state, normalState, keepCurrentStates, transition, animationCfg);
var needsRestoreToNormal = !(state && keepCurrentStates);
var targetShape;
if (state && state.shape) {
if (transition) {
if (keepCurrentStates) {
targetShape = state.shape;
} else {
targetShape = extend({}, normalState.shape);
extend(targetShape, state.shape);
}
} else {
targetShape = extend({}, keepCurrentStates ? this.shape : normalState.shape);
extend(targetShape, state.shape);
}
} else if (needsRestoreToNormal) {
targetShape = normalState.shape;
}
if (targetShape) {
if (transition) {
this.shape = extend({}, this.shape);
var targetShapePrimaryProps = {};
var shapeKeys = keys(targetShape);
for (var i = 0; i < shapeKeys.length; i++) {
var key = shapeKeys[i];
if (typeof targetShape[key] === "object") {
this.shape[key] = targetShape[key];
} else {
targetShapePrimaryProps[key] = targetShape[key];
}
}
this._transitionState(stateName, {
shape: targetShapePrimaryProps
}, animationCfg);
} else {
this.shape = targetShape;
this.dirtyShape();
}
}
};
Path2.prototype._mergeStates = function(states) {
var mergedState = _super.prototype._mergeStates.call(this, states);
var mergedShape;
for (var i = 0; i < states.length; i++) {
var state = states[i];
if (state.shape) {
mergedShape = mergedShape || {};
this._mergeStyle(mergedShape, state.shape);
}
}
if (mergedShape) {
mergedState.shape = mergedShape;
}
return mergedState;
};
Path2.prototype.getAnimationStyleProps = function() {
return DEFAULT_PATH_ANIMATION_PROPS;
};
Path2.prototype.isZeroArea = function() {
return false;
};
Path2.extend = function(defaultProps) {
var Sub = function(_super2) {
__extends(Sub2, _super2);
function Sub2(opts) {
var _this = _super2.call(this, opts) || this;
defaultProps.init && defaultProps.init.call(_this, opts);
return _this;
}
Sub2.prototype.getDefaultStyle = function() {
return clone$4(defaultProps.style);
};
Sub2.prototype.getDefaultShape = function() {
return clone$4(defaultProps.shape);
};
return Sub2;
}(Path2);
for (var key in defaultProps) {
if (typeof defaultProps[key] === "function") {
Sub.prototype[key] = defaultProps[key];
}
}
return Sub;
};
Path2.initDefaultProps = function() {
var pathProto = Path2.prototype;
pathProto.type = "path";
pathProto.strokeContainThreshold = 5;
pathProto.segmentIgnoreThreshold = 0;
pathProto.subPixelOptimize = false;
pathProto.autoBatch = false;
pathProto.__dirty = REDRAW_BIT | STYLE_CHANGED_BIT | SHAPE_CHANGED_BIT;
}();
return Path2;
}(Displayable);
var DEFAULT_TSPAN_STYLE = defaults({
strokeFirst: true,
font: DEFAULT_FONT,
x: 0,
y: 0,
textAlign: "left",
textBaseline: "top",
miterLimit: 2
}, DEFAULT_PATH_STYLE);
var TSpan = function(_super) {
__extends(TSpan2, _super);
function TSpan2() {
return _super !== null && _super.apply(this, arguments) || this;
}
TSpan2.prototype.hasStroke = function() {
var style2 = this.style;
var stroke = style2.stroke;
return stroke != null && stroke !== "none" && style2.lineWidth > 0;
};
TSpan2.prototype.hasFill = function() {
var style2 = this.style;
var fill = style2.fill;
return fill != null && fill !== "none";
};
TSpan2.prototype.createStyle = function(obj) {
return createObject(DEFAULT_TSPAN_STYLE, obj);
};
TSpan2.prototype.setBoundingRect = function(rect) {
this._rect = rect;
};
TSpan2.prototype.getBoundingRect = function() {
var style2 = this.style;
if (!this._rect) {
var text = style2.text;
text != null ? text += "" : text = "";
var rect = getBoundingRect(text, style2.font, style2.textAlign, style2.textBaseline);
rect.x += style2.x || 0;
rect.y += style2.y || 0;
if (this.hasStroke()) {
var w2 = style2.lineWidth;
rect.x -= w2 / 2;
rect.y -= w2 / 2;
rect.width += w2;
rect.height += w2;
}
this._rect = rect;
}
return this._rect;
};
TSpan2.initDefaultProps = function() {
var tspanProto = TSpan2.prototype;
tspanProto.dirtyRectTolerance = 10;
}();
return TSpan2;
}(Displayable);
TSpan.prototype.type = "tspan";
var DEFAULT_IMAGE_STYLE = defaults({
x: 0,
y: 0
}, DEFAULT_COMMON_STYLE);
var DEFAULT_IMAGE_ANIMATION_PROPS = {
style: defaults({
x: true,
y: true,
width: true,
height: true,
sx: true,
sy: true,
sWidth: true,
sHeight: true
}, DEFAULT_COMMON_ANIMATION_PROPS.style)
};
function isImageLike$1(source) {
return !!(source && typeof source !== "string" && source.width && source.height);
}
var ZRImage = function(_super) {
__extends(ZRImage2, _super);
function ZRImage2() {
return _super !== null && _super.apply(this, arguments) || this;
}
ZRImage2.prototype.createStyle = function(obj) {
return createObject(DEFAULT_IMAGE_STYLE, obj);
};
ZRImage2.prototype._getSize = function(dim) {
var style2 = this.style;
var size = style2[dim];
if (size != null) {
return size;
}
var imageSource = isImageLike$1(style2.image) ? style2.image : this.__image;
if (!imageSource) {
return 0;
}
var otherDim = dim === "width" ? "height" : "width";
var otherDimSize = style2[otherDim];
if (otherDimSize == null) {
return imageSource[dim];
} else {
return imageSource[dim] / imageSource[otherDim] * otherDimSize;
}
};
ZRImage2.prototype.getWidth = function() {
return this._getSize("width");
};
ZRImage2.prototype.getHeight = function() {
return this._getSize("height");
};
ZRImage2.prototype.getAnimationStyleProps = function() {
return DEFAULT_IMAGE_ANIMATION_PROPS;
};
ZRImage2.prototype.getBoundingRect = function() {
var style2 = this.style;
if (!this._rect) {
this._rect = new BoundingRect(style2.x || 0, style2.y || 0, this.getWidth(), this.getHeight());
}
return this._rect;
};
return ZRImage2;
}(Displayable);
ZRImage.prototype.type = "image";
function buildPath$2(ctx, shape) {
var x2 = shape.x;
var y2 = shape.y;
var width = shape.width;
var height = shape.height;
var r2 = shape.r;
var r1;
var r22;
var r3;
var r4;
if (width < 0) {
x2 = x2 + width;
width = -width;
}
if (height < 0) {
y2 = y2 + height;
height = -height;
}
if (typeof r2 === "number") {
r1 = r22 = r3 = r4 = r2;
} else if (r2 instanceof Array) {
if (r2.length === 1) {
r1 = r22 = r3 = r4 = r2[0];
} else if (r2.length === 2) {
r1 = r3 = r2[0];
r22 = r4 = r2[1];
} else if (r2.length === 3) {
r1 = r2[0];
r22 = r4 = r2[1];
r3 = r2[2];
} else {
r1 = r2[0];
r22 = r2[1];
r3 = r2[2];
r4 = r2[3];
}
} else {
r1 = r22 = r3 = r4 = 0;
}
var total;
if (r1 + r22 > width) {
total = r1 + r22;
r1 *= width / total;
r22 *= width / total;
}
if (r3 + r4 > width) {
total = r3 + r4;
r3 *= width / total;
r4 *= width / total;
}
if (r22 + r3 > height) {
total = r22 + r3;
r22 *= height / total;
r3 *= height / total;
}
if (r1 + r4 > height) {
total = r1 + r4;
r1 *= height / total;
r4 *= height / total;
}
ctx.moveTo(x2 + r1, y2);
ctx.lineTo(x2 + width - r22, y2);
r22 !== 0 && ctx.arc(x2 + width - r22, y2 + r22, r22, -Math.PI / 2, 0);
ctx.lineTo(x2 + width, y2 + height - r3);
r3 !== 0 && ctx.arc(x2 + width - r3, y2 + height - r3, r3, 0, Math.PI / 2);
ctx.lineTo(x2 + r4, y2 + height);
r4 !== 0 && ctx.arc(x2 + r4, y2 + height - r4, r4, Math.PI / 2, Math.PI);
ctx.lineTo(x2, y2 + r1);
r1 !== 0 && ctx.arc(x2 + r1, y2 + r1, r1, Math.PI, Math.PI * 1.5);
}
var round$2 = Math.round;
function subPixelOptimizeLine$1(outputShape, inputShape, style2) {
if (!inputShape) {
return;
}
var x1 = inputShape.x1;
var x2 = inputShape.x2;
var y1 = inputShape.y1;
var y2 = inputShape.y2;
outputShape.x1 = x1;
outputShape.x2 = x2;
outputShape.y1 = y1;
outputShape.y2 = y2;
var lineWidth = style2 && style2.lineWidth;
if (!lineWidth) {
return outputShape;
}
if (round$2(x1 * 2) === round$2(x2 * 2)) {
outputShape.x1 = outputShape.x2 = subPixelOptimize$1(x1, lineWidth, true);
}
if (round$2(y1 * 2) === round$2(y2 * 2)) {
outputShape.y1 = outputShape.y2 = subPixelOptimize$1(y1, lineWidth, true);
}
return outputShape;
}
function subPixelOptimizeRect$1(outputShape, inputShape, style2) {
if (!inputShape) {
return;
}
var originX = inputShape.x;
var originY = inputShape.y;
var originWidth = inputShape.width;
var originHeight = inputShape.height;
outputShape.x = originX;
outputShape.y = originY;
outputShape.width = originWidth;
outputShape.height = originHeight;
var lineWidth = style2 && style2.lineWidth;
if (!lineWidth) {
return outputShape;
}
outputShape.x = subPixelOptimize$1(originX, lineWidth, true);
outputShape.y = subPixelOptimize$1(originY, lineWidth, true);
outputShape.width = Math.max(subPixelOptimize$1(originX + originWidth, lineWidth, false) - outputShape.x, originWidth === 0 ? 0 : 1);
outputShape.height = Math.max(subPixelOptimize$1(originY + originHeight, lineWidth, false) - outputShape.y, originHeight === 0 ? 0 : 1);
return outputShape;
}
function subPixelOptimize$1(position2, lineWidth, positiveOrNegative) {
if (!lineWidth) {
return position2;
}
var doubledPosition = round$2(position2 * 2);
return (doubledPosition + round$2(lineWidth)) % 2 === 0 ? doubledPosition / 2 : (doubledPosition + (positiveOrNegative ? 1 : -1)) / 2;
}
var RectShape = /* @__PURE__ */ function() {
function RectShape2() {
this.x = 0;
this.y = 0;
this.width = 0;
this.height = 0;
}
return RectShape2;
}();
var subPixelOptimizeOutputShape$1 = {};
var Rect$2 = function(_super) {
__extends(Rect2, _super);
function Rect2(opts) {
return _super.call(this, opts) || this;
}
Rect2.prototype.getDefaultShape = function() {
return new RectShape();
};
Rect2.prototype.buildPath = function(ctx, shape) {
var x2;
var y2;
var width;
var height;
if (this.subPixelOptimize) {
var optimizedShape = subPixelOptimizeRect$1(subPixelOptimizeOutputShape$1, shape, this.style);
x2 = optimizedShape.x;
y2 = optimizedShape.y;
width = optimizedShape.width;
height = optimizedShape.height;
optimizedShape.r = shape.r;
shape = optimizedShape;
} else {
x2 = shape.x;
y2 = shape.y;
width = shape.width;
height = shape.height;
}
if (!shape.r) {
ctx.rect(x2, y2, width, height);
} else {
buildPath$2(ctx, shape);
}
};
Rect2.prototype.isZeroArea = function() {
return !this.shape.width || !this.shape.height;
};
return Rect2;
}(Path);
Rect$2.prototype.type = "rect";
var DEFAULT_RICH_TEXT_COLOR = {
fill: "#000"
};
var DEFAULT_STROKE_LINE_WIDTH = 2;
var DEFAULT_TEXT_ANIMATION_PROPS = {
style: defaults({
fill: true,
stroke: true,
fillOpacity: true,
strokeOpacity: true,
lineWidth: true,
fontSize: true,
lineHeight: true,
width: true,
height: true,
textShadowColor: true,
textShadowBlur: true,
textShadowOffsetX: true,
textShadowOffsetY: true,
backgroundColor: true,
padding: true,
borderColor: true,
borderWidth: true,
borderRadius: true
}, DEFAULT_COMMON_ANIMATION_PROPS.style)
};
var ZRText = function(_super) {
__extends(ZRText2, _super);
function ZRText2(opts) {
var _this = _super.call(this) || this;
_this.type = "text";
_this._children = [];
_this._defaultStyle = DEFAULT_RICH_TEXT_COLOR;
_this.attr(opts);
return _this;
}
ZRText2.prototype.childrenRef = function() {
return this._children;
};
ZRText2.prototype.update = function() {
_super.prototype.update.call(this);
if (this.styleChanged()) {
this._updateSubTexts();
}
for (var i = 0; i < this._children.length; i++) {
var child = this._children[i];
child.zlevel = this.zlevel;
child.z = this.z;
child.z2 = this.z2;
child.culling = this.culling;
child.cursor = this.cursor;
child.invisible = this.invisible;
}
};
ZRText2.prototype.updateTransform = function() {
var innerTransformable = this.innerTransformable;
if (innerTransformable) {
innerTransformable.updateTransform();
if (innerTransformable.transform) {
this.transform = innerTransformable.transform;
}
} else {
_super.prototype.updateTransform.call(this);
}
};
ZRText2.prototype.getLocalTransform = function(m2) {
var innerTransformable = this.innerTransformable;
return innerTransformable ? innerTransformable.getLocalTransform(m2) : _super.prototype.getLocalTransform.call(this, m2);
};
ZRText2.prototype.getComputedTransform = function() {
if (this.__hostTarget) {
this.__hostTarget.getComputedTransform();
this.__hostTarget.updateInnerText(true);
}
return _super.prototype.getComputedTransform.call(this);
};
ZRText2.prototype._updateSubTexts = function() {
this._childCursor = 0;
normalizeTextStyle(this.style);
this.style.rich ? this._updateRichTexts() : this._updatePlainTexts();
this._children.length = this._childCursor;
this.styleUpdated();
};
ZRText2.prototype.addSelfToZr = function(zr) {
_super.prototype.addSelfToZr.call(this, zr);
for (var i = 0; i < this._children.length; i++) {
this._children[i].__zr = zr;
}
};
ZRText2.prototype.removeSelfFromZr = function(zr) {
_super.prototype.removeSelfFromZr.call(this, zr);
for (var i = 0; i < this._children.length; i++) {
this._children[i].__zr = null;
}
};
ZRText2.prototype.getBoundingRect = function() {
if (this.styleChanged()) {
this._updateSubTexts();
}
if (!this._rect) {
var tmpRect2 = new BoundingRect(0, 0, 0, 0);
var children = this._children;
var tmpMat = [];
var rect = null;
for (var i = 0; i < children.length; i++) {
var child = children[i];
var childRect = child.getBoundingRect();
var transform2 = child.getLocalTransform(tmpMat);
if (transform2) {
tmpRect2.copy(childRect);
tmpRect2.applyTransform(transform2);
rect = rect || tmpRect2.clone();
rect.union(tmpRect2);
} else {
rect = rect || childRect.clone();
rect.union(childRect);
}
}
this._rect = rect || tmpRect2;
}
return this._rect;
};
ZRText2.prototype.setDefaultTextStyle = function(defaultTextStyle) {
this._defaultStyle = defaultTextStyle || DEFAULT_RICH_TEXT_COLOR;
};
ZRText2.prototype.setTextContent = function(textContent) {
};
ZRText2.prototype._mergeStyle = function(targetStyle, sourceStyle) {
if (!sourceStyle) {
return targetStyle;
}
var sourceRich = sourceStyle.rich;
var targetRich = targetStyle.rich || sourceRich && {};
extend(targetStyle, sourceStyle);
if (sourceRich && targetRich) {
this._mergeRich(targetRich, sourceRich);
targetStyle.rich = targetRich;
} else if (targetRich) {
targetStyle.rich = targetRich;
}
return targetStyle;
};
ZRText2.prototype._mergeRich = function(targetRich, sourceRich) {
var richNames = keys(sourceRich);
for (var i = 0; i < richNames.length; i++) {
var richName = richNames[i];
targetRich[richName] = targetRich[richName] || {};
extend(targetRich[richName], sourceRich[richName]);
}
};
ZRText2.prototype.getAnimationStyleProps = function() {
return DEFAULT_TEXT_ANIMATION_PROPS;
};
ZRText2.prototype._getOrCreateChild = function(Ctor) {
var child = this._children[this._childCursor];
if (!child || !(child instanceof Ctor)) {
child = new Ctor();
}
this._children[this._childCursor++] = child;
child.__zr = this.__zr;
child.parent = this;
return child;
};
ZRText2.prototype._updatePlainTexts = function() {
var style2 = this.style;
var textFont = style2.font || DEFAULT_FONT;
var textPadding = style2.padding;
var text = getStyleText(style2);
var contentBlock = parsePlainText(text, style2);
var needDrawBg = needDrawBackground(style2);
var bgColorDrawn = !!style2.backgroundColor;
var outerHeight = contentBlock.outerHeight;
var outerWidth = contentBlock.outerWidth;
var contentWidth = contentBlock.contentWidth;
var textLines = contentBlock.lines;
var lineHeight = contentBlock.lineHeight;
var defaultStyle = this._defaultStyle;
var baseX = style2.x || 0;
var baseY = style2.y || 0;
var textAlign = style2.align || defaultStyle.align || "left";
var verticalAlign = style2.verticalAlign || defaultStyle.verticalAlign || "top";
var textX = baseX;
var textY = adjustTextY(baseY, contentBlock.contentHeight, verticalAlign);
if (needDrawBg || textPadding) {
var boxX = adjustTextX(baseX, outerWidth, textAlign);
var boxY = adjustTextY(baseY, outerHeight, verticalAlign);
needDrawBg && this._renderBackground(style2, style2, boxX, boxY, outerWidth, outerHeight);
}
textY += lineHeight / 2;
if (textPadding) {
textX = getTextXForPadding(baseX, textAlign, textPadding);
if (verticalAlign === "top") {
textY += textPadding[0];
} else if (verticalAlign === "bottom") {
textY -= textPadding[2];
}
}
var defaultLineWidth = 0;
var useDefaultFill = false;
var textFill = getFill("fill" in style2 ? style2.fill : (useDefaultFill = true, defaultStyle.fill));
var textStroke = getStroke("stroke" in style2 ? style2.stroke : !bgColorDrawn && (!defaultStyle.autoStroke || useDefaultFill) ? (defaultLineWidth = DEFAULT_STROKE_LINE_WIDTH, defaultStyle.stroke) : null);
var hasShadow2 = style2.textShadowBlur > 0;
var fixedBoundingRect = style2.width != null && (style2.overflow === "truncate" || style2.overflow === "break" || style2.overflow === "breakAll");
var calculatedLineHeight = contentBlock.calculatedLineHeight;
for (var i = 0; i < textLines.length; i++) {
var el2 = this._getOrCreateChild(TSpan);
var subElStyle = el2.createStyle();
el2.useStyle(subElStyle);
subElStyle.text = textLines[i];
subElStyle.x = textX;
subElStyle.y = textY;
if (textAlign) {
subElStyle.textAlign = textAlign;
}
subElStyle.textBaseline = "middle";
subElStyle.opacity = style2.opacity;
subElStyle.strokeFirst = true;
if (hasShadow2) {
subElStyle.shadowBlur = style2.textShadowBlur || 0;
subElStyle.shadowColor = style2.textShadowColor || "transparent";
subElStyle.shadowOffsetX = style2.textShadowOffsetX || 0;
subElStyle.shadowOffsetY = style2.textShadowOffsetY || 0;
}
subElStyle.stroke = textStroke;
subElStyle.fill = textFill;
if (textStroke) {
subElStyle.lineWidth = style2.lineWidth || defaultLineWidth;
subElStyle.lineDash = style2.lineDash;
subElStyle.lineDashOffset = style2.lineDashOffset || 0;
}
subElStyle.font = textFont;
setSeparateFont(subElStyle, style2);
textY += lineHeight;
if (fixedBoundingRect) {
el2.setBoundingRect(new BoundingRect(adjustTextX(subElStyle.x, style2.width, subElStyle.textAlign), adjustTextY(subElStyle.y, calculatedLineHeight, subElStyle.textBaseline), contentWidth, calculatedLineHeight));
}
}
};
ZRText2.prototype._updateRichTexts = function() {
var style2 = this.style;
var text = getStyleText(style2);
var contentBlock = parseRichText(text, style2);
var contentWidth = contentBlock.width;
var outerWidth = contentBlock.outerWidth;
var outerHeight = contentBlock.outerHeight;
var textPadding = style2.padding;
var baseX = style2.x || 0;
var baseY = style2.y || 0;
var defaultStyle = this._defaultStyle;
var textAlign = style2.align || defaultStyle.align;
var verticalAlign = style2.verticalAlign || defaultStyle.verticalAlign;
var boxX = adjustTextX(baseX, outerWidth, textAlign);
var boxY = adjustTextY(baseY, outerHeight, verticalAlign);
var xLeft = boxX;
var lineTop = boxY;
if (textPadding) {
xLeft += textPadding[3];
lineTop += textPadding[0];
}
var xRight = xLeft + contentWidth;
if (needDrawBackground(style2)) {
this._renderBackground(style2, style2, boxX, boxY, outerWidth, outerHeight);
}
var bgColorDrawn = !!style2.backgroundColor;
for (var i = 0; i < contentBlock.lines.length; i++) {
var line2 = contentBlock.lines[i];
var tokens = line2.tokens;
var tokenCount = tokens.length;
var lineHeight = line2.lineHeight;
var remainedWidth = line2.width;
var leftIndex = 0;
var lineXLeft = xLeft;
var lineXRight = xRight;
var rightIndex = tokenCount - 1;
var token2 = void 0;
while (leftIndex < tokenCount && (token2 = tokens[leftIndex], !token2.align || token2.align === "left")) {
this._placeToken(token2, style2, lineHeight, lineTop, lineXLeft, "left", bgColorDrawn);
remainedWidth -= token2.width;
lineXLeft += token2.width;
leftIndex++;
}
while (rightIndex >= 0 && (token2 = tokens[rightIndex], token2.align === "right")) {
this._placeToken(token2, style2, lineHeight, lineTop, lineXRight, "right", bgColorDrawn);
remainedWidth -= token2.width;
lineXRight -= token2.width;
rightIndex--;
}
lineXLeft += (contentWidth - (lineXLeft - xLeft) - (xRight - lineXRight) - remainedWidth) / 2;
while (leftIndex <= rightIndex) {
token2 = tokens[leftIndex];
this._placeToken(token2, style2, lineHeight, lineTop, lineXLeft + token2.width / 2, "center", bgColorDrawn);
lineXLeft += token2.width;
leftIndex++;
}
lineTop += lineHeight;
}
};
ZRText2.prototype._placeToken = function(token2, style2, lineHeight, lineTop, x2, textAlign, parentBgColorDrawn) {
var tokenStyle = style2.rich[token2.styleName] || {};
tokenStyle.text = token2.text;
var verticalAlign = token2.verticalAlign;
var y2 = lineTop + lineHeight / 2;
if (verticalAlign === "top") {
y2 = lineTop + token2.height / 2;
} else if (verticalAlign === "bottom") {
y2 = lineTop + lineHeight - token2.height / 2;
}
var needDrawBg = !token2.isLineHolder && needDrawBackground(tokenStyle);
needDrawBg && this._renderBackground(tokenStyle, style2, textAlign === "right" ? x2 - token2.width : textAlign === "center" ? x2 - token2.width / 2 : x2, y2 - token2.height / 2, token2.width, token2.height);
var bgColorDrawn = !!tokenStyle.backgroundColor;
var textPadding = token2.textPadding;
if (textPadding) {
x2 = getTextXForPadding(x2, textAlign, textPadding);
y2 -= token2.height / 2 - textPadding[0] - token2.innerHeight / 2;
}
var el2 = this._getOrCreateChild(TSpan);
var subElStyle = el2.createStyle();
el2.useStyle(subElStyle);
var defaultStyle = this._defaultStyle;
var useDefaultFill = false;
var defaultLineWidth = 0;
var textFill = getFill("fill" in tokenStyle ? tokenStyle.fill : "fill" in style2 ? style2.fill : (useDefaultFill = true, defaultStyle.fill));
var textStroke = getStroke("stroke" in tokenStyle ? tokenStyle.stroke : "stroke" in style2 ? style2.stroke : !bgColorDrawn && !parentBgColorDrawn && (!defaultStyle.autoStroke || useDefaultFill) ? (defaultLineWidth = DEFAULT_STROKE_LINE_WIDTH, defaultStyle.stroke) : null);
var hasShadow2 = tokenStyle.textShadowBlur > 0 || style2.textShadowBlur > 0;
subElStyle.text = token2.text;
subElStyle.x = x2;
subElStyle.y = y2;
if (hasShadow2) {
subElStyle.shadowBlur = tokenStyle.textShadowBlur || style2.textShadowBlur || 0;
subElStyle.shadowColor = tokenStyle.textShadowColor || style2.textShadowColor || "transparent";
subElStyle.shadowOffsetX = tokenStyle.textShadowOffsetX || style2.textShadowOffsetX || 0;
subElStyle.shadowOffsetY = tokenStyle.textShadowOffsetY || style2.textShadowOffsetY || 0;
}
subElStyle.textAlign = textAlign;
subElStyle.textBaseline = "middle";
subElStyle.font = token2.font || DEFAULT_FONT;
subElStyle.opacity = retrieve3(tokenStyle.opacity, style2.opacity, 1);
setSeparateFont(subElStyle, tokenStyle);
if (textStroke) {
subElStyle.lineWidth = retrieve3(tokenStyle.lineWidth, style2.lineWidth, defaultLineWidth);
subElStyle.lineDash = retrieve2(tokenStyle.lineDash, style2.lineDash);
subElStyle.lineDashOffset = style2.lineDashOffset || 0;
subElStyle.stroke = textStroke;
}
if (textFill) {
subElStyle.fill = textFill;
}
var textWidth = token2.contentWidth;
var textHeight = token2.contentHeight;
el2.setBoundingRect(new BoundingRect(adjustTextX(subElStyle.x, textWidth, subElStyle.textAlign), adjustTextY(subElStyle.y, textHeight, subElStyle.textBaseline), textWidth, textHeight));
};
ZRText2.prototype._renderBackground = function(style2, topStyle, x2, y2, width, height) {
var textBackgroundColor = style2.backgroundColor;
var textBorderWidth = style2.borderWidth;
var textBorderColor = style2.borderColor;
var isImageBg = textBackgroundColor && textBackgroundColor.image;
var isPlainOrGradientBg = textBackgroundColor && !isImageBg;
var textBorderRadius = style2.borderRadius;
var self2 = this;
var rectEl;
var imgEl;
if (isPlainOrGradientBg || style2.lineHeight || textBorderWidth && textBorderColor) {
rectEl = this._getOrCreateChild(Rect$2);
rectEl.useStyle(rectEl.createStyle());
rectEl.style.fill = null;
var rectShape = rectEl.shape;
rectShape.x = x2;
rectShape.y = y2;
rectShape.width = width;
rectShape.height = height;
rectShape.r = textBorderRadius;
rectEl.dirtyShape();
}
if (isPlainOrGradientBg) {
var rectStyle = rectEl.style;
rectStyle.fill = textBackgroundColor || null;
rectStyle.fillOpacity = retrieve2(style2.fillOpacity, 1);
} else if (isImageBg) {
imgEl = this._getOrCreateChild(ZRImage);
imgEl.onload = function() {
self2.dirtyStyle();
};
var imgStyle = imgEl.style;
imgStyle.image = textBackgroundColor.image;
imgStyle.x = x2;
imgStyle.y = y2;
imgStyle.width = width;
imgStyle.height = height;
}
if (textBorderWidth && textBorderColor) {
var rectStyle = rectEl.style;
rectStyle.lineWidth = textBorderWidth;
rectStyle.stroke = textBorderColor;
rectStyle.strokeOpacity = retrieve2(style2.strokeOpacity, 1);
rectStyle.lineDash = style2.borderDash;
rectStyle.lineDashOffset = style2.borderDashOffset || 0;
rectEl.strokeContainThreshold = 0;
if (rectEl.hasFill() && rectEl.hasStroke()) {
rectStyle.strokeFirst = true;
rectStyle.lineWidth *= 2;
}
}
var commonStyle = (rectEl || imgEl).style;
commonStyle.shadowBlur = style2.shadowBlur || 0;
commonStyle.shadowColor = style2.shadowColor || "transparent";
commonStyle.shadowOffsetX = style2.shadowOffsetX || 0;
commonStyle.shadowOffsetY = style2.shadowOffsetY || 0;
commonStyle.opacity = retrieve3(style2.opacity, topStyle.opacity, 1);
};
ZRText2.makeFont = function(style2) {
var font = "";
if (hasSeparateFont(style2)) {
font = [
style2.fontStyle,
style2.fontWeight,
parseFontSize(style2.fontSize),
style2.fontFamily || "sans-serif"
].join(" ");
}
return font && trim$1(font) || style2.textFont || style2.font;
};
return ZRText2;
}(Displayable);
var VALID_TEXT_ALIGN = { left: true, right: 1, center: 1 };
var VALID_TEXT_VERTICAL_ALIGN = { top: 1, bottom: 1, middle: 1 };
var FONT_PARTS = ["fontStyle", "fontWeight", "fontSize", "fontFamily"];
function parseFontSize(fontSize) {
if (typeof fontSize === "string" && (fontSize.indexOf("px") !== -1 || fontSize.indexOf("rem") !== -1 || fontSize.indexOf("em") !== -1)) {
return fontSize;
} else if (!isNaN(+fontSize)) {
return fontSize + "px";
} else {
return DEFAULT_FONT_SIZE + "px";
}
}
function setSeparateFont(targetStyle, sourceStyle) {
for (var i = 0; i < FONT_PARTS.length; i++) {
var fontProp = FONT_PARTS[i];
var val = sourceStyle[fontProp];
if (val != null) {
targetStyle[fontProp] = val;
}
}
}
function hasSeparateFont(style2) {
return style2.fontSize != null || style2.fontFamily || style2.fontWeight;
}
function normalizeTextStyle(style2) {
normalizeStyle(style2);
each$f(style2.rich, normalizeStyle);
return style2;
}
function normalizeStyle(style2) {
if (style2) {
style2.font = ZRText.makeFont(style2);
var textAlign = style2.align;
textAlign === "middle" && (textAlign = "center");
style2.align = textAlign == null || VALID_TEXT_ALIGN[textAlign] ? textAlign : "left";
var verticalAlign = style2.verticalAlign;
verticalAlign === "center" && (verticalAlign = "middle");
style2.verticalAlign = verticalAlign == null || VALID_TEXT_VERTICAL_ALIGN[verticalAlign] ? verticalAlign : "top";
var textPadding = style2.padding;
if (textPadding) {
style2.padding = normalizeCssArray$1(style2.padding);
}
}
}
function getStroke(stroke, lineWidth) {
return stroke == null || lineWidth <= 0 || stroke === "transparent" || stroke === "none" ? null : stroke.image || stroke.colorStops ? "#000" : stroke;
}
function getFill(fill) {
return fill == null || fill === "none" ? null : fill.image || fill.colorStops ? "#000" : fill;
}
function getTextXForPadding(x2, textAlign, textPadding) {
return textAlign === "right" ? x2 - textPadding[1] : textAlign === "center" ? x2 + textPadding[3] / 2 - textPadding[1] / 2 : x2 + textPadding[3];
}
function getStyleText(style2) {
var text = style2.text;
text != null && (text += "");
return text;
}
function needDrawBackground(style2) {
return !!(style2.backgroundColor || style2.lineHeight || style2.borderWidth && style2.borderColor);
}
var getECData = makeInner();
var setCommonECData = function(seriesIndex, dataType, dataIdx, el2) {
if (el2) {
var ecData = getECData(el2);
ecData.dataIndex = dataIdx;
ecData.dataType = dataType;
ecData.seriesIndex = seriesIndex;
ecData.ssrType = "chart";
if (el2.type === "group") {
el2.traverse(function(child) {
var childECData = getECData(child);
childECData.seriesIndex = seriesIndex;
childECData.dataIndex = dataIdx;
childECData.dataType = dataType;
childECData.ssrType = "chart";
});
}
}
};
var _highlightNextDigit = 1;
var _highlightKeyMap = {};
var getSavedStates = makeInner();
var getComponentStates = makeInner();
var HOVER_STATE_NORMAL = 0;
var HOVER_STATE_BLUR = 1;
var HOVER_STATE_EMPHASIS = 2;
var SPECIAL_STATES = ["emphasis", "blur", "select"];
var DISPLAY_STATES = ["normal", "emphasis", "blur", "select"];
var Z2_EMPHASIS_LIFT = 10;
var Z2_SELECT_LIFT = 9;
var HIGHLIGHT_ACTION_TYPE = "highlight";
var DOWNPLAY_ACTION_TYPE = "downplay";
var SELECT_ACTION_TYPE = "select";
var UNSELECT_ACTION_TYPE = "unselect";
var TOGGLE_SELECT_ACTION_TYPE = "toggleSelect";
function hasFillOrStroke(fillOrStroke) {
return fillOrStroke != null && fillOrStroke !== "none";
}
function doChangeHoverState(el2, stateName, hoverStateEnum) {
if (el2.onHoverStateChange && (el2.hoverState || 0) !== hoverStateEnum) {
el2.onHoverStateChange(stateName);
}
el2.hoverState = hoverStateEnum;
}
function singleEnterEmphasis(el2) {
doChangeHoverState(el2, "emphasis", HOVER_STATE_EMPHASIS);
}
function singleLeaveEmphasis(el2) {
if (el2.hoverState === HOVER_STATE_EMPHASIS) {
doChangeHoverState(el2, "normal", HOVER_STATE_NORMAL);
}
}
function singleEnterBlur(el2) {
doChangeHoverState(el2, "blur", HOVER_STATE_BLUR);
}
function singleLeaveBlur(el2) {
if (el2.hoverState === HOVER_STATE_BLUR) {
doChangeHoverState(el2, "normal", HOVER_STATE_NORMAL);
}
}
function singleEnterSelect(el2) {
el2.selected = true;
}
function singleLeaveSelect(el2) {
el2.selected = false;
}
function updateElementState(el2, updater, commonParam) {
updater(el2, commonParam);
}
function traverseUpdateState(el2, updater, commonParam) {
updateElementState(el2, updater, commonParam);
el2.isGroup && el2.traverse(function(child) {
updateElementState(child, updater, commonParam);
});
}
function setStatesFlag(el2, stateName) {
switch (stateName) {
case "emphasis":
el2.hoverState = HOVER_STATE_EMPHASIS;
break;
case "normal":
el2.hoverState = HOVER_STATE_NORMAL;
break;
case "blur":
el2.hoverState = HOVER_STATE_BLUR;
break;
case "select":
el2.selected = true;
}
}
function getFromStateStyle(el2, props, toStateName, defaultValue) {
var style2 = el2.style;
var fromState = {};
for (var i = 0; i < props.length; i++) {
var propName = props[i];
var val = style2[propName];
fromState[propName] = val == null ? defaultValue && defaultValue[propName] : val;
}
for (var i = 0; i < el2.animators.length; i++) {
var animator = el2.animators[i];
if (animator.__fromStateTransition && animator.__fromStateTransition.indexOf(toStateName) < 0 && animator.targetName === "style") {
animator.saveTo(fromState, props);
}
}
return fromState;
}
function createEmphasisDefaultState(el2, stateName, targetStates, state) {
var hasSelect = targetStates && indexOf(targetStates, "select") >= 0;
var cloned = false;
if (el2 instanceof Path) {
var store = getSavedStates(el2);
var fromFill = hasSelect ? store.selectFill || store.normalFill : store.normalFill;
var fromStroke = hasSelect ? store.selectStroke || store.normalStroke : store.normalStroke;
if (hasFillOrStroke(fromFill) || hasFillOrStroke(fromStroke)) {
state = state || {};
var emphasisStyle = state.style || {};
if (emphasisStyle.fill === "inherit") {
cloned = true;
state = extend({}, state);
emphasisStyle = extend({}, emphasisStyle);
emphasisStyle.fill = fromFill;
} else if (!hasFillOrStroke(emphasisStyle.fill) && hasFillOrStroke(fromFill)) {
cloned = true;
state = extend({}, state);
emphasisStyle = extend({}, emphasisStyle);
emphasisStyle.fill = liftColor(fromFill);
} else if (!hasFillOrStroke(emphasisStyle.stroke) && hasFillOrStroke(fromStroke)) {
if (!cloned) {
state = extend({}, state);
emphasisStyle = extend({}, emphasisStyle);
}
emphasisStyle.stroke = liftColor(fromStroke);
}
state.style = emphasisStyle;
}
}
if (state) {
if (state.z2 == null) {
if (!cloned) {
state = extend({}, state);
}
var z2EmphasisLift = el2.z2EmphasisLift;
state.z2 = el2.z2 + (z2EmphasisLift != null ? z2EmphasisLift : Z2_EMPHASIS_LIFT);
}
}
return state;
}
function createSelectDefaultState(el2, stateName, state) {
if (state) {
if (state.z2 == null) {
state = extend({}, state);
var z2SelectLift = el2.z2SelectLift;
state.z2 = el2.z2 + (z2SelectLift != null ? z2SelectLift : Z2_SELECT_LIFT);
}
}
return state;
}
function createBlurDefaultState(el2, stateName, state) {
var hasBlur = indexOf(el2.currentStates, stateName) >= 0;
var currentOpacity = el2.style.opacity;
var fromState = !hasBlur ? getFromStateStyle(el2, ["opacity"], stateName, {
opacity: 1
}) : null;
state = state || {};
var blurStyle = state.style || {};
if (blurStyle.opacity == null) {
state = extend({}, state);
blurStyle = extend({
// Already being applied 'emphasis'. DON'T mul opacity multiple times.
opacity: hasBlur ? currentOpacity : fromState.opacity * 0.1
}, blurStyle);
state.style = blurStyle;
}
return state;
}
function elementStateProxy(stateName, targetStates) {
var state = this.states[stateName];
if (this.style) {
if (stateName === "emphasis") {
return createEmphasisDefaultState(this, stateName, targetStates, state);
} else if (stateName === "blur") {
return createBlurDefaultState(this, stateName, state);
} else if (stateName === "select") {
return createSelectDefaultState(this, stateName, state);
}
}
return state;
}
function setDefaultStateProxy(el2) {
el2.stateProxy = elementStateProxy;
var textContent = el2.getTextContent();
var textGuide = el2.getTextGuideLine();
if (textContent) {
textContent.stateProxy = elementStateProxy;
}
if (textGuide) {
textGuide.stateProxy = elementStateProxy;
}
}
function enterEmphasisWhenMouseOver(el2, e2) {
!shouldSilent(el2, e2) && !el2.__highByOuter && traverseUpdateState(el2, singleEnterEmphasis);
}
function leaveEmphasisWhenMouseOut(el2, e2) {
!shouldSilent(el2, e2) && !el2.__highByOuter && traverseUpdateState(el2, singleLeaveEmphasis);
}
function enterEmphasis(el2, highlightDigit) {
el2.__highByOuter |= 1 << (highlightDigit || 0);
traverseUpdateState(el2, singleEnterEmphasis);
}
function leaveEmphasis(el2, highlightDigit) {
!(el2.__highByOuter &= ~(1 << (highlightDigit || 0))) && traverseUpdateState(el2, singleLeaveEmphasis);
}
function enterBlur(el2) {
traverseUpdateState(el2, singleEnterBlur);
}
function leaveBlur(el2) {
traverseUpdateState(el2, singleLeaveBlur);
}
function enterSelect(el2) {
traverseUpdateState(el2, singleEnterSelect);
}
function leaveSelect(el2) {
traverseUpdateState(el2, singleLeaveSelect);
}
function shouldSilent(el2, e2) {
return el2.__highDownSilentOnTouch && e2.zrByTouch;
}
function allLeaveBlur(api) {
var model = api.getModel();
var leaveBlurredSeries = [];
var allComponentViews = [];
model.eachComponent(function(componentType, componentModel) {
var componentStates = getComponentStates(componentModel);
var isSeries2 = componentType === "series";
var view = isSeries2 ? api.getViewOfSeriesModel(componentModel) : api.getViewOfComponentModel(componentModel);
!isSeries2 && allComponentViews.push(view);
if (componentStates.isBlured) {
view.group.traverse(function(child) {
singleLeaveBlur(child);
});
isSeries2 && leaveBlurredSeries.push(componentModel);
}
componentStates.isBlured = false;
});
each$f(allComponentViews, function(view) {
if (view && view.toggleBlurSeries) {
view.toggleBlurSeries(leaveBlurredSeries, false, model);
}
});
}
function blurSeries(targetSeriesIndex, focus, blurScope, api) {
var ecModel = api.getModel();
blurScope = blurScope || "coordinateSystem";
function leaveBlurOfIndices(data, dataIndices) {
for (var i = 0; i < dataIndices.length; i++) {
var itemEl = data.getItemGraphicEl(dataIndices[i]);
itemEl && leaveBlur(itemEl);
}
}
if (targetSeriesIndex == null) {
return;
}
if (!focus || focus === "none") {
return;
}
var targetSeriesModel = ecModel.getSeriesByIndex(targetSeriesIndex);
var targetCoordSys = targetSeriesModel.coordinateSystem;
if (targetCoordSys && targetCoordSys.master) {
targetCoordSys = targetCoordSys.master;
}
var blurredSeries = [];
ecModel.eachSeries(function(seriesModel) {
var sameSeries = targetSeriesModel === seriesModel;
var coordSys = seriesModel.coordinateSystem;
if (coordSys && coordSys.master) {
coordSys = coordSys.master;
}
var sameCoordSys = coordSys && targetCoordSys ? coordSys === targetCoordSys : sameSeries;
if (!// Not blur other series if blurScope series
(blurScope === "series" && !sameSeries || blurScope === "coordinateSystem" && !sameCoordSys || focus === "series" && sameSeries)) {
var view = api.getViewOfSeriesModel(seriesModel);
view.group.traverse(function(child) {
if (child.__highByOuter && sameSeries && focus === "self") {
return;
}
singleEnterBlur(child);
});
if (isArrayLike(focus)) {
leaveBlurOfIndices(seriesModel.getData(), focus);
} else if (isObject$3(focus)) {
var dataTypes = keys(focus);
for (var d2 = 0; d2 < dataTypes.length; d2++) {
leaveBlurOfIndices(seriesModel.getData(dataTypes[d2]), focus[dataTypes[d2]]);
}
}
blurredSeries.push(seriesModel);
getComponentStates(seriesModel).isBlured = true;
}
});
ecModel.eachComponent(function(componentType, componentModel) {
if (componentType === "series") {
return;
}
var view = api.getViewOfComponentModel(componentModel);
if (view && view.toggleBlurSeries) {
view.toggleBlurSeries(blurredSeries, true, ecModel);
}
});
}
function blurComponent(componentMainType, componentIndex, api) {
if (componentMainType == null || componentIndex == null) {
return;
}
var componentModel = api.getModel().getComponent(componentMainType, componentIndex);
if (!componentModel) {
return;
}
getComponentStates(componentModel).isBlured = true;
var view = api.getViewOfComponentModel(componentModel);
if (!view || !view.focusBlurEnabled) {
return;
}
view.group.traverse(function(child) {
singleEnterBlur(child);
});
}
function blurSeriesFromHighlightPayload(seriesModel, payload, api) {
var seriesIndex = seriesModel.seriesIndex;
var data = seriesModel.getData(payload.dataType);
if (!data) {
return;
}
var dataIndex = queryDataIndex(data, payload);
dataIndex = (isArray$1(dataIndex) ? dataIndex[0] : dataIndex) || 0;
var el2 = data.getItemGraphicEl(dataIndex);
if (!el2) {
var count2 = data.count();
var current = 0;
while (!el2 && current < count2) {
el2 = data.getItemGraphicEl(current++);
}
}
if (el2) {
var ecData = getECData(el2);
blurSeries(seriesIndex, ecData.focus, ecData.blurScope, api);
} else {
var focus_1 = seriesModel.get(["emphasis", "focus"]);
var blurScope = seriesModel.get(["emphasis", "blurScope"]);
if (focus_1 != null) {
blurSeries(seriesIndex, focus_1, blurScope, api);
}
}
}
function findComponentHighDownDispatchers(componentMainType, componentIndex, name, api) {
var ret = {
focusSelf: false,
dispatchers: null
};
if (componentMainType == null || componentMainType === "series" || componentIndex == null || name == null) {
return ret;
}
var componentModel = api.getModel().getComponent(componentMainType, componentIndex);
if (!componentModel) {
return ret;
}
var view = api.getViewOfComponentModel(componentModel);
if (!view || !view.findHighDownDispatchers) {
return ret;
}
var dispatchers = view.findHighDownDispatchers(name);
var focusSelf;
for (var i = 0; i < dispatchers.length; i++) {
if (getECData(dispatchers[i]).focus === "self") {
focusSelf = true;
break;
}
}
return {
focusSelf,
dispatchers
};
}
function handleGlobalMouseOverForHighDown(dispatcher, e2, api) {
var ecData = getECData(dispatcher);
var _a2 = findComponentHighDownDispatchers(ecData.componentMainType, ecData.componentIndex, ecData.componentHighDownName, api), dispatchers = _a2.dispatchers, focusSelf = _a2.focusSelf;
if (dispatchers) {
if (focusSelf) {
blurComponent(ecData.componentMainType, ecData.componentIndex, api);
}
each$f(dispatchers, function(dispatcher2) {
return enterEmphasisWhenMouseOver(dispatcher2, e2);
});
} else {
blurSeries(ecData.seriesIndex, ecData.focus, ecData.blurScope, api);
if (ecData.focus === "self") {
blurComponent(ecData.componentMainType, ecData.componentIndex, api);
}
enterEmphasisWhenMouseOver(dispatcher, e2);
}
}
function handleGlobalMouseOutForHighDown(dispatcher, e2, api) {
allLeaveBlur(api);
var ecData = getECData(dispatcher);
var dispatchers = findComponentHighDownDispatchers(ecData.componentMainType, ecData.componentIndex, ecData.componentHighDownName, api).dispatchers;
if (dispatchers) {
each$f(dispatchers, function(dispatcher2) {
return leaveEmphasisWhenMouseOut(dispatcher2, e2);
});
} else {
leaveEmphasisWhenMouseOut(dispatcher, e2);
}
}
function toggleSelectionFromPayload(seriesModel, payload, api) {
if (!isSelectChangePayload(payload)) {
return;
}
var dataType = payload.dataType;
var data = seriesModel.getData(dataType);
var dataIndex = queryDataIndex(data, payload);
if (!isArray$1(dataIndex)) {
dataIndex = [dataIndex];
}
seriesModel[payload.type === TOGGLE_SELECT_ACTION_TYPE ? "toggleSelect" : payload.type === SELECT_ACTION_TYPE ? "select" : "unselect"](dataIndex, dataType);
}
function updateSeriesElementSelection(seriesModel) {
var allData = seriesModel.getAllData();
each$f(allData, function(_a2) {
var data = _a2.data, type4 = _a2.type;
data.eachItemGraphicEl(function(el2, idx) {
seriesModel.isSelected(idx, type4) ? enterSelect(el2) : leaveSelect(el2);
});
});
}
function getAllSelectedIndices(ecModel) {
var ret = [];
ecModel.eachSeries(function(seriesModel) {
var allData = seriesModel.getAllData();
each$f(allData, function(_a2) {
_a2.data;
var type4 = _a2.type;
var dataIndices = seriesModel.getSelectedDataIndices();
if (dataIndices.length > 0) {
var item = {
dataIndex: dataIndices,
seriesIndex: seriesModel.seriesIndex
};
if (type4 != null) {
item.dataType = type4;
}
ret.push(item);
}
});
});
return ret;
}
function enableHoverEmphasis(el2, focus, blurScope) {
setAsHighDownDispatcher(el2, true);
traverseUpdateState(el2, setDefaultStateProxy);
enableHoverFocus(el2, focus, blurScope);
}
function disableHoverEmphasis(el2) {
setAsHighDownDispatcher(el2, false);
}
function toggleHoverEmphasis(el2, focus, blurScope, isDisabled) {
isDisabled ? disableHoverEmphasis(el2) : enableHoverEmphasis(el2, focus, blurScope);
}
function enableHoverFocus(el2, focus, blurScope) {
var ecData = getECData(el2);
if (focus != null) {
ecData.focus = focus;
ecData.blurScope = blurScope;
} else if (ecData.focus) {
ecData.focus = null;
}
}
var OTHER_STATES = ["emphasis", "blur", "select"];
var defaultStyleGetterMap = {
itemStyle: "getItemStyle",
lineStyle: "getLineStyle",
areaStyle: "getAreaStyle"
};
function setStatesStylesFromModel(el2, itemModel, styleType, getter) {
styleType = styleType || "itemStyle";
for (var i = 0; i < OTHER_STATES.length; i++) {
var stateName = OTHER_STATES[i];
var model = itemModel.getModel([stateName, styleType]);
var state = el2.ensureState(stateName);
state.style = getter ? getter(model) : model[defaultStyleGetterMap[styleType]]();
}
}
function setAsHighDownDispatcher(el2, asDispatcher) {
var disable = asDispatcher === false;
var extendedEl = el2;
if (el2.highDownSilentOnTouch) {
extendedEl.__highDownSilentOnTouch = el2.highDownSilentOnTouch;
}
if (!disable || extendedEl.__highDownDispatcher) {
extendedEl.__highByOuter = extendedEl.__highByOuter || 0;
extendedEl.__highDownDispatcher = !disable;
}
}
function isHighDownDispatcher(el2) {
return !!(el2 && el2.__highDownDispatcher);
}
function enableComponentHighDownFeatures(el2, componentModel, componentHighDownName) {
var ecData = getECData(el2);
ecData.componentMainType = componentModel.mainType;
ecData.componentIndex = componentModel.componentIndex;
ecData.componentHighDownName = componentHighDownName;
}
function getHighlightDigit(highlightKey) {
var highlightDigit = _highlightKeyMap[highlightKey];
if (highlightDigit == null && _highlightNextDigit <= 32) {
highlightDigit = _highlightKeyMap[highlightKey] = _highlightNextDigit++;
}
return highlightDigit;
}
function isSelectChangePayload(payload) {
var payloadType = payload.type;
return payloadType === SELECT_ACTION_TYPE || payloadType === UNSELECT_ACTION_TYPE || payloadType === TOGGLE_SELECT_ACTION_TYPE;
}
function isHighDownPayload(payload) {
var payloadType = payload.type;
return payloadType === HIGHLIGHT_ACTION_TYPE || payloadType === DOWNPLAY_ACTION_TYPE;
}
function savePathStates(el2) {
var store = getSavedStates(el2);
store.normalFill = el2.style.fill;
store.normalStroke = el2.style.stroke;
var selectState = el2.states.select || {};
store.selectFill = selectState.style && selectState.style.fill || null;
store.selectStroke = selectState.style && selectState.style.stroke || null;
}
var CMD$2 = PathProxy.CMD;
var points$2 = [[], [], []];
var mathSqrt$2 = Math.sqrt;
var mathAtan2 = Math.atan2;
function transformPath(path, m2) {
if (!m2) {
return;
}
var data = path.data;
var len2 = path.len();
var cmd;
var nPoint;
var i;
var j;
var k2;
var p2;
var M2 = CMD$2.M;
var C2 = CMD$2.C;
var L2 = CMD$2.L;
var R2 = CMD$2.R;
var A2 = CMD$2.A;
var Q2 = CMD$2.Q;
for (i = 0, j = 0; i < len2; ) {
cmd = data[i++];
j = i;
nPoint = 0;
switch (cmd) {
case M2:
nPoint = 1;
break;
case L2:
nPoint = 1;
break;
case C2:
nPoint = 3;
break;
case Q2:
nPoint = 2;
break;
case A2:
var x2 = m2[4];
var y2 = m2[5];
var sx = mathSqrt$2(m2[0] * m2[0] + m2[1] * m2[1]);
var sy = mathSqrt$2(m2[2] * m2[2] + m2[3] * m2[3]);
var angle = mathAtan2(-m2[1] / sy, m2[0] / sx);
data[i] *= sx;
data[i++] += x2;
data[i] *= sy;
data[i++] += y2;
data[i++] *= sx;
data[i++] *= sy;
data[i++] += angle;
data[i++] += angle;
i += 2;
j = i;
break;
case R2:
p2[0] = data[i++];
p2[1] = data[i++];
applyTransform$1(p2, p2, m2);
data[j++] = p2[0];
data[j++] = p2[1];
p2[0] += data[i++];
p2[1] += data[i++];
applyTransform$1(p2, p2, m2);
data[j++] = p2[0];
data[j++] = p2[1];
}
for (k2 = 0; k2 < nPoint; k2++) {
var p_1 = points$2[k2];
p_1[0] = data[i++];
p_1[1] = data[i++];
applyTransform$1(p_1, p_1, m2);
data[j++] = p_1[0];
data[j++] = p_1[1];
}
}
path.increaseVersion();
}
var mathSqrt$1 = Math.sqrt;
var mathSin$2 = Math.sin;
var mathCos$2 = Math.cos;
var PI$7 = Math.PI;
function vMag(v4) {
return Math.sqrt(v4[0] * v4[0] + v4[1] * v4[1]);
}
function vRatio(u2, v4) {
return (u2[0] * v4[0] + u2[1] * v4[1]) / (vMag(u2) * vMag(v4));
}
function vAngle(u2, v4) {
return (u2[0] * v4[1] < u2[1] * v4[0] ? -1 : 1) * Math.acos(vRatio(u2, v4));
}
function processArc(x1, y1, x2, y2, fa2, fs, rx, ry, psiDeg, cmd, path) {
var psi = psiDeg * (PI$7 / 180);
var xp = mathCos$2(psi) * (x1 - x2) / 2 + mathSin$2(psi) * (y1 - y2) / 2;
var yp = -1 * mathSin$2(psi) * (x1 - x2) / 2 + mathCos$2(psi) * (y1 - y2) / 2;
var lambda = xp * xp / (rx * rx) + yp * yp / (ry * ry);
if (lambda > 1) {
rx *= mathSqrt$1(lambda);
ry *= mathSqrt$1(lambda);
}
var f2 = (fa2 === fs ? -1 : 1) * mathSqrt$1((rx * rx * (ry * ry) - rx * rx * (yp * yp) - ry * ry * (xp * xp)) / (rx * rx * (yp * yp) + ry * ry * (xp * xp))) || 0;
var cxp = f2 * rx * yp / ry;
var cyp = f2 * -ry * xp / rx;
var cx = (x1 + x2) / 2 + mathCos$2(psi) * cxp - mathSin$2(psi) * cyp;
var cy = (y1 + y2) / 2 + mathSin$2(psi) * cxp + mathCos$2(psi) * cyp;
var theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]);
var u2 = [(xp - cxp) / rx, (yp - cyp) / ry];
var v4 = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];
var dTheta = vAngle(u2, v4);
if (vRatio(u2, v4) <= -1) {
dTheta = PI$7;
}
if (vRatio(u2, v4) >= 1) {
dTheta = 0;
}
if (dTheta < 0) {
var n2 = Math.round(dTheta / PI$7 * 1e6) / 1e6;
dTheta = PI$7 * 2 + n2 % 2 * PI$7;
}
path.addData(cmd, cx, cy, rx, ry, theta, dTheta, psi, fs);
}
var commandReg = /([mlvhzcqtsa])([^mlvhzcqtsa]*)/ig;
var numberReg$1 = /-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g;
function createPathProxyFromString(data) {
var path = new PathProxy();
if (!data) {
return path;
}
var cpx = 0;
var cpy = 0;
var subpathX = cpx;
var subpathY = cpy;
var prevCmd;
var CMD2 = PathProxy.CMD;
var cmdList = data.match(commandReg);
if (!cmdList) {
return path;
}
for (var l2 = 0; l2 < cmdList.length; l2++) {
var cmdText = cmdList[l2];
var cmdStr = cmdText.charAt(0);
var cmd = void 0;
var p2 = cmdText.match(numberReg$1) || [];
var pLen = p2.length;
for (var i = 0; i < pLen; i++) {
p2[i] = parseFloat(p2[i]);
}
var off = 0;
while (off < pLen) {
var ctlPtx = void 0;
var ctlPty = void 0;
var rx = void 0;
var ry = void 0;
var psi = void 0;
var fa2 = void 0;
var fs = void 0;
var x1 = cpx;
var y1 = cpy;
var len2 = void 0;
var pathData = void 0;
switch (cmdStr) {
case "l":
cpx += p2[off++];
cpy += p2[off++];
cmd = CMD2.L;
path.addData(cmd, cpx, cpy);
break;
case "L":
cpx = p2[off++];
cpy = p2[off++];
cmd = CMD2.L;
path.addData(cmd, cpx, cpy);
break;
case "m":
cpx += p2[off++];
cpy += p2[off++];
cmd = CMD2.M;
path.addData(cmd, cpx, cpy);
subpathX = cpx;
subpathY = cpy;
cmdStr = "l";
break;
case "M":
cpx = p2[off++];
cpy = p2[off++];
cmd = CMD2.M;
path.addData(cmd, cpx, cpy);
subpathX = cpx;
subpathY = cpy;
cmdStr = "L";
break;
case "h":
cpx += p2[off++];
cmd = CMD2.L;
path.addData(cmd, cpx, cpy);
break;
case "H":
cpx = p2[off++];
cmd = CMD2.L;
path.addData(cmd, cpx, cpy);
break;
case "v":
cpy += p2[off++];
cmd = CMD2.L;
path.addData(cmd, cpx, cpy);
break;
case "V":
cpy = p2[off++];
cmd = CMD2.L;
path.addData(cmd, cpx, cpy);
break;
case "C":
cmd = CMD2.C;
path.addData(cmd, p2[off++], p2[off++], p2[off++], p2[off++], p2[off++], p2[off++]);
cpx = p2[off - 2];
cpy = p2[off - 1];
break;
case "c":
cmd = CMD2.C;
path.addData(cmd, p2[off++] + cpx, p2[off++] + cpy, p2[off++] + cpx, p2[off++] + cpy, p2[off++] + cpx, p2[off++] + cpy);
cpx += p2[off - 2];
cpy += p2[off - 1];
break;
case "S":
ctlPtx = cpx;
ctlPty = cpy;
len2 = path.len();
pathData = path.data;
if (prevCmd === CMD2.C) {
ctlPtx += cpx - pathData[len2 - 4];
ctlPty += cpy - pathData[len2 - 3];
}
cmd = CMD2.C;
x1 = p2[off++];
y1 = p2[off++];
cpx = p2[off++];
cpy = p2[off++];
path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);
break;
case "s":
ctlPtx = cpx;
ctlPty = cpy;
len2 = path.len();
pathData = path.data;
if (prevCmd === CMD2.C) {
ctlPtx += cpx - pathData[len2 - 4];
ctlPty += cpy - pathData[len2 - 3];
}
cmd = CMD2.C;
x1 = cpx + p2[off++];
y1 = cpy + p2[off++];
cpx += p2[off++];
cpy += p2[off++];
path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);
break;
case "Q":
x1 = p2[off++];
y1 = p2[off++];
cpx = p2[off++];
cpy = p2[off++];
cmd = CMD2.Q;
path.addData(cmd, x1, y1, cpx, cpy);
break;
case "q":
x1 = p2[off++] + cpx;
y1 = p2[off++] + cpy;
cpx += p2[off++];
cpy += p2[off++];
cmd = CMD2.Q;
path.addData(cmd, x1, y1, cpx, cpy);
break;
case "T":
ctlPtx = cpx;
ctlPty = cpy;
len2 = path.len();
pathData = path.data;
if (prevCmd === CMD2.Q) {
ctlPtx += cpx - pathData[len2 - 4];
ctlPty += cpy - pathData[len2 - 3];
}
cpx = p2[off++];
cpy = p2[off++];
cmd = CMD2.Q;
path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);
break;
case "t":
ctlPtx = cpx;
ctlPty = cpy;
len2 = path.len();
pathData = path.data;
if (prevCmd === CMD2.Q) {
ctlPtx += cpx - pathData[len2 - 4];
ctlPty += cpy - pathData[len2 - 3];
}
cpx += p2[off++];
cpy += p2[off++];
cmd = CMD2.Q;
path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);
break;
case "A":
rx = p2[off++];
ry = p2[off++];
psi = p2[off++];
fa2 = p2[off++];
fs = p2[off++];
x1 = cpx, y1 = cpy;
cpx = p2[off++];
cpy = p2[off++];
cmd = CMD2.A;
processArc(x1, y1, cpx, cpy, fa2, fs, rx, ry, psi, cmd, path);
break;
case "a":
rx = p2[off++];
ry = p2[off++];
psi = p2[off++];
fa2 = p2[off++];
fs = p2[off++];
x1 = cpx, y1 = cpy;
cpx += p2[off++];
cpy += p2[off++];
cmd = CMD2.A;
processArc(x1, y1, cpx, cpy, fa2, fs, rx, ry, psi, cmd, path);
break;
}
}
if (cmdStr === "z" || cmdStr === "Z") {
cmd = CMD2.Z;
path.addData(cmd);
cpx = subpathX;
cpy = subpathY;
}
prevCmd = cmd;
}
path.toStatic();
return path;
}
var SVGPath = function(_super) {
__extends(SVGPath2, _super);
function SVGPath2() {
return _super !== null && _super.apply(this, arguments) || this;
}
SVGPath2.prototype.applyTransform = function(m2) {
};
return SVGPath2;
}(Path);
function isPathProxy(path) {
return path.setData != null;
}
function createPathOptions(str, opts) {
var pathProxy = createPathProxyFromString(str);
var innerOpts = extend({}, opts);
innerOpts.buildPath = function(path) {
if (isPathProxy(path)) {
path.setData(pathProxy.data);
var ctx = path.getContext();
if (ctx) {
path.rebuildPath(ctx, 1);
}
} else {
var ctx = path;
pathProxy.rebuildPath(ctx, 1);
}
};
innerOpts.applyTransform = function(m2) {
transformPath(pathProxy, m2);
this.dirtyShape();
};
return innerOpts;
}
function createFromString(str, opts) {
return new SVGPath(createPathOptions(str, opts));
}
function extendFromString(str, defaultOpts) {
var innerOpts = createPathOptions(str, defaultOpts);
var Sub = function(_super) {
__extends(Sub2, _super);
function Sub2(opts) {
var _this = _super.call(this, opts) || this;
_this.applyTransform = innerOpts.applyTransform;
_this.buildPath = innerOpts.buildPath;
return _this;
}
return Sub2;
}(SVGPath);
return Sub;
}
function mergePath$1(pathEls, opts) {
var pathList = [];
var len2 = pathEls.length;
for (var i = 0; i < len2; i++) {
var pathEl = pathEls[i];
pathList.push(pathEl.getUpdatedPathProxy(true));
}
var pathBundle = new Path(opts);
pathBundle.createPathProxy();
pathBundle.buildPath = function(path) {
if (isPathProxy(path)) {
path.appendPath(pathList);
var ctx = path.getContext();
if (ctx) {
path.rebuildPath(ctx, 1);
}
}
};
return pathBundle;
}
function clonePath(sourcePath, opts) {
opts = opts || {};
var path = new Path();
if (sourcePath.shape) {
path.setShape(sourcePath.shape);
}
path.setStyle(sourcePath.style);
if (opts.bakeTransform) {
transformPath(path.path, sourcePath.getComputedTransform());
} else {
if (opts.toLocal) {
path.setLocalTransform(sourcePath.getComputedTransform());
} else {
path.copyTransform(sourcePath);
}
}
path.buildPath = sourcePath.buildPath;
path.applyTransform = path.applyTransform;
path.z = sourcePath.z;
path.z2 = sourcePath.z2;
path.zlevel = sourcePath.zlevel;
return path;
}
var CircleShape = /* @__PURE__ */ function() {
function CircleShape2() {
this.cx = 0;
this.cy = 0;
this.r = 0;
}
return CircleShape2;
}();
var Circle = function(_super) {
__extends(Circle2, _super);
function Circle2(opts) {
return _super.call(this, opts) || this;
}
Circle2.prototype.getDefaultShape = function() {
return new CircleShape();
};
Circle2.prototype.buildPath = function(ctx, shape) {
ctx.moveTo(shape.cx + shape.r, shape.cy);
ctx.arc(shape.cx, shape.cy, shape.r, 0, Math.PI * 2);
};
return Circle2;
}(Path);
Circle.prototype.type = "circle";
var EllipseShape = /* @__PURE__ */ function() {
function EllipseShape2() {
this.cx = 0;
this.cy = 0;
this.rx = 0;
this.ry = 0;
}
return EllipseShape2;
}();
var Ellipse = function(_super) {
__extends(Ellipse2, _super);
function Ellipse2(opts) {
return _super.call(this, opts) || this;
}
Ellipse2.prototype.getDefaultShape = function() {
return new EllipseShape();
};
Ellipse2.prototype.buildPath = function(ctx, shape) {
var k2 = 0.5522848;
var x2 = shape.cx;
var y2 = shape.cy;
var a = shape.rx;
var b2 = shape.ry;
var ox = a * k2;
var oy = b2 * k2;
ctx.moveTo(x2 - a, y2);
ctx.bezierCurveTo(x2 - a, y2 - oy, x2 - ox, y2 - b2, x2, y2 - b2);
ctx.bezierCurveTo(x2 + ox, y2 - b2, x2 + a, y2 - oy, x2 + a, y2);
ctx.bezierCurveTo(x2 + a, y2 + oy, x2 + ox, y2 + b2, x2, y2 + b2);
ctx.bezierCurveTo(x2 - ox, y2 + b2, x2 - a, y2 + oy, x2 - a, y2);
ctx.closePath();
};
return Ellipse2;
}(Path);
Ellipse.prototype.type = "ellipse";
var PI$6 = Math.PI;
var PI2$3 = PI$6 * 2;
var mathSin$1 = Math.sin;
var mathCos$1 = Math.cos;
var mathACos = Math.acos;
var mathATan2 = Math.atan2;
var mathAbs$1 = Math.abs;
var mathSqrt = Math.sqrt;
var mathMax$7 = Math.max;
var mathMin$7 = Math.min;
var e$1 = 1e-4;
function intersect(x0, y0, x1, y1, x2, y2, x3, y3) {
var dx10 = x1 - x0;
var dy10 = y1 - y0;
var dx32 = x3 - x2;
var dy32 = y3 - y2;
var t2 = dy32 * dx10 - dx32 * dy10;
if (t2 * t2 < e$1) {
return;
}
t2 = (dx32 * (y0 - y2) - dy32 * (x0 - x2)) / t2;
return [x0 + t2 * dx10, y0 + t2 * dy10];
}
function computeCornerTangents(x0, y0, x1, y1, radius2, cr, clockwise) {
var x01 = x0 - x1;
var y01 = y0 - y1;
var lo = (clockwise ? cr : -cr) / mathSqrt(x01 * x01 + y01 * y01);
var ox = lo * y01;
var oy = -lo * x01;
var x11 = x0 + ox;
var y11 = y0 + oy;
var x10 = x1 + ox;
var y10 = y1 + oy;
var x00 = (x11 + x10) / 2;
var y00 = (y11 + y10) / 2;
var dx = x10 - x11;
var dy = y10 - y11;
var d2 = dx * dx + dy * dy;
var r2 = radius2 - cr;
var s = x11 * y10 - x10 * y11;
var d3 = (dy < 0 ? -1 : 1) * mathSqrt(mathMax$7(0, r2 * r2 * d2 - s * s));
var cx0 = (s * dy - dx * d3) / d2;
var cy0 = (-s * dx - dy * d3) / d2;
var cx1 = (s * dy + dx * d3) / d2;
var cy1 = (-s * dx + dy * d3) / d2;
var dx0 = cx0 - x00;
var dy0 = cy0 - y00;
var dx1 = cx1 - x00;
var dy1 = cy1 - y00;
if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) {
cx0 = cx1;
cy0 = cy1;
}
return {
cx: cx0,
cy: cy0,
x0: -ox,
y0: -oy,
x1: cx0 * (radius2 / r2 - 1),
y1: cy0 * (radius2 / r2 - 1)
};
}
function normalizeCornerRadius(cr) {
var arr;
if (isArray$1(cr)) {
var len2 = cr.length;
if (!len2) {
return cr;
}
if (len2 === 1) {
arr = [cr[0], cr[0], 0, 0];
} else if (len2 === 2) {
arr = [cr[0], cr[0], cr[1], cr[1]];
} else if (len2 === 3) {
arr = cr.concat(cr[2]);
} else {
arr = cr;
}
} else {
arr = [cr, cr, cr, cr];
}
return arr;
}
function buildPath$1(ctx, shape) {
var _a2;
var radius2 = mathMax$7(shape.r, 0);
var innerRadius = mathMax$7(shape.r0 || 0, 0);
var hasRadius = radius2 > 0;
var hasInnerRadius = innerRadius > 0;
if (!hasRadius && !hasInnerRadius) {
return;
}
if (!hasRadius) {
radius2 = innerRadius;
innerRadius = 0;
}
if (innerRadius > radius2) {
var tmp = radius2;
radius2 = innerRadius;
innerRadius = tmp;
}
var startAngle = shape.startAngle, endAngle = shape.endAngle;
if (isNaN(startAngle) || isNaN(endAngle)) {
return;
}
var cx = shape.cx, cy = shape.cy;
var clockwise = !!shape.clockwise;
var arc = mathAbs$1(endAngle - startAngle);
var mod = arc > PI2$3 && arc % PI2$3;
mod > e$1 && (arc = mod);
if (!(radius2 > e$1)) {
ctx.moveTo(cx, cy);
} else if (arc > PI2$3 - e$1) {
ctx.moveTo(cx + radius2 * mathCos$1(startAngle), cy + radius2 * mathSin$1(startAngle));
ctx.arc(cx, cy, radius2, startAngle, endAngle, !clockwise);
if (innerRadius > e$1) {
ctx.moveTo(cx + innerRadius * mathCos$1(endAngle), cy + innerRadius * mathSin$1(endAngle));
ctx.arc(cx, cy, innerRadius, endAngle, startAngle, clockwise);
}
} else {
var icrStart = void 0;
var icrEnd = void 0;
var ocrStart = void 0;
var ocrEnd = void 0;
var ocrs = void 0;
var ocre = void 0;
var icrs = void 0;
var icre = void 0;
var ocrMax = void 0;
var icrMax = void 0;
var limitedOcrMax = void 0;
var limitedIcrMax = void 0;
var xre = void 0;
var yre = void 0;
var xirs = void 0;
var yirs = void 0;
var xrs = radius2 * mathCos$1(startAngle);
var yrs = radius2 * mathSin$1(startAngle);
var xire = innerRadius * mathCos$1(endAngle);
var yire = innerRadius * mathSin$1(endAngle);
var hasArc = arc > e$1;
if (hasArc) {
var cornerRadius = shape.cornerRadius;
if (cornerRadius) {
_a2 = normalizeCornerRadius(cornerRadius), icrStart = _a2[0], icrEnd = _a2[1], ocrStart = _a2[2], ocrEnd = _a2[3];
}
var halfRd = mathAbs$1(radius2 - innerRadius) / 2;
ocrs = mathMin$7(halfRd, ocrStart);
ocre = mathMin$7(halfRd, ocrEnd);
icrs = mathMin$7(halfRd, icrStart);
icre = mathMin$7(halfRd, icrEnd);
limitedOcrMax = ocrMax = mathMax$7(ocrs, ocre);
limitedIcrMax = icrMax = mathMax$7(icrs, icre);
if (ocrMax > e$1 || icrMax > e$1) {
xre = radius2 * mathCos$1(endAngle);
yre = radius2 * mathSin$1(endAngle);
xirs = innerRadius * mathCos$1(startAngle);
yirs = innerRadius * mathSin$1(startAngle);
if (arc < PI$6) {
var it_1 = intersect(xrs, yrs, xirs, yirs, xre, yre, xire, yire);
if (it_1) {
var x0 = xrs - it_1[0];
var y0 = yrs - it_1[1];
var x1 = xre - it_1[0];
var y1 = yre - it_1[1];
var a = 1 / mathSin$1(mathACos((x0 * x1 + y0 * y1) / (mathSqrt(x0 * x0 + y0 * y0) * mathSqrt(x1 * x1 + y1 * y1))) / 2);
var b2 = mathSqrt(it_1[0] * it_1[0] + it_1[1] * it_1[1]);
limitedOcrMax = mathMin$7(ocrMax, (radius2 - b2) / (a + 1));
limitedIcrMax = mathMin$7(icrMax, (innerRadius - b2) / (a - 1));
}
}
}
}
if (!hasArc) {
ctx.moveTo(cx + xrs, cy + yrs);
} else if (limitedOcrMax > e$1) {
var crStart = mathMin$7(ocrStart, limitedOcrMax);
var crEnd = mathMin$7(ocrEnd, limitedOcrMax);
var ct0 = computeCornerTangents(xirs, yirs, xrs, yrs, radius2, crStart, clockwise);
var ct1 = computeCornerTangents(xre, yre, xire, yire, radius2, crEnd, clockwise);
ctx.moveTo(cx + ct0.cx + ct0.x0, cy + ct0.cy + ct0.y0);
if (limitedOcrMax < ocrMax && crStart === crEnd) {
ctx.arc(cx + ct0.cx, cy + ct0.cy, limitedOcrMax, mathATan2(ct0.y0, ct0.x0), mathATan2(ct1.y0, ct1.x0), !clockwise);
} else {
crStart > 0 && ctx.arc(cx + ct0.cx, cy + ct0.cy, crStart, mathATan2(ct0.y0, ct0.x0), mathATan2(ct0.y1, ct0.x1), !clockwise);
ctx.arc(cx, cy, radius2, mathATan2(ct0.cy + ct0.y1, ct0.cx + ct0.x1), mathATan2(ct1.cy + ct1.y1, ct1.cx + ct1.x1), !clockwise);
crEnd > 0 && ctx.arc(cx + ct1.cx, cy + ct1.cy, crEnd, mathATan2(ct1.y1, ct1.x1), mathATan2(ct1.y0, ct1.x0), !clockwise);
}
} else {
ctx.moveTo(cx + xrs, cy + yrs);
ctx.arc(cx, cy, radius2, startAngle, endAngle, !clockwise);
}
if (!(innerRadius > e$1) || !hasArc) {
ctx.lineTo(cx + xire, cy + yire);
} else if (limitedIcrMax > e$1) {
var crStart = mathMin$7(icrStart, limitedIcrMax);
var crEnd = mathMin$7(icrEnd, limitedIcrMax);
var ct0 = computeCornerTangents(xire, yire, xre, yre, innerRadius, -crEnd, clockwise);
var ct1 = computeCornerTangents(xrs, yrs, xirs, yirs, innerRadius, -crStart, clockwise);
ctx.lineTo(cx + ct0.cx + ct0.x0, cy + ct0.cy + ct0.y0);
if (limitedIcrMax < icrMax && crStart === crEnd) {
ctx.arc(cx + ct0.cx, cy + ct0.cy, limitedIcrMax, mathATan2(ct0.y0, ct0.x0), mathATan2(ct1.y0, ct1.x0), !clockwise);
} else {
crEnd > 0 && ctx.arc(cx + ct0.cx, cy + ct0.cy, crEnd, mathATan2(ct0.y0, ct0.x0), mathATan2(ct0.y1, ct0.x1), !clockwise);
ctx.arc(cx, cy, innerRadius, mathATan2(ct0.cy + ct0.y1, ct0.cx + ct0.x1), mathATan2(ct1.cy + ct1.y1, ct1.cx + ct1.x1), clockwise);
crStart > 0 && ctx.arc(cx + ct1.cx, cy + ct1.cy, crStart, mathATan2(ct1.y1, ct1.x1), mathATan2(ct1.y0, ct1.x0), !clockwise);
}
} else {
ctx.lineTo(cx + xire, cy + yire);
ctx.arc(cx, cy, innerRadius, endAngle, startAngle, clockwise);
}
}
ctx.closePath();
}
var SectorShape = /* @__PURE__ */ function() {
function SectorShape2() {
this.cx = 0;
this.cy = 0;
this.r0 = 0;
this.r = 0;
this.startAngle = 0;
this.endAngle = Math.PI * 2;
this.clockwise = true;
this.cornerRadius = 0;
}
return SectorShape2;
}();
var Sector = function(_super) {
__extends(Sector2, _super);
function Sector2(opts) {
return _super.call(this, opts) || this;
}
Sector2.prototype.getDefaultShape = function() {
return new SectorShape();
};
Sector2.prototype.buildPath = function(ctx, shape) {
buildPath$1(ctx, shape);
};
Sector2.prototype.isZeroArea = function() {
return this.shape.startAngle === this.shape.endAngle || this.shape.r === this.shape.r0;
};
return Sector2;
}(Path);
Sector.prototype.type = "sector";
var RingShape = /* @__PURE__ */ function() {
function RingShape2() {
this.cx = 0;
this.cy = 0;
this.r = 0;
this.r0 = 0;
}
return RingShape2;
}();
var Ring = function(_super) {
__extends(Ring2, _super);
function Ring2(opts) {
return _super.call(this, opts) || this;
}
Ring2.prototype.getDefaultShape = function() {
return new RingShape();
};
Ring2.prototype.buildPath = function(ctx, shape) {
var x2 = shape.cx;
var y2 = shape.cy;
var PI22 = Math.PI * 2;
ctx.moveTo(x2 + shape.r, y2);
ctx.arc(x2, y2, shape.r, 0, PI22, false);
ctx.moveTo(x2 + shape.r0, y2);
ctx.arc(x2, y2, shape.r0, 0, PI22, true);
};
return Ring2;
}(Path);
Ring.prototype.type = "ring";
function smoothBezier(points2, smooth, isLoop, constraint) {
var cps = [];
var v4 = [];
var v12 = [];
var v22 = [];
var prevPoint;
var nextPoint;
var min3;
var max3;
if (constraint) {
min3 = [Infinity, Infinity];
max3 = [-Infinity, -Infinity];
for (var i = 0, len2 = points2.length; i < len2; i++) {
min$1(min3, min3, points2[i]);
max$1(max3, max3, points2[i]);
}
min$1(min3, min3, constraint[0]);
max$1(max3, max3, constraint[1]);
}
for (var i = 0, len2 = points2.length; i < len2; i++) {
var point = points2[i];
if (isLoop) {
prevPoint = points2[i ? i - 1 : len2 - 1];
nextPoint = points2[(i + 1) % len2];
} else {
if (i === 0 || i === len2 - 1) {
cps.push(clone$3(points2[i]));
continue;
} else {
prevPoint = points2[i - 1];
nextPoint = points2[i + 1];
}
}
sub(v4, nextPoint, prevPoint);
scale$2(v4, v4, smooth);
var d0 = distance(point, prevPoint);
var d1 = distance(point, nextPoint);
var sum2 = d0 + d1;
if (sum2 !== 0) {
d0 /= sum2;
d1 /= sum2;
}
scale$2(v12, v4, -d0);
scale$2(v22, v4, d1);
var cp0 = add([], point, v12);
var cp1 = add([], point, v22);
if (constraint) {
max$1(cp0, cp0, min3);
min$1(cp0, cp0, max3);
max$1(cp1, cp1, min3);
min$1(cp1, cp1, max3);
}
cps.push(cp0);
cps.push(cp1);
}
if (isLoop) {
cps.push(cps.shift());
}
return cps;
}
function buildPath(ctx, shape, closePath) {
var smooth = shape.smooth;
var points2 = shape.points;
if (points2 && points2.length >= 2) {
if (smooth) {
var controlPoints = smoothBezier(points2, smooth, closePath, shape.smoothConstraint);
ctx.moveTo(points2[0][0], points2[0][1]);
var len2 = points2.length;
for (var i = 0; i < (closePath ? len2 : len2 - 1); i++) {
var cp1 = controlPoints[i * 2];
var cp2 = controlPoints[i * 2 + 1];
var p2 = points2[(i + 1) % len2];
ctx.bezierCurveTo(cp1[0], cp1[1], cp2[0], cp2[1], p2[0], p2[1]);
}
} else {
ctx.moveTo(points2[0][0], points2[0][1]);
for (var i = 1, l2 = points2.length; i < l2; i++) {
ctx.lineTo(points2[i][0], points2[i][1]);
}
}
closePath && ctx.closePath();
}
}
var PolygonShape = /* @__PURE__ */ function() {
function PolygonShape2() {
this.points = null;
this.smooth = 0;
this.smoothConstraint = null;
}
return PolygonShape2;
}();
var Polygon = function(_super) {
__extends(Polygon2, _super);
function Polygon2(opts) {
return _super.call(this, opts) || this;
}
Polygon2.prototype.getDefaultShape = function() {
return new PolygonShape();
};
Polygon2.prototype.buildPath = function(ctx, shape) {
buildPath(ctx, shape, true);
};
return Polygon2;
}(Path);
Polygon.prototype.type = "polygon";
var PolylineShape = /* @__PURE__ */ function() {
function PolylineShape2() {
this.points = null;
this.percent = 1;
this.smooth = 0;
this.smoothConstraint = null;
}
return PolylineShape2;
}();
var Polyline$1 = function(_super) {
__extends(Polyline2, _super);
function Polyline2(opts) {
return _super.call(this, opts) || this;
}
Polyline2.prototype.getDefaultStyle = function() {
return {
stroke: "#000",
fill: null
};
};
Polyline2.prototype.getDefaultShape = function() {
return new PolylineShape();
};
Polyline2.prototype.buildPath = function(ctx, shape) {
buildPath(ctx, shape, false);
};
return Polyline2;
}(Path);
Polyline$1.prototype.type = "polyline";
var subPixelOptimizeOutputShape = {};
var LineShape = /* @__PURE__ */ function() {
function LineShape2() {
this.x1 = 0;
this.y1 = 0;
this.x2 = 0;
this.y2 = 0;
this.percent = 1;
}
return LineShape2;
}();
var Line$1 = function(_super) {
__extends(Line2, _super);
function Line2(opts) {
return _super.call(this, opts) || this;
}
Line2.prototype.getDefaultStyle = function() {
return {
stroke: "#000",
fill: null
};
};
Line2.prototype.getDefaultShape = function() {
return new LineShape();
};
Line2.prototype.buildPath = function(ctx, shape) {
var x1;
var y1;
var x2;
var y2;
if (this.subPixelOptimize) {
var optimizedShape = subPixelOptimizeLine$1(subPixelOptimizeOutputShape, shape, this.style);
x1 = optimizedShape.x1;
y1 = optimizedShape.y1;
x2 = optimizedShape.x2;
y2 = optimizedShape.y2;
} else {
x1 = shape.x1;
y1 = shape.y1;
x2 = shape.x2;
y2 = shape.y2;
}
var percent = shape.percent;
if (percent === 0) {
return;
}
ctx.moveTo(x1, y1);
if (percent < 1) {
x2 = x1 * (1 - percent) + x2 * percent;
y2 = y1 * (1 - percent) + y2 * percent;
}
ctx.lineTo(x2, y2);
};
Line2.prototype.pointAt = function(p2) {
var shape = this.shape;
return [
shape.x1 * (1 - p2) + shape.x2 * p2,
shape.y1 * (1 - p2) + shape.y2 * p2
];
};
return Line2;
}(Path);
Line$1.prototype.type = "line";
var out = [];
var BezierCurveShape = /* @__PURE__ */ function() {
function BezierCurveShape2() {
this.x1 = 0;
this.y1 = 0;
this.x2 = 0;
this.y2 = 0;
this.cpx1 = 0;
this.cpy1 = 0;
this.percent = 1;
}
return BezierCurveShape2;
}();
function someVectorAt(shape, t2, isTangent) {
var cpx2 = shape.cpx2;
var cpy2 = shape.cpy2;
if (cpx2 != null || cpy2 != null) {
return [
(isTangent ? cubicDerivativeAt : cubicAt)(shape.x1, shape.cpx1, shape.cpx2, shape.x2, t2),
(isTangent ? cubicDerivativeAt : cubicAt)(shape.y1, shape.cpy1, shape.cpy2, shape.y2, t2)
];
} else {
return [
(isTangent ? quadraticDerivativeAt : quadraticAt$1)(shape.x1, shape.cpx1, shape.x2, t2),
(isTangent ? quadraticDerivativeAt : quadraticAt$1)(shape.y1, shape.cpy1, shape.y2, t2)
];
}
}
var BezierCurve = function(_super) {
__extends(BezierCurve2, _super);
function BezierCurve2(opts) {
return _super.call(this, opts) || this;
}
BezierCurve2.prototype.getDefaultStyle = function() {
return {
stroke: "#000",
fill: null
};
};
BezierCurve2.prototype.getDefaultShape = function() {
return new BezierCurveShape();
};
BezierCurve2.prototype.buildPath = function(ctx, shape) {
var x1 = shape.x1;
var y1 = shape.y1;
var x2 = shape.x2;
var y2 = shape.y2;
var cpx1 = shape.cpx1;
var cpy1 = shape.cpy1;
var cpx2 = shape.cpx2;
var cpy2 = shape.cpy2;
var percent = shape.percent;
if (percent === 0) {
return;
}
ctx.moveTo(x1, y1);
if (cpx2 == null || cpy2 == null) {
if (percent < 1) {
quadraticSubdivide(x1, cpx1, x2, percent, out);
cpx1 = out[1];
x2 = out[2];
quadraticSubdivide(y1, cpy1, y2, percent, out);
cpy1 = out[1];
y2 = out[2];
}
ctx.quadraticCurveTo(cpx1, cpy1, x2, y2);
} else {
if (percent < 1) {
cubicSubdivide(x1, cpx1, cpx2, x2, percent, out);
cpx1 = out[1];
cpx2 = out[2];
x2 = out[3];
cubicSubdivide(y1, cpy1, cpy2, y2, percent, out);
cpy1 = out[1];
cpy2 = out[2];
y2 = out[3];
}
ctx.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, x2, y2);
}
};
BezierCurve2.prototype.pointAt = function(t2) {
return someVectorAt(this.shape, t2, false);
};
BezierCurve2.prototype.tangentAt = function(t2) {
var p2 = someVectorAt(this.shape, t2, true);
return normalize$3(p2, p2);
};
return BezierCurve2;
}(Path);
BezierCurve.prototype.type = "bezier-curve";
var ArcShape = /* @__PURE__ */ function() {
function ArcShape2() {
this.cx = 0;
this.cy = 0;
this.r = 0;
this.startAngle = 0;
this.endAngle = Math.PI * 2;
this.clockwise = true;
}
return ArcShape2;
}();
var Arc = function(_super) {
__extends(Arc2, _super);
function Arc2(opts) {
return _super.call(this, opts) || this;
}
Arc2.prototype.getDefaultStyle = function() {
return {
stroke: "#000",
fill: null
};
};
Arc2.prototype.getDefaultShape = function() {
return new ArcShape();
};
Arc2.prototype.buildPath = function(ctx, shape) {
var x2 = shape.cx;
var y2 = shape.cy;
var r2 = Math.max(shape.r, 0);
var startAngle = shape.startAngle;
var endAngle = shape.endAngle;
var clockwise = shape.clockwise;
var unitX = Math.cos(startAngle);
var unitY = Math.sin(startAngle);
ctx.moveTo(unitX * r2 + x2, unitY * r2 + y2);
ctx.arc(x2, y2, r2, startAngle, endAngle, !clockwise);
};
return Arc2;
}(Path);
Arc.prototype.type = "arc";
var CompoundPath = function(_super) {
__extends(CompoundPath2, _super);
function CompoundPath2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = "compound";
return _this;
}
CompoundPath2.prototype._updatePathDirty = function() {
var paths = this.shape.paths;
var dirtyPath = this.shapeChanged();
for (var i = 0; i < paths.length; i++) {
dirtyPath = dirtyPath || paths[i].shapeChanged();
}
if (dirtyPath) {
this.dirtyShape();
}
};
CompoundPath2.prototype.beforeBrush = function() {
this._updatePathDirty();
var paths = this.shape.paths || [];
var scale2 = this.getGlobalScale();
for (var i = 0; i < paths.length; i++) {
if (!paths[i].path) {
paths[i].createPathProxy();
}
paths[i].path.setScale(scale2[0], scale2[1], paths[i].segmentIgnoreThreshold);
}
};
CompoundPath2.prototype.buildPath = function(ctx, shape) {
var paths = shape.paths || [];
for (var i = 0; i < paths.length; i++) {
paths[i].buildPath(ctx, paths[i].shape, true);
}
};
CompoundPath2.prototype.afterBrush = function() {
var paths = this.shape.paths || [];
for (var i = 0; i < paths.length; i++) {
paths[i].pathUpdated();
}
};
CompoundPath2.prototype.getBoundingRect = function() {
this._updatePathDirty.call(this);
return Path.prototype.getBoundingRect.call(this);
};
return CompoundPath2;
}(Path);
var Gradient = function() {
function Gradient2(colorStops) {
this.colorStops = colorStops || [];
}
Gradient2.prototype.addColorStop = function(offset2, color2) {
this.colorStops.push({
offset: offset2,
color: color2
});
};
return Gradient2;
}();
var LinearGradient = function(_super) {
__extends(LinearGradient2, _super);
function LinearGradient2(x2, y2, x22, y22, colorStops, globalCoord) {
var _this = _super.call(this, colorStops) || this;
_this.x = x2 == null ? 0 : x2;
_this.y = y2 == null ? 0 : y2;
_this.x2 = x22 == null ? 1 : x22;
_this.y2 = y22 == null ? 0 : y22;
_this.type = "linear";
_this.global = globalCoord || false;
return _this;
}
return LinearGradient2;
}(Gradient);
var RadialGradient = function(_super) {
__extends(RadialGradient2, _super);
function RadialGradient2(x2, y2, r2, colorStops, globalCoord) {
var _this = _super.call(this, colorStops) || this;
_this.x = x2 == null ? 0.5 : x2;
_this.y = y2 == null ? 0.5 : y2;
_this.r = r2 == null ? 0.5 : r2;
_this.type = "radial";
_this.global = globalCoord || false;
return _this;
}
return RadialGradient2;
}(Gradient);
var extent = [0, 0];
var extent2 = [0, 0];
var minTv = new Point();
var maxTv = new Point();
var OrientedBoundingRect = function() {
function OrientedBoundingRect2(rect, transform2) {
this._corners = [];
this._axes = [];
this._origin = [0, 0];
for (var i = 0; i < 4; i++) {
this._corners[i] = new Point();
}
for (var i = 0; i < 2; i++) {
this._axes[i] = new Point();
}
if (rect) {
this.fromBoundingRect(rect, transform2);
}
}
OrientedBoundingRect2.prototype.fromBoundingRect = function(rect, transform2) {
var corners = this._corners;
var axes = this._axes;
var x2 = rect.x;
var y2 = rect.y;
var x22 = x2 + rect.width;
var y22 = y2 + rect.height;
corners[0].set(x2, y2);
corners[1].set(x22, y2);
corners[2].set(x22, y22);
corners[3].set(x2, y22);
if (transform2) {
for (var i = 0; i < 4; i++) {
corners[i].transform(transform2);
}
}
Point.sub(axes[0], corners[1], corners[0]);
Point.sub(axes[1], corners[3], corners[0]);
axes[0].normalize();
axes[1].normalize();
for (var i = 0; i < 2; i++) {
this._origin[i] = axes[i].dot(corners[0]);
}
};
OrientedBoundingRect2.prototype.intersect = function(other, mtv) {
var overlapped = true;
var noMtv = !mtv;
minTv.set(Infinity, Infinity);
maxTv.set(0, 0);
if (!this._intersectCheckOneSide(this, other, minTv, maxTv, noMtv, 1)) {
overlapped = false;
if (noMtv) {
return overlapped;
}
}
if (!this._intersectCheckOneSide(other, this, minTv, maxTv, noMtv, -1)) {
overlapped = false;
if (noMtv) {
return overlapped;
}
}
if (!noMtv) {
Point.copy(mtv, overlapped ? minTv : maxTv);
}
return overlapped;
};
OrientedBoundingRect2.prototype._intersectCheckOneSide = function(self2, other, minTv2, maxTv2, noMtv, inverse) {
var overlapped = true;
for (var i = 0; i < 2; i++) {
var axis = this._axes[i];
this._getProjMinMaxOnAxis(i, self2._corners, extent);
this._getProjMinMaxOnAxis(i, other._corners, extent2);
if (extent[1] < extent2[0] || extent[0] > extent2[1]) {
overlapped = false;
if (noMtv) {
return overlapped;
}
var dist0 = Math.abs(extent2[0] - extent[1]);
var dist1 = Math.abs(extent[0] - extent2[1]);
if (Math.min(dist0, dist1) > maxTv2.len()) {
if (dist0 < dist1) {
Point.scale(maxTv2, axis, -dist0 * inverse);
} else {
Point.scale(maxTv2, axis, dist1 * inverse);
}
}
} else if (minTv2) {
var dist0 = Math.abs(extent2[0] - extent[1]);
var dist1 = Math.abs(extent[0] - extent2[1]);
if (Math.min(dist0, dist1) < minTv2.len()) {
if (dist0 < dist1) {
Point.scale(minTv2, axis, dist0 * inverse);
} else {
Point.scale(minTv2, axis, -dist1 * inverse);
}
}
}
}
return overlapped;
};
OrientedBoundingRect2.prototype._getProjMinMaxOnAxis = function(dim, corners, out2) {
var axis = this._axes[dim];
var origin = this._origin;
var proj = corners[0].dot(axis) + origin[dim];
var min3 = proj;
var max3 = proj;
for (var i = 1; i < corners.length; i++) {
var proj_1 = corners[i].dot(axis) + origin[dim];
min3 = Math.min(proj_1, min3);
max3 = Math.max(proj_1, max3);
}
out2[0] = min3;
out2[1] = max3;
};
return OrientedBoundingRect2;
}();
var m$1 = [];
var IncrementalDisplayable = function(_super) {
__extends(IncrementalDisplayable2, _super);
function IncrementalDisplayable2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.notClear = true;
_this.incremental = true;
_this._displayables = [];
_this._temporaryDisplayables = [];
_this._cursor = 0;
return _this;
}
IncrementalDisplayable2.prototype.traverse = function(cb2, context) {
cb2.call(context, this);
};
IncrementalDisplayable2.prototype.useStyle = function() {
this.style = {};
};
IncrementalDisplayable2.prototype.getCursor = function() {
return this._cursor;
};
IncrementalDisplayable2.prototype.innerAfterBrush = function() {
this._cursor = this._displayables.length;
};
IncrementalDisplayable2.prototype.clearDisplaybles = function() {
this._displayables = [];
this._temporaryDisplayables = [];
this._cursor = 0;
this.markRedraw();
this.notClear = false;
};
IncrementalDisplayable2.prototype.clearTemporalDisplayables = function() {
this._temporaryDisplayables = [];
};
IncrementalDisplayable2.prototype.addDisplayable = function(displayable, notPersistent) {
if (notPersistent) {
this._temporaryDisplayables.push(displayable);
} else {
this._displayables.push(displayable);
}
this.markRedraw();
};
IncrementalDisplayable2.prototype.addDisplayables = function(displayables, notPersistent) {
notPersistent = notPersistent || false;
for (var i = 0; i < displayables.length; i++) {
this.addDisplayable(displayables[i], notPersistent);
}
};
IncrementalDisplayable2.prototype.getDisplayables = function() {
return this._displayables;
};
IncrementalDisplayable2.prototype.getTemporalDisplayables = function() {
return this._temporaryDisplayables;
};
IncrementalDisplayable2.prototype.eachPendingDisplayable = function(cb2) {
for (var i = this._cursor; i < this._displayables.length; i++) {
cb2 && cb2(this._displayables[i]);
}
for (var i = 0; i < this._temporaryDisplayables.length; i++) {
cb2 && cb2(this._temporaryDisplayables[i]);
}
};
IncrementalDisplayable2.prototype.update = function() {
this.updateTransform();
for (var i = this._cursor; i < this._displayables.length; i++) {
var displayable = this._displayables[i];
displayable.parent = this;
displayable.update();
displayable.parent = null;
}
for (var i = 0; i < this._temporaryDisplayables.length; i++) {
var displayable = this._temporaryDisplayables[i];
displayable.parent = this;
displayable.update();
displayable.parent = null;
}
};
IncrementalDisplayable2.prototype.getBoundingRect = function() {
if (!this._rect) {
var rect = new BoundingRect(Infinity, Infinity, -Infinity, -Infinity);
for (var i = 0; i < this._displayables.length; i++) {
var displayable = this._displayables[i];
var childRect = displayable.getBoundingRect().clone();
if (displayable.needLocalTransform()) {
childRect.applyTransform(displayable.getLocalTransform(m$1));
}
rect.union(childRect);
}
this._rect = rect;
}
return this._rect;
};
IncrementalDisplayable2.prototype.contain = function(x2, y2) {
var localPos = this.transformCoordToLocal(x2, y2);
var rect = this.getBoundingRect();
if (rect.contain(localPos[0], localPos[1])) {
for (var i = 0; i < this._displayables.length; i++) {
var displayable = this._displayables[i];
if (displayable.contain(x2, y2)) {
return true;
}
}
}
return false;
};
return IncrementalDisplayable2;
}(Displayable);
var transitionStore = makeInner();
function getAnimationConfig(animationType, animatableModel, dataIndex, extraOpts, extraDelayParams) {
var animationPayload;
if (animatableModel && animatableModel.ecModel) {
var updatePayload = animatableModel.ecModel.getUpdatePayload();
animationPayload = updatePayload && updatePayload.animation;
}
var animationEnabled = animatableModel && animatableModel.isAnimationEnabled();
var isUpdate = animationType === "update";
if (animationEnabled) {
var duration = void 0;
var easing = void 0;
var delay = void 0;
if (extraOpts) {
duration = retrieve2(extraOpts.duration, 200);
easing = retrieve2(extraOpts.easing, "cubicOut");
delay = 0;
} else {
duration = animatableModel.getShallow(isUpdate ? "animationDurationUpdate" : "animationDuration");
easing = animatableModel.getShallow(isUpdate ? "animationEasingUpdate" : "animationEasing");
delay = animatableModel.getShallow(isUpdate ? "animationDelayUpdate" : "animationDelay");
}
if (animationPayload) {
animationPayload.duration != null && (duration = animationPayload.duration);
animationPayload.easing != null && (easing = animationPayload.easing);
animationPayload.delay != null && (delay = animationPayload.delay);
}
if (isFunction$1(delay)) {
delay = delay(dataIndex, extraDelayParams);
}
if (isFunction$1(duration)) {
duration = duration(dataIndex);
}
var config = {
duration: duration || 0,
delay,
easing
};
return config;
} else {
return null;
}
}
function animateOrSetProps(animationType, el2, props, animatableModel, dataIndex, cb2, during) {
var isFrom = false;
var removeOpt;
if (isFunction$1(dataIndex)) {
during = cb2;
cb2 = dataIndex;
dataIndex = null;
} else if (isObject$3(dataIndex)) {
cb2 = dataIndex.cb;
during = dataIndex.during;
isFrom = dataIndex.isFrom;
removeOpt = dataIndex.removeOpt;
dataIndex = dataIndex.dataIndex;
}
var isRemove = animationType === "leave";
if (!isRemove) {
el2.stopAnimation("leave");
}
var animationConfig = getAnimationConfig(animationType, animatableModel, dataIndex, isRemove ? removeOpt || {} : null, animatableModel && animatableModel.getAnimationDelayParams ? animatableModel.getAnimationDelayParams(el2, dataIndex) : null);
if (animationConfig && animationConfig.duration > 0) {
var duration = animationConfig.duration;
var animationDelay = animationConfig.delay;
var animationEasing = animationConfig.easing;
var animateConfig = {
duration,
delay: animationDelay || 0,
easing: animationEasing,
done: cb2,
force: !!cb2 || !!during,
// Set to final state in update/init animation.
// So the post processing based on the path shape can be done correctly.
setToFinal: !isRemove,
scope: animationType,
during
};
isFrom ? el2.animateFrom(props, animateConfig) : el2.animateTo(props, animateConfig);
} else {
el2.stopAnimation();
!isFrom && el2.attr(props);
during && during(1);
cb2 && cb2();
}
}
function updateProps$1(el2, props, animatableModel, dataIndex, cb2, during) {
animateOrSetProps("update", el2, props, animatableModel, dataIndex, cb2, during);
}
function initProps(el2, props, animatableModel, dataIndex, cb2, during) {
animateOrSetProps("enter", el2, props, animatableModel, dataIndex, cb2, during);
}
function isElementRemoved(el2) {
if (!el2.__zr) {
return true;
}
for (var i = 0; i < el2.animators.length; i++) {
var animator = el2.animators[i];
if (animator.scope === "leave") {
return true;
}
}
return false;
}
function removeElement(el2, props, animatableModel, dataIndex, cb2, during) {
if (isElementRemoved(el2)) {
return;
}
animateOrSetProps("leave", el2, props, animatableModel, dataIndex, cb2, during);
}
function fadeOutDisplayable(el2, animatableModel, dataIndex, done) {
el2.removeTextContent();
el2.removeTextGuideLine();
removeElement(el2, {
style: {
opacity: 0
}
}, animatableModel, dataIndex, done);
}
function removeElementWithFadeOut(el2, animatableModel, dataIndex) {
function doRemove() {
el2.parent && el2.parent.remove(el2);
}
if (!el2.isGroup) {
fadeOutDisplayable(el2, animatableModel, dataIndex, doRemove);
} else {
el2.traverse(function(disp) {
if (!disp.isGroup) {
fadeOutDisplayable(disp, animatableModel, dataIndex, doRemove);
}
});
}
}
function saveOldStyle(el2) {
transitionStore(el2).oldStyle = el2.style;
}
function getOldStyle(el2) {
return transitionStore(el2).oldStyle;
}
var mathMax$6 = Math.max;
var mathMin$6 = Math.min;
var _customShapeMap = {};
function extendShape(opts) {
return Path.extend(opts);
}
var extendPathFromString = extendFromString;
function extendPath(pathData, opts) {
return extendPathFromString(pathData, opts);
}
function registerShape(name, ShapeClass) {
_customShapeMap[name] = ShapeClass;
}
function getShapeClass(name) {
if (_customShapeMap.hasOwnProperty(name)) {
return _customShapeMap[name];
}
}
function makePath(pathData, opts, rect, layout2) {
var path = createFromString(pathData, opts);
if (rect) {
if (layout2 === "center") {
rect = centerGraphic(rect, path.getBoundingRect());
}
resizePath(path, rect);
}
return path;
}
function makeImage(imageUrl, rect, layout2) {
var zrImg = new ZRImage({
style: {
image: imageUrl,
x: rect.x,
y: rect.y,
width: rect.width,
height: rect.height
},
onload: function(img) {
if (layout2 === "center") {
var boundingRect = {
width: img.width,
height: img.height
};
zrImg.setStyle(centerGraphic(rect, boundingRect));
}
}
});
return zrImg;
}
function centerGraphic(rect, boundingRect) {
var aspect = boundingRect.width / boundingRect.height;
var width = rect.height * aspect;
var height;
if (width <= rect.width) {
height = rect.height;
} else {
width = rect.width;
height = width / aspect;
}
var cx = rect.x + rect.width / 2;
var cy = rect.y + rect.height / 2;
return {
x: cx - width / 2,
y: cy - height / 2,
width,
height
};
}
var mergePath = mergePath$1;
function resizePath(path, rect) {
if (!path.applyTransform) {
return;
}
var pathRect = path.getBoundingRect();
var m2 = pathRect.calculateTransform(rect);
path.applyTransform(m2);
}
function subPixelOptimizeLine(shape, lineWidth) {
subPixelOptimizeLine$1(shape, shape, {
lineWidth
});
return shape;
}
function subPixelOptimizeRect(param) {
subPixelOptimizeRect$1(param.shape, param.shape, param.style);
return param;
}
var subPixelOptimize = subPixelOptimize$1;
function getTransform$1(target, ancestor) {
var mat = identity([]);
while (target && target !== ancestor) {
mul(mat, target.getLocalTransform(), mat);
target = target.parent;
}
return mat;
}
function applyTransform(target, transform2, invert$1) {
if (transform2 && !isArrayLike(transform2)) {
transform2 = Transformable.getLocalTransform(transform2);
}
if (invert$1) {
transform2 = invert([], transform2);
}
return applyTransform$1([], target, transform2);
}
function transformDirection(direction, transform2, invert2) {
var hBase = transform2[4] === 0 || transform2[5] === 0 || transform2[0] === 0 ? 1 : Math.abs(2 * transform2[4] / transform2[0]);
var vBase = transform2[4] === 0 || transform2[5] === 0 || transform2[2] === 0 ? 1 : Math.abs(2 * transform2[4] / transform2[2]);
var vertex = [direction === "left" ? -hBase : direction === "right" ? hBase : 0, direction === "top" ? -vBase : direction === "bottom" ? vBase : 0];
vertex = applyTransform(vertex, transform2, invert2);
return Math.abs(vertex[0]) > Math.abs(vertex[1]) ? vertex[0] > 0 ? "right" : "left" : vertex[1] > 0 ? "bottom" : "top";
}
function isNotGroup(el2) {
return !el2.isGroup;
}
function isPath$1(el2) {
return el2.shape != null;
}
function groupTransition(g1, g2, animatableModel) {
if (!g1 || !g2) {
return;
}
function getElMap(g3) {
var elMap = {};
g3.traverse(function(el2) {
if (isNotGroup(el2) && el2.anid) {
elMap[el2.anid] = el2;
}
});
return elMap;
}
function getAnimatableProps(el2) {
var obj = {
x: el2.x,
y: el2.y,
rotation: el2.rotation
};
if (isPath$1(el2)) {
obj.shape = extend({}, el2.shape);
}
return obj;
}
var elMap1 = getElMap(g1);
g2.traverse(function(el2) {
if (isNotGroup(el2) && el2.anid) {
var oldEl = elMap1[el2.anid];
if (oldEl) {
var newProp = getAnimatableProps(el2);
el2.attr(getAnimatableProps(oldEl));
updateProps$1(el2, newProp, animatableModel, getECData(el2).dataIndex);
}
}
});
}
function clipPointsByRect(points2, rect) {
return map$1(points2, function(point) {
var x2 = point[0];
x2 = mathMax$6(x2, rect.x);
x2 = mathMin$6(x2, rect.x + rect.width);
var y2 = point[1];
y2 = mathMax$6(y2, rect.y);
y2 = mathMin$6(y2, rect.y + rect.height);
return [x2, y2];
});
}
function clipRectByRect(targetRect, rect) {
var x2 = mathMax$6(targetRect.x, rect.x);
var x22 = mathMin$6(targetRect.x + targetRect.width, rect.x + rect.width);
var y2 = mathMax$6(targetRect.y, rect.y);
var y22 = mathMin$6(targetRect.y + targetRect.height, rect.y + rect.height);
if (x22 >= x2 && y22 >= y2) {
return {
x: x2,
y: y2,
width: x22 - x2,
height: y22 - y2
};
}
}
function createIcon(iconStr, opt, rect) {
var innerOpts = extend({
rectHover: true
}, opt);
var style2 = innerOpts.style = {
strokeNoScale: true
};
rect = rect || {
x: -1,
y: -1,
width: 2,
height: 2
};
if (iconStr) {
return iconStr.indexOf("image://") === 0 ? (style2.image = iconStr.slice(8), defaults(style2, rect), new ZRImage(innerOpts)) : makePath(iconStr.replace("path://", ""), innerOpts, rect, "center");
}
}
function linePolygonIntersect(a1x, a1y, a2x, a2y, points2) {
for (var i = 0, p2 = points2[points2.length - 1]; i < points2.length; i++) {
var p3 = points2[i];
if (lineLineIntersect$1(a1x, a1y, a2x, a2y, p3[0], p3[1], p2[0], p2[1])) {
return true;
}
p2 = p3;
}
}
function lineLineIntersect$1(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y) {
var mx = a2x - a1x;
var my = a2y - a1y;
var nx = b2x - b1x;
var ny = b2y - b1y;
var nmCrossProduct = crossProduct2d$1(nx, ny, mx, my);
if (nearZero(nmCrossProduct)) {
return false;
}
var b1a1x = a1x - b1x;
var b1a1y = a1y - b1y;
var q2 = crossProduct2d$1(b1a1x, b1a1y, mx, my) / nmCrossProduct;
if (q2 < 0 || q2 > 1) {
return false;
}
var p2 = crossProduct2d$1(b1a1x, b1a1y, nx, ny) / nmCrossProduct;
if (p2 < 0 || p2 > 1) {
return false;
}
return true;
}
function crossProduct2d$1(x1, y1, x2, y2) {
return x1 * y2 - x2 * y1;
}
function nearZero(val) {
return val <= 1e-6 && val >= -1e-6;
}
function setTooltipConfig(opt) {
var itemTooltipOption = opt.itemTooltipOption;
var componentModel = opt.componentModel;
var itemName = opt.itemName;
var itemTooltipOptionObj = isString$1(itemTooltipOption) ? {
formatter: itemTooltipOption
} : itemTooltipOption;
var mainType = componentModel.mainType;
var componentIndex = componentModel.componentIndex;
var formatterParams = {
componentType: mainType,
name: itemName,
$vars: ["name"]
};
formatterParams[mainType + "Index"] = componentIndex;
var formatterParamsExtra = opt.formatterParamsExtra;
if (formatterParamsExtra) {
each$f(keys(formatterParamsExtra), function(key) {
if (!hasOwn(formatterParams, key)) {
formatterParams[key] = formatterParamsExtra[key];
formatterParams.$vars.push(key);
}
});
}
var ecData = getECData(opt.el);
ecData.componentMainType = mainType;
ecData.componentIndex = componentIndex;
ecData.tooltipConfig = {
name: itemName,
option: defaults({
content: itemName,
encodeHTMLContent: true,
formatterParams
}, itemTooltipOptionObj)
};
}
function traverseElement(el2, cb2) {
var stopped;
if (el2.isGroup) {
stopped = cb2(el2);
}
if (!stopped) {
el2.traverse(cb2);
}
}
function traverseElements(els, cb2) {
if (els) {
if (isArray$1(els)) {
for (var i = 0; i < els.length; i++) {
traverseElement(els[i], cb2);
}
} else {
traverseElement(els, cb2);
}
}
}
registerShape("circle", Circle);
registerShape("ellipse", Ellipse);
registerShape("sector", Sector);
registerShape("ring", Ring);
registerShape("polygon", Polygon);
registerShape("polyline", Polyline$1);
registerShape("rect", Rect$2);
registerShape("line", Line$1);
registerShape("bezierCurve", BezierCurve);
registerShape("arc", Arc);
const graphic$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
Arc,
BezierCurve,
BoundingRect,
Circle,
CompoundPath,
Ellipse,
Group: Group$3,
Image: ZRImage,
IncrementalDisplayable,
Line: Line$1,
LinearGradient,
OrientedBoundingRect,
Path,
Point,
Polygon,
Polyline: Polyline$1,
RadialGradient,
Rect: Rect$2,
Ring,
Sector,
Text: ZRText,
applyTransform,
clipPointsByRect,
clipRectByRect,
createIcon,
extendPath,
extendShape,
getShapeClass,
getTransform: getTransform$1,
groupTransition,
initProps,
isElementRemoved,
lineLineIntersect: lineLineIntersect$1,
linePolygonIntersect,
makeImage,
makePath,
mergePath,
registerShape,
removeElement,
removeElementWithFadeOut,
resizePath,
setTooltipConfig,
subPixelOptimize,
subPixelOptimizeLine,
subPixelOptimizeRect,
transformDirection,
traverseElements,
updateProps: updateProps$1
}, Symbol.toStringTag, { value: "Module" }));
var EMPTY_OBJ = {};
function setLabelText(label, labelTexts) {
for (var i = 0; i < SPECIAL_STATES.length; i++) {
var stateName = SPECIAL_STATES[i];
var text = labelTexts[stateName];
var state = label.ensureState(stateName);
state.style = state.style || {};
state.style.text = text;
}
var oldStates = label.currentStates.slice();
label.clearStates(true);
label.setStyle({
text: labelTexts.normal
});
label.useStates(oldStates, true);
}
function getLabelText(opt, stateModels, interpolatedValue) {
var labelFetcher = opt.labelFetcher;
var labelDataIndex = opt.labelDataIndex;
var labelDimIndex = opt.labelDimIndex;
var normalModel = stateModels.normal;
var baseText;
if (labelFetcher) {
baseText = labelFetcher.getFormattedLabel(labelDataIndex, "normal", null, labelDimIndex, normalModel && normalModel.get("formatter"), interpolatedValue != null ? {
interpolatedValue
} : null);
}
if (baseText == null) {
baseText = isFunction$1(opt.defaultText) ? opt.defaultText(labelDataIndex, opt, interpolatedValue) : opt.defaultText;
}
var statesText = {
normal: baseText
};
for (var i = 0; i < SPECIAL_STATES.length; i++) {
var stateName = SPECIAL_STATES[i];
var stateModel = stateModels[stateName];
statesText[stateName] = retrieve2(labelFetcher ? labelFetcher.getFormattedLabel(labelDataIndex, stateName, null, labelDimIndex, stateModel && stateModel.get("formatter")) : null, baseText);
}
return statesText;
}
function setLabelStyle(targetEl, labelStatesModels, opt, stateSpecified) {
opt = opt || EMPTY_OBJ;
var isSetOnText = targetEl instanceof ZRText;
var needsCreateText = false;
for (var i = 0; i < DISPLAY_STATES.length; i++) {
var stateModel = labelStatesModels[DISPLAY_STATES[i]];
if (stateModel && stateModel.getShallow("show")) {
needsCreateText = true;
break;
}
}
var textContent = isSetOnText ? targetEl : targetEl.getTextContent();
if (needsCreateText) {
if (!isSetOnText) {
if (!textContent) {
textContent = new ZRText();
targetEl.setTextContent(textContent);
}
if (targetEl.stateProxy) {
textContent.stateProxy = targetEl.stateProxy;
}
}
var labelStatesTexts = getLabelText(opt, labelStatesModels);
var normalModel = labelStatesModels.normal;
var showNormal = !!normalModel.getShallow("show");
var normalStyle = createTextStyle$1(normalModel, stateSpecified && stateSpecified.normal, opt, false, !isSetOnText);
normalStyle.text = labelStatesTexts.normal;
if (!isSetOnText) {
targetEl.setTextConfig(createTextConfig(normalModel, opt, false));
}
for (var i = 0; i < SPECIAL_STATES.length; i++) {
var stateName = SPECIAL_STATES[i];
var stateModel = labelStatesModels[stateName];
if (stateModel) {
var stateObj = textContent.ensureState(stateName);
var stateShow = !!retrieve2(stateModel.getShallow("show"), showNormal);
if (stateShow !== showNormal) {
stateObj.ignore = !stateShow;
}
stateObj.style = createTextStyle$1(stateModel, stateSpecified && stateSpecified[stateName], opt, true, !isSetOnText);
stateObj.style.text = labelStatesTexts[stateName];
if (!isSetOnText) {
var targetElEmphasisState = targetEl.ensureState(stateName);
targetElEmphasisState.textConfig = createTextConfig(stateModel, opt, true);
}
}
}
textContent.silent = !!normalModel.getShallow("silent");
if (textContent.style.x != null) {
normalStyle.x = textContent.style.x;
}
if (textContent.style.y != null) {
normalStyle.y = textContent.style.y;
}
textContent.ignore = !showNormal;
textContent.useStyle(normalStyle);
textContent.dirty();
if (opt.enableTextSetter) {
labelInner(textContent).setLabelText = function(interpolatedValue) {
var labelStatesTexts2 = getLabelText(opt, labelStatesModels, interpolatedValue);
setLabelText(textContent, labelStatesTexts2);
};
}
} else if (textContent) {
textContent.ignore = true;
}
targetEl.dirty();
}
function getLabelStatesModels(itemModel, labelName) {
labelName = labelName || "label";
var statesModels = {
normal: itemModel.getModel(labelName)
};
for (var i = 0; i < SPECIAL_STATES.length; i++) {
var stateName = SPECIAL_STATES[i];
statesModels[stateName] = itemModel.getModel([stateName, labelName]);
}
return statesModels;
}
function createTextStyle$1(textStyleModel, specifiedTextStyle, opt, isNotNormal, isAttached) {
var textStyle = {};
setTextStyleCommon(textStyle, textStyleModel, opt, isNotNormal, isAttached);
specifiedTextStyle && extend(textStyle, specifiedTextStyle);
return textStyle;
}
function createTextConfig(textStyleModel, opt, isNotNormal) {
opt = opt || {};
var textConfig = {};
var labelPosition;
var labelRotate = textStyleModel.getShallow("rotate");
var labelDistance = retrieve2(textStyleModel.getShallow("distance"), isNotNormal ? null : 5);
var labelOffset = textStyleModel.getShallow("offset");
labelPosition = textStyleModel.getShallow("position") || (isNotNormal ? null : "inside");
labelPosition === "outside" && (labelPosition = opt.defaultOutsidePosition || "top");
if (labelPosition != null) {
textConfig.position = labelPosition;
}
if (labelOffset != null) {
textConfig.offset = labelOffset;
}
if (labelRotate != null) {
labelRotate *= Math.PI / 180;
textConfig.rotation = labelRotate;
}
if (labelDistance != null) {
textConfig.distance = labelDistance;
}
textConfig.outsideFill = textStyleModel.get("color") === "inherit" ? opt.inheritColor || null : "auto";
return textConfig;
}
function setTextStyleCommon(textStyle, textStyleModel, opt, isNotNormal, isAttached) {
opt = opt || EMPTY_OBJ;
var ecModel = textStyleModel.ecModel;
var globalTextStyle = ecModel && ecModel.option.textStyle;
var richItemNames = getRichItemNames(textStyleModel);
var richResult;
if (richItemNames) {
richResult = {};
for (var name_1 in richItemNames) {
if (richItemNames.hasOwnProperty(name_1)) {
var richTextStyle = textStyleModel.getModel(["rich", name_1]);
setTokenTextStyle(richResult[name_1] = {}, richTextStyle, globalTextStyle, opt, isNotNormal, isAttached, false, true);
}
}
}
if (richResult) {
textStyle.rich = richResult;
}
var overflow = textStyleModel.get("overflow");
if (overflow) {
textStyle.overflow = overflow;
}
var margin = textStyleModel.get("minMargin");
if (margin != null) {
textStyle.margin = margin;
}
setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isNotNormal, isAttached, true, false);
}
function getRichItemNames(textStyleModel) {
var richItemNameMap;
while (textStyleModel && textStyleModel !== textStyleModel.ecModel) {
var rich = (textStyleModel.option || EMPTY_OBJ).rich;
if (rich) {
richItemNameMap = richItemNameMap || {};
var richKeys = keys(rich);
for (var i = 0; i < richKeys.length; i++) {
var richKey = richKeys[i];
richItemNameMap[richKey] = 1;
}
}
textStyleModel = textStyleModel.parentModel;
}
return richItemNameMap;
}
var TEXT_PROPS_WITH_GLOBAL = ["fontStyle", "fontWeight", "fontSize", "fontFamily", "textShadowColor", "textShadowBlur", "textShadowOffsetX", "textShadowOffsetY"];
var TEXT_PROPS_SELF = ["align", "lineHeight", "width", "height", "tag", "verticalAlign", "ellipsis"];
var TEXT_PROPS_BOX = ["padding", "borderWidth", "borderRadius", "borderDashOffset", "backgroundColor", "borderColor", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY"];
function setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isNotNormal, isAttached, isBlock, inRich) {
globalTextStyle = !isNotNormal && globalTextStyle || EMPTY_OBJ;
var inheritColor = opt && opt.inheritColor;
var fillColor = textStyleModel.getShallow("color");
var strokeColor = textStyleModel.getShallow("textBorderColor");
var opacity = retrieve2(textStyleModel.getShallow("opacity"), globalTextStyle.opacity);
if (fillColor === "inherit" || fillColor === "auto") {
if (inheritColor) {
fillColor = inheritColor;
} else {
fillColor = null;
}
}
if (strokeColor === "inherit" || strokeColor === "auto") {
if (inheritColor) {
strokeColor = inheritColor;
} else {
strokeColor = null;
}
}
if (!isAttached) {
fillColor = fillColor || globalTextStyle.color;
strokeColor = strokeColor || globalTextStyle.textBorderColor;
}
if (fillColor != null) {
textStyle.fill = fillColor;
}
if (strokeColor != null) {
textStyle.stroke = strokeColor;
}
var textBorderWidth = retrieve2(textStyleModel.getShallow("textBorderWidth"), globalTextStyle.textBorderWidth);
if (textBorderWidth != null) {
textStyle.lineWidth = textBorderWidth;
}
var textBorderType = retrieve2(textStyleModel.getShallow("textBorderType"), globalTextStyle.textBorderType);
if (textBorderType != null) {
textStyle.lineDash = textBorderType;
}
var textBorderDashOffset = retrieve2(textStyleModel.getShallow("textBorderDashOffset"), globalTextStyle.textBorderDashOffset);
if (textBorderDashOffset != null) {
textStyle.lineDashOffset = textBorderDashOffset;
}
if (!isNotNormal && opacity == null && !inRich) {
opacity = opt && opt.defaultOpacity;
}
if (opacity != null) {
textStyle.opacity = opacity;
}
if (!isNotNormal && !isAttached) {
if (textStyle.fill == null && opt.inheritColor) {
textStyle.fill = opt.inheritColor;
}
}
for (var i = 0; i < TEXT_PROPS_WITH_GLOBAL.length; i++) {
var key = TEXT_PROPS_WITH_GLOBAL[i];
var val = retrieve2(textStyleModel.getShallow(key), globalTextStyle[key]);
if (val != null) {
textStyle[key] = val;
}
}
for (var i = 0; i < TEXT_PROPS_SELF.length; i++) {
var key = TEXT_PROPS_SELF[i];
var val = textStyleModel.getShallow(key);
if (val != null) {
textStyle[key] = val;
}
}
if (textStyle.verticalAlign == null) {
var baseline = textStyleModel.getShallow("baseline");
if (baseline != null) {
textStyle.verticalAlign = baseline;
}
}
if (!isBlock || !opt.disableBox) {
for (var i = 0; i < TEXT_PROPS_BOX.length; i++) {
var key = TEXT_PROPS_BOX[i];
var val = textStyleModel.getShallow(key);
if (val != null) {
textStyle[key] = val;
}
}
var borderType = textStyleModel.getShallow("borderType");
if (borderType != null) {
textStyle.borderDash = borderType;
}
if ((textStyle.backgroundColor === "auto" || textStyle.backgroundColor === "inherit") && inheritColor) {
textStyle.backgroundColor = inheritColor;
}
if ((textStyle.borderColor === "auto" || textStyle.borderColor === "inherit") && inheritColor) {
textStyle.borderColor = inheritColor;
}
}
}
function getFont(opt, ecModel) {
var gTextStyleModel = ecModel && ecModel.getModel("textStyle");
return trim$1([
// FIXME in node-canvas fontWeight is before fontStyle
opt.fontStyle || gTextStyleModel && gTextStyleModel.getShallow("fontStyle") || "",
opt.fontWeight || gTextStyleModel && gTextStyleModel.getShallow("fontWeight") || "",
(opt.fontSize || gTextStyleModel && gTextStyleModel.getShallow("fontSize") || 12) + "px",
opt.fontFamily || gTextStyleModel && gTextStyleModel.getShallow("fontFamily") || "sans-serif"
].join(" "));
}
var labelInner = makeInner();
function setLabelValueAnimation(label, labelStatesModels, value, getDefaultText) {
if (!label) {
return;
}
var obj = labelInner(label);
obj.prevValue = obj.value;
obj.value = value;
var normalLabelModel = labelStatesModels.normal;
obj.valueAnimation = normalLabelModel.get("valueAnimation");
if (obj.valueAnimation) {
obj.precision = normalLabelModel.get("precision");
obj.defaultInterpolatedText = getDefaultText;
obj.statesModels = labelStatesModels;
}
}
function animateLabelValue(textEl, dataIndex, data, animatableModel, labelFetcher) {
var labelInnerStore = labelInner(textEl);
if (!labelInnerStore.valueAnimation || labelInnerStore.prevValue === labelInnerStore.value) {
return;
}
var defaultInterpolatedText = labelInnerStore.defaultInterpolatedText;
var currValue = retrieve2(labelInnerStore.interpolatedValue, labelInnerStore.prevValue);
var targetValue = labelInnerStore.value;
function during(percent) {
var interpolated = interpolateRawValues(data, labelInnerStore.precision, currValue, targetValue, percent);
labelInnerStore.interpolatedValue = percent === 1 ? null : interpolated;
var labelText = getLabelText({
labelDataIndex: dataIndex,
labelFetcher,
defaultText: defaultInterpolatedText ? defaultInterpolatedText(interpolated) : interpolated + ""
}, labelInnerStore.statesModels, interpolated);
setLabelText(textEl, labelText);
}
textEl.percent = 0;
(labelInnerStore.prevValue == null ? initProps : updateProps$1)(textEl, {
// percent is used to prevent animation from being aborted #15916
percent: 1
}, animatableModel, dataIndex, null, during);
}
var PATH_COLOR = ["textStyle", "color"];
var textStyleParams = ["fontStyle", "fontWeight", "fontSize", "fontFamily", "padding", "lineHeight", "rich", "width", "height", "overflow"];
var tmpText = new ZRText();
var TextStyleMixin = (
/** @class */
function() {
function TextStyleMixin2() {
}
TextStyleMixin2.prototype.getTextColor = function(isEmphasis) {
var ecModel = this.ecModel;
return this.getShallow("color") || (!isEmphasis && ecModel ? ecModel.get(PATH_COLOR) : null);
};
TextStyleMixin2.prototype.getFont = function() {
return getFont({
fontStyle: this.getShallow("fontStyle"),
fontWeight: this.getShallow("fontWeight"),
fontSize: this.getShallow("fontSize"),
fontFamily: this.getShallow("fontFamily")
}, this.ecModel);
};
TextStyleMixin2.prototype.getTextRect = function(text) {
var style2 = {
text,
verticalAlign: this.getShallow("verticalAlign") || this.getShallow("baseline")
};
for (var i = 0; i < textStyleParams.length; i++) {
style2[textStyleParams[i]] = this.getShallow(textStyleParams[i]);
}
tmpText.useStyle(style2);
tmpText.update();
return tmpText.getBoundingRect();
};
return TextStyleMixin2;
}()
);
var LINE_STYLE_KEY_MAP = [
["lineWidth", "width"],
["stroke", "color"],
["opacity"],
["shadowBlur"],
["shadowOffsetX"],
["shadowOffsetY"],
["shadowColor"],
["lineDash", "type"],
["lineDashOffset", "dashOffset"],
["lineCap", "cap"],
["lineJoin", "join"],
["miterLimit"]
// Option decal is in `DecalObject` but style.decal is in `PatternObject`.
// So do not transfer decal directly.
];
var getLineStyle = makeStyleMapper(LINE_STYLE_KEY_MAP);
var LineStyleMixin = (
/** @class */
function() {
function LineStyleMixin2() {
}
LineStyleMixin2.prototype.getLineStyle = function(excludes) {
return getLineStyle(this, excludes);
};
return LineStyleMixin2;
}()
);
var ITEM_STYLE_KEY_MAP = [
["fill", "color"],
["stroke", "borderColor"],
["lineWidth", "borderWidth"],
["opacity"],
["shadowBlur"],
["shadowOffsetX"],
["shadowOffsetY"],
["shadowColor"],
["lineDash", "borderType"],
["lineDashOffset", "borderDashOffset"],
["lineCap", "borderCap"],
["lineJoin", "borderJoin"],
["miterLimit", "borderMiterLimit"]
// Option decal is in `DecalObject` but style.decal is in `PatternObject`.
// So do not transfer decal directly.
];
var getItemStyle = makeStyleMapper(ITEM_STYLE_KEY_MAP);
var ItemStyleMixin = (
/** @class */
function() {
function ItemStyleMixin2() {
}
ItemStyleMixin2.prototype.getItemStyle = function(excludes, includes2) {
return getItemStyle(this, excludes, includes2);
};
return ItemStyleMixin2;
}()
);
var Model = (
/** @class */
function() {
function Model2(option, parentModel, ecModel) {
this.parentModel = parentModel;
this.ecModel = ecModel;
this.option = option;
}
Model2.prototype.init = function(option, parentModel, ecModel) {
};
Model2.prototype.mergeOption = function(option, ecModel) {
merge(this.option, option, true);
};
Model2.prototype.get = function(path, ignoreParent) {
if (path == null) {
return this.option;
}
return this._doGet(this.parsePath(path), !ignoreParent && this.parentModel);
};
Model2.prototype.getShallow = function(key, ignoreParent) {
var option = this.option;
var val = option == null ? option : option[key];
if (val == null && !ignoreParent) {
var parentModel = this.parentModel;
if (parentModel) {
val = parentModel.getShallow(key);
}
}
return val;
};
Model2.prototype.getModel = function(path, parentModel) {
var hasPath = path != null;
var pathFinal = hasPath ? this.parsePath(path) : null;
var obj = hasPath ? this._doGet(pathFinal) : this.option;
parentModel = parentModel || this.parentModel && this.parentModel.getModel(this.resolveParentPath(pathFinal));
return new Model2(obj, parentModel, this.ecModel);
};
Model2.prototype.isEmpty = function() {
return this.option == null;
};
Model2.prototype.restoreData = function() {
};
Model2.prototype.clone = function() {
var Ctor = this.constructor;
return new Ctor(clone$4(this.option));
};
Model2.prototype.parsePath = function(path) {
if (typeof path === "string") {
return path.split(".");
}
return path;
};
Model2.prototype.resolveParentPath = function(path) {
return path;
};
Model2.prototype.isAnimationEnabled = function() {
if (!env.node && this.option) {
if (this.option.animation != null) {
return !!this.option.animation;
} else if (this.parentModel) {
return this.parentModel.isAnimationEnabled();
}
}
};
Model2.prototype._doGet = function(pathArr, parentModel) {
var obj = this.option;
if (!pathArr) {
return obj;
}
for (var i = 0; i < pathArr.length; i++) {
if (!pathArr[i]) {
continue;
}
obj = obj && typeof obj === "object" ? obj[pathArr[i]] : null;
if (obj == null) {
break;
}
}
if (obj == null && parentModel) {
obj = parentModel._doGet(this.resolveParentPath(pathArr), parentModel.parentModel);
}
return obj;
};
return Model2;
}()
);
enableClassExtend(Model);
enableClassCheck(Model);
mixin(Model, LineStyleMixin);
mixin(Model, ItemStyleMixin);
mixin(Model, AreaStyleMixin);
mixin(Model, TextStyleMixin);
var base = Math.round(Math.random() * 10);
function getUID(type4) {
return [type4 || "", base++].join("_");
}
function enableSubTypeDefaulter(target) {
var subTypeDefaulters = {};
target.registerSubTypeDefaulter = function(componentType, defaulter) {
var componentTypeInfo = parseClassType(componentType);
subTypeDefaulters[componentTypeInfo.main] = defaulter;
};
target.determineSubType = function(componentType, option) {
var type4 = option.type;
if (!type4) {
var componentTypeMain = parseClassType(componentType).main;
if (target.hasSubTypes(componentType) && subTypeDefaulters[componentTypeMain]) {
type4 = subTypeDefaulters[componentTypeMain](option);
}
}
return type4;
};
}
function enableTopologicalTravel(entity, dependencyGetter) {
entity.topologicalTravel = function(targetNameList, fullNameList, callback, context) {
if (!targetNameList.length) {
return;
}
var result = makeDepndencyGraph(fullNameList);
var graph = result.graph;
var noEntryList = result.noEntryList;
var targetNameSet = {};
each$f(targetNameList, function(name) {
targetNameSet[name] = true;
});
while (noEntryList.length) {
var currComponentType = noEntryList.pop();
var currVertex = graph[currComponentType];
var isInTargetNameSet = !!targetNameSet[currComponentType];
if (isInTargetNameSet) {
callback.call(context, currComponentType, currVertex.originalDeps.slice());
delete targetNameSet[currComponentType];
}
each$f(currVertex.successor, isInTargetNameSet ? removeEdgeAndAdd : removeEdge);
}
each$f(targetNameSet, function() {
var errMsg = "";
throw new Error(errMsg);
});
function removeEdge(succComponentType) {
graph[succComponentType].entryCount--;
if (graph[succComponentType].entryCount === 0) {
noEntryList.push(succComponentType);
}
}
function removeEdgeAndAdd(succComponentType) {
targetNameSet[succComponentType] = true;
removeEdge(succComponentType);
}
};
function makeDepndencyGraph(fullNameList) {
var graph = {};
var noEntryList = [];
each$f(fullNameList, function(name) {
var thisItem = createDependencyGraphItem(graph, name);
var originalDeps = thisItem.originalDeps = dependencyGetter(name);
var availableDeps = getAvailableDependencies(originalDeps, fullNameList);
thisItem.entryCount = availableDeps.length;
if (thisItem.entryCount === 0) {
noEntryList.push(name);
}
each$f(availableDeps, function(dependentName) {
if (indexOf(thisItem.predecessor, dependentName) < 0) {
thisItem.predecessor.push(dependentName);
}
var thatItem = createDependencyGraphItem(graph, dependentName);
if (indexOf(thatItem.successor, dependentName) < 0) {
thatItem.successor.push(name);
}
});
});
return {
graph,
noEntryList
};
}
function createDependencyGraphItem(graph, name) {
if (!graph[name]) {
graph[name] = {
predecessor: [],
successor: []
};
}
return graph[name];
}
function getAvailableDependencies(originalDeps, fullNameList) {
var availableDeps = [];
each$f(originalDeps, function(dep) {
indexOf(fullNameList, dep) >= 0 && availableDeps.push(dep);
});
return availableDeps;
}
}
function inheritDefaultOption(superOption, subOption) {
return merge(merge({}, superOption, true), subOption, true);
}
const langEN = {
time: {
month: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
monthAbbr: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
dayOfWeek: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
dayOfWeekAbbr: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]
},
legend: {
selector: {
all: "All",
inverse: "Inv"
}
},
toolbox: {
brush: {
title: {
rect: "Box Select",
polygon: "Lasso Select",
lineX: "Horizontally Select",
lineY: "Vertically Select",
keep: "Keep Selections",
clear: "Clear Selections"
}
},
dataView: {
title: "Data View",
lang: ["Data View", "Close", "Refresh"]
},
dataZoom: {
title: {
zoom: "Zoom",
back: "Zoom Reset"
}
},
magicType: {
title: {
line: "Switch to Line Chart",
bar: "Switch to Bar Chart",
stack: "Stack",
tiled: "Tile"
}
},
restore: {
title: "Restore"
},
saveAsImage: {
title: "Save as Image",
lang: ["Right Click to Save Image"]
}
},
series: {
typeNames: {
pie: "Pie chart",
bar: "Bar chart",
line: "Line chart",
scatter: "Scatter plot",
effectScatter: "Ripple scatter plot",
radar: "Radar chart",
tree: "Tree",
treemap: "Treemap",
boxplot: "Boxplot",
candlestick: "Candlestick",
k: "K line chart",
heatmap: "Heat map",
map: "Map",
parallel: "Parallel coordinate map",
lines: "Line graph",
graph: "Relationship graph",
sankey: "Sankey diagram",
funnel: "Funnel chart",
gauge: "Gauge",
pictorialBar: "Pictorial bar",
themeRiver: "Theme River Map",
sunburst: "Sunburst",
custom: "Custom chart",
chart: "Chart"
}
},
aria: {
general: {
withTitle: 'This is a chart about "{title}"',
withoutTitle: "This is a chart"
},
series: {
single: {
prefix: "",
withName: " with type {seriesType} named {seriesName}.",
withoutName: " with type {seriesType}."
},
multiple: {
prefix: ". It consists of {seriesCount} series count.",
withName: " The {seriesId} series is a {seriesType} representing {seriesName}.",
withoutName: " The {seriesId} series is a {seriesType}.",
separator: {
middle: "",
end: ""
}
}
},
data: {
allData: "The data is as follows: ",
partialData: "The first {displayCnt} items are: ",
withName: "the data for {name} is {value}",
withoutName: "{value}",
separator: {
middle: ", ",
end: ". "
}
}
}
};
const langZH = {
time: {
month: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
monthAbbr: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"],
dayOfWeek: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"],
dayOfWeekAbbr: ["日", "一", "二", "三", "四", "五", "六"]
},
legend: {
selector: {
all: "全选",
inverse: "反选"
}
},
toolbox: {
brush: {
title: {
rect: "矩形选择",
polygon: "圈选",
lineX: "横向选择",
lineY: "纵向选择",
keep: "保持选择",
clear: "清除选择"
}
},
dataView: {
title: "数据视图",
lang: ["数据视图", "关闭", "刷新"]
},
dataZoom: {
title: {
zoom: "区域缩放",
back: "区域缩放还原"
}
},
magicType: {
title: {
line: "切换为折线图",
bar: "切换为柱状图",
stack: "切换为堆叠",
tiled: "切换为平铺"
}
},
restore: {
title: "还原"
},
saveAsImage: {
title: "保存为图片",
lang: ["右键另存为图片"]
}
},
series: {
typeNames: {
pie: "饼图",
bar: "柱状图",
line: "折线图",
scatter: "散点图",
effectScatter: "涟漪散点图",
radar: "雷达图",
tree: "树图",
treemap: "矩形树图",
boxplot: "箱型图",
candlestick: "K线图",
k: "K线图",
heatmap: "热力图",
map: "地图",
parallel: "平行坐标图",
lines: "线图",
graph: "关系图",
sankey: "桑基图",
funnel: "漏斗图",
gauge: "仪表盘图",
pictorialBar: "象形柱图",
themeRiver: "主题河流图",
sunburst: "旭日图",
custom: "自定义图表",
chart: "图表"
}
},
aria: {
general: {
withTitle: "这是一个关于“{title}”的图表。",
withoutTitle: "这是一个图表,"
},
series: {
single: {
prefix: "",
withName: "图表类型是{seriesType},表示{seriesName}。",
withoutName: "图表类型是{seriesType}。"
},
multiple: {
prefix: "它由{seriesCount}个图表系列组成。",
withName: "第{seriesId}个系列是一个表示{seriesName}的{seriesType},",
withoutName: "第{seriesId}个系列是一个{seriesType},",
separator: {
middle: ";",
end: "。"
}
}
},
data: {
allData: "其数据是——",
partialData: "其中,前{displayCnt}项是——",
withName: "{name}的数据是{value}",
withoutName: "{value}",
separator: {
middle: ",",
end: ""
}
}
}
};
var LOCALE_ZH = "ZH";
var LOCALE_EN = "EN";
var DEFAULT_LOCALE = LOCALE_EN;
var localeStorage = {};
var localeModels = {};
var SYSTEM_LANG = !env.domSupported ? DEFAULT_LOCALE : function() {
var langStr = (
/* eslint-disable-next-line */
(document.documentElement.lang || navigator.language || navigator.browserLanguage || DEFAULT_LOCALE).toUpperCase()
);
return langStr.indexOf(LOCALE_ZH) > -1 ? LOCALE_ZH : DEFAULT_LOCALE;
}();
function registerLocale(locale2, localeObj) {
locale2 = locale2.toUpperCase();
localeModels[locale2] = new Model(localeObj);
localeStorage[locale2] = localeObj;
}
function createLocaleObject(locale2) {
if (isString$1(locale2)) {
var localeObj = localeStorage[locale2.toUpperCase()] || {};
if (locale2 === LOCALE_ZH || locale2 === LOCALE_EN) {
return clone$4(localeObj);
} else {
return merge(clone$4(localeObj), clone$4(localeStorage[DEFAULT_LOCALE]), false);
}
} else {
return merge(clone$4(locale2), clone$4(localeStorage[DEFAULT_LOCALE]), false);
}
}
function getLocaleModel(lang) {
return localeModels[lang];
}
function getDefaultLocaleModel() {
return localeModels[DEFAULT_LOCALE];
}
registerLocale(LOCALE_EN, langEN);
registerLocale(LOCALE_ZH, langZH);
var ONE_SECOND = 1e3;
var ONE_MINUTE = ONE_SECOND * 60;
var ONE_HOUR = ONE_MINUTE * 60;
var ONE_DAY = ONE_HOUR * 24;
var ONE_YEAR = ONE_DAY * 365;
var defaultLeveledFormatter = {
year: "{yyyy}",
month: "{MMM}",
day: "{d}",
hour: "{HH}:{mm}",
minute: "{HH}:{mm}",
second: "{HH}:{mm}:{ss}",
millisecond: "{HH}:{mm}:{ss} {SSS}",
none: "{yyyy}-{MM}-{dd} {HH}:{mm}:{ss} {SSS}"
};
var fullDayFormatter = "{yyyy}-{MM}-{dd}";
var fullLeveledFormatter = {
year: "{yyyy}",
month: "{yyyy}-{MM}",
day: fullDayFormatter,
hour: fullDayFormatter + " " + defaultLeveledFormatter.hour,
minute: fullDayFormatter + " " + defaultLeveledFormatter.minute,
second: fullDayFormatter + " " + defaultLeveledFormatter.second,
millisecond: defaultLeveledFormatter.none
};
var primaryTimeUnits = ["year", "month", "day", "hour", "minute", "second", "millisecond"];
var timeUnits = ["year", "half-year", "quarter", "month", "week", "half-week", "day", "half-day", "quarter-day", "hour", "minute", "second", "millisecond"];
function pad(str, len2) {
str += "";
return "0000".substr(0, len2 - str.length) + str;
}
function getPrimaryTimeUnit(timeUnit) {
switch (timeUnit) {
case "half-year":
case "quarter":
return "month";
case "week":
case "half-week":
return "day";
case "half-day":
case "quarter-day":
return "hour";
default:
return timeUnit;
}
}
function isPrimaryTimeUnit(timeUnit) {
return timeUnit === getPrimaryTimeUnit(timeUnit);
}
function getDefaultFormatPrecisionOfInterval(timeUnit) {
switch (timeUnit) {
case "year":
case "month":
return "day";
case "millisecond":
return "millisecond";
default:
return "second";
}
}
function format$1(time2, template, isUTC, lang) {
var date4 = parseDate(time2);
var y2 = date4[fullYearGetterName(isUTC)]();
var M2 = date4[monthGetterName(isUTC)]() + 1;
var q2 = Math.floor((M2 - 1) / 3) + 1;
var d2 = date4[dateGetterName(isUTC)]();
var e2 = date4["get" + (isUTC ? "UTC" : "") + "Day"]();
var H2 = date4[hoursGetterName(isUTC)]();
var h2 = (H2 - 1) % 12 + 1;
var m2 = date4[minutesGetterName(isUTC)]();
var s = date4[secondsGetterName(isUTC)]();
var S2 = date4[millisecondsGetterName(isUTC)]();
var a = H2 >= 12 ? "pm" : "am";
var A2 = a.toUpperCase();
var localeModel = lang instanceof Model ? lang : getLocaleModel(lang || SYSTEM_LANG) || getDefaultLocaleModel();
var timeModel = localeModel.getModel("time");
var month = timeModel.get("month");
var monthAbbr = timeModel.get("monthAbbr");
var dayOfWeek = timeModel.get("dayOfWeek");
var dayOfWeekAbbr = timeModel.get("dayOfWeekAbbr");
return (template || "").replace(/{a}/g, a + "").replace(/{A}/g, A2 + "").replace(/{yyyy}/g, y2 + "").replace(/{yy}/g, pad(y2 % 100 + "", 2)).replace(/{Q}/g, q2 + "").replace(/{MMMM}/g, month[M2 - 1]).replace(/{MMM}/g, monthAbbr[M2 - 1]).replace(/{MM}/g, pad(M2, 2)).replace(/{M}/g, M2 + "").replace(/{dd}/g, pad(d2, 2)).replace(/{d}/g, d2 + "").replace(/{eeee}/g, dayOfWeek[e2]).replace(/{ee}/g, dayOfWeekAbbr[e2]).replace(/{e}/g, e2 + "").replace(/{HH}/g, pad(H2, 2)).replace(/{H}/g, H2 + "").replace(/{hh}/g, pad(h2 + "", 2)).replace(/{h}/g, h2 + "").replace(/{mm}/g, pad(m2, 2)).replace(/{m}/g, m2 + "").replace(/{ss}/g, pad(s, 2)).replace(/{s}/g, s + "").replace(/{SSS}/g, pad(S2, 3)).replace(/{S}/g, S2 + "");
}
function leveledFormat(tick, idx, formatter, lang, isUTC) {
var template = null;
if (isString$1(formatter)) {
template = formatter;
} else if (isFunction$1(formatter)) {
template = formatter(tick.value, idx, {
level: tick.level
});
} else {
var defaults$1 = extend({}, defaultLeveledFormatter);
if (tick.level > 0) {
for (var i = 0; i < primaryTimeUnits.length; ++i) {
defaults$1[primaryTimeUnits[i]] = "{primary|" + defaults$1[primaryTimeUnits[i]] + "}";
}
}
var mergedFormatter = formatter ? formatter.inherit === false ? formatter : defaults(formatter, defaults$1) : defaults$1;
var unit2 = getUnitFromValue(tick.value, isUTC);
if (mergedFormatter[unit2]) {
template = mergedFormatter[unit2];
} else if (mergedFormatter.inherit) {
var targetId = timeUnits.indexOf(unit2);
for (var i = targetId - 1; i >= 0; --i) {
if (mergedFormatter[unit2]) {
template = mergedFormatter[unit2];
break;
}
}
template = template || defaults$1.none;
}
if (isArray$1(template)) {
var levelId = tick.level == null ? 0 : tick.level >= 0 ? tick.level : template.length + tick.level;
levelId = Math.min(levelId, template.length - 1);
template = template[levelId];
}
}
return format$1(new Date(tick.value), template, isUTC, lang);
}
function getUnitFromValue(value, isUTC) {
var date4 = parseDate(value);
var M2 = date4[monthGetterName(isUTC)]() + 1;
var d2 = date4[dateGetterName(isUTC)]();
var h2 = date4[hoursGetterName(isUTC)]();
var m2 = date4[minutesGetterName(isUTC)]();
var s = date4[secondsGetterName(isUTC)]();
var S2 = date4[millisecondsGetterName(isUTC)]();
var isSecond = S2 === 0;
var isMinute = isSecond && s === 0;
var isHour = isMinute && m2 === 0;
var isDay = isHour && h2 === 0;
var isMonth = isDay && d2 === 1;
var isYear = isMonth && M2 === 1;
if (isYear) {
return "year";
} else if (isMonth) {
return "month";
} else if (isDay) {
return "day";
} else if (isHour) {
return "hour";
} else if (isMinute) {
return "minute";
} else if (isSecond) {
return "second";
} else {
return "millisecond";
}
}
function getUnitValue(value, unit2, isUTC) {
var date4 = isNumber(value) ? parseDate(value) : value;
unit2 = unit2 || getUnitFromValue(value, isUTC);
switch (unit2) {
case "year":
return date4[fullYearGetterName(isUTC)]();
case "half-year":
return date4[monthGetterName(isUTC)]() >= 6 ? 1 : 0;
case "quarter":
return Math.floor((date4[monthGetterName(isUTC)]() + 1) / 4);
case "month":
return date4[monthGetterName(isUTC)]();
case "day":
return date4[dateGetterName(isUTC)]();
case "half-day":
return date4[hoursGetterName(isUTC)]() / 24;
case "hour":
return date4[hoursGetterName(isUTC)]();
case "minute":
return date4[minutesGetterName(isUTC)]();
case "second":
return date4[secondsGetterName(isUTC)]();
case "millisecond":
return date4[millisecondsGetterName(isUTC)]();
}
}
function fullYearGetterName(isUTC) {
return isUTC ? "getUTCFullYear" : "getFullYear";
}
function monthGetterName(isUTC) {
return isUTC ? "getUTCMonth" : "getMonth";
}
function dateGetterName(isUTC) {
return isUTC ? "getUTCDate" : "getDate";
}
function hoursGetterName(isUTC) {
return isUTC ? "getUTCHours" : "getHours";
}
function minutesGetterName(isUTC) {
return isUTC ? "getUTCMinutes" : "getMinutes";
}
function secondsGetterName(isUTC) {
return isUTC ? "getUTCSeconds" : "getSeconds";
}
function millisecondsGetterName(isUTC) {
return isUTC ? "getUTCMilliseconds" : "getMilliseconds";
}
function fullYearSetterName(isUTC) {
return isUTC ? "setUTCFullYear" : "setFullYear";
}
function monthSetterName(isUTC) {
return isUTC ? "setUTCMonth" : "setMonth";
}
function dateSetterName(isUTC) {
return isUTC ? "setUTCDate" : "setDate";
}
function hoursSetterName(isUTC) {
return isUTC ? "setUTCHours" : "setHours";
}
function minutesSetterName(isUTC) {
return isUTC ? "setUTCMinutes" : "setMinutes";
}
function secondsSetterName(isUTC) {
return isUTC ? "setUTCSeconds" : "setSeconds";
}
function millisecondsSetterName(isUTC) {
return isUTC ? "setUTCMilliseconds" : "setMilliseconds";
}
function getTextRect(text, font, align, verticalAlign, padding, rich, truncate, lineHeight) {
var textEl = new ZRText({
style: {
text,
font,
align,
verticalAlign,
padding,
rich,
overflow: truncate ? "truncate" : null,
lineHeight
}
});
return textEl.getBoundingRect();
}
function addCommas(x2) {
if (!isNumeric(x2)) {
return isString$1(x2) ? x2 : "-";
}
var parts = (x2 + "").split(".");
return parts[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g, "$1,") + (parts.length > 1 ? "." + parts[1] : "");
}
function toCamelCase(str, upperCaseFirst) {
str = (str || "").toLowerCase().replace(/-(.)/g, function(match2, group1) {
return group1.toUpperCase();
});
if (upperCaseFirst && str) {
str = str.charAt(0).toUpperCase() + str.slice(1);
}
return str;
}
var normalizeCssArray = normalizeCssArray$1;
function makeValueReadable(value, valueType, useUTC) {
var USER_READABLE_DEFUALT_TIME_PATTERN = "{yyyy}-{MM}-{dd} {HH}:{mm}:{ss}";
function stringToUserReadable(str) {
return str && trim$1(str) ? str : "-";
}
function isNumberUserReadable(num) {
return !!(num != null && !isNaN(num) && isFinite(num));
}
var isTypeTime = valueType === "time";
var isValueDate = value instanceof Date;
if (isTypeTime || isValueDate) {
var date4 = isTypeTime ? parseDate(value) : value;
if (!isNaN(+date4)) {
return format$1(date4, USER_READABLE_DEFUALT_TIME_PATTERN, useUTC);
} else if (isValueDate) {
return "-";
}
}
if (valueType === "ordinal") {
return isStringSafe(value) ? stringToUserReadable(value) : isNumber(value) ? isNumberUserReadable(value) ? value + "" : "-" : "-";
}
var numericResult = numericToNumber(value);
return isNumberUserReadable(numericResult) ? addCommas(numericResult) : isStringSafe(value) ? stringToUserReadable(value) : typeof value === "boolean" ? value + "" : "-";
}
var TPL_VAR_ALIAS = ["a", "b", "c", "d", "e", "f", "g"];
var wrapVar = function(varName, seriesIdx) {
return "{" + varName + (seriesIdx == null ? "" : seriesIdx) + "}";
};
function formatTpl(tpl, paramsList, encode) {
if (!isArray$1(paramsList)) {
paramsList = [paramsList];
}
var seriesLen = paramsList.length;
if (!seriesLen) {
return "";
}
var $vars = paramsList[0].$vars || [];
for (var i = 0; i < $vars.length; i++) {
var alias = TPL_VAR_ALIAS[i];
tpl = tpl.replace(wrapVar(alias), wrapVar(alias, 0));
}
for (var seriesIdx = 0; seriesIdx < seriesLen; seriesIdx++) {
for (var k2 = 0; k2 < $vars.length; k2++) {
var val = paramsList[seriesIdx][$vars[k2]];
tpl = tpl.replace(wrapVar(TPL_VAR_ALIAS[k2], seriesIdx), encode ? encodeHTML(val) : val);
}
}
return tpl;
}
function formatTplSimple(tpl, param, encode) {
each$f(param, function(value, key) {
tpl = tpl.replace("{" + key + "}", value);
});
return tpl;
}
function getTooltipMarker(inOpt, extraCssText) {
var opt = isString$1(inOpt) ? {
color: inOpt,
extraCssText
} : inOpt || {};
var color2 = opt.color;
var type4 = opt.type;
extraCssText = opt.extraCssText;
var renderMode = opt.renderMode || "html";
if (!color2) {
return "";
}
if (renderMode === "html") {
return type4 === "subItem" ? '<span style="display:inline-block;vertical-align:middle;margin-right:8px;margin-left:3px;border-radius:4px;width:4px;height:4px;background-color:' + encodeHTML(color2) + ";" + (extraCssText || "") + '"></span>' : '<span style="display:inline-block;margin-right:4px;border-radius:10px;width:10px;height:10px;background-color:' + encodeHTML(color2) + ";" + (extraCssText || "") + '"></span>';
} else {
var markerId = opt.markerId || "markerX";
return {
renderMode,
content: "{" + markerId + "|} ",
style: type4 === "subItem" ? {
width: 4,
height: 4,
borderRadius: 2,
backgroundColor: color2
} : {
width: 10,
height: 10,
borderRadius: 5,
backgroundColor: color2
}
};
}
}
function formatTime$1(tpl, value, isUTC) {
if (tpl === "week" || tpl === "month" || tpl === "quarter" || tpl === "half-year" || tpl === "year") {
tpl = "MM-dd\nyyyy";
}
var date4 = parseDate(value);
var getUTC = isUTC ? "getUTC" : "get";
var y2 = date4[getUTC + "FullYear"]();
var M2 = date4[getUTC + "Month"]() + 1;
var d2 = date4[getUTC + "Date"]();
var h2 = date4[getUTC + "Hours"]();
var m2 = date4[getUTC + "Minutes"]();
var s = date4[getUTC + "Seconds"]();
var S2 = date4[getUTC + "Milliseconds"]();
tpl = tpl.replace("MM", pad(M2, 2)).replace("M", M2).replace("yyyy", y2).replace("yy", pad(y2 % 100 + "", 2)).replace("dd", pad(d2, 2)).replace("d", d2).replace("hh", pad(h2, 2)).replace("h", h2).replace("mm", pad(m2, 2)).replace("m", m2).replace("ss", pad(s, 2)).replace("s", s).replace("SSS", pad(S2, 3));
return tpl;
}
function capitalFirst(str) {
return str ? str.charAt(0).toUpperCase() + str.substr(1) : str;
}
function convertToColorString(color2, defaultColor) {
defaultColor = defaultColor || "transparent";
return isString$1(color2) ? color2 : isObject$3(color2) ? color2.colorStops && (color2.colorStops[0] || {}).color || defaultColor : defaultColor;
}
function windowOpen(link, target) {
if (target === "_blank" || target === "blank") {
var blank = window.open();
blank.opener = null;
blank.location.href = link;
} else {
window.open(link, target);
}
}
var each$e = each$f;
var LOCATION_PARAMS = ["left", "right", "top", "bottom", "width", "height"];
var HV_NAMES = [["width", "left", "right"], ["height", "top", "bottom"]];
function boxLayout(orient, group, gap, maxWidth, maxHeight) {
var x2 = 0;
var y2 = 0;
if (maxWidth == null) {
maxWidth = Infinity;
}
if (maxHeight == null) {
maxHeight = Infinity;
}
var currentLineMaxSize = 0;
group.eachChild(function(child, idx) {
var rect = child.getBoundingRect();
var nextChild = group.childAt(idx + 1);
var nextChildRect = nextChild && nextChild.getBoundingRect();
var nextX;
var nextY;
if (orient === "horizontal") {
var moveX = rect.width + (nextChildRect ? -nextChildRect.x + rect.x : 0);
nextX = x2 + moveX;
if (nextX > maxWidth || child.newline) {
x2 = 0;
nextX = moveX;
y2 += currentLineMaxSize + gap;
currentLineMaxSize = rect.height;
} else {
currentLineMaxSize = Math.max(currentLineMaxSize, rect.height);
}
} else {
var moveY = rect.height + (nextChildRect ? -nextChildRect.y + rect.y : 0);
nextY = y2 + moveY;
if (nextY > maxHeight || child.newline) {
x2 += currentLineMaxSize + gap;
y2 = 0;
nextY = moveY;
currentLineMaxSize = rect.width;
} else {
currentLineMaxSize = Math.max(currentLineMaxSize, rect.width);
}
}
if (child.newline) {
return;
}
child.x = x2;
child.y = y2;
child.markRedraw();
orient === "horizontal" ? x2 = nextX + gap : y2 = nextY + gap;
});
}
var box = boxLayout;
curry$1(boxLayout, "vertical");
curry$1(boxLayout, "horizontal");
function getAvailableSize(positionInfo, containerRect, margin) {
var containerWidth = containerRect.width;
var containerHeight = containerRect.height;
var x2 = parsePercent(positionInfo.left, containerWidth);
var y2 = parsePercent(positionInfo.top, containerHeight);
var x22 = parsePercent(positionInfo.right, containerWidth);
var y22 = parsePercent(positionInfo.bottom, containerHeight);
(isNaN(x2) || isNaN(parseFloat(positionInfo.left))) && (x2 = 0);
(isNaN(x22) || isNaN(parseFloat(positionInfo.right))) && (x22 = containerWidth);
(isNaN(y2) || isNaN(parseFloat(positionInfo.top))) && (y2 = 0);
(isNaN(y22) || isNaN(parseFloat(positionInfo.bottom))) && (y22 = containerHeight);
margin = normalizeCssArray(margin || 0);
return {
width: Math.max(x22 - x2 - margin[1] - margin[3], 0),
height: Math.max(y22 - y2 - margin[0] - margin[2], 0)
};
}
function getLayoutRect(positionInfo, containerRect, margin) {
margin = normalizeCssArray(margin || 0);
var containerWidth = containerRect.width;
var containerHeight = containerRect.height;
var left = parsePercent(positionInfo.left, containerWidth);
var top = parsePercent(positionInfo.top, containerHeight);
var right = parsePercent(positionInfo.right, containerWidth);
var bottom = parsePercent(positionInfo.bottom, containerHeight);
var width = parsePercent(positionInfo.width, containerWidth);
var height = parsePercent(positionInfo.height, containerHeight);
var verticalMargin = margin[2] + margin[0];
var horizontalMargin = margin[1] + margin[3];
var aspect = positionInfo.aspect;
if (isNaN(width)) {
width = containerWidth - right - horizontalMargin - left;
}
if (isNaN(height)) {
height = containerHeight - bottom - verticalMargin - top;
}
if (aspect != null) {
if (isNaN(width) && isNaN(height)) {
if (aspect > containerWidth / containerHeight) {
width = containerWidth * 0.8;
} else {
height = containerHeight * 0.8;
}
}
if (isNaN(width)) {
width = aspect * height;
}
if (isNaN(height)) {
height = width / aspect;
}
}
if (isNaN(left)) {
left = containerWidth - right - width - horizontalMargin;
}
if (isNaN(top)) {
top = containerHeight - bottom - height - verticalMargin;
}
switch (positionInfo.left || positionInfo.right) {
case "center":
left = containerWidth / 2 - width / 2 - margin[3];
break;
case "right":
left = containerWidth - width - horizontalMargin;
break;
}
switch (positionInfo.top || positionInfo.bottom) {
case "middle":
case "center":
top = containerHeight / 2 - height / 2 - margin[0];
break;
case "bottom":
top = containerHeight - height - verticalMargin;
break;
}
left = left || 0;
top = top || 0;
if (isNaN(width)) {
width = containerWidth - horizontalMargin - left - (right || 0);
}
if (isNaN(height)) {
height = containerHeight - verticalMargin - top - (bottom || 0);
}
var rect = new BoundingRect(left + margin[3], top + margin[0], width, height);
rect.margin = margin;
return rect;
}
function positionElement(el2, positionInfo, containerRect, margin, opt, out2) {
var h2 = !opt || !opt.hv || opt.hv[0];
var v4 = !opt || !opt.hv || opt.hv[1];
var boundingMode = opt && opt.boundingMode || "all";
out2 = out2 || el2;
out2.x = el2.x;
out2.y = el2.y;
if (!h2 && !v4) {
return false;
}
var rect;
if (boundingMode === "raw") {
rect = el2.type === "group" ? new BoundingRect(0, 0, +positionInfo.width || 0, +positionInfo.height || 0) : el2.getBoundingRect();
} else {
rect = el2.getBoundingRect();
if (el2.needLocalTransform()) {
var transform2 = el2.getLocalTransform();
rect = rect.clone();
rect.applyTransform(transform2);
}
}
var layoutRect = getLayoutRect(defaults({
width: rect.width,
height: rect.height
}, positionInfo), containerRect, margin);
var dx = h2 ? layoutRect.x - rect.x : 0;
var dy = v4 ? layoutRect.y - rect.y : 0;
if (boundingMode === "raw") {
out2.x = dx;
out2.y = dy;
} else {
out2.x += dx;
out2.y += dy;
}
if (out2 === el2) {
el2.markRedraw();
}
return true;
}
function sizeCalculable(option, hvIdx) {
return option[HV_NAMES[hvIdx][0]] != null || option[HV_NAMES[hvIdx][1]] != null && option[HV_NAMES[hvIdx][2]] != null;
}
function fetchLayoutMode(ins) {
var layoutMode = ins.layoutMode || ins.constructor.layoutMode;
return isObject$3(layoutMode) ? layoutMode : layoutMode ? {
type: layoutMode
} : null;
}
function mergeLayoutParam(targetOption, newOption, opt) {
var ignoreSize = opt && opt.ignoreSize;
!isArray$1(ignoreSize) && (ignoreSize = [ignoreSize, ignoreSize]);
var hResult = merge2(HV_NAMES[0], 0);
var vResult = merge2(HV_NAMES[1], 1);
copy2(HV_NAMES[0], targetOption, hResult);
copy2(HV_NAMES[1], targetOption, vResult);
function merge2(names2, hvIdx) {
var newParams = {};
var newValueCount = 0;
var merged = {};
var mergedValueCount = 0;
var enoughParamNumber = 2;
each$e(names2, function(name) {
merged[name] = targetOption[name];
});
each$e(names2, function(name) {
hasProp(newOption, name) && (newParams[name] = merged[name] = newOption[name]);
hasValue2(newParams, name) && newValueCount++;
hasValue2(merged, name) && mergedValueCount++;
});
if (ignoreSize[hvIdx]) {
if (hasValue2(newOption, names2[1])) {
merged[names2[2]] = null;
} else if (hasValue2(newOption, names2[2])) {
merged[names2[1]] = null;
}
return merged;
}
if (mergedValueCount === enoughParamNumber || !newValueCount) {
return merged;
} else if (newValueCount >= enoughParamNumber) {
return newParams;
} else {
for (var i = 0; i < names2.length; i++) {
var name_1 = names2[i];
if (!hasProp(newParams, name_1) && hasProp(targetOption, name_1)) {
newParams[name_1] = targetOption[name_1];
break;
}
}
return newParams;
}
}
function hasProp(obj, name) {
return obj.hasOwnProperty(name);
}
function hasValue2(obj, name) {
return obj[name] != null && obj[name] !== "auto";
}
function copy2(names2, target, source) {
each$e(names2, function(name) {
target[name] = source[name];
});
}
}
function getLayoutParams(source) {
return copyLayoutParams({}, source);
}
function copyLayoutParams(target, source) {
source && target && each$e(LOCATION_PARAMS, function(name) {
source.hasOwnProperty(name) && (target[name] = source[name]);
});
return target;
}
var inner$l = makeInner();
var ComponentModel = (
/** @class */
function(_super) {
__extends(ComponentModel2, _super);
function ComponentModel2(option, parentModel, ecModel) {
var _this = _super.call(this, option, parentModel, ecModel) || this;
_this.uid = getUID("ec_cpt_model");
return _this;
}
ComponentModel2.prototype.init = function(option, parentModel, ecModel) {
this.mergeDefaultAndTheme(option, ecModel);
};
ComponentModel2.prototype.mergeDefaultAndTheme = function(option, ecModel) {
var layoutMode = fetchLayoutMode(this);
var inputPositionParams = layoutMode ? getLayoutParams(option) : {};
var themeModel = ecModel.getTheme();
merge(option, themeModel.get(this.mainType));
merge(option, this.getDefaultOption());
if (layoutMode) {
mergeLayoutParam(option, inputPositionParams, layoutMode);
}
};
ComponentModel2.prototype.mergeOption = function(option, ecModel) {
merge(this.option, option, true);
var layoutMode = fetchLayoutMode(this);
if (layoutMode) {
mergeLayoutParam(this.option, option, layoutMode);
}
};
ComponentModel2.prototype.optionUpdated = function(newCptOption, isInit) {
};
ComponentModel2.prototype.getDefaultOption = function() {
var ctor = this.constructor;
if (!isExtendedClass(ctor)) {
return ctor.defaultOption;
}
var fields = inner$l(this);
if (!fields.defaultOption) {
var optList = [];
var clz = ctor;
while (clz) {
var opt = clz.prototype.defaultOption;
opt && optList.push(opt);
clz = clz.superClass;
}
var defaultOption2 = {};
for (var i = optList.length - 1; i >= 0; i--) {
defaultOption2 = merge(defaultOption2, optList[i], true);
}
fields.defaultOption = defaultOption2;
}
return fields.defaultOption;
};
ComponentModel2.prototype.getReferringComponents = function(mainType, opt) {
var indexKey = mainType + "Index";
var idKey = mainType + "Id";
return queryReferringComponents(this.ecModel, mainType, {
index: this.get(indexKey, true),
id: this.get(idKey, true)
}, opt);
};
ComponentModel2.prototype.getBoxLayoutParams = function() {
var boxLayoutModel = this;
return {
left: boxLayoutModel.get("left"),
top: boxLayoutModel.get("top"),
right: boxLayoutModel.get("right"),
bottom: boxLayoutModel.get("bottom"),
width: boxLayoutModel.get("width"),
height: boxLayoutModel.get("height")
};
};
ComponentModel2.prototype.getZLevelKey = function() {
return "";
};
ComponentModel2.prototype.setZLevel = function(zlevel) {
this.option.zlevel = zlevel;
};
ComponentModel2.protoInitialize = function() {
var proto2 = ComponentModel2.prototype;
proto2.type = "component";
proto2.id = "";
proto2.name = "";
proto2.mainType = "";
proto2.subType = "";
proto2.componentIndex = 0;
}();
return ComponentModel2;
}(Model)
);
mountExtend(ComponentModel, Model);
enableClassManagement(ComponentModel);
enableSubTypeDefaulter(ComponentModel);
enableTopologicalTravel(ComponentModel, getDependencies);
function getDependencies(componentType) {
var deps = [];
each$f(ComponentModel.getClassesByMainType(componentType), function(clz) {
deps = deps.concat(clz.dependencies || clz.prototype.dependencies || []);
});
deps = map$1(deps, function(type4) {
return parseClassType(type4).main;
});
if (componentType !== "dataset" && indexOf(deps, "dataset") <= 0) {
deps.unshift("dataset");
}
return deps;
}
var platform = "";
if (typeof navigator !== "undefined") {
platform = navigator.platform || "";
}
var decalColor = "rgba(0, 0, 0, 0.2)";
const globalDefault = {
darkMode: "auto",
// backgroundColor: 'rgba(0,0,0,0)',
colorBy: "series",
color: ["#5470c6", "#91cc75", "#fac858", "#ee6666", "#73c0de", "#3ba272", "#fc8452", "#9a60b4", "#ea7ccc"],
gradientColor: ["#f6efa6", "#d88273", "#bf444c"],
aria: {
decal: {
decals: [{
color: decalColor,
dashArrayX: [1, 0],
dashArrayY: [2, 5],
symbolSize: 1,
rotation: Math.PI / 6
}, {
color: decalColor,
symbol: "circle",
dashArrayX: [[8, 8], [0, 8, 8, 0]],
dashArrayY: [6, 0],
symbolSize: 0.8
}, {
color: decalColor,
dashArrayX: [1, 0],
dashArrayY: [4, 3],
rotation: -Math.PI / 4
}, {
color: decalColor,
dashArrayX: [[6, 6], [0, 6, 6, 0]],
dashArrayY: [6, 0]
}, {
color: decalColor,
dashArrayX: [[1, 0], [1, 6]],
dashArrayY: [1, 0, 6, 0],
rotation: Math.PI / 4
}, {
color: decalColor,
symbol: "triangle",
dashArrayX: [[9, 9], [0, 9, 9, 0]],
dashArrayY: [7, 2],
symbolSize: 0.75
}]
}
},
// If xAxis and yAxis declared, grid is created by default.
// grid: {},
textStyle: {
// color: '#000',
// decoration: 'none',
// PENDING
fontFamily: platform.match(/^Win/) ? "Microsoft YaHei" : "sans-serif",
// fontFamily: 'Arial, Verdana, sans-serif',
fontSize: 12,
fontStyle: "normal",
fontWeight: "normal"
},
// http://blogs.adobe.com/webplatform/2014/02/24/using-blend-modes-in-html-canvas/
// https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation
// Default is source-over
blendMode: null,
stateAnimation: {
duration: 300,
easing: "cubicOut"
},
animation: "auto",
animationDuration: 1e3,
animationDurationUpdate: 500,
animationEasing: "cubicInOut",
animationEasingUpdate: "cubicInOut",
animationThreshold: 2e3,
// Configuration for progressive/incremental rendering
progressiveThreshold: 3e3,
progressive: 400,
// Threshold of if use single hover layer to optimize.
// It is recommended that `hoverLayerThreshold` is equivalent to or less than
// `progressiveThreshold`, otherwise hover will cause restart of progressive,
// which is unexpected.
// see example <echarts/test/heatmap-large.html>.
hoverLayerThreshold: 3e3,
// See: module:echarts/scale/Time
useUTC: false
};
var VISUAL_DIMENSIONS = createHashMap(["tooltip", "label", "itemName", "itemId", "itemGroupId", "itemChildGroupId", "seriesName"]);
var SOURCE_FORMAT_ORIGINAL = "original";
var SOURCE_FORMAT_ARRAY_ROWS = "arrayRows";
var SOURCE_FORMAT_OBJECT_ROWS = "objectRows";
var SOURCE_FORMAT_KEYED_COLUMNS = "keyedColumns";
var SOURCE_FORMAT_TYPED_ARRAY = "typedArray";
var SOURCE_FORMAT_UNKNOWN = "unknown";
var SERIES_LAYOUT_BY_COLUMN = "column";
var SERIES_LAYOUT_BY_ROW = "row";
var BE_ORDINAL = {
Must: 1,
Might: 2,
Not: 3
// Other cases
};
var innerGlobalModel = makeInner();
function resetSourceDefaulter(ecModel) {
innerGlobalModel(ecModel).datasetMap = createHashMap();
}
function makeSeriesEncodeForAxisCoordSys(coordDimensions, seriesModel, source) {
var encode = {};
var datasetModel = querySeriesUpstreamDatasetModel(seriesModel);
if (!datasetModel || !coordDimensions) {
return encode;
}
var encodeItemName = [];
var encodeSeriesName = [];
var ecModel = seriesModel.ecModel;
var datasetMap = innerGlobalModel(ecModel).datasetMap;
var key = datasetModel.uid + "_" + source.seriesLayoutBy;
var baseCategoryDimIndex;
var categoryWayValueDimStart;
coordDimensions = coordDimensions.slice();
each$f(coordDimensions, function(coordDimInfoLoose, coordDimIdx) {
var coordDimInfo = isObject$3(coordDimInfoLoose) ? coordDimInfoLoose : coordDimensions[coordDimIdx] = {
name: coordDimInfoLoose
};
if (coordDimInfo.type === "ordinal" && baseCategoryDimIndex == null) {
baseCategoryDimIndex = coordDimIdx;
categoryWayValueDimStart = getDataDimCountOnCoordDim(coordDimInfo);
}
encode[coordDimInfo.name] = [];
});
var datasetRecord = datasetMap.get(key) || datasetMap.set(key, {
categoryWayDim: categoryWayValueDimStart,
valueWayDim: 0
});
each$f(coordDimensions, function(coordDimInfo, coordDimIdx) {
var coordDimName = coordDimInfo.name;
var count2 = getDataDimCountOnCoordDim(coordDimInfo);
if (baseCategoryDimIndex == null) {
var start2 = datasetRecord.valueWayDim;
pushDim(encode[coordDimName], start2, count2);
pushDim(encodeSeriesName, start2, count2);
datasetRecord.valueWayDim += count2;
} else if (baseCategoryDimIndex === coordDimIdx) {
pushDim(encode[coordDimName], 0, count2);
pushDim(encodeItemName, 0, count2);
} else {
var start2 = datasetRecord.categoryWayDim;
pushDim(encode[coordDimName], start2, count2);
pushDim(encodeSeriesName, start2, count2);
datasetRecord.categoryWayDim += count2;
}
});
function pushDim(dimIdxArr, idxFrom, idxCount) {
for (var i = 0; i < idxCount; i++) {
dimIdxArr.push(idxFrom + i);
}
}
function getDataDimCountOnCoordDim(coordDimInfo) {
var dimsDef = coordDimInfo.dimsDef;
return dimsDef ? dimsDef.length : 1;
}
encodeItemName.length && (encode.itemName = encodeItemName);
encodeSeriesName.length && (encode.seriesName = encodeSeriesName);
return encode;
}
function makeSeriesEncodeForNameBased(seriesModel, source, dimCount) {
var encode = {};
var datasetModel = querySeriesUpstreamDatasetModel(seriesModel);
if (!datasetModel) {
return encode;
}
var sourceFormat = source.sourceFormat;
var dimensionsDefine = source.dimensionsDefine;
var potentialNameDimIndex;
if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS || sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {
each$f(dimensionsDefine, function(dim, idx) {
if ((isObject$3(dim) ? dim.name : dim) === "name") {
potentialNameDimIndex = idx;
}
});
}
var idxResult = function() {
var idxRes0 = {};
var idxRes1 = {};
var guessRecords = [];
for (var i = 0, len2 = Math.min(5, dimCount); i < len2; i++) {
var guessResult = doGuessOrdinal(source.data, sourceFormat, source.seriesLayoutBy, dimensionsDefine, source.startIndex, i);
guessRecords.push(guessResult);
var isPureNumber = guessResult === BE_ORDINAL.Not;
if (isPureNumber && idxRes0.v == null && i !== potentialNameDimIndex) {
idxRes0.v = i;
}
if (idxRes0.n == null || idxRes0.n === idxRes0.v || !isPureNumber && guessRecords[idxRes0.n] === BE_ORDINAL.Not) {
idxRes0.n = i;
}
if (fulfilled(idxRes0) && guessRecords[idxRes0.n] !== BE_ORDINAL.Not) {
return idxRes0;
}
if (!isPureNumber) {
if (guessResult === BE_ORDINAL.Might && idxRes1.v == null && i !== potentialNameDimIndex) {
idxRes1.v = i;
}
if (idxRes1.n == null || idxRes1.n === idxRes1.v) {
idxRes1.n = i;
}
}
}
function fulfilled(idxResult2) {
return idxResult2.v != null && idxResult2.n != null;
}
return fulfilled(idxRes0) ? idxRes0 : fulfilled(idxRes1) ? idxRes1 : null;
}();
if (idxResult) {
encode.value = [idxResult.v];
var nameDimIndex = potentialNameDimIndex != null ? potentialNameDimIndex : idxResult.n;
encode.itemName = [nameDimIndex];
encode.seriesName = [nameDimIndex];
}
return encode;
}
function querySeriesUpstreamDatasetModel(seriesModel) {
var thisData = seriesModel.get("data", true);
if (!thisData) {
return queryReferringComponents(seriesModel.ecModel, "dataset", {
index: seriesModel.get("datasetIndex", true),
id: seriesModel.get("datasetId", true)
}, SINGLE_REFERRING).models[0];
}
}
function queryDatasetUpstreamDatasetModels(datasetModel) {
if (!datasetModel.get("transform", true) && !datasetModel.get("fromTransformResult", true)) {
return [];
}
return queryReferringComponents(datasetModel.ecModel, "dataset", {
index: datasetModel.get("fromDatasetIndex", true),
id: datasetModel.get("fromDatasetId", true)
}, SINGLE_REFERRING).models;
}
function guessOrdinal(source, dimIndex) {
return doGuessOrdinal(source.data, source.sourceFormat, source.seriesLayoutBy, source.dimensionsDefine, source.startIndex, dimIndex);
}
function doGuessOrdinal(data, sourceFormat, seriesLayoutBy, dimensionsDefine, startIndex, dimIndex) {
var result;
var maxLoop = 5;
if (isTypedArray(data)) {
return BE_ORDINAL.Not;
}
var dimName;
var dimType;
if (dimensionsDefine) {
var dimDefItem = dimensionsDefine[dimIndex];
if (isObject$3(dimDefItem)) {
dimName = dimDefItem.name;
dimType = dimDefItem.type;
} else if (isString$1(dimDefItem)) {
dimName = dimDefItem;
}
}
if (dimType != null) {
return dimType === "ordinal" ? BE_ORDINAL.Must : BE_ORDINAL.Not;
}
if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {
var dataArrayRows = data;
if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) {
var sample = dataArrayRows[dimIndex];
for (var i = 0; i < (sample || []).length && i < maxLoop; i++) {
if ((result = detectValue(sample[startIndex + i])) != null) {
return result;
}
}
} else {
for (var i = 0; i < dataArrayRows.length && i < maxLoop; i++) {
var row = dataArrayRows[startIndex + i];
if (row && (result = detectValue(row[dimIndex])) != null) {
return result;
}
}
}
} else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {
var dataObjectRows = data;
if (!dimName) {
return BE_ORDINAL.Not;
}
for (var i = 0; i < dataObjectRows.length && i < maxLoop; i++) {
var item = dataObjectRows[i];
if (item && (result = detectValue(item[dimName])) != null) {
return result;
}
}
} else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {
var dataKeyedColumns = data;
if (!dimName) {
return BE_ORDINAL.Not;
}
var sample = dataKeyedColumns[dimName];
if (!sample || isTypedArray(sample)) {
return BE_ORDINAL.Not;
}
for (var i = 0; i < sample.length && i < maxLoop; i++) {
if ((result = detectValue(sample[i])) != null) {
return result;
}
}
} else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {
var dataOriginal = data;
for (var i = 0; i < dataOriginal.length && i < maxLoop; i++) {
var item = dataOriginal[i];
var val = getDataItemValue(item);
if (!isArray$1(val)) {
return BE_ORDINAL.Not;
}
if ((result = detectValue(val[dimIndex])) != null) {
return result;
}
}
}
function detectValue(val2) {
var beStr = isString$1(val2);
if (val2 != null && Number.isFinite(Number(val2)) && val2 !== "") {
return beStr ? BE_ORDINAL.Might : BE_ORDINAL.Not;
} else if (beStr && val2 !== "-") {
return BE_ORDINAL.Must;
}
}
return BE_ORDINAL.Not;
}
var internalOptionCreatorMap = createHashMap();
function registerInternalOptionCreator(mainType, creator) {
assert(internalOptionCreatorMap.get(mainType) == null && creator);
internalOptionCreatorMap.set(mainType, creator);
}
function concatInternalOptions(ecModel, mainType, newCmptOptionList) {
var internalOptionCreator = internalOptionCreatorMap.get(mainType);
if (!internalOptionCreator) {
return newCmptOptionList;
}
var internalOptions = internalOptionCreator(ecModel);
if (!internalOptions) {
return newCmptOptionList;
}
return newCmptOptionList.concat(internalOptions);
}
var innerColor = makeInner();
var innerDecal = makeInner();
var PaletteMixin = (
/** @class */
function() {
function PaletteMixin2() {
}
PaletteMixin2.prototype.getColorFromPalette = function(name, scope, requestNum) {
var defaultPalette = normalizeToArray(this.get("color", true));
var layeredPalette = this.get("colorLayer", true);
return getFromPalette(this, innerColor, defaultPalette, layeredPalette, name, scope, requestNum);
};
PaletteMixin2.prototype.clearColorPalette = function() {
clearPalette(this, innerColor);
};
return PaletteMixin2;
}()
);
function getDecalFromPalette(ecModel, name, scope, requestNum) {
var defaultDecals = normalizeToArray(ecModel.get(["aria", "decal", "decals"]));
return getFromPalette(ecModel, innerDecal, defaultDecals, null, name, scope, requestNum);
}
function getNearestPalette(palettes, requestColorNum) {
var paletteNum = palettes.length;
for (var i = 0; i < paletteNum; i++) {
if (palettes[i].length > requestColorNum) {
return palettes[i];
}
}
return palettes[paletteNum - 1];
}
function getFromPalette(that, inner2, defaultPalette, layeredPalette, name, scope, requestNum) {
scope = scope || that;
var scopeFields = inner2(scope);
var paletteIdx = scopeFields.paletteIdx || 0;
var paletteNameMap = scopeFields.paletteNameMap = scopeFields.paletteNameMap || {};
if (paletteNameMap.hasOwnProperty(name)) {
return paletteNameMap[name];
}
var palette = requestNum == null || !layeredPalette ? defaultPalette : getNearestPalette(layeredPalette, requestNum);
palette = palette || defaultPalette;
if (!palette || !palette.length) {
return;
}
var pickedPaletteItem = palette[paletteIdx];
if (name) {
paletteNameMap[name] = pickedPaletteItem;
}
scopeFields.paletteIdx = (paletteIdx + 1) % palette.length;
return pickedPaletteItem;
}
function clearPalette(that, inner2) {
inner2(that).paletteIdx = 0;
inner2(that).paletteNameMap = {};
}
var reCreateSeriesIndices;
var assertSeriesInitialized;
var initBase;
var OPTION_INNER_KEY = "\0_ec_inner";
var OPTION_INNER_VALUE = 1;
var GlobalModel = (
/** @class */
function(_super) {
__extends(GlobalModel2, _super);
function GlobalModel2() {
return _super !== null && _super.apply(this, arguments) || this;
}
GlobalModel2.prototype.init = function(option, parentModel, ecModel, theme2, locale2, optionManager) {
theme2 = theme2 || {};
this.option = null;
this._theme = new Model(theme2);
this._locale = new Model(locale2);
this._optionManager = optionManager;
};
GlobalModel2.prototype.setOption = function(option, opts, optionPreprocessorFuncs2) {
var innerOpt = normalizeSetOptionInput(opts);
this._optionManager.setOption(option, optionPreprocessorFuncs2, innerOpt);
this._resetOption(null, innerOpt);
};
GlobalModel2.prototype.resetOption = function(type4, opt) {
return this._resetOption(type4, normalizeSetOptionInput(opt));
};
GlobalModel2.prototype._resetOption = function(type4, opt) {
var optionChanged = false;
var optionManager = this._optionManager;
if (!type4 || type4 === "recreate") {
var baseOption = optionManager.mountOption(type4 === "recreate");
if (!this.option || type4 === "recreate") {
initBase(this, baseOption);
} else {
this.restoreData();
this._mergeOption(baseOption, opt);
}
optionChanged = true;
}
if (type4 === "timeline" || type4 === "media") {
this.restoreData();
}
if (!type4 || type4 === "recreate" || type4 === "timeline") {
var timelineOption = optionManager.getTimelineOption(this);
if (timelineOption) {
optionChanged = true;
this._mergeOption(timelineOption, opt);
}
}
if (!type4 || type4 === "recreate" || type4 === "media") {
var mediaOptions = optionManager.getMediaOption(this);
if (mediaOptions.length) {
each$f(mediaOptions, function(mediaOption) {
optionChanged = true;
this._mergeOption(mediaOption, opt);
}, this);
}
}
return optionChanged;
};
GlobalModel2.prototype.mergeOption = function(option) {
this._mergeOption(option, null);
};
GlobalModel2.prototype._mergeOption = function(newOption, opt) {
var option = this.option;
var componentsMap = this._componentsMap;
var componentsCount = this._componentsCount;
var newCmptTypes = [];
var newCmptTypeMap = createHashMap();
var replaceMergeMainTypeMap = opt && opt.replaceMergeMainTypeMap;
resetSourceDefaulter(this);
each$f(newOption, function(componentOption, mainType) {
if (componentOption == null) {
return;
}
if (!ComponentModel.hasClass(mainType)) {
option[mainType] = option[mainType] == null ? clone$4(componentOption) : merge(option[mainType], componentOption, true);
} else if (mainType) {
newCmptTypes.push(mainType);
newCmptTypeMap.set(mainType, true);
}
});
if (replaceMergeMainTypeMap) {
replaceMergeMainTypeMap.each(function(val, mainTypeInReplaceMerge) {
if (ComponentModel.hasClass(mainTypeInReplaceMerge) && !newCmptTypeMap.get(mainTypeInReplaceMerge)) {
newCmptTypes.push(mainTypeInReplaceMerge);
newCmptTypeMap.set(mainTypeInReplaceMerge, true);
}
});
}
ComponentModel.topologicalTravel(newCmptTypes, ComponentModel.getAllClassMainTypes(), visitComponent, this);
function visitComponent(mainType) {
var newCmptOptionList = concatInternalOptions(this, mainType, normalizeToArray(newOption[mainType]));
var oldCmptList = componentsMap.get(mainType);
var mergeMode = (
// `!oldCmptList` means init. See the comment in `mappingToExists`
!oldCmptList ? "replaceAll" : replaceMergeMainTypeMap && replaceMergeMainTypeMap.get(mainType) ? "replaceMerge" : "normalMerge"
);
var mappingResult = mappingToExists(oldCmptList, newCmptOptionList, mergeMode);
setComponentTypeToKeyInfo(mappingResult, mainType, ComponentModel);
option[mainType] = null;
componentsMap.set(mainType, null);
componentsCount.set(mainType, 0);
var optionsByMainType = [];
var cmptsByMainType = [];
var cmptsCountByMainType = 0;
var tooltipExists;
each$f(mappingResult, function(resultItem, index2) {
var componentModel = resultItem.existing;
var newCmptOption = resultItem.newOption;
if (!newCmptOption) {
if (componentModel) {
componentModel.mergeOption({}, this);
componentModel.optionUpdated({}, false);
}
} else {
var isSeriesType = mainType === "series";
var ComponentModelClass = ComponentModel.getClass(
mainType,
resultItem.keyInfo.subType,
!isSeriesType
// Give a more detailed warn later if series don't exists
);
if (!ComponentModelClass) {
return;
}
if (mainType === "tooltip") {
if (tooltipExists) {
return;
}
tooltipExists = true;
}
if (componentModel && componentModel.constructor === ComponentModelClass) {
componentModel.name = resultItem.keyInfo.name;
componentModel.mergeOption(newCmptOption, this);
componentModel.optionUpdated(newCmptOption, false);
} else {
var extraOpt = extend({
componentIndex: index2
}, resultItem.keyInfo);
componentModel = new ComponentModelClass(newCmptOption, this, this, extraOpt);
extend(componentModel, extraOpt);
if (resultItem.brandNew) {
componentModel.__requireNewView = true;
}
componentModel.init(newCmptOption, this, this);
componentModel.optionUpdated(null, true);
}
}
if (componentModel) {
optionsByMainType.push(componentModel.option);
cmptsByMainType.push(componentModel);
cmptsCountByMainType++;
} else {
optionsByMainType.push(void 0);
cmptsByMainType.push(void 0);
}
}, this);
option[mainType] = optionsByMainType;
componentsMap.set(mainType, cmptsByMainType);
componentsCount.set(mainType, cmptsCountByMainType);
if (mainType === "series") {
reCreateSeriesIndices(this);
}
}
if (!this._seriesIndices) {
reCreateSeriesIndices(this);
}
};
GlobalModel2.prototype.getOption = function() {
var option = clone$4(this.option);
each$f(option, function(optInMainType, mainType) {
if (ComponentModel.hasClass(mainType)) {
var opts = normalizeToArray(optInMainType);
var realLen = opts.length;
var metNonInner = false;
for (var i = realLen - 1; i >= 0; i--) {
if (opts[i] && !isComponentIdInternal(opts[i])) {
metNonInner = true;
} else {
opts[i] = null;
!metNonInner && realLen--;
}
}
opts.length = realLen;
option[mainType] = opts;
}
});
delete option[OPTION_INNER_KEY];
return option;
};
GlobalModel2.prototype.getTheme = function() {
return this._theme;
};
GlobalModel2.prototype.getLocaleModel = function() {
return this._locale;
};
GlobalModel2.prototype.setUpdatePayload = function(payload) {
this._payload = payload;
};
GlobalModel2.prototype.getUpdatePayload = function() {
return this._payload;
};
GlobalModel2.prototype.getComponent = function(mainType, idx) {
var list = this._componentsMap.get(mainType);
if (list) {
var cmpt = list[idx || 0];
if (cmpt) {
return cmpt;
} else if (idx == null) {
for (var i = 0; i < list.length; i++) {
if (list[i]) {
return list[i];
}
}
}
}
};
GlobalModel2.prototype.queryComponents = function(condition) {
var mainType = condition.mainType;
if (!mainType) {
return [];
}
var index2 = condition.index;
var id2 = condition.id;
var name = condition.name;
var cmpts = this._componentsMap.get(mainType);
if (!cmpts || !cmpts.length) {
return [];
}
var result;
if (index2 != null) {
result = [];
each$f(normalizeToArray(index2), function(idx) {
cmpts[idx] && result.push(cmpts[idx]);
});
} else if (id2 != null) {
result = queryByIdOrName("id", id2, cmpts);
} else if (name != null) {
result = queryByIdOrName("name", name, cmpts);
} else {
result = filter(cmpts, function(cmpt) {
return !!cmpt;
});
}
return filterBySubType(result, condition);
};
GlobalModel2.prototype.findComponents = function(condition) {
var query = condition.query;
var mainType = condition.mainType;
var queryCond = getQueryCond(query);
var result = queryCond ? this.queryComponents(queryCond) : filter(this._componentsMap.get(mainType), function(cmpt) {
return !!cmpt;
});
return doFilter(filterBySubType(result, condition));
function getQueryCond(q2) {
var indexAttr = mainType + "Index";
var idAttr = mainType + "Id";
var nameAttr = mainType + "Name";
return q2 && (q2[indexAttr] != null || q2[idAttr] != null || q2[nameAttr] != null) ? {
mainType,
// subType will be filtered finally.
index: q2[indexAttr],
id: q2[idAttr],
name: q2[nameAttr]
} : null;
}
function doFilter(res) {
return condition.filter ? filter(res, condition.filter) : res;
}
};
GlobalModel2.prototype.eachComponent = function(mainType, cb2, context) {
var componentsMap = this._componentsMap;
if (isFunction$1(mainType)) {
var ctxForAll_1 = cb2;
var cbForAll_1 = mainType;
componentsMap.each(function(cmpts2, componentType) {
for (var i2 = 0; cmpts2 && i2 < cmpts2.length; i2++) {
var cmpt2 = cmpts2[i2];
cmpt2 && cbForAll_1.call(ctxForAll_1, componentType, cmpt2, cmpt2.componentIndex);
}
});
} else {
var cmpts = isString$1(mainType) ? componentsMap.get(mainType) : isObject$3(mainType) ? this.findComponents(mainType) : null;
for (var i = 0; cmpts && i < cmpts.length; i++) {
var cmpt = cmpts[i];
cmpt && cb2.call(context, cmpt, cmpt.componentIndex);
}
}
};
GlobalModel2.prototype.getSeriesByName = function(name) {
var nameStr = convertOptionIdName(name, null);
return filter(this._componentsMap.get("series"), function(oneSeries) {
return !!oneSeries && nameStr != null && oneSeries.name === nameStr;
});
};
GlobalModel2.prototype.getSeriesByIndex = function(seriesIndex) {
return this._componentsMap.get("series")[seriesIndex];
};
GlobalModel2.prototype.getSeriesByType = function(subType) {
return filter(this._componentsMap.get("series"), function(oneSeries) {
return !!oneSeries && oneSeries.subType === subType;
});
};
GlobalModel2.prototype.getSeries = function() {
return filter(this._componentsMap.get("series"), function(oneSeries) {
return !!oneSeries;
});
};
GlobalModel2.prototype.getSeriesCount = function() {
return this._componentsCount.get("series");
};
GlobalModel2.prototype.eachSeries = function(cb2, context) {
assertSeriesInitialized(this);
each$f(this._seriesIndices, function(rawSeriesIndex) {
var series = this._componentsMap.get("series")[rawSeriesIndex];
cb2.call(context, series, rawSeriesIndex);
}, this);
};
GlobalModel2.prototype.eachRawSeries = function(cb2, context) {
each$f(this._componentsMap.get("series"), function(series) {
series && cb2.call(context, series, series.componentIndex);
});
};
GlobalModel2.prototype.eachSeriesByType = function(subType, cb2, context) {
assertSeriesInitialized(this);
each$f(this._seriesIndices, function(rawSeriesIndex) {
var series = this._componentsMap.get("series")[rawSeriesIndex];
if (series.subType === subType) {
cb2.call(context, series, rawSeriesIndex);
}
}, this);
};
GlobalModel2.prototype.eachRawSeriesByType = function(subType, cb2, context) {
return each$f(this.getSeriesByType(subType), cb2, context);
};
GlobalModel2.prototype.isSeriesFiltered = function(seriesModel) {
assertSeriesInitialized(this);
return this._seriesIndicesMap.get(seriesModel.componentIndex) == null;
};
GlobalModel2.prototype.getCurrentSeriesIndices = function() {
return (this._seriesIndices || []).slice();
};
GlobalModel2.prototype.filterSeries = function(cb2, context) {
assertSeriesInitialized(this);
var newSeriesIndices = [];
each$f(this._seriesIndices, function(seriesRawIdx) {
var series = this._componentsMap.get("series")[seriesRawIdx];
cb2.call(context, series, seriesRawIdx) && newSeriesIndices.push(seriesRawIdx);
}, this);
this._seriesIndices = newSeriesIndices;
this._seriesIndicesMap = createHashMap(newSeriesIndices);
};
GlobalModel2.prototype.restoreData = function(payload) {
reCreateSeriesIndices(this);
var componentsMap = this._componentsMap;
var componentTypes = [];
componentsMap.each(function(components, componentType) {
if (ComponentModel.hasClass(componentType)) {
componentTypes.push(componentType);
}
});
ComponentModel.topologicalTravel(componentTypes, ComponentModel.getAllClassMainTypes(), function(componentType) {
each$f(componentsMap.get(componentType), function(component) {
if (component && (componentType !== "series" || !isNotTargetSeries(component, payload))) {
component.restoreData();
}
});
});
};
GlobalModel2.internalField = function() {
reCreateSeriesIndices = function(ecModel) {
var seriesIndices = ecModel._seriesIndices = [];
each$f(ecModel._componentsMap.get("series"), function(series) {
series && seriesIndices.push(series.componentIndex);
});
ecModel._seriesIndicesMap = createHashMap(seriesIndices);
};
assertSeriesInitialized = function(ecModel) {
};
initBase = function(ecModel, baseOption) {
ecModel.option = {};
ecModel.option[OPTION_INNER_KEY] = OPTION_INNER_VALUE;
ecModel._componentsMap = createHashMap({
series: []
});
ecModel._componentsCount = createHashMap();
var airaOption = baseOption.aria;
if (isObject$3(airaOption) && airaOption.enabled == null) {
airaOption.enabled = true;
}
mergeTheme(baseOption, ecModel._theme.option);
merge(baseOption, globalDefault, false);
ecModel._mergeOption(baseOption, null);
};
}();
return GlobalModel2;
}(Model)
);
function isNotTargetSeries(seriesModel, payload) {
if (payload) {
var index2 = payload.seriesIndex;
var id2 = payload.seriesId;
var name_1 = payload.seriesName;
return index2 != null && seriesModel.componentIndex !== index2 || id2 != null && seriesModel.id !== id2 || name_1 != null && seriesModel.name !== name_1;
}
}
function mergeTheme(option, theme2) {
var notMergeColorLayer = option.color && !option.colorLayer;
each$f(theme2, function(themeItem, name) {
if (name === "colorLayer" && notMergeColorLayer) {
return;
}
if (!ComponentModel.hasClass(name)) {
if (typeof themeItem === "object") {
option[name] = !option[name] ? clone$4(themeItem) : merge(option[name], themeItem, false);
} else {
if (option[name] == null) {
option[name] = themeItem;
}
}
}
});
}
function queryByIdOrName(attr, idOrName, cmpts) {
if (isArray$1(idOrName)) {
var keyMap_1 = createHashMap();
each$f(idOrName, function(idOrNameItem) {
if (idOrNameItem != null) {
var idName = convertOptionIdName(idOrNameItem, null);
idName != null && keyMap_1.set(idOrNameItem, true);
}
});
return filter(cmpts, function(cmpt) {
return cmpt && keyMap_1.get(cmpt[attr]);
});
} else {
var idName_1 = convertOptionIdName(idOrName, null);
return filter(cmpts, function(cmpt) {
return cmpt && idName_1 != null && cmpt[attr] === idName_1;
});
}
}
function filterBySubType(components, condition) {
return condition.hasOwnProperty("subType") ? filter(components, function(cmpt) {
return cmpt && cmpt.subType === condition.subType;
}) : components;
}
function normalizeSetOptionInput(opts) {
var replaceMergeMainTypeMap = createHashMap();
opts && each$f(normalizeToArray(opts.replaceMerge), function(mainType) {
replaceMergeMainTypeMap.set(mainType, true);
});
return {
replaceMergeMainTypeMap
};
}
mixin(GlobalModel, PaletteMixin);
var availableMethods = [
"getDom",
"getZr",
"getWidth",
"getHeight",
"getDevicePixelRatio",
"dispatchAction",
"isSSR",
"isDisposed",
"on",
"off",
"getDataURL",
"getConnectedDataURL",
// 'getModel',
"getOption",
// 'getViewOfComponentModel',
// 'getViewOfSeriesModel',
"getId",
"updateLabelLayout"
];
var ExtensionAPI = (
/** @class */
/* @__PURE__ */ function() {
function ExtensionAPI2(ecInstance) {
each$f(availableMethods, function(methodName) {
this[methodName] = bind$2(ecInstance[methodName], ecInstance);
}, this);
}
return ExtensionAPI2;
}()
);
var coordinateSystemCreators = {};
var CoordinateSystemManager = (
/** @class */
function() {
function CoordinateSystemManager2() {
this._coordinateSystems = [];
}
CoordinateSystemManager2.prototype.create = function(ecModel, api) {
var coordinateSystems = [];
each$f(coordinateSystemCreators, function(creator, type4) {
var list = creator.create(ecModel, api);
coordinateSystems = coordinateSystems.concat(list || []);
});
this._coordinateSystems = coordinateSystems;
};
CoordinateSystemManager2.prototype.update = function(ecModel, api) {
each$f(this._coordinateSystems, function(coordSys) {
coordSys.update && coordSys.update(ecModel, api);
});
};
CoordinateSystemManager2.prototype.getCoordinateSystems = function() {
return this._coordinateSystems.slice();
};
CoordinateSystemManager2.register = function(type4, creator) {
coordinateSystemCreators[type4] = creator;
};
CoordinateSystemManager2.get = function(type4) {
return coordinateSystemCreators[type4];
};
return CoordinateSystemManager2;
}()
);
var QUERY_REG = /^(min|max)?(.+)$/;
var OptionManager = (
/** @class */
function() {
function OptionManager2(api) {
this._timelineOptions = [];
this._mediaList = [];
this._currentMediaIndices = [];
this._api = api;
}
OptionManager2.prototype.setOption = function(rawOption, optionPreprocessorFuncs2, opt) {
if (rawOption) {
each$f(normalizeToArray(rawOption.series), function(series) {
series && series.data && isTypedArray(series.data) && setAsPrimitive(series.data);
});
each$f(normalizeToArray(rawOption.dataset), function(dataset) {
dataset && dataset.source && isTypedArray(dataset.source) && setAsPrimitive(dataset.source);
});
}
rawOption = clone$4(rawOption);
var optionBackup = this._optionBackup;
var newParsedOption = parseRawOption(rawOption, optionPreprocessorFuncs2, !optionBackup);
this._newBaseOption = newParsedOption.baseOption;
if (optionBackup) {
if (newParsedOption.timelineOptions.length) {
optionBackup.timelineOptions = newParsedOption.timelineOptions;
}
if (newParsedOption.mediaList.length) {
optionBackup.mediaList = newParsedOption.mediaList;
}
if (newParsedOption.mediaDefault) {
optionBackup.mediaDefault = newParsedOption.mediaDefault;
}
} else {
this._optionBackup = newParsedOption;
}
};
OptionManager2.prototype.mountOption = function(isRecreate) {
var optionBackup = this._optionBackup;
this._timelineOptions = optionBackup.timelineOptions;
this._mediaList = optionBackup.mediaList;
this._mediaDefault = optionBackup.mediaDefault;
this._currentMediaIndices = [];
return clone$4(isRecreate ? optionBackup.baseOption : this._newBaseOption);
};
OptionManager2.prototype.getTimelineOption = function(ecModel) {
var option;
var timelineOptions = this._timelineOptions;
if (timelineOptions.length) {
var timelineModel = ecModel.getComponent("timeline");
if (timelineModel) {
option = clone$4(
// FIXME:TS as TimelineModel or quivlant interface
timelineOptions[timelineModel.getCurrentIndex()]
);
}
}
return option;
};
OptionManager2.prototype.getMediaOption = function(ecModel) {
var ecWidth = this._api.getWidth();
var ecHeight = this._api.getHeight();
var mediaList = this._mediaList;
var mediaDefault = this._mediaDefault;
var indices = [];
var result = [];
if (!mediaList.length && !mediaDefault) {
return result;
}
for (var i = 0, len2 = mediaList.length; i < len2; i++) {
if (applyMediaQuery(mediaList[i].query, ecWidth, ecHeight)) {
indices.push(i);
}
}
if (!indices.length && mediaDefault) {
indices = [-1];
}
if (indices.length && !indicesEquals(indices, this._currentMediaIndices)) {
result = map$1(indices, function(index2) {
return clone$4(index2 === -1 ? mediaDefault.option : mediaList[index2].option);
});
}
this._currentMediaIndices = indices;
return result;
};
return OptionManager2;
}()
);
function parseRawOption(rawOption, optionPreprocessorFuncs2, isNew) {
var mediaList = [];
var mediaDefault;
var baseOption;
var declaredBaseOption = rawOption.baseOption;
var timelineOnRoot = rawOption.timeline;
var timelineOptionsOnRoot = rawOption.options;
var mediaOnRoot = rawOption.media;
var hasMedia = !!rawOption.media;
var hasTimeline = !!(timelineOptionsOnRoot || timelineOnRoot || declaredBaseOption && declaredBaseOption.timeline);
if (declaredBaseOption) {
baseOption = declaredBaseOption;
if (!baseOption.timeline) {
baseOption.timeline = timelineOnRoot;
}
} else {
if (hasTimeline || hasMedia) {
rawOption.options = rawOption.media = null;
}
baseOption = rawOption;
}
if (hasMedia) {
if (isArray$1(mediaOnRoot)) {
each$f(mediaOnRoot, function(singleMedia) {
if (singleMedia && singleMedia.option) {
if (singleMedia.query) {
mediaList.push(singleMedia);
} else if (!mediaDefault) {
mediaDefault = singleMedia;
}
}
});
}
}
doPreprocess(baseOption);
each$f(timelineOptionsOnRoot, function(option) {
return doPreprocess(option);
});
each$f(mediaList, function(media) {
return doPreprocess(media.option);
});
function doPreprocess(option) {
each$f(optionPreprocessorFuncs2, function(preProcess) {
preProcess(option, isNew);
});
}
return {
baseOption,
timelineOptions: timelineOptionsOnRoot || [],
mediaDefault,
mediaList
};
}
function applyMediaQuery(query, ecWidth, ecHeight) {
var realMap = {
width: ecWidth,
height: ecHeight,
aspectratio: ecWidth / ecHeight
// lower case for convenience.
};
var applicable = true;
each$f(query, function(value, attr) {
var matched = attr.match(QUERY_REG);
if (!matched || !matched[1] || !matched[2]) {
return;
}
var operator = matched[1];
var realAttr = matched[2].toLowerCase();
if (!compare(realMap[realAttr], value, operator)) {
applicable = false;
}
});
return applicable;
}
function compare(real, expect, operator) {
if (operator === "min") {
return real >= expect;
} else if (operator === "max") {
return real <= expect;
} else {
return real === expect;
}
}
function indicesEquals(indices1, indices2) {
return indices1.join(",") === indices2.join(",");
}
var each$d = each$f;
var isObject$2 = isObject$3;
var POSSIBLE_STYLES = ["areaStyle", "lineStyle", "nodeStyle", "linkStyle", "chordStyle", "label", "labelLine"];
function compatEC2ItemStyle(opt) {
var itemStyleOpt = opt && opt.itemStyle;
if (!itemStyleOpt) {
return;
}
for (var i = 0, len2 = POSSIBLE_STYLES.length; i < len2; i++) {
var styleName = POSSIBLE_STYLES[i];
var normalItemStyleOpt = itemStyleOpt.normal;
var emphasisItemStyleOpt = itemStyleOpt.emphasis;
if (normalItemStyleOpt && normalItemStyleOpt[styleName]) {
opt[styleName] = opt[styleName] || {};
if (!opt[styleName].normal) {
opt[styleName].normal = normalItemStyleOpt[styleName];
} else {
merge(opt[styleName].normal, normalItemStyleOpt[styleName]);
}
normalItemStyleOpt[styleName] = null;
}
if (emphasisItemStyleOpt && emphasisItemStyleOpt[styleName]) {
opt[styleName] = opt[styleName] || {};
if (!opt[styleName].emphasis) {
opt[styleName].emphasis = emphasisItemStyleOpt[styleName];
} else {
merge(opt[styleName].emphasis, emphasisItemStyleOpt[styleName]);
}
emphasisItemStyleOpt[styleName] = null;
}
}
}
function convertNormalEmphasis(opt, optType, useExtend) {
if (opt && opt[optType] && (opt[optType].normal || opt[optType].emphasis)) {
var normalOpt = opt[optType].normal;
var emphasisOpt = opt[optType].emphasis;
if (normalOpt) {
if (useExtend) {
opt[optType].normal = opt[optType].emphasis = null;
defaults(opt[optType], normalOpt);
} else {
opt[optType] = normalOpt;
}
}
if (emphasisOpt) {
opt.emphasis = opt.emphasis || {};
opt.emphasis[optType] = emphasisOpt;
if (emphasisOpt.focus) {
opt.emphasis.focus = emphasisOpt.focus;
}
if (emphasisOpt.blurScope) {
opt.emphasis.blurScope = emphasisOpt.blurScope;
}
}
}
}
function removeEC3NormalStatus(opt) {
convertNormalEmphasis(opt, "itemStyle");
convertNormalEmphasis(opt, "lineStyle");
convertNormalEmphasis(opt, "areaStyle");
convertNormalEmphasis(opt, "label");
convertNormalEmphasis(opt, "labelLine");
convertNormalEmphasis(opt, "upperLabel");
convertNormalEmphasis(opt, "edgeLabel");
}
function compatTextStyle(opt, propName) {
var labelOptSingle = isObject$2(opt) && opt[propName];
var textStyle = isObject$2(labelOptSingle) && labelOptSingle.textStyle;
if (textStyle) {
for (var i = 0, len2 = TEXT_STYLE_OPTIONS.length; i < len2; i++) {
var textPropName = TEXT_STYLE_OPTIONS[i];
if (textStyle.hasOwnProperty(textPropName)) {
labelOptSingle[textPropName] = textStyle[textPropName];
}
}
}
}
function compatEC3CommonStyles(opt) {
if (opt) {
removeEC3NormalStatus(opt);
compatTextStyle(opt, "label");
opt.emphasis && compatTextStyle(opt.emphasis, "label");
}
}
function processSeries(seriesOpt) {
if (!isObject$2(seriesOpt)) {
return;
}
compatEC2ItemStyle(seriesOpt);
removeEC3NormalStatus(seriesOpt);
compatTextStyle(seriesOpt, "label");
compatTextStyle(seriesOpt, "upperLabel");
compatTextStyle(seriesOpt, "edgeLabel");
if (seriesOpt.emphasis) {
compatTextStyle(seriesOpt.emphasis, "label");
compatTextStyle(seriesOpt.emphasis, "upperLabel");
compatTextStyle(seriesOpt.emphasis, "edgeLabel");
}
var markPoint = seriesOpt.markPoint;
if (markPoint) {
compatEC2ItemStyle(markPoint);
compatEC3CommonStyles(markPoint);
}
var markLine = seriesOpt.markLine;
if (markLine) {
compatEC2ItemStyle(markLine);
compatEC3CommonStyles(markLine);
}
var markArea = seriesOpt.markArea;
if (markArea) {
compatEC3CommonStyles(markArea);
}
var data = seriesOpt.data;
if (seriesOpt.type === "graph") {
data = data || seriesOpt.nodes;
var edgeData = seriesOpt.links || seriesOpt.edges;
if (edgeData && !isTypedArray(edgeData)) {
for (var i = 0; i < edgeData.length; i++) {
compatEC3CommonStyles(edgeData[i]);
}
}
each$f(seriesOpt.categories, function(opt) {
removeEC3NormalStatus(opt);
});
}
if (data && !isTypedArray(data)) {
for (var i = 0; i < data.length; i++) {
compatEC3CommonStyles(data[i]);
}
}
markPoint = seriesOpt.markPoint;
if (markPoint && markPoint.data) {
var mpData = markPoint.data;
for (var i = 0; i < mpData.length; i++) {
compatEC3CommonStyles(mpData[i]);
}
}
markLine = seriesOpt.markLine;
if (markLine && markLine.data) {
var mlData = markLine.data;
for (var i = 0; i < mlData.length; i++) {
if (isArray$1(mlData[i])) {
compatEC3CommonStyles(mlData[i][0]);
compatEC3CommonStyles(mlData[i][1]);
} else {
compatEC3CommonStyles(mlData[i]);
}
}
}
if (seriesOpt.type === "gauge") {
compatTextStyle(seriesOpt, "axisLabel");
compatTextStyle(seriesOpt, "title");
compatTextStyle(seriesOpt, "detail");
} else if (seriesOpt.type === "treemap") {
convertNormalEmphasis(seriesOpt.breadcrumb, "itemStyle");
each$f(seriesOpt.levels, function(opt) {
removeEC3NormalStatus(opt);
});
} else if (seriesOpt.type === "tree") {
removeEC3NormalStatus(seriesOpt.leaves);
}
}
function toArr(o) {
return isArray$1(o) ? o : o ? [o] : [];
}
function toObj(o) {
return (isArray$1(o) ? o[0] : o) || {};
}
function globalCompatStyle(option, isTheme) {
each$d(toArr(option.series), function(seriesOpt) {
isObject$2(seriesOpt) && processSeries(seriesOpt);
});
var axes = ["xAxis", "yAxis", "radiusAxis", "angleAxis", "singleAxis", "parallelAxis", "radar"];
isTheme && axes.push("valueAxis", "categoryAxis", "logAxis", "timeAxis");
each$d(axes, function(axisName) {
each$d(toArr(option[axisName]), function(axisOpt) {
if (axisOpt) {
compatTextStyle(axisOpt, "axisLabel");
compatTextStyle(axisOpt.axisPointer, "label");
}
});
});
each$d(toArr(option.parallel), function(parallelOpt) {
var parallelAxisDefault = parallelOpt && parallelOpt.parallelAxisDefault;
compatTextStyle(parallelAxisDefault, "axisLabel");
compatTextStyle(parallelAxisDefault && parallelAxisDefault.axisPointer, "label");
});
each$d(toArr(option.calendar), function(calendarOpt) {
convertNormalEmphasis(calendarOpt, "itemStyle");
compatTextStyle(calendarOpt, "dayLabel");
compatTextStyle(calendarOpt, "monthLabel");
compatTextStyle(calendarOpt, "yearLabel");
});
each$d(toArr(option.radar), function(radarOpt) {
compatTextStyle(radarOpt, "name");
if (radarOpt.name && radarOpt.axisName == null) {
radarOpt.axisName = radarOpt.name;
delete radarOpt.name;
}
if (radarOpt.nameGap != null && radarOpt.axisNameGap == null) {
radarOpt.axisNameGap = radarOpt.nameGap;
delete radarOpt.nameGap;
}
});
each$d(toArr(option.geo), function(geoOpt) {
if (isObject$2(geoOpt)) {
compatEC3CommonStyles(geoOpt);
each$d(toArr(geoOpt.regions), function(regionObj) {
compatEC3CommonStyles(regionObj);
});
}
});
each$d(toArr(option.timeline), function(timelineOpt) {
compatEC3CommonStyles(timelineOpt);
convertNormalEmphasis(timelineOpt, "label");
convertNormalEmphasis(timelineOpt, "itemStyle");
convertNormalEmphasis(timelineOpt, "controlStyle", true);
var data = timelineOpt.data;
isArray$1(data) && each$f(data, function(item) {
if (isObject$3(item)) {
convertNormalEmphasis(item, "label");
convertNormalEmphasis(item, "itemStyle");
}
});
});
each$d(toArr(option.toolbox), function(toolboxOpt) {
convertNormalEmphasis(toolboxOpt, "iconStyle");
each$d(toolboxOpt.feature, function(featureOpt) {
convertNormalEmphasis(featureOpt, "iconStyle");
});
});
compatTextStyle(toObj(option.axisPointer), "label");
compatTextStyle(toObj(option.tooltip).axisPointer, "label");
}
function get(opt, path) {
var pathArr = path.split(",");
var obj = opt;
for (var i = 0; i < pathArr.length; i++) {
obj = obj && obj[pathArr[i]];
if (obj == null) {
break;
}
}
return obj;
}
function set(opt, path, val, overwrite) {
var pathArr = path.split(",");
var obj = opt;
var key;
var i = 0;
for (; i < pathArr.length - 1; i++) {
key = pathArr[i];
if (obj[key] == null) {
obj[key] = {};
}
obj = obj[key];
}
if (obj[pathArr[i]] == null) {
obj[pathArr[i]] = val;
}
}
function compatLayoutProperties(option) {
option && each$f(LAYOUT_PROPERTIES, function(prop) {
if (prop[0] in option && !(prop[1] in option)) {
option[prop[1]] = option[prop[0]];
}
});
}
var LAYOUT_PROPERTIES = [["x", "left"], ["y", "top"], ["x2", "right"], ["y2", "bottom"]];
var COMPATITABLE_COMPONENTS = ["grid", "geo", "parallel", "legend", "toolbox", "title", "visualMap", "dataZoom", "timeline"];
var BAR_ITEM_STYLE_MAP = [["borderRadius", "barBorderRadius"], ["borderColor", "barBorderColor"], ["borderWidth", "barBorderWidth"]];
function compatBarItemStyle(option) {
var itemStyle = option && option.itemStyle;
if (itemStyle) {
for (var i = 0; i < BAR_ITEM_STYLE_MAP.length; i++) {
var oldName = BAR_ITEM_STYLE_MAP[i][1];
var newName = BAR_ITEM_STYLE_MAP[i][0];
if (itemStyle[oldName] != null) {
itemStyle[newName] = itemStyle[oldName];
}
}
}
}
function compatPieLabel(option) {
if (!option) {
return;
}
if (option.alignTo === "edge" && option.margin != null && option.edgeDistance == null) {
option.edgeDistance = option.margin;
}
}
function compatSunburstState(option) {
if (!option) {
return;
}
if (option.downplay && !option.blur) {
option.blur = option.downplay;
}
}
function compatGraphFocus(option) {
if (!option) {
return;
}
if (option.focusNodeAdjacency != null) {
option.emphasis = option.emphasis || {};
if (option.emphasis.focus == null) {
option.emphasis.focus = "adjacency";
}
}
}
function traverseTree(data, cb2) {
if (data) {
for (var i = 0; i < data.length; i++) {
cb2(data[i]);
data[i] && traverseTree(data[i].children, cb2);
}
}
}
function globalBackwardCompat(option, isTheme) {
globalCompatStyle(option, isTheme);
option.series = normalizeToArray(option.series);
each$f(option.series, function(seriesOpt) {
if (!isObject$3(seriesOpt)) {
return;
}
var seriesType2 = seriesOpt.type;
if (seriesType2 === "line") {
if (seriesOpt.clipOverflow != null) {
seriesOpt.clip = seriesOpt.clipOverflow;
}
} else if (seriesType2 === "pie" || seriesType2 === "gauge") {
if (seriesOpt.clockWise != null) {
seriesOpt.clockwise = seriesOpt.clockWise;
}
compatPieLabel(seriesOpt.label);
var data = seriesOpt.data;
if (data && !isTypedArray(data)) {
for (var i = 0; i < data.length; i++) {
compatPieLabel(data[i]);
}
}
if (seriesOpt.hoverOffset != null) {
seriesOpt.emphasis = seriesOpt.emphasis || {};
if (seriesOpt.emphasis.scaleSize = null) {
seriesOpt.emphasis.scaleSize = seriesOpt.hoverOffset;
}
}
} else if (seriesType2 === "gauge") {
var pointerColor = get(seriesOpt, "pointer.color");
pointerColor != null && set(seriesOpt, "itemStyle.color", pointerColor);
} else if (seriesType2 === "bar") {
compatBarItemStyle(seriesOpt);
compatBarItemStyle(seriesOpt.backgroundStyle);
compatBarItemStyle(seriesOpt.emphasis);
var data = seriesOpt.data;
if (data && !isTypedArray(data)) {
for (var i = 0; i < data.length; i++) {
if (typeof data[i] === "object") {
compatBarItemStyle(data[i]);
compatBarItemStyle(data[i] && data[i].emphasis);
}
}
}
} else if (seriesType2 === "sunburst") {
var highlightPolicy = seriesOpt.highlightPolicy;
if (highlightPolicy) {
seriesOpt.emphasis = seriesOpt.emphasis || {};
if (!seriesOpt.emphasis.focus) {
seriesOpt.emphasis.focus = highlightPolicy;
}
}
compatSunburstState(seriesOpt);
traverseTree(seriesOpt.data, compatSunburstState);
} else if (seriesType2 === "graph" || seriesType2 === "sankey") {
compatGraphFocus(seriesOpt);
} else if (seriesType2 === "map") {
if (seriesOpt.mapType && !seriesOpt.map) {
seriesOpt.map = seriesOpt.mapType;
}
if (seriesOpt.mapLocation) {
defaults(seriesOpt, seriesOpt.mapLocation);
}
}
if (seriesOpt.hoverAnimation != null) {
seriesOpt.emphasis = seriesOpt.emphasis || {};
if (seriesOpt.emphasis && seriesOpt.emphasis.scale == null) {
seriesOpt.emphasis.scale = seriesOpt.hoverAnimation;
}
}
compatLayoutProperties(seriesOpt);
});
if (option.dataRange) {
option.visualMap = option.dataRange;
}
each$f(COMPATITABLE_COMPONENTS, function(componentName) {
var options = option[componentName];
if (options) {
if (!isArray$1(options)) {
options = [options];
}
each$f(options, function(option2) {
compatLayoutProperties(option2);
});
}
});
}
function dataStack$1(ecModel) {
var stackInfoMap = createHashMap();
ecModel.eachSeries(function(seriesModel) {
var stack = seriesModel.get("stack");
if (stack) {
var stackInfoList = stackInfoMap.get(stack) || stackInfoMap.set(stack, []);
var data = seriesModel.getData();
var stackInfo = {
// Used for calculate axis extent automatically.
// TODO: Type getCalculationInfo return more specific type?
stackResultDimension: data.getCalculationInfo("stackResultDimension"),
stackedOverDimension: data.getCalculationInfo("stackedOverDimension"),
stackedDimension: data.getCalculationInfo("stackedDimension"),
stackedByDimension: data.getCalculationInfo("stackedByDimension"),
isStackedByIndex: data.getCalculationInfo("isStackedByIndex"),
data,
seriesModel
};
if (!stackInfo.stackedDimension || !(stackInfo.isStackedByIndex || stackInfo.stackedByDimension)) {
return;
}
stackInfoList.length && data.setCalculationInfo("stackedOnSeries", stackInfoList[stackInfoList.length - 1].seriesModel);
stackInfoList.push(stackInfo);
}
});
stackInfoMap.each(calculateStack);
}
function calculateStack(stackInfoList) {
each$f(stackInfoList, function(targetStackInfo, idxInStack) {
var resultVal = [];
var resultNaN = [NaN, NaN];
var dims = [targetStackInfo.stackResultDimension, targetStackInfo.stackedOverDimension];
var targetData = targetStackInfo.data;
var isStackedByIndex = targetStackInfo.isStackedByIndex;
var stackStrategy = targetStackInfo.seriesModel.get("stackStrategy") || "samesign";
targetData.modify(dims, function(v0, v12, dataIndex) {
var sum2 = targetData.get(targetStackInfo.stackedDimension, dataIndex);
if (isNaN(sum2)) {
return resultNaN;
}
var byValue;
var stackedDataRawIndex;
if (isStackedByIndex) {
stackedDataRawIndex = targetData.getRawIndex(dataIndex);
} else {
byValue = targetData.get(targetStackInfo.stackedByDimension, dataIndex);
}
var stackedOver = NaN;
for (var j = idxInStack - 1; j >= 0; j--) {
var stackInfo = stackInfoList[j];
if (!isStackedByIndex) {
stackedDataRawIndex = stackInfo.data.rawIndexOf(stackInfo.stackedByDimension, byValue);
}
if (stackedDataRawIndex >= 0) {
var val = stackInfo.data.getByRawIndex(stackInfo.stackResultDimension, stackedDataRawIndex);
if (stackStrategy === "all" || stackStrategy === "positive" && val > 0 || stackStrategy === "negative" && val < 0 || stackStrategy === "samesign" && sum2 >= 0 && val > 0 || stackStrategy === "samesign" && sum2 <= 0 && val < 0) {
sum2 = addSafe(sum2, val);
stackedOver = val;
break;
}
}
}
resultVal[0] = sum2;
resultVal[1] = stackedOver;
return resultVal;
});
});
}
var SourceImpl = (
/** @class */
/* @__PURE__ */ function() {
function SourceImpl2(fields) {
this.data = fields.data || (fields.sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS ? {} : []);
this.sourceFormat = fields.sourceFormat || SOURCE_FORMAT_UNKNOWN;
this.seriesLayoutBy = fields.seriesLayoutBy || SERIES_LAYOUT_BY_COLUMN;
this.startIndex = fields.startIndex || 0;
this.dimensionsDetectedCount = fields.dimensionsDetectedCount;
this.metaRawOption = fields.metaRawOption;
var dimensionsDefine = this.dimensionsDefine = fields.dimensionsDefine;
if (dimensionsDefine) {
for (var i = 0; i < dimensionsDefine.length; i++) {
var dim = dimensionsDefine[i];
if (dim.type == null) {
if (guessOrdinal(this, i) === BE_ORDINAL.Must) {
dim.type = "ordinal";
}
}
}
}
}
return SourceImpl2;
}()
);
function isSourceInstance(val) {
return val instanceof SourceImpl;
}
function createSource(sourceData, thisMetaRawOption, sourceFormat) {
sourceFormat = sourceFormat || detectSourceFormat(sourceData);
var seriesLayoutBy = thisMetaRawOption.seriesLayoutBy;
var determined = determineSourceDimensions(sourceData, sourceFormat, seriesLayoutBy, thisMetaRawOption.sourceHeader, thisMetaRawOption.dimensions);
var source = new SourceImpl({
data: sourceData,
sourceFormat,
seriesLayoutBy,
dimensionsDefine: determined.dimensionsDefine,
startIndex: determined.startIndex,
dimensionsDetectedCount: determined.dimensionsDetectedCount,
metaRawOption: clone$4(thisMetaRawOption)
});
return source;
}
function createSourceFromSeriesDataOption(data) {
return new SourceImpl({
data,
sourceFormat: isTypedArray(data) ? SOURCE_FORMAT_TYPED_ARRAY : SOURCE_FORMAT_ORIGINAL
});
}
function cloneSourceShallow(source) {
return new SourceImpl({
data: source.data,
sourceFormat: source.sourceFormat,
seriesLayoutBy: source.seriesLayoutBy,
dimensionsDefine: clone$4(source.dimensionsDefine),
startIndex: source.startIndex,
dimensionsDetectedCount: source.dimensionsDetectedCount
});
}
function detectSourceFormat(data) {
var sourceFormat = SOURCE_FORMAT_UNKNOWN;
if (isTypedArray(data)) {
sourceFormat = SOURCE_FORMAT_TYPED_ARRAY;
} else if (isArray$1(data)) {
if (data.length === 0) {
sourceFormat = SOURCE_FORMAT_ARRAY_ROWS;
}
for (var i = 0, len2 = data.length; i < len2; i++) {
var item = data[i];
if (item == null) {
continue;
} else if (isArray$1(item) || isTypedArray(item)) {
sourceFormat = SOURCE_FORMAT_ARRAY_ROWS;
break;
} else if (isObject$3(item)) {
sourceFormat = SOURCE_FORMAT_OBJECT_ROWS;
break;
}
}
} else if (isObject$3(data)) {
for (var key in data) {
if (hasOwn(data, key) && isArrayLike(data[key])) {
sourceFormat = SOURCE_FORMAT_KEYED_COLUMNS;
break;
}
}
}
return sourceFormat;
}
function determineSourceDimensions(data, sourceFormat, seriesLayoutBy, sourceHeader, dimensionsDefine) {
var dimensionsDetectedCount;
var startIndex;
if (!data) {
return {
dimensionsDefine: normalizeDimensionsOption(dimensionsDefine),
startIndex,
dimensionsDetectedCount
};
}
if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {
var dataArrayRows = data;
if (sourceHeader === "auto" || sourceHeader == null) {
arrayRowsTravelFirst(function(val) {
if (val != null && val !== "-") {
if (isString$1(val)) {
startIndex == null && (startIndex = 1);
} else {
startIndex = 0;
}
}
}, seriesLayoutBy, dataArrayRows, 10);
} else {
startIndex = isNumber(sourceHeader) ? sourceHeader : sourceHeader ? 1 : 0;
}
if (!dimensionsDefine && startIndex === 1) {
dimensionsDefine = [];
arrayRowsTravelFirst(function(val, index2) {
dimensionsDefine[index2] = val != null ? val + "" : "";
}, seriesLayoutBy, dataArrayRows, Infinity);
}
dimensionsDetectedCount = dimensionsDefine ? dimensionsDefine.length : seriesLayoutBy === SERIES_LAYOUT_BY_ROW ? dataArrayRows.length : dataArrayRows[0] ? dataArrayRows[0].length : null;
} else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {
if (!dimensionsDefine) {
dimensionsDefine = objectRowsCollectDimensions(data);
}
} else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {
if (!dimensionsDefine) {
dimensionsDefine = [];
each$f(data, function(colArr, key) {
dimensionsDefine.push(key);
});
}
} else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {
var value0 = getDataItemValue(data[0]);
dimensionsDetectedCount = isArray$1(value0) && value0.length || 1;
} else ;
return {
startIndex,
dimensionsDefine: normalizeDimensionsOption(dimensionsDefine),
dimensionsDetectedCount
};
}
function objectRowsCollectDimensions(data) {
var firstIndex = 0;
var obj;
while (firstIndex < data.length && !(obj = data[firstIndex++])) {
}
if (obj) {
return keys(obj);
}
}
function normalizeDimensionsOption(dimensionsDefine) {
if (!dimensionsDefine) {
return;
}
var nameMap = createHashMap();
return map$1(dimensionsDefine, function(rawItem, index2) {
rawItem = isObject$3(rawItem) ? rawItem : {
name: rawItem
};
var item = {
name: rawItem.name,
displayName: rawItem.displayName,
type: rawItem.type
};
if (item.name == null) {
return item;
}
item.name += "";
if (item.displayName == null) {
item.displayName = item.name;
}
var exist = nameMap.get(item.name);
if (!exist) {
nameMap.set(item.name, {
count: 1
});
} else {
item.name += "-" + exist.count++;
}
return item;
});
}
function arrayRowsTravelFirst(cb2, seriesLayoutBy, data, maxLoop) {
if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) {
for (var i = 0; i < data.length && i < maxLoop; i++) {
cb2(data[i] ? data[i][0] : null, i);
}
} else {
var value0 = data[0] || [];
for (var i = 0; i < value0.length && i < maxLoop; i++) {
cb2(value0[i], i);
}
}
}
function shouldRetrieveDataByName(source) {
var sourceFormat = source.sourceFormat;
return sourceFormat === SOURCE_FORMAT_OBJECT_ROWS || sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS;
}
var _a$1, _b, _c;
var providerMethods;
var mountMethods;
var DefaultDataProvider = (
/** @class */
function() {
function DefaultDataProvider2(sourceParam, dimSize) {
var source = !isSourceInstance(sourceParam) ? createSourceFromSeriesDataOption(sourceParam) : sourceParam;
this._source = source;
var data = this._data = source.data;
if (source.sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {
this._offset = 0;
this._dimSize = dimSize;
this._data = data;
}
mountMethods(this, data, source);
}
DefaultDataProvider2.prototype.getSource = function() {
return this._source;
};
DefaultDataProvider2.prototype.count = function() {
return 0;
};
DefaultDataProvider2.prototype.getItem = function(idx, out2) {
return;
};
DefaultDataProvider2.prototype.appendData = function(newData) {
};
DefaultDataProvider2.prototype.clean = function() {
};
DefaultDataProvider2.protoInitialize = function() {
var proto2 = DefaultDataProvider2.prototype;
proto2.pure = false;
proto2.persistent = true;
}();
DefaultDataProvider2.internalField = function() {
var _a2;
mountMethods = function(provider, data, source) {
var sourceFormat = source.sourceFormat;
var seriesLayoutBy = source.seriesLayoutBy;
var startIndex = source.startIndex;
var dimsDef = source.dimensionsDefine;
var methods2 = providerMethods[getMethodMapKey(sourceFormat, seriesLayoutBy)];
extend(provider, methods2);
if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {
provider.getItem = getItemForTypedArray;
provider.count = countForTypedArray;
provider.fillStorage = fillStorageForTypedArray;
} else {
var rawItemGetter = getRawSourceItemGetter(sourceFormat, seriesLayoutBy);
provider.getItem = bind$2(rawItemGetter, null, data, startIndex, dimsDef);
var rawCounter = getRawSourceDataCounter(sourceFormat, seriesLayoutBy);
provider.count = bind$2(rawCounter, null, data, startIndex, dimsDef);
}
};
var getItemForTypedArray = function(idx, out2) {
idx = idx - this._offset;
out2 = out2 || [];
var data = this._data;
var dimSize = this._dimSize;
var offset2 = dimSize * idx;
for (var i = 0; i < dimSize; i++) {
out2[i] = data[offset2 + i];
}
return out2;
};
var fillStorageForTypedArray = function(start2, end2, storage2, extent3) {
var data = this._data;
var dimSize = this._dimSize;
for (var dim = 0; dim < dimSize; dim++) {
var dimExtent = extent3[dim];
var min3 = dimExtent[0] == null ? Infinity : dimExtent[0];
var max3 = dimExtent[1] == null ? -Infinity : dimExtent[1];
var count2 = end2 - start2;
var arr = storage2[dim];
for (var i = 0; i < count2; i++) {
var val = data[i * dimSize + dim];
arr[start2 + i] = val;
val < min3 && (min3 = val);
val > max3 && (max3 = val);
}
dimExtent[0] = min3;
dimExtent[1] = max3;
}
};
var countForTypedArray = function() {
return this._data ? this._data.length / this._dimSize : 0;
};
providerMethods = (_a2 = {}, _a2[SOURCE_FORMAT_ARRAY_ROWS + "_" + SERIES_LAYOUT_BY_COLUMN] = {
pure: true,
appendData: appendDataSimply
}, _a2[SOURCE_FORMAT_ARRAY_ROWS + "_" + SERIES_LAYOUT_BY_ROW] = {
pure: true,
appendData: function() {
throw new Error('Do not support appendData when set seriesLayoutBy: "row".');
}
}, _a2[SOURCE_FORMAT_OBJECT_ROWS] = {
pure: true,
appendData: appendDataSimply
}, _a2[SOURCE_FORMAT_KEYED_COLUMNS] = {
pure: true,
appendData: function(newData) {
var data = this._data;
each$f(newData, function(newCol, key) {
var oldCol = data[key] || (data[key] = []);
for (var i = 0; i < (newCol || []).length; i++) {
oldCol.push(newCol[i]);
}
});
}
}, _a2[SOURCE_FORMAT_ORIGINAL] = {
appendData: appendDataSimply
}, _a2[SOURCE_FORMAT_TYPED_ARRAY] = {
persistent: false,
pure: true,
appendData: function(newData) {
this._data = newData;
},
// Clean self if data is already used.
clean: function() {
this._offset += this.count();
this._data = null;
}
}, _a2);
function appendDataSimply(newData) {
for (var i = 0; i < newData.length; i++) {
this._data.push(newData[i]);
}
}
}();
return DefaultDataProvider2;
}()
);
var getItemSimply = function(rawData, startIndex, dimsDef, idx) {
return rawData[idx];
};
var rawSourceItemGetterMap = (_a$1 = {}, _a$1[SOURCE_FORMAT_ARRAY_ROWS + "_" + SERIES_LAYOUT_BY_COLUMN] = function(rawData, startIndex, dimsDef, idx) {
return rawData[idx + startIndex];
}, _a$1[SOURCE_FORMAT_ARRAY_ROWS + "_" + SERIES_LAYOUT_BY_ROW] = function(rawData, startIndex, dimsDef, idx, out2) {
idx += startIndex;
var item = out2 || [];
var data = rawData;
for (var i = 0; i < data.length; i++) {
var row = data[i];
item[i] = row ? row[idx] : null;
}
return item;
}, _a$1[SOURCE_FORMAT_OBJECT_ROWS] = getItemSimply, _a$1[SOURCE_FORMAT_KEYED_COLUMNS] = function(rawData, startIndex, dimsDef, idx, out2) {
var item = out2 || [];
for (var i = 0; i < dimsDef.length; i++) {
var dimName = dimsDef[i].name;
var col = rawData[dimName];
item[i] = col ? col[idx] : null;
}
return item;
}, _a$1[SOURCE_FORMAT_ORIGINAL] = getItemSimply, _a$1);
function getRawSourceItemGetter(sourceFormat, seriesLayoutBy) {
var method4 = rawSourceItemGetterMap[getMethodMapKey(sourceFormat, seriesLayoutBy)];
return method4;
}
var countSimply = function(rawData, startIndex, dimsDef) {
return rawData.length;
};
var rawSourceDataCounterMap = (_b = {}, _b[SOURCE_FORMAT_ARRAY_ROWS + "_" + SERIES_LAYOUT_BY_COLUMN] = function(rawData, startIndex, dimsDef) {
return Math.max(0, rawData.length - startIndex);
}, _b[SOURCE_FORMAT_ARRAY_ROWS + "_" + SERIES_LAYOUT_BY_ROW] = function(rawData, startIndex, dimsDef) {
var row = rawData[0];
return row ? Math.max(0, row.length - startIndex) : 0;
}, _b[SOURCE_FORMAT_OBJECT_ROWS] = countSimply, _b[SOURCE_FORMAT_KEYED_COLUMNS] = function(rawData, startIndex, dimsDef) {
var dimName = dimsDef[0].name;
var col = rawData[dimName];
return col ? col.length : 0;
}, _b[SOURCE_FORMAT_ORIGINAL] = countSimply, _b);
function getRawSourceDataCounter(sourceFormat, seriesLayoutBy) {
var method4 = rawSourceDataCounterMap[getMethodMapKey(sourceFormat, seriesLayoutBy)];
return method4;
}
var getRawValueSimply = function(dataItem, dimIndex, property) {
return dataItem[dimIndex];
};
var rawSourceValueGetterMap = (_c = {}, _c[SOURCE_FORMAT_ARRAY_ROWS] = getRawValueSimply, _c[SOURCE_FORMAT_OBJECT_ROWS] = function(dataItem, dimIndex, property) {
return dataItem[property];
}, _c[SOURCE_FORMAT_KEYED_COLUMNS] = getRawValueSimply, _c[SOURCE_FORMAT_ORIGINAL] = function(dataItem, dimIndex, property) {
var value = getDataItemValue(dataItem);
return !(value instanceof Array) ? value : value[dimIndex];
}, _c[SOURCE_FORMAT_TYPED_ARRAY] = getRawValueSimply, _c);
function getRawSourceValueGetter(sourceFormat) {
var method4 = rawSourceValueGetterMap[sourceFormat];
return method4;
}
function getMethodMapKey(sourceFormat, seriesLayoutBy) {
return sourceFormat === SOURCE_FORMAT_ARRAY_ROWS ? sourceFormat + "_" + seriesLayoutBy : sourceFormat;
}
function retrieveRawValue(data, dataIndex, dim) {
if (!data) {
return;
}
var dataItem = data.getRawDataItem(dataIndex);
if (dataItem == null) {
return;
}
var store = data.getStore();
var sourceFormat = store.getSource().sourceFormat;
if (dim != null) {
var dimIndex = data.getDimensionIndex(dim);
var property = store.getDimensionProperty(dimIndex);
return getRawSourceValueGetter(sourceFormat)(dataItem, dimIndex, property);
} else {
var result = dataItem;
if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {
result = getDataItemValue(dataItem);
}
return result;
}
}
var DIMENSION_LABEL_REG = /\{@(.+?)\}/g;
var DataFormatMixin = (
/** @class */
function() {
function DataFormatMixin2() {
}
DataFormatMixin2.prototype.getDataParams = function(dataIndex, dataType) {
var data = this.getData(dataType);
var rawValue = this.getRawValue(dataIndex, dataType);
var rawDataIndex = data.getRawIndex(dataIndex);
var name = data.getName(dataIndex);
var itemOpt = data.getRawDataItem(dataIndex);
var style2 = data.getItemVisual(dataIndex, "style");
var color2 = style2 && style2[data.getItemVisual(dataIndex, "drawType") || "fill"];
var borderColor = style2 && style2.stroke;
var mainType = this.mainType;
var isSeries2 = mainType === "series";
var userOutput = data.userOutput && data.userOutput.get();
return {
componentType: mainType,
componentSubType: this.subType,
componentIndex: this.componentIndex,
seriesType: isSeries2 ? this.subType : null,
seriesIndex: this.seriesIndex,
seriesId: isSeries2 ? this.id : null,
seriesName: isSeries2 ? this.name : null,
name,
dataIndex: rawDataIndex,
data: itemOpt,
dataType,
value: rawValue,
color: color2,
borderColor,
dimensionNames: userOutput ? userOutput.fullDimensions : null,
encode: userOutput ? userOutput.encode : null,
// Param name list for mapping `a`, `b`, `c`, `d`, `e`
$vars: ["seriesName", "name", "value"]
};
};
DataFormatMixin2.prototype.getFormattedLabel = function(dataIndex, status, dataType, labelDimIndex, formatter, extendParams) {
status = status || "normal";
var data = this.getData(dataType);
var params = this.getDataParams(dataIndex, dataType);
if (extendParams) {
params.value = extendParams.interpolatedValue;
}
if (labelDimIndex != null && isArray$1(params.value)) {
params.value = params.value[labelDimIndex];
}
if (!formatter) {
var itemModel = data.getItemModel(dataIndex);
formatter = itemModel.get(status === "normal" ? ["label", "formatter"] : [status, "label", "formatter"]);
}
if (isFunction$1(formatter)) {
params.status = status;
params.dimensionIndex = labelDimIndex;
return formatter(params);
} else if (isString$1(formatter)) {
var str = formatTpl(formatter, params);
return str.replace(DIMENSION_LABEL_REG, function(origin, dimStr) {
var len2 = dimStr.length;
var dimLoose = dimStr;
if (dimLoose.charAt(0) === "[" && dimLoose.charAt(len2 - 1) === "]") {
dimLoose = +dimLoose.slice(1, len2 - 1);
}
var val = retrieveRawValue(data, dataIndex, dimLoose);
if (extendParams && isArray$1(extendParams.interpolatedValue)) {
var dimIndex = data.getDimensionIndex(dimLoose);
if (dimIndex >= 0) {
val = extendParams.interpolatedValue[dimIndex];
}
}
return val != null ? val + "" : "";
});
}
};
DataFormatMixin2.prototype.getRawValue = function(idx, dataType) {
return retrieveRawValue(this.getData(dataType), idx);
};
DataFormatMixin2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) {
return;
};
return DataFormatMixin2;
}()
);
function normalizeTooltipFormatResult(result) {
var markupText;
var markupFragment;
if (isObject$3(result)) {
if (result.type) {
markupFragment = result;
}
} else {
markupText = result;
}
return {
text: markupText,
// markers: markers || markersExisting,
frag: markupFragment
};
}
function createTask(define) {
return new Task(define);
}
var Task = (
/** @class */
function() {
function Task2(define) {
define = define || {};
this._reset = define.reset;
this._plan = define.plan;
this._count = define.count;
this._onDirty = define.onDirty;
this._dirty = true;
}
Task2.prototype.perform = function(performArgs) {
var upTask = this._upstream;
var skip = performArgs && performArgs.skip;
if (this._dirty && upTask) {
var context = this.context;
context.data = context.outputData = upTask.context.outputData;
}
if (this.__pipeline) {
this.__pipeline.currentTask = this;
}
var planResult;
if (this._plan && !skip) {
planResult = this._plan(this.context);
}
var lastModBy = normalizeModBy(this._modBy);
var lastModDataCount = this._modDataCount || 0;
var modBy = normalizeModBy(performArgs && performArgs.modBy);
var modDataCount = performArgs && performArgs.modDataCount || 0;
if (lastModBy !== modBy || lastModDataCount !== modDataCount) {
planResult = "reset";
}
function normalizeModBy(val) {
!(val >= 1) && (val = 1);
return val;
}
var forceFirstProgress;
if (this._dirty || planResult === "reset") {
this._dirty = false;
forceFirstProgress = this._doReset(skip);
}
this._modBy = modBy;
this._modDataCount = modDataCount;
var step = performArgs && performArgs.step;
if (upTask) {
this._dueEnd = upTask._outputDueEnd;
} else {
this._dueEnd = this._count ? this._count(this.context) : Infinity;
}
if (this._progress) {
var start2 = this._dueIndex;
var end2 = Math.min(step != null ? this._dueIndex + step : Infinity, this._dueEnd);
if (!skip && (forceFirstProgress || start2 < end2)) {
var progress = this._progress;
if (isArray$1(progress)) {
for (var i = 0; i < progress.length; i++) {
this._doProgress(progress[i], start2, end2, modBy, modDataCount);
}
} else {
this._doProgress(progress, start2, end2, modBy, modDataCount);
}
}
this._dueIndex = end2;
var outputDueEnd = this._settedOutputEnd != null ? this._settedOutputEnd : end2;
this._outputDueEnd = outputDueEnd;
} else {
this._dueIndex = this._outputDueEnd = this._settedOutputEnd != null ? this._settedOutputEnd : this._dueEnd;
}
return this.unfinished();
};
Task2.prototype.dirty = function() {
this._dirty = true;
this._onDirty && this._onDirty(this.context);
};
Task2.prototype._doProgress = function(progress, start2, end2, modBy, modDataCount) {
iterator.reset(start2, end2, modBy, modDataCount);
this._callingProgress = progress;
this._callingProgress({
start: start2,
end: end2,
count: end2 - start2,
next: iterator.next
}, this.context);
};
Task2.prototype._doReset = function(skip) {
this._dueIndex = this._outputDueEnd = this._dueEnd = 0;
this._settedOutputEnd = null;
var progress;
var forceFirstProgress;
if (!skip && this._reset) {
progress = this._reset(this.context);
if (progress && progress.progress) {
forceFirstProgress = progress.forceFirstProgress;
progress = progress.progress;
}
if (isArray$1(progress) && !progress.length) {
progress = null;
}
}
this._progress = progress;
this._modBy = this._modDataCount = null;
var downstream = this._downstream;
downstream && downstream.dirty();
return forceFirstProgress;
};
Task2.prototype.unfinished = function() {
return this._progress && this._dueIndex < this._dueEnd;
};
Task2.prototype.pipe = function(downTask) {
if (this._downstream !== downTask || this._dirty) {
this._downstream = downTask;
downTask._upstream = this;
downTask.dirty();
}
};
Task2.prototype.dispose = function() {
if (this._disposed) {
return;
}
this._upstream && (this._upstream._downstream = null);
this._downstream && (this._downstream._upstream = null);
this._dirty = false;
this._disposed = true;
};
Task2.prototype.getUpstream = function() {
return this._upstream;
};
Task2.prototype.getDownstream = function() {
return this._downstream;
};
Task2.prototype.setOutputEnd = function(end2) {
this._outputDueEnd = this._settedOutputEnd = end2;
};
return Task2;
}()
);
var iterator = /* @__PURE__ */ function() {
var end2;
var current;
var modBy;
var modDataCount;
var winCount;
var it = {
reset: function(s, e2, sStep, sCount) {
current = s;
end2 = e2;
modBy = sStep;
modDataCount = sCount;
winCount = Math.ceil(modDataCount / modBy);
it.next = modBy > 1 && modDataCount > 0 ? modNext : sequentialNext;
}
};
return it;
function sequentialNext() {
return current < end2 ? current++ : null;
}
function modNext() {
var dataIndex = current % winCount * modBy + Math.ceil(current / winCount);
var result = current >= end2 ? null : dataIndex < modDataCount ? dataIndex : current;
current++;
return result;
}
}();
function parseDataValue(value, opt) {
var dimType = opt && opt.type;
if (dimType === "ordinal") {
return value;
}
if (dimType === "time" && !isNumber(value) && value != null && value !== "-") {
value = +parseDate(value);
}
return value == null || value === "" ? NaN : Number(value);
}
var valueParserMap = createHashMap({
"number": function(val) {
return parseFloat(val);
},
"time": function(val) {
return +parseDate(val);
},
"trim": function(val) {
return isString$1(val) ? trim$1(val) : val;
}
});
function getRawValueParser(type4) {
return valueParserMap.get(type4);
}
var ORDER_COMPARISON_OP_MAP = {
lt: function(lval, rval) {
return lval < rval;
},
lte: function(lval, rval) {
return lval <= rval;
},
gt: function(lval, rval) {
return lval > rval;
},
gte: function(lval, rval) {
return lval >= rval;
}
};
var FilterOrderComparator = (
/** @class */
function() {
function FilterOrderComparator2(op, rval) {
if (!isNumber(rval)) {
var errMsg = "";
throwError(errMsg);
}
this._opFn = ORDER_COMPARISON_OP_MAP[op];
this._rvalFloat = numericToNumber(rval);
}
FilterOrderComparator2.prototype.evaluate = function(lval) {
return isNumber(lval) ? this._opFn(lval, this._rvalFloat) : this._opFn(numericToNumber(lval), this._rvalFloat);
};
return FilterOrderComparator2;
}()
);
var SortOrderComparator = (
/** @class */
function() {
function SortOrderComparator2(order, incomparable) {
var isDesc = order === "desc";
this._resultLT = isDesc ? 1 : -1;
if (incomparable == null) {
incomparable = isDesc ? "min" : "max";
}
this._incomparable = incomparable === "min" ? -Infinity : Infinity;
}
SortOrderComparator2.prototype.evaluate = function(lval, rval) {
var lvalFloat = isNumber(lval) ? lval : numericToNumber(lval);
var rvalFloat = isNumber(rval) ? rval : numericToNumber(rval);
var lvalNotNumeric = isNaN(lvalFloat);
var rvalNotNumeric = isNaN(rvalFloat);
if (lvalNotNumeric) {
lvalFloat = this._incomparable;
}
if (rvalNotNumeric) {
rvalFloat = this._incomparable;
}
if (lvalNotNumeric && rvalNotNumeric) {
var lvalIsStr = isString$1(lval);
var rvalIsStr = isString$1(rval);
if (lvalIsStr) {
lvalFloat = rvalIsStr ? lval : 0;
}
if (rvalIsStr) {
rvalFloat = lvalIsStr ? rval : 0;
}
}
return lvalFloat < rvalFloat ? this._resultLT : lvalFloat > rvalFloat ? -this._resultLT : 0;
};
return SortOrderComparator2;
}()
);
var FilterEqualityComparator = (
/** @class */
function() {
function FilterEqualityComparator2(isEq, rval) {
this._rval = rval;
this._isEQ = isEq;
this._rvalTypeof = typeof rval;
this._rvalFloat = numericToNumber(rval);
}
FilterEqualityComparator2.prototype.evaluate = function(lval) {
var eqResult = lval === this._rval;
if (!eqResult) {
var lvalTypeof = typeof lval;
if (lvalTypeof !== this._rvalTypeof && (lvalTypeof === "number" || this._rvalTypeof === "number")) {
eqResult = numericToNumber(lval) === this._rvalFloat;
}
}
return this._isEQ ? eqResult : !eqResult;
};
return FilterEqualityComparator2;
}()
);
function createFilterComparator(op, rval) {
return op === "eq" || op === "ne" ? new FilterEqualityComparator(op === "eq", rval) : hasOwn(ORDER_COMPARISON_OP_MAP, op) ? new FilterOrderComparator(op, rval) : null;
}
var ExternalSource = (
/** @class */
function() {
function ExternalSource2() {
}
ExternalSource2.prototype.getRawData = function() {
throw new Error("not supported");
};
ExternalSource2.prototype.getRawDataItem = function(dataIndex) {
throw new Error("not supported");
};
ExternalSource2.prototype.cloneRawData = function() {
return;
};
ExternalSource2.prototype.getDimensionInfo = function(dim) {
return;
};
ExternalSource2.prototype.cloneAllDimensionInfo = function() {
return;
};
ExternalSource2.prototype.count = function() {
return;
};
ExternalSource2.prototype.retrieveValue = function(dataIndex, dimIndex) {
return;
};
ExternalSource2.prototype.retrieveValueFromItem = function(dataItem, dimIndex) {
return;
};
ExternalSource2.prototype.convertValue = function(rawVal, dimInfo) {
return parseDataValue(rawVal, dimInfo);
};
return ExternalSource2;
}()
);
function createExternalSource(internalSource, externalTransform) {
var extSource = new ExternalSource();
var data = internalSource.data;
var sourceFormat = extSource.sourceFormat = internalSource.sourceFormat;
var sourceHeaderCount = internalSource.startIndex;
var errMsg = "";
if (internalSource.seriesLayoutBy !== SERIES_LAYOUT_BY_COLUMN) {
throwError(errMsg);
}
var dimensions = [];
var dimsByName = {};
var dimsDef = internalSource.dimensionsDefine;
if (dimsDef) {
each$f(dimsDef, function(dimDef, idx) {
var name = dimDef.name;
var dimDefExt = {
index: idx,
name,
displayName: dimDef.displayName
};
dimensions.push(dimDefExt);
if (name != null) {
var errMsg_1 = "";
if (hasOwn(dimsByName, name)) {
throwError(errMsg_1);
}
dimsByName[name] = dimDefExt;
}
});
} else {
for (var i = 0; i < internalSource.dimensionsDetectedCount || 0; i++) {
dimensions.push({
index: i
});
}
}
var rawItemGetter = getRawSourceItemGetter(sourceFormat, SERIES_LAYOUT_BY_COLUMN);
if (externalTransform.__isBuiltIn) {
extSource.getRawDataItem = function(dataIndex) {
return rawItemGetter(data, sourceHeaderCount, dimensions, dataIndex);
};
extSource.getRawData = bind$2(getRawData, null, internalSource);
}
extSource.cloneRawData = bind$2(cloneRawData, null, internalSource);
var rawCounter = getRawSourceDataCounter(sourceFormat, SERIES_LAYOUT_BY_COLUMN);
extSource.count = bind$2(rawCounter, null, data, sourceHeaderCount, dimensions);
var rawValueGetter = getRawSourceValueGetter(sourceFormat);
extSource.retrieveValue = function(dataIndex, dimIndex) {
var rawItem = rawItemGetter(data, sourceHeaderCount, dimensions, dataIndex);
return retrieveValueFromItem(rawItem, dimIndex);
};
var retrieveValueFromItem = extSource.retrieveValueFromItem = function(dataItem, dimIndex) {
if (dataItem == null) {
return;
}
var dimDef = dimensions[dimIndex];
if (dimDef) {
return rawValueGetter(dataItem, dimIndex, dimDef.name);
}
};
extSource.getDimensionInfo = bind$2(getDimensionInfo, null, dimensions, dimsByName);
extSource.cloneAllDimensionInfo = bind$2(cloneAllDimensionInfo, null, dimensions);
return extSource;
}
function getRawData(upstream) {
var sourceFormat = upstream.sourceFormat;
if (!isSupportedSourceFormat(sourceFormat)) {
var errMsg = "";
throwError(errMsg);
}
return upstream.data;
}
function cloneRawData(upstream) {
var sourceFormat = upstream.sourceFormat;
var data = upstream.data;
if (!isSupportedSourceFormat(sourceFormat)) {
var errMsg = "";
throwError(errMsg);
}
if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {
var result = [];
for (var i = 0, len2 = data.length; i < len2; i++) {
result.push(data[i].slice());
}
return result;
} else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {
var result = [];
for (var i = 0, len2 = data.length; i < len2; i++) {
result.push(extend({}, data[i]));
}
return result;
}
}
function getDimensionInfo(dimensions, dimsByName, dim) {
if (dim == null) {
return;
}
if (isNumber(dim) || !isNaN(dim) && !hasOwn(dimsByName, dim)) {
return dimensions[dim];
} else if (hasOwn(dimsByName, dim)) {
return dimsByName[dim];
}
}
function cloneAllDimensionInfo(dimensions) {
return clone$4(dimensions);
}
var externalTransformMap = createHashMap();
function registerExternalTransform(externalTransform) {
externalTransform = clone$4(externalTransform);
var type4 = externalTransform.type;
var errMsg = "";
if (!type4) {
throwError(errMsg);
}
var typeParsed = type4.split(":");
if (typeParsed.length !== 2) {
throwError(errMsg);
}
var isBuiltIn = false;
if (typeParsed[0] === "echarts") {
type4 = typeParsed[1];
isBuiltIn = true;
}
externalTransform.__isBuiltIn = isBuiltIn;
externalTransformMap.set(type4, externalTransform);
}
function applyDataTransform(rawTransOption, sourceList, infoForPrint) {
var pipedTransOption = normalizeToArray(rawTransOption);
var pipeLen = pipedTransOption.length;
var errMsg = "";
if (!pipeLen) {
throwError(errMsg);
}
for (var i = 0, len2 = pipeLen; i < len2; i++) {
var transOption = pipedTransOption[i];
sourceList = applySingleDataTransform(transOption, sourceList);
if (i !== len2 - 1) {
sourceList.length = Math.max(sourceList.length, 1);
}
}
return sourceList;
}
function applySingleDataTransform(transOption, upSourceList, infoForPrint, pipeIndex) {
var errMsg = "";
if (!upSourceList.length) {
throwError(errMsg);
}
if (!isObject$3(transOption)) {
throwError(errMsg);
}
var transType = transOption.type;
var externalTransform = externalTransformMap.get(transType);
if (!externalTransform) {
throwError(errMsg);
}
var extUpSourceList = map$1(upSourceList, function(upSource) {
return createExternalSource(upSource, externalTransform);
});
var resultList = normalizeToArray(externalTransform.transform({
upstream: extUpSourceList[0],
upstreamList: extUpSourceList,
config: clone$4(transOption.config)
}));
return map$1(resultList, function(result, resultIndex) {
var errMsg2 = "";
if (!isObject$3(result)) {
throwError(errMsg2);
}
if (!result.data) {
throwError(errMsg2);
}
var sourceFormat = detectSourceFormat(result.data);
if (!isSupportedSourceFormat(sourceFormat)) {
throwError(errMsg2);
}
var resultMetaRawOption;
var firstUpSource = upSourceList[0];
if (firstUpSource && resultIndex === 0 && !result.dimensions) {
var startIndex = firstUpSource.startIndex;
if (startIndex) {
result.data = firstUpSource.data.slice(0, startIndex).concat(result.data);
}
resultMetaRawOption = {
seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN,
sourceHeader: startIndex,
dimensions: firstUpSource.metaRawOption.dimensions
};
} else {
resultMetaRawOption = {
seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN,
sourceHeader: 0,
dimensions: result.dimensions
};
}
return createSource(result.data, resultMetaRawOption, null);
});
}
function isSupportedSourceFormat(sourceFormat) {
return sourceFormat === SOURCE_FORMAT_ARRAY_ROWS || sourceFormat === SOURCE_FORMAT_OBJECT_ROWS;
}
var UNDEFINED = "undefined";
var CtorUint32Array = typeof Uint32Array === UNDEFINED ? Array : Uint32Array;
var CtorUint16Array = typeof Uint16Array === UNDEFINED ? Array : Uint16Array;
var CtorInt32Array$1 = typeof Int32Array === UNDEFINED ? Array : Int32Array;
var CtorFloat64Array = typeof Float64Array === UNDEFINED ? Array : Float64Array;
var dataCtors = {
"float": CtorFloat64Array,
"int": CtorInt32Array$1,
// Ordinal data type can be string or int
"ordinal": Array,
"number": Array,
"time": CtorFloat64Array
};
var defaultDimValueGetters;
function getIndicesCtor(rawCount) {
return rawCount > 65535 ? CtorUint32Array : CtorUint16Array;
}
function getInitialExtent() {
return [Infinity, -Infinity];
}
function cloneChunk(originalChunk) {
var Ctor = originalChunk.constructor;
return Ctor === Array ? originalChunk.slice() : new Ctor(originalChunk);
}
function prepareStore(store, dimIdx, dimType, end2, append2) {
var DataCtor = dataCtors[dimType || "float"];
if (append2) {
var oldStore = store[dimIdx];
var oldLen = oldStore && oldStore.length;
if (!(oldLen === end2)) {
var newStore = new DataCtor(end2);
for (var j = 0; j < oldLen; j++) {
newStore[j] = oldStore[j];
}
store[dimIdx] = newStore;
}
} else {
store[dimIdx] = new DataCtor(end2);
}
}
var DataStore = (
/** @class */
function() {
function DataStore2() {
this._chunks = [];
this._rawExtent = [];
this._extent = [];
this._count = 0;
this._rawCount = 0;
this._calcDimNameToIdx = createHashMap();
}
DataStore2.prototype.initData = function(provider, inputDimensions, dimValueGetter) {
this._provider = provider;
this._chunks = [];
this._indices = null;
this.getRawIndex = this._getRawIdxIdentity;
var source = provider.getSource();
var defaultGetter = this.defaultDimValueGetter = defaultDimValueGetters[source.sourceFormat];
this._dimValueGetter = dimValueGetter || defaultGetter;
this._rawExtent = [];
shouldRetrieveDataByName(source);
this._dimensions = map$1(inputDimensions, function(dim) {
return {
// Only pick these two props. Not leak other properties like orderMeta.
type: dim.type,
property: dim.property
};
});
this._initDataFromProvider(0, provider.count());
};
DataStore2.prototype.getProvider = function() {
return this._provider;
};
DataStore2.prototype.getSource = function() {
return this._provider.getSource();
};
DataStore2.prototype.ensureCalculationDimension = function(dimName, type4) {
var calcDimNameToIdx = this._calcDimNameToIdx;
var dimensions = this._dimensions;
var calcDimIdx = calcDimNameToIdx.get(dimName);
if (calcDimIdx != null) {
if (dimensions[calcDimIdx].type === type4) {
return calcDimIdx;
}
} else {
calcDimIdx = dimensions.length;
}
dimensions[calcDimIdx] = {
type: type4
};
calcDimNameToIdx.set(dimName, calcDimIdx);
this._chunks[calcDimIdx] = new dataCtors[type4 || "float"](this._rawCount);
this._rawExtent[calcDimIdx] = getInitialExtent();
return calcDimIdx;
};
DataStore2.prototype.collectOrdinalMeta = function(dimIdx, ordinalMeta) {
var chunk = this._chunks[dimIdx];
var dim = this._dimensions[dimIdx];
var rawExtents = this._rawExtent;
var offset2 = dim.ordinalOffset || 0;
var len2 = chunk.length;
if (offset2 === 0) {
rawExtents[dimIdx] = getInitialExtent();
}
var dimRawExtent = rawExtents[dimIdx];
for (var i = offset2; i < len2; i++) {
var val = chunk[i] = ordinalMeta.parseAndCollect(chunk[i]);
if (!isNaN(val)) {
dimRawExtent[0] = Math.min(val, dimRawExtent[0]);
dimRawExtent[1] = Math.max(val, dimRawExtent[1]);
}
}
dim.ordinalMeta = ordinalMeta;
dim.ordinalOffset = len2;
dim.type = "ordinal";
};
DataStore2.prototype.getOrdinalMeta = function(dimIdx) {
var dimInfo = this._dimensions[dimIdx];
var ordinalMeta = dimInfo.ordinalMeta;
return ordinalMeta;
};
DataStore2.prototype.getDimensionProperty = function(dimIndex) {
var item = this._dimensions[dimIndex];
return item && item.property;
};
DataStore2.prototype.appendData = function(data) {
var provider = this._provider;
var start2 = this.count();
provider.appendData(data);
var end2 = provider.count();
if (!provider.persistent) {
end2 += start2;
}
if (start2 < end2) {
this._initDataFromProvider(start2, end2, true);
}
return [start2, end2];
};
DataStore2.prototype.appendValues = function(values, minFillLen) {
var chunks = this._chunks;
var dimensions = this._dimensions;
var dimLen = dimensions.length;
var rawExtent = this._rawExtent;
var start2 = this.count();
var end2 = start2 + Math.max(values.length, minFillLen || 0);
for (var i = 0; i < dimLen; i++) {
var dim = dimensions[i];
prepareStore(chunks, i, dim.type, end2, true);
}
var emptyDataItem = [];
for (var idx = start2; idx < end2; idx++) {
var sourceIdx = idx - start2;
for (var dimIdx = 0; dimIdx < dimLen; dimIdx++) {
var dim = dimensions[dimIdx];
var val = defaultDimValueGetters.arrayRows.call(this, values[sourceIdx] || emptyDataItem, dim.property, sourceIdx, dimIdx);
chunks[dimIdx][idx] = val;
var dimRawExtent = rawExtent[dimIdx];
val < dimRawExtent[0] && (dimRawExtent[0] = val);
val > dimRawExtent[1] && (dimRawExtent[1] = val);
}
}
this._rawCount = this._count = end2;
return {
start: start2,
end: end2
};
};
DataStore2.prototype._initDataFromProvider = function(start2, end2, append2) {
var provider = this._provider;
var chunks = this._chunks;
var dimensions = this._dimensions;
var dimLen = dimensions.length;
var rawExtent = this._rawExtent;
var dimNames = map$1(dimensions, function(dim2) {
return dim2.property;
});
for (var i = 0; i < dimLen; i++) {
var dim = dimensions[i];
if (!rawExtent[i]) {
rawExtent[i] = getInitialExtent();
}
prepareStore(chunks, i, dim.type, end2, append2);
}
if (provider.fillStorage) {
provider.fillStorage(start2, end2, chunks, rawExtent);
} else {
var dataItem = [];
for (var idx = start2; idx < end2; idx++) {
dataItem = provider.getItem(idx, dataItem);
for (var dimIdx = 0; dimIdx < dimLen; dimIdx++) {
var dimStorage = chunks[dimIdx];
var val = this._dimValueGetter(dataItem, dimNames[dimIdx], idx, dimIdx);
dimStorage[idx] = val;
var dimRawExtent = rawExtent[dimIdx];
val < dimRawExtent[0] && (dimRawExtent[0] = val);
val > dimRawExtent[1] && (dimRawExtent[1] = val);
}
}
}
if (!provider.persistent && provider.clean) {
provider.clean();
}
this._rawCount = this._count = end2;
this._extent = [];
};
DataStore2.prototype.count = function() {
return this._count;
};
DataStore2.prototype.get = function(dim, idx) {
if (!(idx >= 0 && idx < this._count)) {
return NaN;
}
var dimStore = this._chunks[dim];
return dimStore ? dimStore[this.getRawIndex(idx)] : NaN;
};
DataStore2.prototype.getValues = function(dimensions, idx) {
var values = [];
var dimArr = [];
if (idx == null) {
idx = dimensions;
dimensions = [];
for (var i = 0; i < this._dimensions.length; i++) {
dimArr.push(i);
}
} else {
dimArr = dimensions;
}
for (var i = 0, len2 = dimArr.length; i < len2; i++) {
values.push(this.get(dimArr[i], idx));
}
return values;
};
DataStore2.prototype.getByRawIndex = function(dim, rawIdx) {
if (!(rawIdx >= 0 && rawIdx < this._rawCount)) {
return NaN;
}
var dimStore = this._chunks[dim];
return dimStore ? dimStore[rawIdx] : NaN;
};
DataStore2.prototype.getSum = function(dim) {
var dimData = this._chunks[dim];
var sum2 = 0;
if (dimData) {
for (var i = 0, len2 = this.count(); i < len2; i++) {
var value = this.get(dim, i);
if (!isNaN(value)) {
sum2 += value;
}
}
}
return sum2;
};
DataStore2.prototype.getMedian = function(dim) {
var dimDataArray = [];
this.each([dim], function(val) {
if (!isNaN(val)) {
dimDataArray.push(val);
}
});
var sortedDimDataArray = dimDataArray.sort(function(a, b2) {
return a - b2;
});
var len2 = this.count();
return len2 === 0 ? 0 : len2 % 2 === 1 ? sortedDimDataArray[(len2 - 1) / 2] : (sortedDimDataArray[len2 / 2] + sortedDimDataArray[len2 / 2 - 1]) / 2;
};
DataStore2.prototype.indexOfRawIndex = function(rawIndex) {
if (rawIndex >= this._rawCount || rawIndex < 0) {
return -1;
}
if (!this._indices) {
return rawIndex;
}
var indices = this._indices;
var rawDataIndex = indices[rawIndex];
if (rawDataIndex != null && rawDataIndex < this._count && rawDataIndex === rawIndex) {
return rawIndex;
}
var left = 0;
var right = this._count - 1;
while (left <= right) {
var mid = (left + right) / 2 | 0;
if (indices[mid] < rawIndex) {
left = mid + 1;
} else if (indices[mid] > rawIndex) {
right = mid - 1;
} else {
return mid;
}
}
return -1;
};
DataStore2.prototype.indicesOfNearest = function(dim, value, maxDistance) {
var chunks = this._chunks;
var dimData = chunks[dim];
var nearestIndices = [];
if (!dimData) {
return nearestIndices;
}
if (maxDistance == null) {
maxDistance = Infinity;
}
var minDist = Infinity;
var minDiff = -1;
var nearestIndicesLen = 0;
for (var i = 0, len2 = this.count(); i < len2; i++) {
var dataIndex = this.getRawIndex(i);
var diff = value - dimData[dataIndex];
var dist2 = Math.abs(diff);
if (dist2 <= maxDistance) {
if (dist2 < minDist || dist2 === minDist && diff >= 0 && minDiff < 0) {
minDist = dist2;
minDiff = diff;
nearestIndicesLen = 0;
}
if (diff === minDiff) {
nearestIndices[nearestIndicesLen++] = i;
}
}
}
nearestIndices.length = nearestIndicesLen;
return nearestIndices;
};
DataStore2.prototype.getIndices = function() {
var newIndices;
var indices = this._indices;
if (indices) {
var Ctor = indices.constructor;
var thisCount = this._count;
if (Ctor === Array) {
newIndices = new Ctor(thisCount);
for (var i = 0; i < thisCount; i++) {
newIndices[i] = indices[i];
}
} else {
newIndices = new Ctor(indices.buffer, 0, thisCount);
}
} else {
var Ctor = getIndicesCtor(this._rawCount);
newIndices = new Ctor(this.count());
for (var i = 0; i < newIndices.length; i++) {
newIndices[i] = i;
}
}
return newIndices;
};
DataStore2.prototype.filter = function(dims, cb2) {
if (!this._count) {
return this;
}
var newStore = this.clone();
var count2 = newStore.count();
var Ctor = getIndicesCtor(newStore._rawCount);
var newIndices = new Ctor(count2);
var value = [];
var dimSize = dims.length;
var offset2 = 0;
var dim0 = dims[0];
var chunks = newStore._chunks;
for (var i = 0; i < count2; i++) {
var keep = void 0;
var rawIdx = newStore.getRawIndex(i);
if (dimSize === 0) {
keep = cb2(i);
} else if (dimSize === 1) {
var val = chunks[dim0][rawIdx];
keep = cb2(val, i);
} else {
var k2 = 0;
for (; k2 < dimSize; k2++) {
value[k2] = chunks[dims[k2]][rawIdx];
}
value[k2] = i;
keep = cb2.apply(null, value);
}
if (keep) {
newIndices[offset2++] = rawIdx;
}
}
if (offset2 < count2) {
newStore._indices = newIndices;
}
newStore._count = offset2;
newStore._extent = [];
newStore._updateGetRawIdx();
return newStore;
};
DataStore2.prototype.selectRange = function(range3) {
var newStore = this.clone();
var len2 = newStore._count;
if (!len2) {
return this;
}
var dims = keys(range3);
var dimSize = dims.length;
if (!dimSize) {
return this;
}
var originalCount = newStore.count();
var Ctor = getIndicesCtor(newStore._rawCount);
var newIndices = new Ctor(originalCount);
var offset2 = 0;
var dim0 = dims[0];
var min3 = range3[dim0][0];
var max3 = range3[dim0][1];
var storeArr = newStore._chunks;
var quickFinished = false;
if (!newStore._indices) {
var idx = 0;
if (dimSize === 1) {
var dimStorage = storeArr[dims[0]];
for (var i = 0; i < len2; i++) {
var val = dimStorage[i];
if (val >= min3 && val <= max3 || isNaN(val)) {
newIndices[offset2++] = idx;
}
idx++;
}
quickFinished = true;
} else if (dimSize === 2) {
var dimStorage = storeArr[dims[0]];
var dimStorage2 = storeArr[dims[1]];
var min22 = range3[dims[1]][0];
var max22 = range3[dims[1]][1];
for (var i = 0; i < len2; i++) {
var val = dimStorage[i];
var val2 = dimStorage2[i];
if ((val >= min3 && val <= max3 || isNaN(val)) && (val2 >= min22 && val2 <= max22 || isNaN(val2))) {
newIndices[offset2++] = idx;
}
idx++;
}
quickFinished = true;
}
}
if (!quickFinished) {
if (dimSize === 1) {
for (var i = 0; i < originalCount; i++) {
var rawIndex = newStore.getRawIndex(i);
var val = storeArr[dims[0]][rawIndex];
if (val >= min3 && val <= max3 || isNaN(val)) {
newIndices[offset2++] = rawIndex;
}
}
} else {
for (var i = 0; i < originalCount; i++) {
var keep = true;
var rawIndex = newStore.getRawIndex(i);
for (var k2 = 0; k2 < dimSize; k2++) {
var dimk = dims[k2];
var val = storeArr[dimk][rawIndex];
if (val < range3[dimk][0] || val > range3[dimk][1]) {
keep = false;
}
}
if (keep) {
newIndices[offset2++] = newStore.getRawIndex(i);
}
}
}
}
if (offset2 < originalCount) {
newStore._indices = newIndices;
}
newStore._count = offset2;
newStore._extent = [];
newStore._updateGetRawIdx();
return newStore;
};
DataStore2.prototype.map = function(dims, cb2) {
var target = this.clone(dims);
this._updateDims(target, dims, cb2);
return target;
};
DataStore2.prototype.modify = function(dims, cb2) {
this._updateDims(this, dims, cb2);
};
DataStore2.prototype._updateDims = function(target, dims, cb2) {
var targetChunks = target._chunks;
var tmpRetValue = [];
var dimSize = dims.length;
var dataCount = target.count();
var values = [];
var rawExtent = target._rawExtent;
for (var i = 0; i < dims.length; i++) {
rawExtent[dims[i]] = getInitialExtent();
}
for (var dataIndex = 0; dataIndex < dataCount; dataIndex++) {
var rawIndex = target.getRawIndex(dataIndex);
for (var k2 = 0; k2 < dimSize; k2++) {
values[k2] = targetChunks[dims[k2]][rawIndex];
}
values[dimSize] = dataIndex;
var retValue = cb2 && cb2.apply(null, values);
if (retValue != null) {
if (typeof retValue !== "object") {
tmpRetValue[0] = retValue;
retValue = tmpRetValue;
}
for (var i = 0; i < retValue.length; i++) {
var dim = dims[i];
var val = retValue[i];
var rawExtentOnDim = rawExtent[dim];
var dimStore = targetChunks[dim];
if (dimStore) {
dimStore[rawIndex] = val;
}
if (val < rawExtentOnDim[0]) {
rawExtentOnDim[0] = val;
}
if (val > rawExtentOnDim[1]) {
rawExtentOnDim[1] = val;
}
}
}
}
};
DataStore2.prototype.lttbDownSample = function(valueDimension, rate) {
var target = this.clone([valueDimension], true);
var targetStorage = target._chunks;
var dimStore = targetStorage[valueDimension];
var len2 = this.count();
var sampledIndex = 0;
var frameSize = Math.floor(1 / rate);
var currentRawIndex = this.getRawIndex(0);
var maxArea;
var area;
var nextRawIndex;
var newIndices = new (getIndicesCtor(this._rawCount))(Math.min((Math.ceil(len2 / frameSize) + 2) * 2, len2));
newIndices[sampledIndex++] = currentRawIndex;
for (var i = 1; i < len2 - 1; i += frameSize) {
var nextFrameStart = Math.min(i + frameSize, len2 - 1);
var nextFrameEnd = Math.min(i + frameSize * 2, len2);
var avgX = (nextFrameEnd + nextFrameStart) / 2;
var avgY = 0;
for (var idx = nextFrameStart; idx < nextFrameEnd; idx++) {
var rawIndex = this.getRawIndex(idx);
var y2 = dimStore[rawIndex];
if (isNaN(y2)) {
continue;
}
avgY += y2;
}
avgY /= nextFrameEnd - nextFrameStart;
var frameStart = i;
var frameEnd = Math.min(i + frameSize, len2);
var pointAX = i - 1;
var pointAY = dimStore[currentRawIndex];
maxArea = -1;
nextRawIndex = frameStart;
var firstNaNIndex = -1;
var countNaN = 0;
for (var idx = frameStart; idx < frameEnd; idx++) {
var rawIndex = this.getRawIndex(idx);
var y2 = dimStore[rawIndex];
if (isNaN(y2)) {
countNaN++;
if (firstNaNIndex < 0) {
firstNaNIndex = rawIndex;
}
continue;
}
area = Math.abs((pointAX - avgX) * (y2 - pointAY) - (pointAX - idx) * (avgY - pointAY));
if (area > maxArea) {
maxArea = area;
nextRawIndex = rawIndex;
}
}
if (countNaN > 0 && countNaN < frameEnd - frameStart) {
newIndices[sampledIndex++] = Math.min(firstNaNIndex, nextRawIndex);
nextRawIndex = Math.max(firstNaNIndex, nextRawIndex);
}
newIndices[sampledIndex++] = nextRawIndex;
currentRawIndex = nextRawIndex;
}
newIndices[sampledIndex++] = this.getRawIndex(len2 - 1);
target._count = sampledIndex;
target._indices = newIndices;
target.getRawIndex = this._getRawIdx;
return target;
};
DataStore2.prototype.downSample = function(dimension, rate, sampleValue, sampleIndex) {
var target = this.clone([dimension], true);
var targetStorage = target._chunks;
var frameValues = [];
var frameSize = Math.floor(1 / rate);
var dimStore = targetStorage[dimension];
var len2 = this.count();
var rawExtentOnDim = target._rawExtent[dimension] = getInitialExtent();
var newIndices = new (getIndicesCtor(this._rawCount))(Math.ceil(len2 / frameSize));
var offset2 = 0;
for (var i = 0; i < len2; i += frameSize) {
if (frameSize > len2 - i) {
frameSize = len2 - i;
frameValues.length = frameSize;
}
for (var k2 = 0; k2 < frameSize; k2++) {
var dataIdx = this.getRawIndex(i + k2);
frameValues[k2] = dimStore[dataIdx];
}
var value = sampleValue(frameValues);
var sampleFrameIdx = this.getRawIndex(Math.min(i + sampleIndex(frameValues, value) || 0, len2 - 1));
dimStore[sampleFrameIdx] = value;
if (value < rawExtentOnDim[0]) {
rawExtentOnDim[0] = value;
}
if (value > rawExtentOnDim[1]) {
rawExtentOnDim[1] = value;
}
newIndices[offset2++] = sampleFrameIdx;
}
target._count = offset2;
target._indices = newIndices;
target._updateGetRawIdx();
return target;
};
DataStore2.prototype.each = function(dims, cb2) {
if (!this._count) {
return;
}
var dimSize = dims.length;
var chunks = this._chunks;
for (var i = 0, len2 = this.count(); i < len2; i++) {
var rawIdx = this.getRawIndex(i);
switch (dimSize) {
case 0:
cb2(i);
break;
case 1:
cb2(chunks[dims[0]][rawIdx], i);
break;
case 2:
cb2(chunks[dims[0]][rawIdx], chunks[dims[1]][rawIdx], i);
break;
default:
var k2 = 0;
var value = [];
for (; k2 < dimSize; k2++) {
value[k2] = chunks[dims[k2]][rawIdx];
}
value[k2] = i;
cb2.apply(null, value);
}
}
};
DataStore2.prototype.getDataExtent = function(dim) {
var dimData = this._chunks[dim];
var initialExtent = getInitialExtent();
if (!dimData) {
return initialExtent;
}
var currEnd = this.count();
var useRaw = !this._indices;
var dimExtent;
if (useRaw) {
return this._rawExtent[dim].slice();
}
dimExtent = this._extent[dim];
if (dimExtent) {
return dimExtent.slice();
}
dimExtent = initialExtent;
var min3 = dimExtent[0];
var max3 = dimExtent[1];
for (var i = 0; i < currEnd; i++) {
var rawIdx = this.getRawIndex(i);
var value = dimData[rawIdx];
value < min3 && (min3 = value);
value > max3 && (max3 = value);
}
dimExtent = [min3, max3];
this._extent[dim] = dimExtent;
return dimExtent;
};
DataStore2.prototype.getRawDataItem = function(idx) {
var rawIdx = this.getRawIndex(idx);
if (!this._provider.persistent) {
var val = [];
var chunks = this._chunks;
for (var i = 0; i < chunks.length; i++) {
val.push(chunks[i][rawIdx]);
}
return val;
} else {
return this._provider.getItem(rawIdx);
}
};
DataStore2.prototype.clone = function(clonedDims, ignoreIndices) {
var target = new DataStore2();
var chunks = this._chunks;
var clonedDimsMap = clonedDims && reduce(clonedDims, function(obj, dimIdx) {
obj[dimIdx] = true;
return obj;
}, {});
if (clonedDimsMap) {
for (var i = 0; i < chunks.length; i++) {
target._chunks[i] = !clonedDimsMap[i] ? chunks[i] : cloneChunk(chunks[i]);
}
} else {
target._chunks = chunks;
}
this._copyCommonProps(target);
if (!ignoreIndices) {
target._indices = this._cloneIndices();
}
target._updateGetRawIdx();
return target;
};
DataStore2.prototype._copyCommonProps = function(target) {
target._count = this._count;
target._rawCount = this._rawCount;
target._provider = this._provider;
target._dimensions = this._dimensions;
target._extent = clone$4(this._extent);
target._rawExtent = clone$4(this._rawExtent);
};
DataStore2.prototype._cloneIndices = function() {
if (this._indices) {
var Ctor = this._indices.constructor;
var indices = void 0;
if (Ctor === Array) {
var thisCount = this._indices.length;
indices = new Ctor(thisCount);
for (var i = 0; i < thisCount; i++) {
indices[i] = this._indices[i];
}
} else {
indices = new Ctor(this._indices);
}
return indices;
}
return null;
};
DataStore2.prototype._getRawIdxIdentity = function(idx) {
return idx;
};
DataStore2.prototype._getRawIdx = function(idx) {
if (idx < this._count && idx >= 0) {
return this._indices[idx];
}
return -1;
};
DataStore2.prototype._updateGetRawIdx = function() {
this.getRawIndex = this._indices ? this._getRawIdx : this._getRawIdxIdentity;
};
DataStore2.internalField = function() {
function getDimValueSimply(dataItem, property, dataIndex, dimIndex) {
return parseDataValue(dataItem[dimIndex], this._dimensions[dimIndex]);
}
defaultDimValueGetters = {
arrayRows: getDimValueSimply,
objectRows: function(dataItem, property, dataIndex, dimIndex) {
return parseDataValue(dataItem[property], this._dimensions[dimIndex]);
},
keyedColumns: getDimValueSimply,
original: function(dataItem, property, dataIndex, dimIndex) {
var value = dataItem && (dataItem.value == null ? dataItem : dataItem.value);
return parseDataValue(value instanceof Array ? value[dimIndex] : value, this._dimensions[dimIndex]);
},
typedArray: function(dataItem, property, dataIndex, dimIndex) {
return dataItem[dimIndex];
}
};
}();
return DataStore2;
}()
);
var SourceManager = (
/** @class */
function() {
function SourceManager2(sourceHost) {
this._sourceList = [];
this._storeList = [];
this._upstreamSignList = [];
this._versionSignBase = 0;
this._dirty = true;
this._sourceHost = sourceHost;
}
SourceManager2.prototype.dirty = function() {
this._setLocalSource([], []);
this._storeList = [];
this._dirty = true;
};
SourceManager2.prototype._setLocalSource = function(sourceList, upstreamSignList) {
this._sourceList = sourceList;
this._upstreamSignList = upstreamSignList;
this._versionSignBase++;
if (this._versionSignBase > 9e10) {
this._versionSignBase = 0;
}
};
SourceManager2.prototype._getVersionSign = function() {
return this._sourceHost.uid + "_" + this._versionSignBase;
};
SourceManager2.prototype.prepareSource = function() {
if (this._isDirty()) {
this._createSource();
this._dirty = false;
}
};
SourceManager2.prototype._createSource = function() {
this._setLocalSource([], []);
var sourceHost = this._sourceHost;
var upSourceMgrList = this._getUpstreamSourceManagers();
var hasUpstream = !!upSourceMgrList.length;
var resultSourceList;
var upstreamSignList;
if (isSeries(sourceHost)) {
var seriesModel = sourceHost;
var data = void 0;
var sourceFormat = void 0;
var upSource = void 0;
if (hasUpstream) {
var upSourceMgr = upSourceMgrList[0];
upSourceMgr.prepareSource();
upSource = upSourceMgr.getSource();
data = upSource.data;
sourceFormat = upSource.sourceFormat;
upstreamSignList = [upSourceMgr._getVersionSign()];
} else {
data = seriesModel.get("data", true);
sourceFormat = isTypedArray(data) ? SOURCE_FORMAT_TYPED_ARRAY : SOURCE_FORMAT_ORIGINAL;
upstreamSignList = [];
}
var newMetaRawOption = this._getSourceMetaRawOption() || {};
var upMetaRawOption = upSource && upSource.metaRawOption || {};
var seriesLayoutBy = retrieve2(newMetaRawOption.seriesLayoutBy, upMetaRawOption.seriesLayoutBy) || null;
var sourceHeader = retrieve2(newMetaRawOption.sourceHeader, upMetaRawOption.sourceHeader);
var dimensions = retrieve2(newMetaRawOption.dimensions, upMetaRawOption.dimensions);
var needsCreateSource = seriesLayoutBy !== upMetaRawOption.seriesLayoutBy || !!sourceHeader !== !!upMetaRawOption.sourceHeader || dimensions;
resultSourceList = needsCreateSource ? [createSource(data, {
seriesLayoutBy,
sourceHeader,
dimensions
}, sourceFormat)] : [];
} else {
var datasetModel = sourceHost;
if (hasUpstream) {
var result = this._applyTransform(upSourceMgrList);
resultSourceList = result.sourceList;
upstreamSignList = result.upstreamSignList;
} else {
var sourceData = datasetModel.get("source", true);
resultSourceList = [createSource(sourceData, this._getSourceMetaRawOption(), null)];
upstreamSignList = [];
}
}
this._setLocalSource(resultSourceList, upstreamSignList);
};
SourceManager2.prototype._applyTransform = function(upMgrList) {
var datasetModel = this._sourceHost;
var transformOption = datasetModel.get("transform", true);
var fromTransformResult = datasetModel.get("fromTransformResult", true);
if (fromTransformResult != null) {
var errMsg = "";
if (upMgrList.length !== 1) {
doThrow(errMsg);
}
}
var sourceList;
var upSourceList = [];
var upstreamSignList = [];
each$f(upMgrList, function(upMgr) {
upMgr.prepareSource();
var upSource = upMgr.getSource(fromTransformResult || 0);
var errMsg2 = "";
if (fromTransformResult != null && !upSource) {
doThrow(errMsg2);
}
upSourceList.push(upSource);
upstreamSignList.push(upMgr._getVersionSign());
});
if (transformOption) {
sourceList = applyDataTransform(transformOption, upSourceList, {
datasetIndex: datasetModel.componentIndex
});
} else if (fromTransformResult != null) {
sourceList = [cloneSourceShallow(upSourceList[0])];
}
return {
sourceList,
upstreamSignList
};
};
SourceManager2.prototype._isDirty = function() {
if (this._dirty) {
return true;
}
var upSourceMgrList = this._getUpstreamSourceManagers();
for (var i = 0; i < upSourceMgrList.length; i++) {
var upSrcMgr = upSourceMgrList[i];
if (
// Consider the case that there is ancestor diry, call it recursively.
// The performance is probably not an issue because usually the chain is not long.
upSrcMgr._isDirty() || this._upstreamSignList[i] !== upSrcMgr._getVersionSign()
) {
return true;
}
}
};
SourceManager2.prototype.getSource = function(sourceIndex) {
sourceIndex = sourceIndex || 0;
var source = this._sourceList[sourceIndex];
if (!source) {
var upSourceMgrList = this._getUpstreamSourceManagers();
return upSourceMgrList[0] && upSourceMgrList[0].getSource(sourceIndex);
}
return source;
};
SourceManager2.prototype.getSharedDataStore = function(seriesDimRequest) {
var schema = seriesDimRequest.makeStoreSchema();
return this._innerGetDataStore(schema.dimensions, seriesDimRequest.source, schema.hash);
};
SourceManager2.prototype._innerGetDataStore = function(storeDims, seriesSource, sourceReadKey) {
var sourceIndex = 0;
var storeList = this._storeList;
var cachedStoreMap = storeList[sourceIndex];
if (!cachedStoreMap) {
cachedStoreMap = storeList[sourceIndex] = {};
}
var cachedStore = cachedStoreMap[sourceReadKey];
if (!cachedStore) {
var upSourceMgr = this._getUpstreamSourceManagers()[0];
if (isSeries(this._sourceHost) && upSourceMgr) {
cachedStore = upSourceMgr._innerGetDataStore(storeDims, seriesSource, sourceReadKey);
} else {
cachedStore = new DataStore();
cachedStore.initData(new DefaultDataProvider(seriesSource, storeDims.length), storeDims);
}
cachedStoreMap[sourceReadKey] = cachedStore;
}
return cachedStore;
};
SourceManager2.prototype._getUpstreamSourceManagers = function() {
var sourceHost = this._sourceHost;
if (isSeries(sourceHost)) {
var datasetModel = querySeriesUpstreamDatasetModel(sourceHost);
return !datasetModel ? [] : [datasetModel.getSourceManager()];
} else {
return map$1(queryDatasetUpstreamDatasetModels(sourceHost), function(datasetModel2) {
return datasetModel2.getSourceManager();
});
}
};
SourceManager2.prototype._getSourceMetaRawOption = function() {
var sourceHost = this._sourceHost;
var seriesLayoutBy;
var sourceHeader;
var dimensions;
if (isSeries(sourceHost)) {
seriesLayoutBy = sourceHost.get("seriesLayoutBy", true);
sourceHeader = sourceHost.get("sourceHeader", true);
dimensions = sourceHost.get("dimensions", true);
} else if (!this._getUpstreamSourceManagers().length) {
var model = sourceHost;
seriesLayoutBy = model.get("seriesLayoutBy", true);
sourceHeader = model.get("sourceHeader", true);
dimensions = model.get("dimensions", true);
}
return {
seriesLayoutBy,
sourceHeader,
dimensions
};
};
return SourceManager2;
}()
);
function disableTransformOptionMerge(datasetModel) {
var transformOption = datasetModel.option.transform;
transformOption && setAsPrimitive(datasetModel.option.transform);
}
function isSeries(sourceHost) {
return sourceHost.mainType === "series";
}
function doThrow(errMsg) {
throw new Error(errMsg);
}
var TOOLTIP_LINE_HEIGHT_CSS = "line-height:1";
function getTooltipTextStyle(textStyle, renderMode) {
var nameFontColor = textStyle.color || "#6e7079";
var nameFontSize = textStyle.fontSize || 12;
var nameFontWeight = textStyle.fontWeight || "400";
var valueFontColor = textStyle.color || "#464646";
var valueFontSize = textStyle.fontSize || 14;
var valueFontWeight = textStyle.fontWeight || "900";
if (renderMode === "html") {
return {
// eslint-disable-next-line max-len
nameStyle: "font-size:" + encodeHTML(nameFontSize + "") + "px;color:" + encodeHTML(nameFontColor) + ";font-weight:" + encodeHTML(nameFontWeight + ""),
// eslint-disable-next-line max-len
valueStyle: "font-size:" + encodeHTML(valueFontSize + "") + "px;color:" + encodeHTML(valueFontColor) + ";font-weight:" + encodeHTML(valueFontWeight + "")
};
} else {
return {
nameStyle: {
fontSize: nameFontSize,
fill: nameFontColor,
fontWeight: nameFontWeight
},
valueStyle: {
fontSize: valueFontSize,
fill: valueFontColor,
fontWeight: valueFontWeight
}
};
}
}
var HTML_GAPS = [0, 10, 20, 30];
var RICH_TEXT_GAPS = ["", "\n", "\n\n", "\n\n\n"];
function createTooltipMarkup(type4, option) {
option.type = type4;
return option;
}
function isSectionFragment(frag) {
return frag.type === "section";
}
function getBuilder(frag) {
return isSectionFragment(frag) ? buildSection : buildNameValue;
}
function getBlockGapLevel(frag) {
if (isSectionFragment(frag)) {
var gapLevel_1 = 0;
var subBlockLen = frag.blocks.length;
var hasInnerGap_1 = subBlockLen > 1 || subBlockLen > 0 && !frag.noHeader;
each$f(frag.blocks, function(subBlock) {
var subGapLevel = getBlockGapLevel(subBlock);
if (subGapLevel >= gapLevel_1) {
gapLevel_1 = subGapLevel + +(hasInnerGap_1 && // 0 always can not be readable gap level.
(!subGapLevel || isSectionFragment(subBlock) && !subBlock.noHeader));
}
});
return gapLevel_1;
}
return 0;
}
function buildSection(ctx, fragment, topMarginForOuterGap, toolTipTextStyle) {
var noHeader = fragment.noHeader;
var gaps = getGap(getBlockGapLevel(fragment));
var subMarkupTextList = [];
var subBlocks = fragment.blocks || [];
assert(!subBlocks || isArray$1(subBlocks));
subBlocks = subBlocks || [];
var orderMode = ctx.orderMode;
if (fragment.sortBlocks && orderMode) {
subBlocks = subBlocks.slice();
var orderMap = {
valueAsc: "asc",
valueDesc: "desc"
};
if (hasOwn(orderMap, orderMode)) {
var comparator_1 = new SortOrderComparator(orderMap[orderMode], null);
subBlocks.sort(function(a, b2) {
return comparator_1.evaluate(a.sortParam, b2.sortParam);
});
} else if (orderMode === "seriesDesc") {
subBlocks.reverse();
}
}
each$f(subBlocks, function(subBlock, idx) {
var valueFormatter = fragment.valueFormatter;
var subMarkupText2 = getBuilder(subBlock)(
// Inherit valueFormatter
valueFormatter ? extend(extend({}, ctx), {
valueFormatter
}) : ctx,
subBlock,
idx > 0 ? gaps.html : 0,
toolTipTextStyle
);
subMarkupText2 != null && subMarkupTextList.push(subMarkupText2);
});
var subMarkupText = ctx.renderMode === "richText" ? subMarkupTextList.join(gaps.richText) : wrapBlockHTML(subMarkupTextList.join(""), noHeader ? topMarginForOuterGap : gaps.html);
if (noHeader) {
return subMarkupText;
}
var displayableHeader = makeValueReadable(fragment.header, "ordinal", ctx.useUTC);
var nameStyle = getTooltipTextStyle(toolTipTextStyle, ctx.renderMode).nameStyle;
if (ctx.renderMode === "richText") {
return wrapInlineNameRichText(ctx, displayableHeader, nameStyle) + gaps.richText + subMarkupText;
} else {
return wrapBlockHTML('<div style="' + nameStyle + ";" + TOOLTIP_LINE_HEIGHT_CSS + ';">' + encodeHTML(displayableHeader) + "</div>" + subMarkupText, topMarginForOuterGap);
}
}
function buildNameValue(ctx, fragment, topMarginForOuterGap, toolTipTextStyle) {
var renderMode = ctx.renderMode;
var noName = fragment.noName;
var noValue = fragment.noValue;
var noMarker = !fragment.markerType;
var name = fragment.name;
var useUTC = ctx.useUTC;
var valueFormatter = fragment.valueFormatter || ctx.valueFormatter || function(value) {
value = isArray$1(value) ? value : [value];
return map$1(value, function(val, idx) {
return makeValueReadable(val, isArray$1(valueTypeOption) ? valueTypeOption[idx] : valueTypeOption, useUTC);
});
};
if (noName && noValue) {
return;
}
var markerStr = noMarker ? "" : ctx.markupStyleCreator.makeTooltipMarker(fragment.markerType, fragment.markerColor || "#333", renderMode);
var readableName = noName ? "" : makeValueReadable(name, "ordinal", useUTC);
var valueTypeOption = fragment.valueType;
var readableValueList = noValue ? [] : valueFormatter(fragment.value, fragment.dataIndex);
var valueAlignRight = !noMarker || !noName;
var valueCloseToMarker = !noMarker && noName;
var _a2 = getTooltipTextStyle(toolTipTextStyle, renderMode), nameStyle = _a2.nameStyle, valueStyle = _a2.valueStyle;
return renderMode === "richText" ? (noMarker ? "" : markerStr) + (noName ? "" : wrapInlineNameRichText(ctx, readableName, nameStyle)) + (noValue ? "" : wrapInlineValueRichText(ctx, readableValueList, valueAlignRight, valueCloseToMarker, valueStyle)) : wrapBlockHTML((noMarker ? "" : markerStr) + (noName ? "" : wrapInlineNameHTML(readableName, !noMarker, nameStyle)) + (noValue ? "" : wrapInlineValueHTML(readableValueList, valueAlignRight, valueCloseToMarker, valueStyle)), topMarginForOuterGap);
}
function buildTooltipMarkup(fragment, markupStyleCreator, renderMode, orderMode, useUTC, toolTipTextStyle) {
if (!fragment) {
return;
}
var builder = getBuilder(fragment);
var ctx = {
useUTC,
renderMode,
orderMode,
markupStyleCreator,
valueFormatter: fragment.valueFormatter
};
return builder(ctx, fragment, 0, toolTipTextStyle);
}
function getGap(gapLevel) {
return {
html: HTML_GAPS[gapLevel],
richText: RICH_TEXT_GAPS[gapLevel]
};
}
function wrapBlockHTML(encodedContent, topGap) {
var clearfix = '<div style="clear:both"></div>';
var marginCSS = "margin: " + topGap + "px 0 0";
return '<div style="' + marginCSS + ";" + TOOLTIP_LINE_HEIGHT_CSS + ';">' + encodedContent + clearfix + "</div>";
}
function wrapInlineNameHTML(name, leftHasMarker, style2) {
var marginCss = leftHasMarker ? "margin-left:2px" : "";
return '<span style="' + style2 + ";" + marginCss + '">' + encodeHTML(name) + "</span>";
}
function wrapInlineValueHTML(valueList, alignRight, valueCloseToMarker, style2) {
var paddingStr = valueCloseToMarker ? "10px" : "20px";
var alignCSS = alignRight ? "float:right;margin-left:" + paddingStr : "";
valueList = isArray$1(valueList) ? valueList : [valueList];
return '<span style="' + alignCSS + ";" + style2 + '">' + map$1(valueList, function(value) {
return encodeHTML(value);
}).join(" ") + "</span>";
}
function wrapInlineNameRichText(ctx, name, style2) {
return ctx.markupStyleCreator.wrapRichTextStyle(name, style2);
}
function wrapInlineValueRichText(ctx, values, alignRight, valueCloseToMarker, style2) {
var styles2 = [style2];
var paddingLeft = valueCloseToMarker ? 10 : 20;
alignRight && styles2.push({
padding: [0, 0, 0, paddingLeft],
align: "right"
});
return ctx.markupStyleCreator.wrapRichTextStyle(isArray$1(values) ? values.join(" ") : values, styles2);
}
function retrieveVisualColorForTooltipMarker(series, dataIndex) {
var style2 = series.getData().getItemVisual(dataIndex, "style");
var color2 = style2[series.visualDrawType];
return convertToColorString(color2);
}
function getPaddingFromTooltipModel(model, renderMode) {
var padding = model.get("padding");
return padding != null ? padding : renderMode === "richText" ? [8, 10] : 10;
}
var TooltipMarkupStyleCreator = (
/** @class */
function() {
function TooltipMarkupStyleCreator2() {
this.richTextStyles = {};
this._nextStyleNameId = getRandomIdBase();
}
TooltipMarkupStyleCreator2.prototype._generateStyleName = function() {
return "__EC_aUTo_" + this._nextStyleNameId++;
};
TooltipMarkupStyleCreator2.prototype.makeTooltipMarker = function(markerType, colorStr, renderMode) {
var markerId = renderMode === "richText" ? this._generateStyleName() : null;
var marker = getTooltipMarker({
color: colorStr,
type: markerType,
renderMode,
markerId
});
if (isString$1(marker)) {
return marker;
} else {
this.richTextStyles[markerId] = marker.style;
return marker.content;
}
};
TooltipMarkupStyleCreator2.prototype.wrapRichTextStyle = function(text, styles2) {
var finalStl = {};
if (isArray$1(styles2)) {
each$f(styles2, function(stl) {
return extend(finalStl, stl);
});
} else {
extend(finalStl, styles2);
}
var styleName = this._generateStyleName();
this.richTextStyles[styleName] = finalStl;
return "{" + styleName + "|" + text + "}";
};
return TooltipMarkupStyleCreator2;
}()
);
function defaultSeriesFormatTooltip(opt) {
var series = opt.series;
var dataIndex = opt.dataIndex;
var multipleSeries = opt.multipleSeries;
var data = series.getData();
var tooltipDims = data.mapDimensionsAll("defaultedTooltip");
var tooltipDimLen = tooltipDims.length;
var value = series.getRawValue(dataIndex);
var isValueArr = isArray$1(value);
var markerColor = retrieveVisualColorForTooltipMarker(series, dataIndex);
var inlineValue;
var inlineValueType;
var subBlocks;
var sortParam;
if (tooltipDimLen > 1 || isValueArr && !tooltipDimLen) {
var formatArrResult = formatTooltipArrayValue(value, series, dataIndex, tooltipDims, markerColor);
inlineValue = formatArrResult.inlineValues;
inlineValueType = formatArrResult.inlineValueTypes;
subBlocks = formatArrResult.blocks;
sortParam = formatArrResult.inlineValues[0];
} else if (tooltipDimLen) {
var dimInfo = data.getDimensionInfo(tooltipDims[0]);
sortParam = inlineValue = retrieveRawValue(data, dataIndex, tooltipDims[0]);
inlineValueType = dimInfo.type;
} else {
sortParam = inlineValue = isValueArr ? value[0] : value;
}
var seriesNameSpecified = isNameSpecified(series);
var seriesName = seriesNameSpecified && series.name || "";
var itemName = data.getName(dataIndex);
var inlineName = multipleSeries ? seriesName : itemName;
return createTooltipMarkup("section", {
header: seriesName,
// When series name is not specified, do not show a header line with only '-'.
// This case always happens in tooltip.trigger: 'item'.
noHeader: multipleSeries || !seriesNameSpecified,
sortParam,
blocks: [createTooltipMarkup("nameValue", {
markerType: "item",
markerColor,
// Do not mix display seriesName and itemName in one tooltip,
// which might confuses users.
name: inlineName,
// name dimension might be auto assigned, where the name might
// be not readable. So we check trim here.
noName: !trim$1(inlineName),
value: inlineValue,
valueType: inlineValueType,
dataIndex
})].concat(subBlocks || [])
});
}
function formatTooltipArrayValue(value, series, dataIndex, tooltipDims, colorStr) {
var data = series.getData();
var isValueMultipleLine = reduce(value, function(isValueMultipleLine2, val, idx) {
var dimItem = data.getDimensionInfo(idx);
return isValueMultipleLine2 = isValueMultipleLine2 || dimItem && dimItem.tooltip !== false && dimItem.displayName != null;
}, false);
var inlineValues = [];
var inlineValueTypes = [];
var blocks = [];
tooltipDims.length ? each$f(tooltipDims, function(dim) {
setEachItem(retrieveRawValue(data, dataIndex, dim), dim);
}) : each$f(value, setEachItem);
function setEachItem(val, dim) {
var dimInfo = data.getDimensionInfo(dim);
if (!dimInfo || dimInfo.otherDims.tooltip === false) {
return;
}
if (isValueMultipleLine) {
blocks.push(createTooltipMarkup("nameValue", {
markerType: "subItem",
markerColor: colorStr,
name: dimInfo.displayName,
value: val,
valueType: dimInfo.type
}));
} else {
inlineValues.push(val);
inlineValueTypes.push(dimInfo.type);
}
}
return {
inlineValues,
inlineValueTypes,
blocks
};
}
var inner$k = makeInner();
function getSelectionKey(data, dataIndex) {
return data.getName(dataIndex) || data.getId(dataIndex);
}
var SERIES_UNIVERSAL_TRANSITION_PROP = "__universalTransitionEnabled";
var SeriesModel = (
/** @class */
function(_super) {
__extends(SeriesModel2, _super);
function SeriesModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this._selectedDataIndicesMap = {};
return _this;
}
SeriesModel2.prototype.init = function(option, parentModel, ecModel) {
this.seriesIndex = this.componentIndex;
this.dataTask = createTask({
count: dataTaskCount,
reset: dataTaskReset
});
this.dataTask.context = {
model: this
};
this.mergeDefaultAndTheme(option, ecModel);
var sourceManager = inner$k(this).sourceManager = new SourceManager(this);
sourceManager.prepareSource();
var data = this.getInitialData(option, ecModel);
wrapData(data, this);
this.dataTask.context.data = data;
inner$k(this).dataBeforeProcessed = data;
autoSeriesName(this);
this._initSelectedMapFromData(data);
};
SeriesModel2.prototype.mergeDefaultAndTheme = function(option, ecModel) {
var layoutMode = fetchLayoutMode(this);
var inputPositionParams = layoutMode ? getLayoutParams(option) : {};
var themeSubType = this.subType;
if (ComponentModel.hasClass(themeSubType)) {
themeSubType += "Series";
}
merge(option, ecModel.getTheme().get(this.subType));
merge(option, this.getDefaultOption());
defaultEmphasis(option, "label", ["show"]);
this.fillDataTextStyle(option.data);
if (layoutMode) {
mergeLayoutParam(option, inputPositionParams, layoutMode);
}
};
SeriesModel2.prototype.mergeOption = function(newSeriesOption, ecModel) {
newSeriesOption = merge(this.option, newSeriesOption, true);
this.fillDataTextStyle(newSeriesOption.data);
var layoutMode = fetchLayoutMode(this);
if (layoutMode) {
mergeLayoutParam(this.option, newSeriesOption, layoutMode);
}
var sourceManager = inner$k(this).sourceManager;
sourceManager.dirty();
sourceManager.prepareSource();
var data = this.getInitialData(newSeriesOption, ecModel);
wrapData(data, this);
this.dataTask.dirty();
this.dataTask.context.data = data;
inner$k(this).dataBeforeProcessed = data;
autoSeriesName(this);
this._initSelectedMapFromData(data);
};
SeriesModel2.prototype.fillDataTextStyle = function(data) {
if (data && !isTypedArray(data)) {
var props = ["show"];
for (var i = 0; i < data.length; i++) {
if (data[i] && data[i].label) {
defaultEmphasis(data[i], "label", props);
}
}
}
};
SeriesModel2.prototype.getInitialData = function(option, ecModel) {
return;
};
SeriesModel2.prototype.appendData = function(params) {
var data = this.getRawData();
data.appendData(params.data);
};
SeriesModel2.prototype.getData = function(dataType) {
var task = getCurrentTask(this);
if (task) {
var data = task.context.data;
return dataType == null || !data.getLinkedData ? data : data.getLinkedData(dataType);
} else {
return inner$k(this).data;
}
};
SeriesModel2.prototype.getAllData = function() {
var mainData = this.getData();
return mainData && mainData.getLinkedDataAll ? mainData.getLinkedDataAll() : [{
data: mainData
}];
};
SeriesModel2.prototype.setData = function(data) {
var task = getCurrentTask(this);
if (task) {
var context = task.context;
context.outputData = data;
if (task !== this.dataTask) {
context.data = data;
}
}
inner$k(this).data = data;
};
SeriesModel2.prototype.getEncode = function() {
var encode = this.get("encode", true);
if (encode) {
return createHashMap(encode);
}
};
SeriesModel2.prototype.getSourceManager = function() {
return inner$k(this).sourceManager;
};
SeriesModel2.prototype.getSource = function() {
return this.getSourceManager().getSource();
};
SeriesModel2.prototype.getRawData = function() {
return inner$k(this).dataBeforeProcessed;
};
SeriesModel2.prototype.getColorBy = function() {
var colorBy = this.get("colorBy");
return colorBy || "series";
};
SeriesModel2.prototype.isColorBySeries = function() {
return this.getColorBy() === "series";
};
SeriesModel2.prototype.getBaseAxis = function() {
var coordSys = this.coordinateSystem;
return coordSys && coordSys.getBaseAxis && coordSys.getBaseAxis();
};
SeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) {
return defaultSeriesFormatTooltip({
series: this,
dataIndex,
multipleSeries
});
};
SeriesModel2.prototype.isAnimationEnabled = function() {
var ecModel = this.ecModel;
if (env.node && !(ecModel && ecModel.ssr)) {
return false;
}
var animationEnabled = this.getShallow("animation");
if (animationEnabled) {
if (this.getData().count() > this.getShallow("animationThreshold")) {
animationEnabled = false;
}
}
return !!animationEnabled;
};
SeriesModel2.prototype.restoreData = function() {
this.dataTask.dirty();
};
SeriesModel2.prototype.getColorFromPalette = function(name, scope, requestColorNum) {
var ecModel = this.ecModel;
var color2 = PaletteMixin.prototype.getColorFromPalette.call(this, name, scope, requestColorNum);
if (!color2) {
color2 = ecModel.getColorFromPalette(name, scope, requestColorNum);
}
return color2;
};
SeriesModel2.prototype.coordDimToDataDim = function(coordDim) {
return this.getRawData().mapDimensionsAll(coordDim);
};
SeriesModel2.prototype.getProgressive = function() {
return this.get("progressive");
};
SeriesModel2.prototype.getProgressiveThreshold = function() {
return this.get("progressiveThreshold");
};
SeriesModel2.prototype.select = function(innerDataIndices, dataType) {
this._innerSelect(this.getData(dataType), innerDataIndices);
};
SeriesModel2.prototype.unselect = function(innerDataIndices, dataType) {
var selectedMap = this.option.selectedMap;
if (!selectedMap) {
return;
}
var selectedMode = this.option.selectedMode;
var data = this.getData(dataType);
if (selectedMode === "series" || selectedMap === "all") {
this.option.selectedMap = {};
this._selectedDataIndicesMap = {};
return;
}
for (var i = 0; i < innerDataIndices.length; i++) {
var dataIndex = innerDataIndices[i];
var nameOrId = getSelectionKey(data, dataIndex);
selectedMap[nameOrId] = false;
this._selectedDataIndicesMap[nameOrId] = -1;
}
};
SeriesModel2.prototype.toggleSelect = function(innerDataIndices, dataType) {
var tmpArr2 = [];
for (var i = 0; i < innerDataIndices.length; i++) {
tmpArr2[0] = innerDataIndices[i];
this.isSelected(innerDataIndices[i], dataType) ? this.unselect(tmpArr2, dataType) : this.select(tmpArr2, dataType);
}
};
SeriesModel2.prototype.getSelectedDataIndices = function() {
if (this.option.selectedMap === "all") {
return [].slice.call(this.getData().getIndices());
}
var selectedDataIndicesMap = this._selectedDataIndicesMap;
var nameOrIds = keys(selectedDataIndicesMap);
var dataIndices = [];
for (var i = 0; i < nameOrIds.length; i++) {
var dataIndex = selectedDataIndicesMap[nameOrIds[i]];
if (dataIndex >= 0) {
dataIndices.push(dataIndex);
}
}
return dataIndices;
};
SeriesModel2.prototype.isSelected = function(dataIndex, dataType) {
var selectedMap = this.option.selectedMap;
if (!selectedMap) {
return false;
}
var data = this.getData(dataType);
return (selectedMap === "all" || selectedMap[getSelectionKey(data, dataIndex)]) && !data.getItemModel(dataIndex).get(["select", "disabled"]);
};
SeriesModel2.prototype.isUniversalTransitionEnabled = function() {
if (this[SERIES_UNIVERSAL_TRANSITION_PROP]) {
return true;
}
var universalTransitionOpt = this.option.universalTransition;
if (!universalTransitionOpt) {
return false;
}
if (universalTransitionOpt === true) {
return true;
}
return universalTransitionOpt && universalTransitionOpt.enabled;
};
SeriesModel2.prototype._innerSelect = function(data, innerDataIndices) {
var _a2, _b2;
var option = this.option;
var selectedMode = option.selectedMode;
var len2 = innerDataIndices.length;
if (!selectedMode || !len2) {
return;
}
if (selectedMode === "series") {
option.selectedMap = "all";
} else if (selectedMode === "multiple") {
if (!isObject$3(option.selectedMap)) {
option.selectedMap = {};
}
var selectedMap = option.selectedMap;
for (var i = 0; i < len2; i++) {
var dataIndex = innerDataIndices[i];
var nameOrId = getSelectionKey(data, dataIndex);
selectedMap[nameOrId] = true;
this._selectedDataIndicesMap[nameOrId] = data.getRawIndex(dataIndex);
}
} else if (selectedMode === "single" || selectedMode === true) {
var lastDataIndex = innerDataIndices[len2 - 1];
var nameOrId = getSelectionKey(data, lastDataIndex);
option.selectedMap = (_a2 = {}, _a2[nameOrId] = true, _a2);
this._selectedDataIndicesMap = (_b2 = {}, _b2[nameOrId] = data.getRawIndex(lastDataIndex), _b2);
}
};
SeriesModel2.prototype._initSelectedMapFromData = function(data) {
if (this.option.selectedMap) {
return;
}
var dataIndices = [];
if (data.hasItemOption) {
data.each(function(idx) {
var rawItem = data.getRawDataItem(idx);
if (rawItem && rawItem.selected) {
dataIndices.push(idx);
}
});
}
if (dataIndices.length > 0) {
this._innerSelect(data, dataIndices);
}
};
SeriesModel2.registerClass = function(clz) {
return ComponentModel.registerClass(clz);
};
SeriesModel2.protoInitialize = function() {
var proto2 = SeriesModel2.prototype;
proto2.type = "series.__base__";
proto2.seriesIndex = 0;
proto2.ignoreStyleOnData = false;
proto2.hasSymbolVisual = false;
proto2.defaultSymbol = "circle";
proto2.visualStyleAccessPath = "itemStyle";
proto2.visualDrawType = "fill";
}();
return SeriesModel2;
}(ComponentModel)
);
mixin(SeriesModel, DataFormatMixin);
mixin(SeriesModel, PaletteMixin);
mountExtend(SeriesModel, ComponentModel);
function autoSeriesName(seriesModel) {
var name = seriesModel.name;
if (!isNameSpecified(seriesModel)) {
seriesModel.name = getSeriesAutoName(seriesModel) || name;
}
}
function getSeriesAutoName(seriesModel) {
var data = seriesModel.getRawData();
var dataDims = data.mapDimensionsAll("seriesName");
var nameArr = [];
each$f(dataDims, function(dataDim) {
var dimInfo = data.getDimensionInfo(dataDim);
dimInfo.displayName && nameArr.push(dimInfo.displayName);
});
return nameArr.join(" ");
}
function dataTaskCount(context) {
return context.model.getRawData().count();
}
function dataTaskReset(context) {
var seriesModel = context.model;
seriesModel.setData(seriesModel.getRawData().cloneShallow());
return dataTaskProgress;
}
function dataTaskProgress(param, context) {
if (context.outputData && param.end > context.outputData.count()) {
context.model.getRawData().cloneShallow(context.outputData);
}
}
function wrapData(data, seriesModel) {
each$f(concatArray(data.CHANGABLE_METHODS, data.DOWNSAMPLE_METHODS), function(methodName) {
data.wrapMethod(methodName, curry$1(onDataChange, seriesModel));
});
}
function onDataChange(seriesModel, newList) {
var task = getCurrentTask(seriesModel);
if (task) {
task.setOutputEnd((newList || this).count());
}
return newList;
}
function getCurrentTask(seriesModel) {
var scheduler2 = (seriesModel.ecModel || {}).scheduler;
var pipeline = scheduler2 && scheduler2.getPipeline(seriesModel.uid);
if (pipeline) {
var task = pipeline.currentTask;
if (task) {
var agentStubMap = task.agentStubMap;
if (agentStubMap) {
task = agentStubMap.get(seriesModel.uid);
}
}
return task;
}
}
var ComponentView = (
/** @class */
function() {
function ComponentView2() {
this.group = new Group$3();
this.uid = getUID("viewComponent");
}
ComponentView2.prototype.init = function(ecModel, api) {
};
ComponentView2.prototype.render = function(model, ecModel, api, payload) {
};
ComponentView2.prototype.dispose = function(ecModel, api) {
};
ComponentView2.prototype.updateView = function(model, ecModel, api, payload) {
};
ComponentView2.prototype.updateLayout = function(model, ecModel, api, payload) {
};
ComponentView2.prototype.updateVisual = function(model, ecModel, api, payload) {
};
ComponentView2.prototype.toggleBlurSeries = function(seriesModels, isBlur, ecModel) {
};
ComponentView2.prototype.eachRendered = function(cb2) {
var group = this.group;
if (group) {
group.traverse(cb2);
}
};
return ComponentView2;
}()
);
enableClassExtend(ComponentView);
enableClassManagement(ComponentView);
function createRenderPlanner() {
var inner2 = makeInner();
return function(seriesModel) {
var fields = inner2(seriesModel);
var pipelineContext = seriesModel.pipelineContext;
var originalLarge = !!fields.large;
var originalProgressive = !!fields.progressiveRender;
var large = fields.large = !!(pipelineContext && pipelineContext.large);
var progressive = fields.progressiveRender = !!(pipelineContext && pipelineContext.progressiveRender);
return !!(originalLarge !== large || originalProgressive !== progressive) && "reset";
};
}
var inner$j = makeInner();
var renderPlanner = createRenderPlanner();
var ChartView = (
/** @class */
function() {
function ChartView2() {
this.group = new Group$3();
this.uid = getUID("viewChart");
this.renderTask = createTask({
plan: renderTaskPlan,
reset: renderTaskReset
});
this.renderTask.context = {
view: this
};
}
ChartView2.prototype.init = function(ecModel, api) {
};
ChartView2.prototype.render = function(seriesModel, ecModel, api, payload) {
};
ChartView2.prototype.highlight = function(seriesModel, ecModel, api, payload) {
var data = seriesModel.getData(payload && payload.dataType);
if (!data) {
return;
}
toggleHighlight(data, payload, "emphasis");
};
ChartView2.prototype.downplay = function(seriesModel, ecModel, api, payload) {
var data = seriesModel.getData(payload && payload.dataType);
if (!data) {
return;
}
toggleHighlight(data, payload, "normal");
};
ChartView2.prototype.remove = function(ecModel, api) {
this.group.removeAll();
};
ChartView2.prototype.dispose = function(ecModel, api) {
};
ChartView2.prototype.updateView = function(seriesModel, ecModel, api, payload) {
this.render(seriesModel, ecModel, api, payload);
};
ChartView2.prototype.updateLayout = function(seriesModel, ecModel, api, payload) {
this.render(seriesModel, ecModel, api, payload);
};
ChartView2.prototype.updateVisual = function(seriesModel, ecModel, api, payload) {
this.render(seriesModel, ecModel, api, payload);
};
ChartView2.prototype.eachRendered = function(cb2) {
traverseElements(this.group, cb2);
};
ChartView2.markUpdateMethod = function(payload, methodName) {
inner$j(payload).updateMethod = methodName;
};
ChartView2.protoInitialize = function() {
var proto2 = ChartView2.prototype;
proto2.type = "chart";
}();
return ChartView2;
}()
);
function elSetState(el2, state, highlightDigit) {
if (el2 && isHighDownDispatcher(el2)) {
(state === "emphasis" ? enterEmphasis : leaveEmphasis)(el2, highlightDigit);
}
}
function toggleHighlight(data, payload, state) {
var dataIndex = queryDataIndex(data, payload);
var highlightDigit = payload && payload.highlightKey != null ? getHighlightDigit(payload.highlightKey) : null;
if (dataIndex != null) {
each$f(normalizeToArray(dataIndex), function(dataIdx) {
elSetState(data.getItemGraphicEl(dataIdx), state, highlightDigit);
});
} else {
data.eachItemGraphicEl(function(el2) {
elSetState(el2, state, highlightDigit);
});
}
}
enableClassExtend(ChartView);
enableClassManagement(ChartView);
function renderTaskPlan(context) {
return renderPlanner(context.model);
}
function renderTaskReset(context) {
var seriesModel = context.model;
var ecModel = context.ecModel;
var api = context.api;
var payload = context.payload;
var progressiveRender = seriesModel.pipelineContext.progressiveRender;
var view = context.view;
var updateMethod = payload && inner$j(payload).updateMethod;
var methodName = progressiveRender ? "incrementalPrepareRender" : updateMethod && view[updateMethod] ? updateMethod : "render";
if (methodName !== "render") {
view[methodName](seriesModel, ecModel, api, payload);
}
return progressMethodMap[methodName];
}
var progressMethodMap = {
incrementalPrepareRender: {
progress: function(params, context) {
context.view.incrementalRender(params, context.model, context.ecModel, context.api, context.payload);
}
},
render: {
// Put view.render in `progress` to support appendData. But in this case
// view.render should not be called in reset, otherwise it will be called
// twise. Use `forceFirstProgress` to make sure that view.render is called
// in any cases.
forceFirstProgress: true,
progress: function(params, context) {
context.view.render(context.model, context.ecModel, context.api, context.payload);
}
}
};
var ORIGIN_METHOD = "\0__throttleOriginMethod";
var RATE = "\0__throttleRate";
var THROTTLE_TYPE = "\0__throttleType";
function throttle(fn, delay, debounce2) {
var currCall;
var lastCall = 0;
var lastExec = 0;
var timer = null;
var diff;
var scope;
var args;
var debounceNextCall;
delay = delay || 0;
function exec() {
lastExec = (/* @__PURE__ */ new Date()).getTime();
timer = null;
fn.apply(scope, args || []);
}
var cb2 = function() {
var cbArgs = [];
for (var _i = 0; _i < arguments.length; _i++) {
cbArgs[_i] = arguments[_i];
}
currCall = (/* @__PURE__ */ new Date()).getTime();
scope = this;
args = cbArgs;
var thisDelay = debounceNextCall || delay;
var thisDebounce = debounceNextCall || debounce2;
debounceNextCall = null;
diff = currCall - (thisDebounce ? lastCall : lastExec) - thisDelay;
clearTimeout(timer);
if (thisDebounce) {
timer = setTimeout(exec, thisDelay);
} else {
if (diff >= 0) {
exec();
} else {
timer = setTimeout(exec, -diff);
}
}
lastCall = currCall;
};
cb2.clear = function() {
if (timer) {
clearTimeout(timer);
timer = null;
}
};
cb2.debounceNextCall = function(debounceDelay) {
debounceNextCall = debounceDelay;
};
return cb2;
}
function createOrUpdate(obj, fnAttr, rate, throttleType) {
var fn = obj[fnAttr];
if (!fn) {
return;
}
var originFn = fn[ORIGIN_METHOD] || fn;
var lastThrottleType = fn[THROTTLE_TYPE];
var lastRate = fn[RATE];
if (lastRate !== rate || lastThrottleType !== throttleType) {
if (rate == null || !throttleType) {
return obj[fnAttr] = originFn;
}
fn = obj[fnAttr] = throttle(originFn, rate, throttleType === "debounce");
fn[ORIGIN_METHOD] = originFn;
fn[THROTTLE_TYPE] = throttleType;
fn[RATE] = rate;
}
return fn;
}
function clear$2(obj, fnAttr) {
var fn = obj[fnAttr];
if (fn && fn[ORIGIN_METHOD]) {
fn.clear && fn.clear();
obj[fnAttr] = fn[ORIGIN_METHOD];
}
}
var inner$i = makeInner();
var defaultStyleMappers = {
itemStyle: makeStyleMapper(ITEM_STYLE_KEY_MAP, true),
lineStyle: makeStyleMapper(LINE_STYLE_KEY_MAP, true)
};
var defaultColorKey = {
lineStyle: "stroke",
itemStyle: "fill"
};
function getStyleMapper(seriesModel, stylePath) {
var styleMapper = seriesModel.visualStyleMapper || defaultStyleMappers[stylePath];
if (!styleMapper) {
console.warn("Unknown style type '" + stylePath + "'.");
return defaultStyleMappers.itemStyle;
}
return styleMapper;
}
function getDefaultColorKey(seriesModel, stylePath) {
var colorKey = seriesModel.visualDrawType || defaultColorKey[stylePath];
if (!colorKey) {
console.warn("Unknown style type '" + stylePath + "'.");
return "fill";
}
return colorKey;
}
var seriesStyleTask = {
createOnAllSeries: true,
performRawSeries: true,
reset: function(seriesModel, ecModel) {
var data = seriesModel.getData();
var stylePath = seriesModel.visualStyleAccessPath || "itemStyle";
var styleModel = seriesModel.getModel(stylePath);
var getStyle2 = getStyleMapper(seriesModel, stylePath);
var globalStyle = getStyle2(styleModel);
var decalOption = styleModel.getShallow("decal");
if (decalOption) {
data.setVisual("decal", decalOption);
decalOption.dirty = true;
}
var colorKey = getDefaultColorKey(seriesModel, stylePath);
var color2 = globalStyle[colorKey];
var colorCallback = isFunction$1(color2) ? color2 : null;
var hasAutoColor = globalStyle.fill === "auto" || globalStyle.stroke === "auto";
if (!globalStyle[colorKey] || colorCallback || hasAutoColor) {
var colorPalette2 = seriesModel.getColorFromPalette(
// TODO series count changed.
seriesModel.name,
null,
ecModel.getSeriesCount()
);
if (!globalStyle[colorKey]) {
globalStyle[colorKey] = colorPalette2;
data.setVisual("colorFromPalette", true);
}
globalStyle.fill = globalStyle.fill === "auto" || isFunction$1(globalStyle.fill) ? colorPalette2 : globalStyle.fill;
globalStyle.stroke = globalStyle.stroke === "auto" || isFunction$1(globalStyle.stroke) ? colorPalette2 : globalStyle.stroke;
}
data.setVisual("style", globalStyle);
data.setVisual("drawType", colorKey);
if (!ecModel.isSeriesFiltered(seriesModel) && colorCallback) {
data.setVisual("colorFromPalette", false);
return {
dataEach: function(data2, idx) {
var dataParams = seriesModel.getDataParams(idx);
var itemStyle = extend({}, globalStyle);
itemStyle[colorKey] = colorCallback(dataParams);
data2.setItemVisual(idx, "style", itemStyle);
}
};
}
}
};
var sharedModel = new Model();
var dataStyleTask = {
createOnAllSeries: true,
performRawSeries: true,
reset: function(seriesModel, ecModel) {
if (seriesModel.ignoreStyleOnData || ecModel.isSeriesFiltered(seriesModel)) {
return;
}
var data = seriesModel.getData();
var stylePath = seriesModel.visualStyleAccessPath || "itemStyle";
var getStyle2 = getStyleMapper(seriesModel, stylePath);
var colorKey = data.getVisual("drawType");
return {
dataEach: data.hasItemOption ? function(data2, idx) {
var rawItem = data2.getRawDataItem(idx);
if (rawItem && rawItem[stylePath]) {
sharedModel.option = rawItem[stylePath];
var style2 = getStyle2(sharedModel);
var existsStyle = data2.ensureUniqueItemVisual(idx, "style");
extend(existsStyle, style2);
if (sharedModel.option.decal) {
data2.setItemVisual(idx, "decal", sharedModel.option.decal);
sharedModel.option.decal.dirty = true;
}
if (colorKey in style2) {
data2.setItemVisual(idx, "colorFromPalette", false);
}
}
} : null
};
}
};
var dataColorPaletteTask = {
performRawSeries: true,
overallReset: function(ecModel) {
var paletteScopeGroupByType = createHashMap();
ecModel.eachSeries(function(seriesModel) {
var colorBy = seriesModel.getColorBy();
if (seriesModel.isColorBySeries()) {
return;
}
var key = seriesModel.type + "-" + colorBy;
var colorScope = paletteScopeGroupByType.get(key);
if (!colorScope) {
colorScope = {};
paletteScopeGroupByType.set(key, colorScope);
}
inner$i(seriesModel).scope = colorScope;
});
ecModel.eachSeries(function(seriesModel) {
if (seriesModel.isColorBySeries() || ecModel.isSeriesFiltered(seriesModel)) {
return;
}
var dataAll = seriesModel.getRawData();
var idxMap = {};
var data = seriesModel.getData();
var colorScope = inner$i(seriesModel).scope;
var stylePath = seriesModel.visualStyleAccessPath || "itemStyle";
var colorKey = getDefaultColorKey(seriesModel, stylePath);
data.each(function(idx) {
var rawIdx = data.getRawIndex(idx);
idxMap[rawIdx] = idx;
});
dataAll.each(function(rawIdx) {
var idx = idxMap[rawIdx];
var fromPalette = data.getItemVisual(idx, "colorFromPalette");
if (fromPalette) {
var itemStyle = data.ensureUniqueItemVisual(idx, "style");
var name_1 = dataAll.getName(rawIdx) || rawIdx + "";
var dataCount = dataAll.count();
itemStyle[colorKey] = seriesModel.getColorFromPalette(name_1, colorScope, dataCount);
}
});
});
}
};
var PI$5 = Math.PI;
function defaultLoading(api, opts) {
opts = opts || {};
defaults(opts, {
text: "loading",
textColor: "#000",
fontSize: 12,
fontWeight: "normal",
fontStyle: "normal",
fontFamily: "sans-serif",
maskColor: "rgba(255, 255, 255, 0.8)",
showSpinner: true,
color: "#5470c6",
spinnerRadius: 10,
lineWidth: 5,
zlevel: 0
});
var group = new Group$3();
var mask = new Rect$2({
style: {
fill: opts.maskColor
},
zlevel: opts.zlevel,
z: 1e4
});
group.add(mask);
var textContent = new ZRText({
style: {
text: opts.text,
fill: opts.textColor,
fontSize: opts.fontSize,
fontWeight: opts.fontWeight,
fontStyle: opts.fontStyle,
fontFamily: opts.fontFamily
},
zlevel: opts.zlevel,
z: 10001
});
var labelRect = new Rect$2({
style: {
fill: "none"
},
textContent,
textConfig: {
position: "right",
distance: 10
},
zlevel: opts.zlevel,
z: 10001
});
group.add(labelRect);
var arc;
if (opts.showSpinner) {
arc = new Arc({
shape: {
startAngle: -PI$5 / 2,
endAngle: -PI$5 / 2 + 0.1,
r: opts.spinnerRadius
},
style: {
stroke: opts.color,
lineCap: "round",
lineWidth: opts.lineWidth
},
zlevel: opts.zlevel,
z: 10001
});
arc.animateShape(true).when(1e3, {
endAngle: PI$5 * 3 / 2
}).start("circularInOut");
arc.animateShape(true).when(1e3, {
startAngle: PI$5 * 3 / 2
}).delay(300).start("circularInOut");
group.add(arc);
}
group.resize = function() {
var textWidth = textContent.getBoundingRect().width;
var r2 = opts.showSpinner ? opts.spinnerRadius : 0;
var cx = (api.getWidth() - r2 * 2 - (opts.showSpinner && textWidth ? 10 : 0) - textWidth) / 2 - (opts.showSpinner && textWidth ? 0 : 5 + textWidth / 2) + (opts.showSpinner ? 0 : textWidth / 2) + (textWidth ? 0 : r2);
var cy = api.getHeight() / 2;
opts.showSpinner && arc.setShape({
cx,
cy
});
labelRect.setShape({
x: cx - r2,
y: cy - r2,
width: r2 * 2,
height: r2 * 2
});
mask.setShape({
x: 0,
y: 0,
width: api.getWidth(),
height: api.getHeight()
});
};
group.resize();
return group;
}
var Scheduler = (
/** @class */
function() {
function Scheduler2(ecInstance, api, dataProcessorHandlers, visualHandlers) {
this._stageTaskMap = createHashMap();
this.ecInstance = ecInstance;
this.api = api;
dataProcessorHandlers = this._dataProcessorHandlers = dataProcessorHandlers.slice();
visualHandlers = this._visualHandlers = visualHandlers.slice();
this._allHandlers = dataProcessorHandlers.concat(visualHandlers);
}
Scheduler2.prototype.restoreData = function(ecModel, payload) {
ecModel.restoreData(payload);
this._stageTaskMap.each(function(taskRecord) {
var overallTask = taskRecord.overallTask;
overallTask && overallTask.dirty();
});
};
Scheduler2.prototype.getPerformArgs = function(task, isBlock) {
if (!task.__pipeline) {
return;
}
var pipeline = this._pipelineMap.get(task.__pipeline.id);
var pCtx = pipeline.context;
var incremental = !isBlock && pipeline.progressiveEnabled && (!pCtx || pCtx.progressiveRender) && task.__idxInPipeline > pipeline.blockIndex;
var step = incremental ? pipeline.step : null;
var modDataCount = pCtx && pCtx.modDataCount;
var modBy = modDataCount != null ? Math.ceil(modDataCount / step) : null;
return {
step,
modBy,
modDataCount
};
};
Scheduler2.prototype.getPipeline = function(pipelineId) {
return this._pipelineMap.get(pipelineId);
};
Scheduler2.prototype.updateStreamModes = function(seriesModel, view) {
var pipeline = this._pipelineMap.get(seriesModel.uid);
var data = seriesModel.getData();
var dataLen = data.count();
var progressiveRender = pipeline.progressiveEnabled && view.incrementalPrepareRender && dataLen >= pipeline.threshold;
var large = seriesModel.get("large") && dataLen >= seriesModel.get("largeThreshold");
var modDataCount = seriesModel.get("progressiveChunkMode") === "mod" ? dataLen : null;
seriesModel.pipelineContext = pipeline.context = {
progressiveRender,
modDataCount,
large
};
};
Scheduler2.prototype.restorePipelines = function(ecModel) {
var scheduler2 = this;
var pipelineMap = scheduler2._pipelineMap = createHashMap();
ecModel.eachSeries(function(seriesModel) {
var progressive = seriesModel.getProgressive();
var pipelineId = seriesModel.uid;
pipelineMap.set(pipelineId, {
id: pipelineId,
head: null,
tail: null,
threshold: seriesModel.getProgressiveThreshold(),
progressiveEnabled: progressive && !(seriesModel.preventIncremental && seriesModel.preventIncremental()),
blockIndex: -1,
step: Math.round(progressive || 700),
count: 0
});
scheduler2._pipe(seriesModel, seriesModel.dataTask);
});
};
Scheduler2.prototype.prepareStageTasks = function() {
var stageTaskMap = this._stageTaskMap;
var ecModel = this.api.getModel();
var api = this.api;
each$f(this._allHandlers, function(handler) {
var record = stageTaskMap.get(handler.uid) || stageTaskMap.set(handler.uid, {});
var errMsg = "";
assert(!(handler.reset && handler.overallReset), errMsg);
handler.reset && this._createSeriesStageTask(handler, record, ecModel, api);
handler.overallReset && this._createOverallStageTask(handler, record, ecModel, api);
}, this);
};
Scheduler2.prototype.prepareView = function(view, model, ecModel, api) {
var renderTask = view.renderTask;
var context = renderTask.context;
context.model = model;
context.ecModel = ecModel;
context.api = api;
renderTask.__block = !view.incrementalPrepareRender;
this._pipe(model, renderTask);
};
Scheduler2.prototype.performDataProcessorTasks = function(ecModel, payload) {
this._performStageTasks(this._dataProcessorHandlers, ecModel, payload, {
block: true
});
};
Scheduler2.prototype.performVisualTasks = function(ecModel, payload, opt) {
this._performStageTasks(this._visualHandlers, ecModel, payload, opt);
};
Scheduler2.prototype._performStageTasks = function(stageHandlers, ecModel, payload, opt) {
opt = opt || {};
var unfinished = false;
var scheduler2 = this;
each$f(stageHandlers, function(stageHandler, idx) {
if (opt.visualType && opt.visualType !== stageHandler.visualType) {
return;
}
var stageHandlerRecord = scheduler2._stageTaskMap.get(stageHandler.uid);
var seriesTaskMap = stageHandlerRecord.seriesTaskMap;
var overallTask = stageHandlerRecord.overallTask;
if (overallTask) {
var overallNeedDirty_1;
var agentStubMap = overallTask.agentStubMap;
agentStubMap.each(function(stub) {
if (needSetDirty(opt, stub)) {
stub.dirty();
overallNeedDirty_1 = true;
}
});
overallNeedDirty_1 && overallTask.dirty();
scheduler2.updatePayload(overallTask, payload);
var performArgs_1 = scheduler2.getPerformArgs(overallTask, opt.block);
agentStubMap.each(function(stub) {
stub.perform(performArgs_1);
});
if (overallTask.perform(performArgs_1)) {
unfinished = true;
}
} else if (seriesTaskMap) {
seriesTaskMap.each(function(task, pipelineId) {
if (needSetDirty(opt, task)) {
task.dirty();
}
var performArgs = scheduler2.getPerformArgs(task, opt.block);
performArgs.skip = !stageHandler.performRawSeries && ecModel.isSeriesFiltered(task.context.model);
scheduler2.updatePayload(task, payload);
if (task.perform(performArgs)) {
unfinished = true;
}
});
}
});
function needSetDirty(opt2, task) {
return opt2.setDirty && (!opt2.dirtyMap || opt2.dirtyMap.get(task.__pipeline.id));
}
this.unfinished = unfinished || this.unfinished;
};
Scheduler2.prototype.performSeriesTasks = function(ecModel) {
var unfinished;
ecModel.eachSeries(function(seriesModel) {
unfinished = seriesModel.dataTask.perform() || unfinished;
});
this.unfinished = unfinished || this.unfinished;
};
Scheduler2.prototype.plan = function() {
this._pipelineMap.each(function(pipeline) {
var task = pipeline.tail;
do {
if (task.__block) {
pipeline.blockIndex = task.__idxInPipeline;
break;
}
task = task.getUpstream();
} while (task);
});
};
Scheduler2.prototype.updatePayload = function(task, payload) {
payload !== "remain" && (task.context.payload = payload);
};
Scheduler2.prototype._createSeriesStageTask = function(stageHandler, stageHandlerRecord, ecModel, api) {
var scheduler2 = this;
var oldSeriesTaskMap = stageHandlerRecord.seriesTaskMap;
var newSeriesTaskMap = stageHandlerRecord.seriesTaskMap = createHashMap();
var seriesType2 = stageHandler.seriesType;
var getTargetSeries = stageHandler.getTargetSeries;
if (stageHandler.createOnAllSeries) {
ecModel.eachRawSeries(create3);
} else if (seriesType2) {
ecModel.eachRawSeriesByType(seriesType2, create3);
} else if (getTargetSeries) {
getTargetSeries(ecModel, api).each(create3);
}
function create3(seriesModel) {
var pipelineId = seriesModel.uid;
var task = newSeriesTaskMap.set(pipelineId, oldSeriesTaskMap && oldSeriesTaskMap.get(pipelineId) || createTask({
plan: seriesTaskPlan,
reset: seriesTaskReset,
count: seriesTaskCount
}));
task.context = {
model: seriesModel,
ecModel,
api,
// PENDING: `useClearVisual` not used?
useClearVisual: stageHandler.isVisual && !stageHandler.isLayout,
plan: stageHandler.plan,
reset: stageHandler.reset,
scheduler: scheduler2
};
scheduler2._pipe(seriesModel, task);
}
};
Scheduler2.prototype._createOverallStageTask = function(stageHandler, stageHandlerRecord, ecModel, api) {
var scheduler2 = this;
var overallTask = stageHandlerRecord.overallTask = stageHandlerRecord.overallTask || createTask({
reset: overallTaskReset
});
overallTask.context = {
ecModel,
api,
overallReset: stageHandler.overallReset,
scheduler: scheduler2
};
var oldAgentStubMap = overallTask.agentStubMap;
var newAgentStubMap = overallTask.agentStubMap = createHashMap();
var seriesType2 = stageHandler.seriesType;
var getTargetSeries = stageHandler.getTargetSeries;
var overallProgress = true;
var shouldOverallTaskDirty = false;
var errMsg = "";
assert(!stageHandler.createOnAllSeries, errMsg);
if (seriesType2) {
ecModel.eachRawSeriesByType(seriesType2, createStub);
} else if (getTargetSeries) {
getTargetSeries(ecModel, api).each(createStub);
} else {
overallProgress = false;
each$f(ecModel.getSeries(), createStub);
}
function createStub(seriesModel) {
var pipelineId = seriesModel.uid;
var stub = newAgentStubMap.set(pipelineId, oldAgentStubMap && oldAgentStubMap.get(pipelineId) || // When the result of `getTargetSeries` changed, the overallTask
// should be set as dirty and re-performed.
(shouldOverallTaskDirty = true, createTask({
reset: stubReset,
onDirty: stubOnDirty
})));
stub.context = {
model: seriesModel,
overallProgress
// FIXME:TS never used, so comment it
// modifyOutputEnd: modifyOutputEnd
};
stub.agent = overallTask;
stub.__block = overallProgress;
scheduler2._pipe(seriesModel, stub);
}
if (shouldOverallTaskDirty) {
overallTask.dirty();
}
};
Scheduler2.prototype._pipe = function(seriesModel, task) {
var pipelineId = seriesModel.uid;
var pipeline = this._pipelineMap.get(pipelineId);
!pipeline.head && (pipeline.head = task);
pipeline.tail && pipeline.tail.pipe(task);
pipeline.tail = task;
task.__idxInPipeline = pipeline.count++;
task.__pipeline = pipeline;
};
Scheduler2.wrapStageHandler = function(stageHandler, visualType) {
if (isFunction$1(stageHandler)) {
stageHandler = {
overallReset: stageHandler,
seriesType: detectSeriseType(stageHandler)
};
}
stageHandler.uid = getUID("stageHandler");
visualType && (stageHandler.visualType = visualType);
return stageHandler;
};
return Scheduler2;
}()
);
function overallTaskReset(context) {
context.overallReset(context.ecModel, context.api, context.payload);
}
function stubReset(context) {
return context.overallProgress && stubProgress;
}
function stubProgress() {
this.agent.dirty();
this.getDownstream().dirty();
}
function stubOnDirty() {
this.agent && this.agent.dirty();
}
function seriesTaskPlan(context) {
return context.plan ? context.plan(context.model, context.ecModel, context.api, context.payload) : null;
}
function seriesTaskReset(context) {
if (context.useClearVisual) {
context.data.clearAllVisual();
}
var resetDefines = context.resetDefines = normalizeToArray(context.reset(context.model, context.ecModel, context.api, context.payload));
return resetDefines.length > 1 ? map$1(resetDefines, function(v4, idx) {
return makeSeriesTaskProgress(idx);
}) : singleSeriesTaskProgress;
}
var singleSeriesTaskProgress = makeSeriesTaskProgress(0);
function makeSeriesTaskProgress(resetDefineIdx) {
return function(params, context) {
var data = context.data;
var resetDefine = context.resetDefines[resetDefineIdx];
if (resetDefine && resetDefine.dataEach) {
for (var i = params.start; i < params.end; i++) {
resetDefine.dataEach(data, i);
}
} else if (resetDefine && resetDefine.progress) {
resetDefine.progress(params, data);
}
};
}
function seriesTaskCount(context) {
return context.data.count();
}
function detectSeriseType(legacyFunc) {
seriesType = null;
try {
legacyFunc(ecModelMock, apiMock);
} catch (e2) {
}
return seriesType;
}
var ecModelMock = {};
var apiMock = {};
var seriesType;
mockMethods(ecModelMock, GlobalModel);
mockMethods(apiMock, ExtensionAPI);
ecModelMock.eachSeriesByType = ecModelMock.eachRawSeriesByType = function(type4) {
seriesType = type4;
};
ecModelMock.eachComponent = function(cond) {
if (cond.mainType === "series" && cond.subType) {
seriesType = cond.subType;
}
};
function mockMethods(target, Clz) {
for (var name_1 in Clz.prototype) {
target[name_1] = noop2;
}
}
var colorAll = ["#37A2DA", "#32C5E9", "#67E0E3", "#9FE6B8", "#FFDB5C", "#ff9f7f", "#fb7293", "#E062AE", "#E690D1", "#e7bcf3", "#9d96f5", "#8378EA", "#96BFFF"];
const lightTheme = {
color: colorAll,
colorLayer: [["#37A2DA", "#ffd85c", "#fd7b5f"], ["#37A2DA", "#67E0E3", "#FFDB5C", "#ff9f7f", "#E062AE", "#9d96f5"], ["#37A2DA", "#32C5E9", "#9FE6B8", "#FFDB5C", "#ff9f7f", "#fb7293", "#e7bcf3", "#8378EA", "#96BFFF"], colorAll]
};
var contrastColor = "#B9B8CE";
var backgroundColor = "#100C2A";
var axisCommon = function() {
return {
axisLine: {
lineStyle: {
color: contrastColor
}
},
splitLine: {
lineStyle: {
color: "#484753"
}
},
splitArea: {
areaStyle: {
color: ["rgba(255,255,255,0.02)", "rgba(255,255,255,0.05)"]
}
},
minorSplitLine: {
lineStyle: {
color: "#20203B"
}
}
};
};
var colorPalette = ["#4992ff", "#7cffb2", "#fddd60", "#ff6e76", "#58d9f9", "#05c091", "#ff8a45", "#8d48e3", "#dd79ff"];
var theme = {
darkMode: true,
color: colorPalette,
backgroundColor,
axisPointer: {
lineStyle: {
color: "#817f91"
},
crossStyle: {
color: "#817f91"
},
label: {
// TODO Contrast of label backgorundColor
color: "#fff"
}
},
legend: {
textStyle: {
color: contrastColor
}
},
textStyle: {
color: contrastColor
},
title: {
textStyle: {
color: "#EEF1FA"
},
subtextStyle: {
color: "#B9B8CE"
}
},
toolbox: {
iconStyle: {
borderColor: contrastColor
}
},
dataZoom: {
borderColor: "#71708A",
textStyle: {
color: contrastColor
},
brushStyle: {
color: "rgba(135,163,206,0.3)"
},
handleStyle: {
color: "#353450",
borderColor: "#C5CBE3"
},
moveHandleStyle: {
color: "#B0B6C3",
opacity: 0.3
},
fillerColor: "rgba(135,163,206,0.2)",
emphasis: {
handleStyle: {
borderColor: "#91B7F2",
color: "#4D587D"
},
moveHandleStyle: {
color: "#636D9A",
opacity: 0.7
}
},
dataBackground: {
lineStyle: {
color: "#71708A",
width: 1
},
areaStyle: {
color: "#71708A"
}
},
selectedDataBackground: {
lineStyle: {
color: "#87A3CE"
},
areaStyle: {
color: "#87A3CE"
}
}
},
visualMap: {
textStyle: {
color: contrastColor
}
},
timeline: {
lineStyle: {
color: contrastColor
},
label: {
color: contrastColor
},
controlStyle: {
color: contrastColor,
borderColor: contrastColor
}
},
calendar: {
itemStyle: {
color: backgroundColor
},
dayLabel: {
color: contrastColor
},
monthLabel: {
color: contrastColor
},
yearLabel: {
color: contrastColor
}
},
timeAxis: axisCommon(),
logAxis: axisCommon(),
valueAxis: axisCommon(),
categoryAxis: axisCommon(),
line: {
symbol: "circle"
},
graph: {
color: colorPalette
},
gauge: {
title: {
color: contrastColor
},
axisLine: {
lineStyle: {
color: [[1, "rgba(207,212,219,0.2)"]]
}
},
axisLabel: {
color: contrastColor
},
detail: {
color: "#EEF1FA"
}
},
candlestick: {
itemStyle: {
color: "#f64e56",
color0: "#54ea92",
borderColor: "#f64e56",
borderColor0: "#54ea92"
// borderColor: '#ca2824',
// borderColor0: '#09a443'
}
}
};
theme.categoryAxis.splitLine.show = false;
var ECEventProcessor = (
/** @class */
function() {
function ECEventProcessor2() {
}
ECEventProcessor2.prototype.normalizeQuery = function(query) {
var cptQuery = {};
var dataQuery = {};
var otherQuery = {};
if (isString$1(query)) {
var condCptType = parseClassType(query);
cptQuery.mainType = condCptType.main || null;
cptQuery.subType = condCptType.sub || null;
} else {
var suffixes_1 = ["Index", "Name", "Id"];
var dataKeys_1 = {
name: 1,
dataIndex: 1,
dataType: 1
};
each$f(query, function(val, key) {
var reserved = false;
for (var i = 0; i < suffixes_1.length; i++) {
var propSuffix = suffixes_1[i];
var suffixPos = key.lastIndexOf(propSuffix);
if (suffixPos > 0 && suffixPos === key.length - propSuffix.length) {
var mainType = key.slice(0, suffixPos);
if (mainType !== "data") {
cptQuery.mainType = mainType;
cptQuery[propSuffix.toLowerCase()] = val;
reserved = true;
}
}
}
if (dataKeys_1.hasOwnProperty(key)) {
dataQuery[key] = val;
reserved = true;
}
if (!reserved) {
otherQuery[key] = val;
}
});
}
return {
cptQuery,
dataQuery,
otherQuery
};
};
ECEventProcessor2.prototype.filter = function(eventType, query) {
var eventInfo = this.eventInfo;
if (!eventInfo) {
return true;
}
var targetEl = eventInfo.targetEl;
var packedEvent = eventInfo.packedEvent;
var model = eventInfo.model;
var view = eventInfo.view;
if (!model || !view) {
return true;
}
var cptQuery = query.cptQuery;
var dataQuery = query.dataQuery;
return check(cptQuery, model, "mainType") && check(cptQuery, model, "subType") && check(cptQuery, model, "index", "componentIndex") && check(cptQuery, model, "name") && check(cptQuery, model, "id") && check(dataQuery, packedEvent, "name") && check(dataQuery, packedEvent, "dataIndex") && check(dataQuery, packedEvent, "dataType") && (!view.filterForExposedEvent || view.filterForExposedEvent(eventType, query.otherQuery, targetEl, packedEvent));
function check(query2, host, prop, propOnHost) {
return query2[prop] == null || host[propOnHost || prop] === query2[prop];
}
};
ECEventProcessor2.prototype.afterTrigger = function() {
this.eventInfo = null;
};
return ECEventProcessor2;
}()
);
var SYMBOL_PROPS_WITH_CB = ["symbol", "symbolSize", "symbolRotate", "symbolOffset"];
var SYMBOL_PROPS = SYMBOL_PROPS_WITH_CB.concat(["symbolKeepAspect"]);
var seriesSymbolTask = {
createOnAllSeries: true,
// For legend.
performRawSeries: true,
reset: function(seriesModel, ecModel) {
var data = seriesModel.getData();
if (seriesModel.legendIcon) {
data.setVisual("legendIcon", seriesModel.legendIcon);
}
if (!seriesModel.hasSymbolVisual) {
return;
}
var symbolOptions = {};
var symbolOptionsCb = {};
var hasCallback = false;
for (var i = 0; i < SYMBOL_PROPS_WITH_CB.length; i++) {
var symbolPropName = SYMBOL_PROPS_WITH_CB[i];
var val = seriesModel.get(symbolPropName);
if (isFunction$1(val)) {
hasCallback = true;
symbolOptionsCb[symbolPropName] = val;
} else {
symbolOptions[symbolPropName] = val;
}
}
symbolOptions.symbol = symbolOptions.symbol || seriesModel.defaultSymbol;
data.setVisual(extend({
legendIcon: seriesModel.legendIcon || symbolOptions.symbol,
symbolKeepAspect: seriesModel.get("symbolKeepAspect")
}, symbolOptions));
if (ecModel.isSeriesFiltered(seriesModel)) {
return;
}
var symbolPropsCb = keys(symbolOptionsCb);
function dataEach(data2, idx) {
var rawValue = seriesModel.getRawValue(idx);
var params = seriesModel.getDataParams(idx);
for (var i2 = 0; i2 < symbolPropsCb.length; i2++) {
var symbolPropName2 = symbolPropsCb[i2];
data2.setItemVisual(idx, symbolPropName2, symbolOptionsCb[symbolPropName2](rawValue, params));
}
}
return {
dataEach: hasCallback ? dataEach : null
};
}
};
var dataSymbolTask = {
createOnAllSeries: true,
// For legend.
performRawSeries: true,
reset: function(seriesModel, ecModel) {
if (!seriesModel.hasSymbolVisual) {
return;
}
if (ecModel.isSeriesFiltered(seriesModel)) {
return;
}
var data = seriesModel.getData();
function dataEach(data2, idx) {
var itemModel = data2.getItemModel(idx);
for (var i = 0; i < SYMBOL_PROPS.length; i++) {
var symbolPropName = SYMBOL_PROPS[i];
var val = itemModel.getShallow(symbolPropName, true);
if (val != null) {
data2.setItemVisual(idx, symbolPropName, val);
}
}
}
return {
dataEach: data.hasItemOption ? dataEach : null
};
}
};
function getItemVisualFromData(data, dataIndex, key) {
switch (key) {
case "color":
var style2 = data.getItemVisual(dataIndex, "style");
return style2[data.getVisual("drawType")];
case "opacity":
return data.getItemVisual(dataIndex, "style").opacity;
case "symbol":
case "symbolSize":
case "liftZ":
return data.getItemVisual(dataIndex, key);
}
}
function getVisualFromData(data, key) {
switch (key) {
case "color":
var style2 = data.getVisual("style");
return style2[data.getVisual("drawType")];
case "opacity":
return data.getVisual("style").opacity;
case "symbol":
case "symbolSize":
case "liftZ":
return data.getVisual(key);
}
}
function setItemVisualFromData(data, dataIndex, key, value) {
switch (key) {
case "color":
var style2 = data.ensureUniqueItemVisual(dataIndex, "style");
style2[data.getVisual("drawType")] = value;
data.setItemVisual(dataIndex, "colorFromPalette", false);
break;
case "opacity":
data.ensureUniqueItemVisual(dataIndex, "style").opacity = value;
break;
case "symbol":
case "symbolSize":
case "liftZ":
data.setItemVisual(dataIndex, key, value);
break;
}
}
function createLegacyDataSelectAction(seriesType2, ecRegisterAction) {
function getSeriesIndices(ecModel, payload) {
var seriesIndices = [];
ecModel.eachComponent({
mainType: "series",
subType: seriesType2,
query: payload
}, function(seriesModel) {
seriesIndices.push(seriesModel.seriesIndex);
});
return seriesIndices;
}
each$f([[seriesType2 + "ToggleSelect", "toggleSelect"], [seriesType2 + "Select", "select"], [seriesType2 + "UnSelect", "unselect"]], function(eventsMap) {
ecRegisterAction(eventsMap[0], function(payload, ecModel, api) {
payload = extend({}, payload);
api.dispatchAction(extend(payload, {
type: eventsMap[1],
seriesIndex: getSeriesIndices(ecModel, payload)
}));
});
});
}
function handleSeriesLegacySelectEvents(type4, eventPostfix, ecIns, ecModel, payload) {
var legacyEventName = type4 + eventPostfix;
if (!ecIns.isSilent(legacyEventName)) {
ecModel.eachComponent({
mainType: "series",
subType: "pie"
}, function(seriesModel) {
var seriesIndex = seriesModel.seriesIndex;
var selectedMap = seriesModel.option.selectedMap;
var selected = payload.selected;
for (var i = 0; i < selected.length; i++) {
if (selected[i].seriesIndex === seriesIndex) {
var data = seriesModel.getData();
var dataIndex = queryDataIndex(data, payload.fromActionPayload);
ecIns.trigger(legacyEventName, {
type: legacyEventName,
seriesId: seriesModel.id,
name: isArray$1(dataIndex) ? data.getName(dataIndex[0]) : data.getName(dataIndex),
selected: isString$1(selectedMap) ? selectedMap : extend({}, selectedMap)
});
}
}
});
}
}
function handleLegacySelectEvents(messageCenter, ecIns, api) {
messageCenter.on("selectchanged", function(params) {
var ecModel = api.getModel();
if (params.isFromClick) {
handleSeriesLegacySelectEvents("map", "selectchanged", ecIns, ecModel, params);
handleSeriesLegacySelectEvents("pie", "selectchanged", ecIns, ecModel, params);
} else if (params.fromAction === "select") {
handleSeriesLegacySelectEvents("map", "selected", ecIns, ecModel, params);
handleSeriesLegacySelectEvents("pie", "selected", ecIns, ecModel, params);
} else if (params.fromAction === "unselect") {
handleSeriesLegacySelectEvents("map", "unselected", ecIns, ecModel, params);
handleSeriesLegacySelectEvents("pie", "unselected", ecIns, ecModel, params);
}
});
}
function findEventDispatcher(target, det, returnFirstMatch) {
var found;
while (target) {
if (det(target)) {
found = target;
if (returnFirstMatch) {
break;
}
}
target = target.__hostTarget || target.parent;
}
return found;
}
var wmUniqueIndex = Math.round(Math.random() * 9);
var supportDefineProperty = typeof Object.defineProperty === "function";
var WeakMap$1 = function() {
function WeakMap2() {
this._id = "__ec_inner_" + wmUniqueIndex++;
}
WeakMap2.prototype.get = function(key) {
return this._guard(key)[this._id];
};
WeakMap2.prototype.set = function(key, value) {
var target = this._guard(key);
if (supportDefineProperty) {
Object.defineProperty(target, this._id, {
value,
enumerable: false,
configurable: true
});
} else {
target[this._id] = value;
}
return this;
};
WeakMap2.prototype["delete"] = function(key) {
if (this.has(key)) {
delete this._guard(key)[this._id];
return true;
}
return false;
};
WeakMap2.prototype.has = function(key) {
return !!this._guard(key)[this._id];
};
WeakMap2.prototype._guard = function(key) {
if (key !== Object(key)) {
throw TypeError("Value of WeakMap is not a non-null object.");
}
return key;
};
return WeakMap2;
}();
var Triangle = Path.extend({
type: "triangle",
shape: {
cx: 0,
cy: 0,
width: 0,
height: 0
},
buildPath: function(path, shape) {
var cx = shape.cx;
var cy = shape.cy;
var width = shape.width / 2;
var height = shape.height / 2;
path.moveTo(cx, cy - height);
path.lineTo(cx + width, cy + height);
path.lineTo(cx - width, cy + height);
path.closePath();
}
});
var Diamond = Path.extend({
type: "diamond",
shape: {
cx: 0,
cy: 0,
width: 0,
height: 0
},
buildPath: function(path, shape) {
var cx = shape.cx;
var cy = shape.cy;
var width = shape.width / 2;
var height = shape.height / 2;
path.moveTo(cx, cy - height);
path.lineTo(cx + width, cy);
path.lineTo(cx, cy + height);
path.lineTo(cx - width, cy);
path.closePath();
}
});
var Pin = Path.extend({
type: "pin",
shape: {
// x, y on the cusp
x: 0,
y: 0,
width: 0,
height: 0
},
buildPath: function(path, shape) {
var x2 = shape.x;
var y2 = shape.y;
var w2 = shape.width / 5 * 3;
var h2 = Math.max(w2, shape.height);
var r2 = w2 / 2;
var dy = r2 * r2 / (h2 - r2);
var cy = y2 - h2 + r2 + dy;
var angle = Math.asin(dy / r2);
var dx = Math.cos(angle) * r2;
var tanX = Math.sin(angle);
var tanY = Math.cos(angle);
var cpLen = r2 * 0.6;
var cpLen2 = r2 * 0.7;
path.moveTo(x2 - dx, cy + dy);
path.arc(x2, cy, r2, Math.PI - angle, Math.PI * 2 + angle);
path.bezierCurveTo(x2 + dx - tanX * cpLen, cy + dy + tanY * cpLen, x2, y2 - cpLen2, x2, y2);
path.bezierCurveTo(x2, y2 - cpLen2, x2 - dx + tanX * cpLen, cy + dy + tanY * cpLen, x2 - dx, cy + dy);
path.closePath();
}
});
var Arrow = Path.extend({
type: "arrow",
shape: {
x: 0,
y: 0,
width: 0,
height: 0
},
buildPath: function(ctx, shape) {
var height = shape.height;
var width = shape.width;
var x2 = shape.x;
var y2 = shape.y;
var dx = width / 3 * 2;
ctx.moveTo(x2, y2);
ctx.lineTo(x2 + dx, y2 + height);
ctx.lineTo(x2, y2 + height / 4 * 3);
ctx.lineTo(x2 - dx, y2 + height);
ctx.lineTo(x2, y2);
ctx.closePath();
}
});
var symbolCtors = {
line: Line$1,
rect: Rect$2,
roundRect: Rect$2,
square: Rect$2,
circle: Circle,
diamond: Diamond,
pin: Pin,
arrow: Arrow,
triangle: Triangle
};
var symbolShapeMakers = {
line: function(x2, y2, w2, h2, shape) {
shape.x1 = x2;
shape.y1 = y2 + h2 / 2;
shape.x2 = x2 + w2;
shape.y2 = y2 + h2 / 2;
},
rect: function(x2, y2, w2, h2, shape) {
shape.x = x2;
shape.y = y2;
shape.width = w2;
shape.height = h2;
},
roundRect: function(x2, y2, w2, h2, shape) {
shape.x = x2;
shape.y = y2;
shape.width = w2;
shape.height = h2;
shape.r = Math.min(w2, h2) / 4;
},
square: function(x2, y2, w2, h2, shape) {
var size = Math.min(w2, h2);
shape.x = x2;
shape.y = y2;
shape.width = size;
shape.height = size;
},
circle: function(x2, y2, w2, h2, shape) {
shape.cx = x2 + w2 / 2;
shape.cy = y2 + h2 / 2;
shape.r = Math.min(w2, h2) / 2;
},
diamond: function(x2, y2, w2, h2, shape) {
shape.cx = x2 + w2 / 2;
shape.cy = y2 + h2 / 2;
shape.width = w2;
shape.height = h2;
},
pin: function(x2, y2, w2, h2, shape) {
shape.x = x2 + w2 / 2;
shape.y = y2 + h2 / 2;
shape.width = w2;
shape.height = h2;
},
arrow: function(x2, y2, w2, h2, shape) {
shape.x = x2 + w2 / 2;
shape.y = y2 + h2 / 2;
shape.width = w2;
shape.height = h2;
},
triangle: function(x2, y2, w2, h2, shape) {
shape.cx = x2 + w2 / 2;
shape.cy = y2 + h2 / 2;
shape.width = w2;
shape.height = h2;
}
};
var symbolBuildProxies = {};
each$f(symbolCtors, function(Ctor, name) {
symbolBuildProxies[name] = new Ctor();
});
var SymbolClz = Path.extend({
type: "symbol",
shape: {
symbolType: "",
x: 0,
y: 0,
width: 0,
height: 0
},
calculateTextPosition: function(out2, config, rect) {
var res = calculateTextPosition(out2, config, rect);
var shape = this.shape;
if (shape && shape.symbolType === "pin" && config.position === "inside") {
res.y = rect.y + rect.height * 0.4;
}
return res;
},
buildPath: function(ctx, shape, inBundle) {
var symbolType = shape.symbolType;
if (symbolType !== "none") {
var proxySymbol = symbolBuildProxies[symbolType];
if (!proxySymbol) {
symbolType = "rect";
proxySymbol = symbolBuildProxies[symbolType];
}
symbolShapeMakers[symbolType](shape.x, shape.y, shape.width, shape.height, proxySymbol.shape);
proxySymbol.buildPath(ctx, proxySymbol.shape, inBundle);
}
}
});
function symbolPathSetColor(color2, innerColor2) {
if (this.type !== "image") {
var symbolStyle = this.style;
if (this.__isEmptyBrush) {
symbolStyle.stroke = color2;
symbolStyle.fill = innerColor2 || "#fff";
symbolStyle.lineWidth = 2;
} else if (this.shape.symbolType === "line") {
symbolStyle.stroke = color2;
} else {
symbolStyle.fill = color2;
}
this.markRedraw();
}
}
function createSymbol$1(symbolType, x2, y2, w2, h2, color2, keepAspect) {
var isEmpty = symbolType.indexOf("empty") === 0;
if (isEmpty) {
symbolType = symbolType.substr(5, 1).toLowerCase() + symbolType.substr(6);
}
var symbolPath;
if (symbolType.indexOf("image://") === 0) {
symbolPath = makeImage(symbolType.slice(8), new BoundingRect(x2, y2, w2, h2), keepAspect ? "center" : "cover");
} else if (symbolType.indexOf("path://") === 0) {
symbolPath = makePath(symbolType.slice(7), {}, new BoundingRect(x2, y2, w2, h2), keepAspect ? "center" : "cover");
} else {
symbolPath = new SymbolClz({
shape: {
symbolType,
x: x2,
y: y2,
width: w2,
height: h2
}
});
}
symbolPath.__isEmptyBrush = isEmpty;
symbolPath.setColor = symbolPathSetColor;
if (color2) {
symbolPath.setColor(color2);
}
return symbolPath;
}
function normalizeSymbolSize(symbolSize) {
if (!isArray$1(symbolSize)) {
symbolSize = [+symbolSize, +symbolSize];
}
return [symbolSize[0] || 0, symbolSize[1] || 0];
}
function normalizeSymbolOffset(symbolOffset, symbolSize) {
if (symbolOffset == null) {
return;
}
if (!isArray$1(symbolOffset)) {
symbolOffset = [symbolOffset, symbolOffset];
}
return [parsePercent(symbolOffset[0], symbolSize[0]) || 0, parsePercent(retrieve2(symbolOffset[1], symbolOffset[0]), symbolSize[1]) || 0];
}
function isSafeNum(num) {
return isFinite(num);
}
function createLinearGradient(ctx, obj, rect) {
var x2 = obj.x == null ? 0 : obj.x;
var x22 = obj.x2 == null ? 1 : obj.x2;
var y2 = obj.y == null ? 0 : obj.y;
var y22 = obj.y2 == null ? 0 : obj.y2;
if (!obj.global) {
x2 = x2 * rect.width + rect.x;
x22 = x22 * rect.width + rect.x;
y2 = y2 * rect.height + rect.y;
y22 = y22 * rect.height + rect.y;
}
x2 = isSafeNum(x2) ? x2 : 0;
x22 = isSafeNum(x22) ? x22 : 1;
y2 = isSafeNum(y2) ? y2 : 0;
y22 = isSafeNum(y22) ? y22 : 0;
var canvasGradient = ctx.createLinearGradient(x2, y2, x22, y22);
return canvasGradient;
}
function createRadialGradient(ctx, obj, rect) {
var width = rect.width;
var height = rect.height;
var min3 = Math.min(width, height);
var x2 = obj.x == null ? 0.5 : obj.x;
var y2 = obj.y == null ? 0.5 : obj.y;
var r2 = obj.r == null ? 0.5 : obj.r;
if (!obj.global) {
x2 = x2 * width + rect.x;
y2 = y2 * height + rect.y;
r2 = r2 * min3;
}
x2 = isSafeNum(x2) ? x2 : 0.5;
y2 = isSafeNum(y2) ? y2 : 0.5;
r2 = r2 >= 0 && isSafeNum(r2) ? r2 : 0.5;
var canvasGradient = ctx.createRadialGradient(x2, y2, 0, x2, y2, r2);
return canvasGradient;
}
function getCanvasGradient(ctx, obj, rect) {
var canvasGradient = obj.type === "radial" ? createRadialGradient(ctx, obj, rect) : createLinearGradient(ctx, obj, rect);
var colorStops = obj.colorStops;
for (var i = 0; i < colorStops.length; i++) {
canvasGradient.addColorStop(colorStops[i].offset, colorStops[i].color);
}
return canvasGradient;
}
function isClipPathChanged(clipPaths, prevClipPaths) {
if (clipPaths === prevClipPaths || !clipPaths && !prevClipPaths) {
return false;
}
if (!clipPaths || !prevClipPaths || clipPaths.length !== prevClipPaths.length) {
return true;
}
for (var i = 0; i < clipPaths.length; i++) {
if (clipPaths[i] !== prevClipPaths[i]) {
return true;
}
}
return false;
}
function parseInt10(val) {
return parseInt(val, 10);
}
function getSize$1(root, whIdx, opts) {
var wh2 = ["width", "height"][whIdx];
var cwh = ["clientWidth", "clientHeight"][whIdx];
var plt = ["paddingLeft", "paddingTop"][whIdx];
var prb = ["paddingRight", "paddingBottom"][whIdx];
if (opts[wh2] != null && opts[wh2] !== "auto") {
return parseFloat(opts[wh2]);
}
var stl = document.defaultView.getComputedStyle(root);
return (root[cwh] || parseInt10(stl[wh2]) || parseInt10(root.style[wh2])) - (parseInt10(stl[plt]) || 0) - (parseInt10(stl[prb]) || 0) | 0;
}
function normalizeLineDash(lineType, lineWidth) {
if (!lineType || lineType === "solid" || !(lineWidth > 0)) {
return null;
}
return lineType === "dashed" ? [4 * lineWidth, 2 * lineWidth] : lineType === "dotted" ? [lineWidth] : isNumber(lineType) ? [lineType] : isArray$1(lineType) ? lineType : null;
}
function getLineDash(el2) {
var style2 = el2.style;
var lineDash = style2.lineDash && style2.lineWidth > 0 && normalizeLineDash(style2.lineDash, style2.lineWidth);
var lineDashOffset = style2.lineDashOffset;
if (lineDash) {
var lineScale_1 = style2.strokeNoScale && el2.getLineScale ? el2.getLineScale() : 1;
if (lineScale_1 && lineScale_1 !== 1) {
lineDash = map$1(lineDash, function(rawVal) {
return rawVal / lineScale_1;
});
lineDashOffset /= lineScale_1;
}
}
return [lineDash, lineDashOffset];
}
var pathProxyForDraw = new PathProxy(true);
function styleHasStroke(style2) {
var stroke = style2.stroke;
return !(stroke == null || stroke === "none" || !(style2.lineWidth > 0));
}
function isValidStrokeFillStyle(strokeOrFill) {
return typeof strokeOrFill === "string" && strokeOrFill !== "none";
}
function styleHasFill(style2) {
var fill = style2.fill;
return fill != null && fill !== "none";
}
function doFillPath(ctx, style2) {
if (style2.fillOpacity != null && style2.fillOpacity !== 1) {
var originalGlobalAlpha = ctx.globalAlpha;
ctx.globalAlpha = style2.fillOpacity * style2.opacity;
ctx.fill();
ctx.globalAlpha = originalGlobalAlpha;
} else {
ctx.fill();
}
}
function doStrokePath(ctx, style2) {
if (style2.strokeOpacity != null && style2.strokeOpacity !== 1) {
var originalGlobalAlpha = ctx.globalAlpha;
ctx.globalAlpha = style2.strokeOpacity * style2.opacity;
ctx.stroke();
ctx.globalAlpha = originalGlobalAlpha;
} else {
ctx.stroke();
}
}
function createCanvasPattern(ctx, pattern4, el2) {
var image = createOrUpdateImage(pattern4.image, pattern4.__image, el2);
if (isImageReady(image)) {
var canvasPattern = ctx.createPattern(image, pattern4.repeat || "repeat");
if (typeof DOMMatrix === "function" && canvasPattern && canvasPattern.setTransform) {
var matrix2 = new DOMMatrix();
matrix2.translateSelf(pattern4.x || 0, pattern4.y || 0);
matrix2.rotateSelf(0, 0, (pattern4.rotation || 0) * RADIAN_TO_DEGREE);
matrix2.scaleSelf(pattern4.scaleX || 1, pattern4.scaleY || 1);
canvasPattern.setTransform(matrix2);
}
return canvasPattern;
}
}
function brushPath(ctx, el2, style2, inBatch) {
var _a2;
var hasStroke = styleHasStroke(style2);
var hasFill = styleHasFill(style2);
var strokePercent = style2.strokePercent;
var strokePart = strokePercent < 1;
var firstDraw = !el2.path;
if ((!el2.silent || strokePart) && firstDraw) {
el2.createPathProxy();
}
var path = el2.path || pathProxyForDraw;
var dirtyFlag = el2.__dirty;
if (!inBatch) {
var fill = style2.fill;
var stroke = style2.stroke;
var hasFillGradient = hasFill && !!fill.colorStops;
var hasStrokeGradient = hasStroke && !!stroke.colorStops;
var hasFillPattern = hasFill && !!fill.image;
var hasStrokePattern = hasStroke && !!stroke.image;
var fillGradient = void 0;
var strokeGradient = void 0;
var fillPattern = void 0;
var strokePattern = void 0;
var rect = void 0;
if (hasFillGradient || hasStrokeGradient) {
rect = el2.getBoundingRect();
}
if (hasFillGradient) {
fillGradient = dirtyFlag ? getCanvasGradient(ctx, fill, rect) : el2.__canvasFillGradient;
el2.__canvasFillGradient = fillGradient;
}
if (hasStrokeGradient) {
strokeGradient = dirtyFlag ? getCanvasGradient(ctx, stroke, rect) : el2.__canvasStrokeGradient;
el2.__canvasStrokeGradient = strokeGradient;
}
if (hasFillPattern) {
fillPattern = dirtyFlag || !el2.__canvasFillPattern ? createCanvasPattern(ctx, fill, el2) : el2.__canvasFillPattern;
el2.__canvasFillPattern = fillPattern;
}
if (hasStrokePattern) {
strokePattern = dirtyFlag || !el2.__canvasStrokePattern ? createCanvasPattern(ctx, stroke, el2) : el2.__canvasStrokePattern;
el2.__canvasStrokePattern = fillPattern;
}
if (hasFillGradient) {
ctx.fillStyle = fillGradient;
} else if (hasFillPattern) {
if (fillPattern) {
ctx.fillStyle = fillPattern;
} else {
hasFill = false;
}
}
if (hasStrokeGradient) {
ctx.strokeStyle = strokeGradient;
} else if (hasStrokePattern) {
if (strokePattern) {
ctx.strokeStyle = strokePattern;
} else {
hasStroke = false;
}
}
}
var scale2 = el2.getGlobalScale();
path.setScale(scale2[0], scale2[1], el2.segmentIgnoreThreshold);
var lineDash;
var lineDashOffset;
if (ctx.setLineDash && style2.lineDash) {
_a2 = getLineDash(el2), lineDash = _a2[0], lineDashOffset = _a2[1];
}
var needsRebuild = true;
if (firstDraw || dirtyFlag & SHAPE_CHANGED_BIT) {
path.setDPR(ctx.dpr);
if (strokePart) {
path.setContext(null);
} else {
path.setContext(ctx);
needsRebuild = false;
}
path.reset();
el2.buildPath(path, el2.shape, inBatch);
path.toStatic();
el2.pathUpdated();
}
if (needsRebuild) {
path.rebuildPath(ctx, strokePart ? strokePercent : 1);
}
if (lineDash) {
ctx.setLineDash(lineDash);
ctx.lineDashOffset = lineDashOffset;
}
if (!inBatch) {
if (style2.strokeFirst) {
if (hasStroke) {
doStrokePath(ctx, style2);
}
if (hasFill) {
doFillPath(ctx, style2);
}
} else {
if (hasFill) {
doFillPath(ctx, style2);
}
if (hasStroke) {
doStrokePath(ctx, style2);
}
}
}
if (lineDash) {
ctx.setLineDash([]);
}
}
function brushImage(ctx, el2, style2) {
var image = el2.__image = createOrUpdateImage(style2.image, el2.__image, el2, el2.onload);
if (!image || !isImageReady(image)) {
return;
}
var x2 = style2.x || 0;
var y2 = style2.y || 0;
var width = el2.getWidth();
var height = el2.getHeight();
var aspect = image.width / image.height;
if (width == null && height != null) {
width = height * aspect;
} else if (height == null && width != null) {
height = width / aspect;
} else if (width == null && height == null) {
width = image.width;
height = image.height;
}
if (style2.sWidth && style2.sHeight) {
var sx = style2.sx || 0;
var sy = style2.sy || 0;
ctx.drawImage(image, sx, sy, style2.sWidth, style2.sHeight, x2, y2, width, height);
} else if (style2.sx && style2.sy) {
var sx = style2.sx;
var sy = style2.sy;
var sWidth = width - sx;
var sHeight = height - sy;
ctx.drawImage(image, sx, sy, sWidth, sHeight, x2, y2, width, height);
} else {
ctx.drawImage(image, x2, y2, width, height);
}
}
function brushText(ctx, el2, style2) {
var _a2;
var text = style2.text;
text != null && (text += "");
if (text) {
ctx.font = style2.font || DEFAULT_FONT;
ctx.textAlign = style2.textAlign;
ctx.textBaseline = style2.textBaseline;
var lineDash = void 0;
var lineDashOffset = void 0;
if (ctx.setLineDash && style2.lineDash) {
_a2 = getLineDash(el2), lineDash = _a2[0], lineDashOffset = _a2[1];
}
if (lineDash) {
ctx.setLineDash(lineDash);
ctx.lineDashOffset = lineDashOffset;
}
if (style2.strokeFirst) {
if (styleHasStroke(style2)) {
ctx.strokeText(text, style2.x, style2.y);
}
if (styleHasFill(style2)) {
ctx.fillText(text, style2.x, style2.y);
}
} else {
if (styleHasFill(style2)) {
ctx.fillText(text, style2.x, style2.y);
}
if (styleHasStroke(style2)) {
ctx.strokeText(text, style2.x, style2.y);
}
}
if (lineDash) {
ctx.setLineDash([]);
}
}
}
var SHADOW_NUMBER_PROPS = ["shadowBlur", "shadowOffsetX", "shadowOffsetY"];
var STROKE_PROPS = [
["lineCap", "butt"],
["lineJoin", "miter"],
["miterLimit", 10]
];
function bindCommonProps(ctx, style2, prevStyle, forceSetAll, scope) {
var styleChanged = false;
if (!forceSetAll) {
prevStyle = prevStyle || {};
if (style2 === prevStyle) {
return false;
}
}
if (forceSetAll || style2.opacity !== prevStyle.opacity) {
flushPathDrawn(ctx, scope);
styleChanged = true;
var opacity = Math.max(Math.min(style2.opacity, 1), 0);
ctx.globalAlpha = isNaN(opacity) ? DEFAULT_COMMON_STYLE.opacity : opacity;
}
if (forceSetAll || style2.blend !== prevStyle.blend) {
if (!styleChanged) {
flushPathDrawn(ctx, scope);
styleChanged = true;
}
ctx.globalCompositeOperation = style2.blend || DEFAULT_COMMON_STYLE.blend;
}
for (var i = 0; i < SHADOW_NUMBER_PROPS.length; i++) {
var propName = SHADOW_NUMBER_PROPS[i];
if (forceSetAll || style2[propName] !== prevStyle[propName]) {
if (!styleChanged) {
flushPathDrawn(ctx, scope);
styleChanged = true;
}
ctx[propName] = ctx.dpr * (style2[propName] || 0);
}
}
if (forceSetAll || style2.shadowColor !== prevStyle.shadowColor) {
if (!styleChanged) {
flushPathDrawn(ctx, scope);
styleChanged = true;
}
ctx.shadowColor = style2.shadowColor || DEFAULT_COMMON_STYLE.shadowColor;
}
return styleChanged;
}
function bindPathAndTextCommonStyle(ctx, el2, prevEl, forceSetAll, scope) {
var style2 = getStyle(el2, scope.inHover);
var prevStyle = forceSetAll ? null : prevEl && getStyle(prevEl, scope.inHover) || {};
if (style2 === prevStyle) {
return false;
}
var styleChanged = bindCommonProps(ctx, style2, prevStyle, forceSetAll, scope);
if (forceSetAll || style2.fill !== prevStyle.fill) {
if (!styleChanged) {
flushPathDrawn(ctx, scope);
styleChanged = true;
}
isValidStrokeFillStyle(style2.fill) && (ctx.fillStyle = style2.fill);
}
if (forceSetAll || style2.stroke !== prevStyle.stroke) {
if (!styleChanged) {
flushPathDrawn(ctx, scope);
styleChanged = true;
}
isValidStrokeFillStyle(style2.stroke) && (ctx.strokeStyle = style2.stroke);
}
if (forceSetAll || style2.opacity !== prevStyle.opacity) {
if (!styleChanged) {
flushPathDrawn(ctx, scope);
styleChanged = true;
}
ctx.globalAlpha = style2.opacity == null ? 1 : style2.opacity;
}
if (el2.hasStroke()) {
var lineWidth = style2.lineWidth;
var newLineWidth = lineWidth / (style2.strokeNoScale && el2.getLineScale ? el2.getLineScale() : 1);
if (ctx.lineWidth !== newLineWidth) {
if (!styleChanged) {
flushPathDrawn(ctx, scope);
styleChanged = true;
}
ctx.lineWidth = newLineWidth;
}
}
for (var i = 0; i < STROKE_PROPS.length; i++) {
var prop = STROKE_PROPS[i];
var propName = prop[0];
if (forceSetAll || style2[propName] !== prevStyle[propName]) {
if (!styleChanged) {
flushPathDrawn(ctx, scope);
styleChanged = true;
}
ctx[propName] = style2[propName] || prop[1];
}
}
return styleChanged;
}
function bindImageStyle(ctx, el2, prevEl, forceSetAll, scope) {
return bindCommonProps(ctx, getStyle(el2, scope.inHover), prevEl && getStyle(prevEl, scope.inHover), forceSetAll, scope);
}
function setContextTransform(ctx, el2) {
var m2 = el2.transform;
var dpr2 = ctx.dpr || 1;
if (m2) {
ctx.setTransform(dpr2 * m2[0], dpr2 * m2[1], dpr2 * m2[2], dpr2 * m2[3], dpr2 * m2[4], dpr2 * m2[5]);
} else {
ctx.setTransform(dpr2, 0, 0, dpr2, 0, 0);
}
}
function updateClipStatus(clipPaths, ctx, scope) {
var allClipped = false;
for (var i = 0; i < clipPaths.length; i++) {
var clipPath = clipPaths[i];
allClipped = allClipped || clipPath.isZeroArea();
setContextTransform(ctx, clipPath);
ctx.beginPath();
clipPath.buildPath(ctx, clipPath.shape);
ctx.clip();
}
scope.allClipped = allClipped;
}
function isTransformChanged(m0, m1) {
if (m0 && m1) {
return m0[0] !== m1[0] || m0[1] !== m1[1] || m0[2] !== m1[2] || m0[3] !== m1[3] || m0[4] !== m1[4] || m0[5] !== m1[5];
} else if (!m0 && !m1) {
return false;
}
return true;
}
var DRAW_TYPE_PATH = 1;
var DRAW_TYPE_IMAGE = 2;
var DRAW_TYPE_TEXT = 3;
var DRAW_TYPE_INCREMENTAL = 4;
function canPathBatch(style2) {
var hasFill = styleHasFill(style2);
var hasStroke = styleHasStroke(style2);
return !(style2.lineDash || !(+hasFill ^ +hasStroke) || hasFill && typeof style2.fill !== "string" || hasStroke && typeof style2.stroke !== "string" || style2.strokePercent < 1 || style2.strokeOpacity < 1 || style2.fillOpacity < 1);
}
function flushPathDrawn(ctx, scope) {
scope.batchFill && ctx.fill();
scope.batchStroke && ctx.stroke();
scope.batchFill = "";
scope.batchStroke = "";
}
function getStyle(el2, inHover) {
return inHover ? el2.__hoverStyle || el2.style : el2.style;
}
function brushSingle(ctx, el2) {
brush$1(ctx, el2, { inHover: false, viewWidth: 0, viewHeight: 0 }, true);
}
function brush$1(ctx, el2, scope, isLast) {
var m2 = el2.transform;
if (!el2.shouldBePainted(scope.viewWidth, scope.viewHeight, false, false)) {
el2.__dirty &= ~REDRAW_BIT;
el2.__isRendered = false;
return;
}
var clipPaths = el2.__clipPaths;
var prevElClipPaths = scope.prevElClipPaths;
var forceSetTransform = false;
var forceSetStyle = false;
if (!prevElClipPaths || isClipPathChanged(clipPaths, prevElClipPaths)) {
if (prevElClipPaths && prevElClipPaths.length) {
flushPathDrawn(ctx, scope);
ctx.restore();
forceSetStyle = forceSetTransform = true;
scope.prevElClipPaths = null;
scope.allClipped = false;
scope.prevEl = null;
}
if (clipPaths && clipPaths.length) {
flushPathDrawn(ctx, scope);
ctx.save();
updateClipStatus(clipPaths, ctx, scope);
forceSetTransform = true;
}
scope.prevElClipPaths = clipPaths;
}
if (scope.allClipped) {
el2.__isRendered = false;
return;
}
el2.beforeBrush && el2.beforeBrush();
el2.innerBeforeBrush();
var prevEl = scope.prevEl;
if (!prevEl) {
forceSetStyle = forceSetTransform = true;
}
var canBatchPath = el2 instanceof Path && el2.autoBatch && canPathBatch(el2.style);
if (forceSetTransform || isTransformChanged(m2, prevEl.transform)) {
flushPathDrawn(ctx, scope);
setContextTransform(ctx, el2);
} else if (!canBatchPath) {
flushPathDrawn(ctx, scope);
}
var style2 = getStyle(el2, scope.inHover);
if (el2 instanceof Path) {
if (scope.lastDrawType !== DRAW_TYPE_PATH) {
forceSetStyle = true;
scope.lastDrawType = DRAW_TYPE_PATH;
}
bindPathAndTextCommonStyle(ctx, el2, prevEl, forceSetStyle, scope);
if (!canBatchPath || !scope.batchFill && !scope.batchStroke) {
ctx.beginPath();
}
brushPath(ctx, el2, style2, canBatchPath);
if (canBatchPath) {
scope.batchFill = style2.fill || "";
scope.batchStroke = style2.stroke || "";
}
} else {
if (el2 instanceof TSpan) {
if (scope.lastDrawType !== DRAW_TYPE_TEXT) {
forceSetStyle = true;
scope.lastDrawType = DRAW_TYPE_TEXT;
}
bindPathAndTextCommonStyle(ctx, el2, prevEl, forceSetStyle, scope);
brushText(ctx, el2, style2);
} else if (el2 instanceof ZRImage) {
if (scope.lastDrawType !== DRAW_TYPE_IMAGE) {
forceSetStyle = true;
scope.lastDrawType = DRAW_TYPE_IMAGE;
}
bindImageStyle(ctx, el2, prevEl, forceSetStyle, scope);
brushImage(ctx, el2, style2);
} else if (el2.getTemporalDisplayables) {
if (scope.lastDrawType !== DRAW_TYPE_INCREMENTAL) {
forceSetStyle = true;
scope.lastDrawType = DRAW_TYPE_INCREMENTAL;
}
brushIncremental(ctx, el2, scope);
}
}
if (canBatchPath && isLast) {
flushPathDrawn(ctx, scope);
}
el2.innerAfterBrush();
el2.afterBrush && el2.afterBrush();
scope.prevEl = el2;
el2.__dirty = 0;
el2.__isRendered = true;
}
function brushIncremental(ctx, el2, scope) {
var displayables = el2.getDisplayables();
var temporalDisplayables = el2.getTemporalDisplayables();
ctx.save();
var innerScope = {
prevElClipPaths: null,
prevEl: null,
allClipped: false,
viewWidth: scope.viewWidth,
viewHeight: scope.viewHeight,
inHover: scope.inHover
};
var i;
var len2;
for (i = el2.getCursor(), len2 = displayables.length; i < len2; i++) {
var displayable = displayables[i];
displayable.beforeBrush && displayable.beforeBrush();
displayable.innerBeforeBrush();
brush$1(ctx, displayable, innerScope, i === len2 - 1);
displayable.innerAfterBrush();
displayable.afterBrush && displayable.afterBrush();
innerScope.prevEl = displayable;
}
for (var i_1 = 0, len_1 = temporalDisplayables.length; i_1 < len_1; i_1++) {
var displayable = temporalDisplayables[i_1];
displayable.beforeBrush && displayable.beforeBrush();
displayable.innerBeforeBrush();
brush$1(ctx, displayable, innerScope, i_1 === len_1 - 1);
displayable.innerAfterBrush();
displayable.afterBrush && displayable.afterBrush();
innerScope.prevEl = displayable;
}
el2.clearTemporalDisplayables();
el2.notClear = true;
ctx.restore();
}
var decalMap = new WeakMap$1();
var decalCache = new LRU(100);
var decalKeys = ["symbol", "symbolSize", "symbolKeepAspect", "color", "backgroundColor", "dashArrayX", "dashArrayY", "maxTileWidth", "maxTileHeight"];
function createOrUpdatePatternFromDecal(decalObject, api) {
if (decalObject === "none") {
return null;
}
var dpr2 = api.getDevicePixelRatio();
var zr = api.getZr();
var isSVG = zr.painter.type === "svg";
if (decalObject.dirty) {
decalMap["delete"](decalObject);
}
var oldPattern = decalMap.get(decalObject);
if (oldPattern) {
return oldPattern;
}
var decalOpt = defaults(decalObject, {
symbol: "rect",
symbolSize: 1,
symbolKeepAspect: true,
color: "rgba(0, 0, 0, 0.2)",
backgroundColor: null,
dashArrayX: 5,
dashArrayY: 5,
rotation: 0,
maxTileWidth: 512,
maxTileHeight: 512
});
if (decalOpt.backgroundColor === "none") {
decalOpt.backgroundColor = null;
}
var pattern4 = {
repeat: "repeat"
};
setPatternnSource(pattern4);
pattern4.rotation = decalOpt.rotation;
pattern4.scaleX = pattern4.scaleY = isSVG ? 1 : 1 / dpr2;
decalMap.set(decalObject, pattern4);
decalObject.dirty = false;
return pattern4;
function setPatternnSource(pattern22) {
var keys2 = [dpr2];
var isValidKey = true;
for (var i = 0; i < decalKeys.length; ++i) {
var value = decalOpt[decalKeys[i]];
if (value != null && !isArray$1(value) && !isString$1(value) && !isNumber(value) && typeof value !== "boolean") {
isValidKey = false;
break;
}
keys2.push(value);
}
var cacheKey;
if (isValidKey) {
cacheKey = keys2.join(",") + (isSVG ? "-svg" : "");
var cache = decalCache.get(cacheKey);
if (cache) {
isSVG ? pattern22.svgElement = cache : pattern22.image = cache;
}
}
var dashArrayX = normalizeDashArrayX(decalOpt.dashArrayX);
var dashArrayY = normalizeDashArrayY(decalOpt.dashArrayY);
var symbolArray = normalizeSymbolArray(decalOpt.symbol);
var lineBlockLengthsX = getLineBlockLengthX(dashArrayX);
var lineBlockLengthY = getLineBlockLengthY(dashArrayY);
var canvas = !isSVG && platformApi.createCanvas();
var svgRoot = isSVG && {
tag: "g",
attrs: {},
key: "dcl",
children: []
};
var pSize = getPatternSize();
var ctx;
if (canvas) {
canvas.width = pSize.width * dpr2;
canvas.height = pSize.height * dpr2;
ctx = canvas.getContext("2d");
}
brushDecal();
if (isValidKey) {
decalCache.put(cacheKey, canvas || svgRoot);
}
pattern22.image = canvas;
pattern22.svgElement = svgRoot;
pattern22.svgWidth = pSize.width;
pattern22.svgHeight = pSize.height;
function getPatternSize() {
var width = 1;
for (var i2 = 0, xlen = lineBlockLengthsX.length; i2 < xlen; ++i2) {
width = getLeastCommonMultiple(width, lineBlockLengthsX[i2]);
}
var symbolRepeats = 1;
for (var i2 = 0, xlen = symbolArray.length; i2 < xlen; ++i2) {
symbolRepeats = getLeastCommonMultiple(symbolRepeats, symbolArray[i2].length);
}
width *= symbolRepeats;
var height = lineBlockLengthY * lineBlockLengthsX.length * symbolArray.length;
return {
width: Math.max(1, Math.min(width, decalOpt.maxTileWidth)),
height: Math.max(1, Math.min(height, decalOpt.maxTileHeight))
};
}
function brushDecal() {
if (ctx) {
ctx.clearRect(0, 0, canvas.width, canvas.height);
if (decalOpt.backgroundColor) {
ctx.fillStyle = decalOpt.backgroundColor;
ctx.fillRect(0, 0, canvas.width, canvas.height);
}
}
var ySum = 0;
for (var i2 = 0; i2 < dashArrayY.length; ++i2) {
ySum += dashArrayY[i2];
}
if (ySum <= 0) {
return;
}
var y2 = -lineBlockLengthY;
var yId = 0;
var yIdTotal = 0;
var xId0 = 0;
while (y2 < pSize.height) {
if (yId % 2 === 0) {
var symbolYId = yIdTotal / 2 % symbolArray.length;
var x2 = 0;
var xId1 = 0;
var xId1Total = 0;
while (x2 < pSize.width * 2) {
var xSum = 0;
for (var i2 = 0; i2 < dashArrayX[xId0].length; ++i2) {
xSum += dashArrayX[xId0][i2];
}
if (xSum <= 0) {
break;
}
if (xId1 % 2 === 0) {
var size = (1 - decalOpt.symbolSize) * 0.5;
var left = x2 + dashArrayX[xId0][xId1] * size;
var top_1 = y2 + dashArrayY[yId] * size;
var width = dashArrayX[xId0][xId1] * decalOpt.symbolSize;
var height = dashArrayY[yId] * decalOpt.symbolSize;
var symbolXId = xId1Total / 2 % symbolArray[symbolYId].length;
brushSymbol(left, top_1, width, height, symbolArray[symbolYId][symbolXId]);
}
x2 += dashArrayX[xId0][xId1];
++xId1Total;
++xId1;
if (xId1 === dashArrayX[xId0].length) {
xId1 = 0;
}
}
++xId0;
if (xId0 === dashArrayX.length) {
xId0 = 0;
}
}
y2 += dashArrayY[yId];
++yIdTotal;
++yId;
if (yId === dashArrayY.length) {
yId = 0;
}
}
function brushSymbol(x22, y22, width2, height2, symbolType) {
var scale2 = isSVG ? 1 : dpr2;
var symbol = createSymbol$1(symbolType, x22 * scale2, y22 * scale2, width2 * scale2, height2 * scale2, decalOpt.color, decalOpt.symbolKeepAspect);
if (isSVG) {
var symbolVNode = zr.painter.renderOneToVNode(symbol);
if (symbolVNode) {
svgRoot.children.push(symbolVNode);
}
} else {
brushSingle(ctx, symbol);
}
}
}
}
}
function normalizeSymbolArray(symbol) {
if (!symbol || symbol.length === 0) {
return [["rect"]];
}
if (isString$1(symbol)) {
return [[symbol]];
}
var isAllString = true;
for (var i = 0; i < symbol.length; ++i) {
if (!isString$1(symbol[i])) {
isAllString = false;
break;
}
}
if (isAllString) {
return normalizeSymbolArray([symbol]);
}
var result = [];
for (var i = 0; i < symbol.length; ++i) {
if (isString$1(symbol[i])) {
result.push([symbol[i]]);
} else {
result.push(symbol[i]);
}
}
return result;
}
function normalizeDashArrayX(dash) {
if (!dash || dash.length === 0) {
return [[0, 0]];
}
if (isNumber(dash)) {
var dashValue = Math.ceil(dash);
return [[dashValue, dashValue]];
}
var isAllNumber = true;
for (var i = 0; i < dash.length; ++i) {
if (!isNumber(dash[i])) {
isAllNumber = false;
break;
}
}
if (isAllNumber) {
return normalizeDashArrayX([dash]);
}
var result = [];
for (var i = 0; i < dash.length; ++i) {
if (isNumber(dash[i])) {
var dashValue = Math.ceil(dash[i]);
result.push([dashValue, dashValue]);
} else {
var dashValue = map$1(dash[i], function(n2) {
return Math.ceil(n2);
});
if (dashValue.length % 2 === 1) {
result.push(dashValue.concat(dashValue));
} else {
result.push(dashValue);
}
}
}
return result;
}
function normalizeDashArrayY(dash) {
if (!dash || typeof dash === "object" && dash.length === 0) {
return [0, 0];
}
if (isNumber(dash)) {
var dashValue_1 = Math.ceil(dash);
return [dashValue_1, dashValue_1];
}
var dashValue = map$1(dash, function(n2) {
return Math.ceil(n2);
});
return dash.length % 2 ? dashValue.concat(dashValue) : dashValue;
}
function getLineBlockLengthX(dash) {
return map$1(dash, function(line2) {
return getLineBlockLengthY(line2);
});
}
function getLineBlockLengthY(dash) {
var blockLength = 0;
for (var i = 0; i < dash.length; ++i) {
blockLength += dash[i];
}
if (dash.length % 2 === 1) {
return blockLength * 2;
}
return blockLength;
}
function decalVisual(ecModel, api) {
ecModel.eachRawSeries(function(seriesModel) {
if (ecModel.isSeriesFiltered(seriesModel)) {
return;
}
var data = seriesModel.getData();
if (data.hasItemVisual()) {
data.each(function(idx) {
var decal2 = data.getItemVisual(idx, "decal");
if (decal2) {
var itemStyle = data.ensureUniqueItemVisual(idx, "style");
itemStyle.decal = createOrUpdatePatternFromDecal(decal2, api);
}
});
}
var decal = data.getVisual("decal");
if (decal) {
var style2 = data.getVisual("style");
style2.decal = createOrUpdatePatternFromDecal(decal, api);
}
});
}
var lifecycle = new Eventful();
var implsStore = {};
function registerImpl(name, impl) {
implsStore[name] = impl;
}
function getImpl(name) {
return implsStore[name];
}
var version = "5.5.1";
var dependencies = {
zrender: "5.6.0"
};
var TEST_FRAME_REMAIN_TIME = 1;
var PRIORITY_PROCESSOR_SERIES_FILTER = 800;
var PRIORITY_PROCESSOR_DATASTACK = 900;
var PRIORITY_PROCESSOR_FILTER = 1e3;
var PRIORITY_PROCESSOR_DEFAULT = 2e3;
var PRIORITY_PROCESSOR_STATISTIC = 5e3;
var PRIORITY_VISUAL_LAYOUT = 1e3;
var PRIORITY_VISUAL_PROGRESSIVE_LAYOUT = 1100;
var PRIORITY_VISUAL_GLOBAL = 2e3;
var PRIORITY_VISUAL_CHART = 3e3;
var PRIORITY_VISUAL_COMPONENT = 4e3;
var PRIORITY_VISUAL_CHART_DATA_CUSTOM = 4500;
var PRIORITY_VISUAL_POST_CHART_LAYOUT = 4600;
var PRIORITY_VISUAL_BRUSH = 5e3;
var PRIORITY_VISUAL_ARIA = 6e3;
var PRIORITY_VISUAL_DECAL = 7e3;
var PRIORITY = {
PROCESSOR: {
FILTER: PRIORITY_PROCESSOR_FILTER,
SERIES_FILTER: PRIORITY_PROCESSOR_SERIES_FILTER,
STATISTIC: PRIORITY_PROCESSOR_STATISTIC
},
VISUAL: {
LAYOUT: PRIORITY_VISUAL_LAYOUT,
PROGRESSIVE_LAYOUT: PRIORITY_VISUAL_PROGRESSIVE_LAYOUT,
GLOBAL: PRIORITY_VISUAL_GLOBAL,
CHART: PRIORITY_VISUAL_CHART,
POST_CHART_LAYOUT: PRIORITY_VISUAL_POST_CHART_LAYOUT,
COMPONENT: PRIORITY_VISUAL_COMPONENT,
BRUSH: PRIORITY_VISUAL_BRUSH,
CHART_ITEM: PRIORITY_VISUAL_CHART_DATA_CUSTOM,
ARIA: PRIORITY_VISUAL_ARIA,
DECAL: PRIORITY_VISUAL_DECAL
}
};
var IN_MAIN_PROCESS_KEY = "__flagInMainProcess";
var PENDING_UPDATE = "__pendingUpdate";
var STATUS_NEEDS_UPDATE_KEY = "__needsUpdateStatus";
var ACTION_REG = /^[a-zA-Z0-9_]+$/;
var CONNECT_STATUS_KEY = "__connectUpdateStatus";
var CONNECT_STATUS_PENDING = 0;
var CONNECT_STATUS_UPDATING = 1;
var CONNECT_STATUS_UPDATED = 2;
function createRegisterEventWithLowercaseECharts(method4) {
return function() {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
if (this.isDisposed()) {
disposedWarning(this.id);
return;
}
return toLowercaseNameAndCallEventful(this, method4, args);
};
}
function createRegisterEventWithLowercaseMessageCenter(method4) {
return function() {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return toLowercaseNameAndCallEventful(this, method4, args);
};
}
function toLowercaseNameAndCallEventful(host, method4, args) {
args[0] = args[0] && args[0].toLowerCase();
return Eventful.prototype[method4].apply(host, args);
}
var MessageCenter = (
/** @class */
function(_super) {
__extends(MessageCenter2, _super);
function MessageCenter2() {
return _super !== null && _super.apply(this, arguments) || this;
}
return MessageCenter2;
}(Eventful)
);
var messageCenterProto = MessageCenter.prototype;
messageCenterProto.on = createRegisterEventWithLowercaseMessageCenter("on");
messageCenterProto.off = createRegisterEventWithLowercaseMessageCenter("off");
var prepare;
var prepareView;
var updateDirectly;
var updateMethods;
var doConvertPixel;
var updateStreamModes;
var doDispatchAction;
var flushPendingActions;
var triggerUpdatedEvent;
var bindRenderedEvent;
var bindMouseEvent;
var render;
var renderComponents;
var renderSeries;
var createExtensionAPI;
var enableConnect;
var markStatusToUpdate;
var applyChangedStates;
var ECharts = (
/** @class */
function(_super) {
__extends(ECharts2, _super);
function ECharts2(dom, theme2, opts) {
var _this = _super.call(this, new ECEventProcessor()) || this;
_this._chartsViews = [];
_this._chartsMap = {};
_this._componentsViews = [];
_this._componentsMap = {};
_this._pendingActions = [];
opts = opts || {};
if (isString$1(theme2)) {
theme2 = themeStorage[theme2];
}
_this._dom = dom;
var defaultRenderer = "canvas";
var defaultCoarsePointer = "auto";
var defaultUseDirtyRect = false;
if (opts.ssr) {
registerSSRDataGetter(function(el2) {
var ecData = getECData(el2);
var dataIndex = ecData.dataIndex;
if (dataIndex == null) {
return;
}
var hashMap = createHashMap();
hashMap.set("series_index", ecData.seriesIndex);
hashMap.set("data_index", dataIndex);
ecData.ssrType && hashMap.set("ssr_type", ecData.ssrType);
return hashMap;
});
}
var zr = _this._zr = init$2(dom, {
renderer: opts.renderer || defaultRenderer,
devicePixelRatio: opts.devicePixelRatio,
width: opts.width,
height: opts.height,
ssr: opts.ssr,
useDirtyRect: retrieve2(opts.useDirtyRect, defaultUseDirtyRect),
useCoarsePointer: retrieve2(opts.useCoarsePointer, defaultCoarsePointer),
pointerSize: opts.pointerSize
});
_this._ssr = opts.ssr;
_this._throttledZrFlush = throttle(bind$2(zr.flush, zr), 17);
theme2 = clone$4(theme2);
theme2 && globalBackwardCompat(theme2, true);
_this._theme = theme2;
_this._locale = createLocaleObject(opts.locale || SYSTEM_LANG);
_this._coordSysMgr = new CoordinateSystemManager();
var api = _this._api = createExtensionAPI(_this);
function prioritySortFunc(a, b2) {
return a.__prio - b2.__prio;
}
sort$2(visualFuncs, prioritySortFunc);
sort$2(dataProcessorFuncs, prioritySortFunc);
_this._scheduler = new Scheduler(_this, api, dataProcessorFuncs, visualFuncs);
_this._messageCenter = new MessageCenter();
_this._initEvents();
_this.resize = bind$2(_this.resize, _this);
zr.animation.on("frame", _this._onframe, _this);
bindRenderedEvent(zr, _this);
bindMouseEvent(zr, _this);
setAsPrimitive(_this);
return _this;
}
ECharts2.prototype._onframe = function() {
if (this._disposed) {
return;
}
applyChangedStates(this);
var scheduler2 = this._scheduler;
if (this[PENDING_UPDATE]) {
var silent = this[PENDING_UPDATE].silent;
this[IN_MAIN_PROCESS_KEY] = true;
try {
prepare(this);
updateMethods.update.call(this, null, this[PENDING_UPDATE].updateParams);
} catch (e2) {
this[IN_MAIN_PROCESS_KEY] = false;
this[PENDING_UPDATE] = null;
throw e2;
}
this._zr.flush();
this[IN_MAIN_PROCESS_KEY] = false;
this[PENDING_UPDATE] = null;
flushPendingActions.call(this, silent);
triggerUpdatedEvent.call(this, silent);
} else if (scheduler2.unfinished) {
var remainTime = TEST_FRAME_REMAIN_TIME;
var ecModel = this._model;
var api = this._api;
scheduler2.unfinished = false;
do {
var startTime = +/* @__PURE__ */ new Date();
scheduler2.performSeriesTasks(ecModel);
scheduler2.performDataProcessorTasks(ecModel);
updateStreamModes(this, ecModel);
scheduler2.performVisualTasks(ecModel);
renderSeries(this, this._model, api, "remain", {});
remainTime -= +/* @__PURE__ */ new Date() - startTime;
} while (remainTime > 0 && scheduler2.unfinished);
if (!scheduler2.unfinished) {
this._zr.flush();
}
}
};
ECharts2.prototype.getDom = function() {
return this._dom;
};
ECharts2.prototype.getId = function() {
return this.id;
};
ECharts2.prototype.getZr = function() {
return this._zr;
};
ECharts2.prototype.isSSR = function() {
return this._ssr;
};
ECharts2.prototype.setOption = function(option, notMerge, lazyUpdate) {
if (this[IN_MAIN_PROCESS_KEY]) {
return;
}
if (this._disposed) {
disposedWarning(this.id);
return;
}
var silent;
var replaceMerge;
var transitionOpt;
if (isObject$3(notMerge)) {
lazyUpdate = notMerge.lazyUpdate;
silent = notMerge.silent;
replaceMerge = notMerge.replaceMerge;
transitionOpt = notMerge.transition;
notMerge = notMerge.notMerge;
}
this[IN_MAIN_PROCESS_KEY] = true;
if (!this._model || notMerge) {
var optionManager = new OptionManager(this._api);
var theme2 = this._theme;
var ecModel = this._model = new GlobalModel();
ecModel.scheduler = this._scheduler;
ecModel.ssr = this._ssr;
ecModel.init(null, null, null, theme2, this._locale, optionManager);
}
this._model.setOption(option, {
replaceMerge
}, optionPreprocessorFuncs);
var updateParams = {
seriesTransition: transitionOpt,
optionChanged: true
};
if (lazyUpdate) {
this[PENDING_UPDATE] = {
silent,
updateParams
};
this[IN_MAIN_PROCESS_KEY] = false;
this.getZr().wakeUp();
} else {
try {
prepare(this);
updateMethods.update.call(this, null, updateParams);
} catch (e2) {
this[PENDING_UPDATE] = null;
this[IN_MAIN_PROCESS_KEY] = false;
throw e2;
}
if (!this._ssr) {
this._zr.flush();
}
this[PENDING_UPDATE] = null;
this[IN_MAIN_PROCESS_KEY] = false;
flushPendingActions.call(this, silent);
triggerUpdatedEvent.call(this, silent);
}
};
ECharts2.prototype.setTheme = function() {
};
ECharts2.prototype.getModel = function() {
return this._model;
};
ECharts2.prototype.getOption = function() {
return this._model && this._model.getOption();
};
ECharts2.prototype.getWidth = function() {
return this._zr.getWidth();
};
ECharts2.prototype.getHeight = function() {
return this._zr.getHeight();
};
ECharts2.prototype.getDevicePixelRatio = function() {
return this._zr.painter.dpr || env.hasGlobalWindow && window.devicePixelRatio || 1;
};
ECharts2.prototype.getRenderedCanvas = function(opts) {
return this.renderToCanvas(opts);
};
ECharts2.prototype.renderToCanvas = function(opts) {
opts = opts || {};
var painter = this._zr.painter;
return painter.getRenderedCanvas({
backgroundColor: opts.backgroundColor || this._model.get("backgroundColor"),
pixelRatio: opts.pixelRatio || this.getDevicePixelRatio()
});
};
ECharts2.prototype.renderToSVGString = function(opts) {
opts = opts || {};
var painter = this._zr.painter;
return painter.renderToString({
useViewBox: opts.useViewBox
});
};
ECharts2.prototype.getSvgDataURL = function() {
if (!env.svgSupported) {
return;
}
var zr = this._zr;
var list = zr.storage.getDisplayList();
each$f(list, function(el2) {
el2.stopAnimation(null, true);
});
return zr.painter.toDataURL();
};
ECharts2.prototype.getDataURL = function(opts) {
if (this._disposed) {
disposedWarning(this.id);
return;
}
opts = opts || {};
var excludeComponents = opts.excludeComponents;
var ecModel = this._model;
var excludesComponentViews = [];
var self2 = this;
each$f(excludeComponents, function(componentType) {
ecModel.eachComponent({
mainType: componentType
}, function(component) {
var view = self2._componentsMap[component.__viewId];
if (!view.group.ignore) {
excludesComponentViews.push(view);
view.group.ignore = true;
}
});
});
var url2 = this._zr.painter.getType() === "svg" ? this.getSvgDataURL() : this.renderToCanvas(opts).toDataURL("image/" + (opts && opts.type || "png"));
each$f(excludesComponentViews, function(view) {
view.group.ignore = false;
});
return url2;
};
ECharts2.prototype.getConnectedDataURL = function(opts) {
if (this._disposed) {
disposedWarning(this.id);
return;
}
var isSvg = opts.type === "svg";
var groupId = this.group;
var mathMin2 = Math.min;
var mathMax2 = Math.max;
var MAX_NUMBER = Infinity;
if (connectedGroups[groupId]) {
var left_1 = MAX_NUMBER;
var top_1 = MAX_NUMBER;
var right_1 = -MAX_NUMBER;
var bottom_1 = -MAX_NUMBER;
var canvasList_1 = [];
var dpr_1 = opts && opts.pixelRatio || this.getDevicePixelRatio();
each$f(instances, function(chart, id2) {
if (chart.group === groupId) {
var canvas = isSvg ? chart.getZr().painter.getSvgDom().innerHTML : chart.renderToCanvas(clone$4(opts));
var boundingRect = chart.getDom().getBoundingClientRect();
left_1 = mathMin2(boundingRect.left, left_1);
top_1 = mathMin2(boundingRect.top, top_1);
right_1 = mathMax2(boundingRect.right, right_1);
bottom_1 = mathMax2(boundingRect.bottom, bottom_1);
canvasList_1.push({
dom: canvas,
left: boundingRect.left,
top: boundingRect.top
});
}
});
left_1 *= dpr_1;
top_1 *= dpr_1;
right_1 *= dpr_1;
bottom_1 *= dpr_1;
var width = right_1 - left_1;
var height = bottom_1 - top_1;
var targetCanvas = platformApi.createCanvas();
var zr_1 = init$2(targetCanvas, {
renderer: isSvg ? "svg" : "canvas"
});
zr_1.resize({
width,
height
});
if (isSvg) {
var content_1 = "";
each$f(canvasList_1, function(item) {
var x2 = item.left - left_1;
var y2 = item.top - top_1;
content_1 += '<g transform="translate(' + x2 + "," + y2 + ')">' + item.dom + "</g>";
});
zr_1.painter.getSvgRoot().innerHTML = content_1;
if (opts.connectedBackgroundColor) {
zr_1.painter.setBackgroundColor(opts.connectedBackgroundColor);
}
zr_1.refreshImmediately();
return zr_1.painter.toDataURL();
} else {
if (opts.connectedBackgroundColor) {
zr_1.add(new Rect$2({
shape: {
x: 0,
y: 0,
width,
height
},
style: {
fill: opts.connectedBackgroundColor
}
}));
}
each$f(canvasList_1, function(item) {
var img = new ZRImage({
style: {
x: item.left * dpr_1 - left_1,
y: item.top * dpr_1 - top_1,
image: item.dom
}
});
zr_1.add(img);
});
zr_1.refreshImmediately();
return targetCanvas.toDataURL("image/" + (opts && opts.type || "png"));
}
} else {
return this.getDataURL(opts);
}
};
ECharts2.prototype.convertToPixel = function(finder, value) {
return doConvertPixel(this, "convertToPixel", finder, value);
};
ECharts2.prototype.convertFromPixel = function(finder, value) {
return doConvertPixel(this, "convertFromPixel", finder, value);
};
ECharts2.prototype.containPixel = function(finder, value) {
if (this._disposed) {
disposedWarning(this.id);
return;
}
var ecModel = this._model;
var result;
var findResult = parseFinder$1(ecModel, finder);
each$f(findResult, function(models, key) {
key.indexOf("Models") >= 0 && each$f(models, function(model) {
var coordSys = model.coordinateSystem;
if (coordSys && coordSys.containPoint) {
result = result || !!coordSys.containPoint(value);
} else if (key === "seriesModels") {
var view = this._chartsMap[model.__viewId];
if (view && view.containPoint) {
result = result || view.containPoint(value, model);
}
} else ;
}, this);
}, this);
return !!result;
};
ECharts2.prototype.getVisual = function(finder, visualType) {
var ecModel = this._model;
var parsedFinder = parseFinder$1(ecModel, finder, {
defaultMainType: "series"
});
var seriesModel = parsedFinder.seriesModel;
var data = seriesModel.getData();
var dataIndexInside = parsedFinder.hasOwnProperty("dataIndexInside") ? parsedFinder.dataIndexInside : parsedFinder.hasOwnProperty("dataIndex") ? data.indexOfRawIndex(parsedFinder.dataIndex) : null;
return dataIndexInside != null ? getItemVisualFromData(data, dataIndexInside, visualType) : getVisualFromData(data, visualType);
};
ECharts2.prototype.getViewOfComponentModel = function(componentModel) {
return this._componentsMap[componentModel.__viewId];
};
ECharts2.prototype.getViewOfSeriesModel = function(seriesModel) {
return this._chartsMap[seriesModel.__viewId];
};
ECharts2.prototype._initEvents = function() {
var _this = this;
each$f(MOUSE_EVENT_NAMES, function(eveName) {
var handler = function(e2) {
var ecModel = _this.getModel();
var el2 = e2.target;
var params;
var isGlobalOut = eveName === "globalout";
if (isGlobalOut) {
params = {};
} else {
el2 && findEventDispatcher(el2, function(parent) {
var ecData = getECData(parent);
if (ecData && ecData.dataIndex != null) {
var dataModel = ecData.dataModel || ecModel.getSeriesByIndex(ecData.seriesIndex);
params = dataModel && dataModel.getDataParams(ecData.dataIndex, ecData.dataType, el2) || {};
return true;
} else if (ecData.eventData) {
params = extend({}, ecData.eventData);
return true;
}
}, true);
}
if (params) {
var componentType = params.componentType;
var componentIndex = params.componentIndex;
if (componentType === "markLine" || componentType === "markPoint" || componentType === "markArea") {
componentType = "series";
componentIndex = params.seriesIndex;
}
var model = componentType && componentIndex != null && ecModel.getComponent(componentType, componentIndex);
var view = model && _this[model.mainType === "series" ? "_chartsMap" : "_componentsMap"][model.__viewId];
params.event = e2;
params.type = eveName;
_this._$eventProcessor.eventInfo = {
targetEl: el2,
packedEvent: params,
model,
view
};
_this.trigger(eveName, params);
}
};
handler.zrEventfulCallAtLast = true;
_this._zr.on(eveName, handler, _this);
});
each$f(eventActionMap, function(actionType, eventType) {
_this._messageCenter.on(eventType, function(event) {
this.trigger(eventType, event);
}, _this);
});
each$f(["selectchanged"], function(eventType) {
_this._messageCenter.on(eventType, function(event) {
this.trigger(eventType, event);
}, _this);
});
handleLegacySelectEvents(this._messageCenter, this, this._api);
};
ECharts2.prototype.isDisposed = function() {
return this._disposed;
};
ECharts2.prototype.clear = function() {
if (this._disposed) {
disposedWarning(this.id);
return;
}
this.setOption({
series: []
}, true);
};
ECharts2.prototype.dispose = function() {
if (this._disposed) {
disposedWarning(this.id);
return;
}
this._disposed = true;
var dom = this.getDom();
if (dom) {
setAttribute(this.getDom(), DOM_ATTRIBUTE_KEY, "");
}
var chart = this;
var api = chart._api;
var ecModel = chart._model;
each$f(chart._componentsViews, function(component) {
component.dispose(ecModel, api);
});
each$f(chart._chartsViews, function(chart2) {
chart2.dispose(ecModel, api);
});
chart._zr.dispose();
chart._dom = chart._model = chart._chartsMap = chart._componentsMap = chart._chartsViews = chart._componentsViews = chart._scheduler = chart._api = chart._zr = chart._throttledZrFlush = chart._theme = chart._coordSysMgr = chart._messageCenter = null;
delete instances[chart.id];
};
ECharts2.prototype.resize = function(opts) {
if (this[IN_MAIN_PROCESS_KEY]) {
return;
}
if (this._disposed) {
disposedWarning(this.id);
return;
}
this._zr.resize(opts);
var ecModel = this._model;
this._loadingFX && this._loadingFX.resize();
if (!ecModel) {
return;
}
var needPrepare = ecModel.resetOption("media");
var silent = opts && opts.silent;
if (this[PENDING_UPDATE]) {
if (silent == null) {
silent = this[PENDING_UPDATE].silent;
}
needPrepare = true;
this[PENDING_UPDATE] = null;
}
this[IN_MAIN_PROCESS_KEY] = true;
try {
needPrepare && prepare(this);
updateMethods.update.call(this, {
type: "resize",
animation: extend({
// Disable animation
duration: 0
}, opts && opts.animation)
});
} catch (e2) {
this[IN_MAIN_PROCESS_KEY] = false;
throw e2;
}
this[IN_MAIN_PROCESS_KEY] = false;
flushPendingActions.call(this, silent);
triggerUpdatedEvent.call(this, silent);
};
ECharts2.prototype.showLoading = function(name, cfg) {
if (this._disposed) {
disposedWarning(this.id);
return;
}
if (isObject$3(name)) {
cfg = name;
name = "";
}
name = name || "default";
this.hideLoading();
if (!loadingEffects[name]) {
return;
}
var el2 = loadingEffects[name](this._api, cfg);
var zr = this._zr;
this._loadingFX = el2;
zr.add(el2);
};
ECharts2.prototype.hideLoading = function() {
if (this._disposed) {
disposedWarning(this.id);
return;
}
this._loadingFX && this._zr.remove(this._loadingFX);
this._loadingFX = null;
};
ECharts2.prototype.makeActionFromEvent = function(eventObj) {
var payload = extend({}, eventObj);
payload.type = eventActionMap[eventObj.type];
return payload;
};
ECharts2.prototype.dispatchAction = function(payload, opt) {
if (this._disposed) {
disposedWarning(this.id);
return;
}
if (!isObject$3(opt)) {
opt = {
silent: !!opt
};
}
if (!actions[payload.type]) {
return;
}
if (!this._model) {
return;
}
if (this[IN_MAIN_PROCESS_KEY]) {
this._pendingActions.push(payload);
return;
}
var silent = opt.silent;
doDispatchAction.call(this, payload, silent);
var flush = opt.flush;
if (flush) {
this._zr.flush();
} else if (flush !== false && env.browser.weChat) {
this._throttledZrFlush();
}
flushPendingActions.call(this, silent);
triggerUpdatedEvent.call(this, silent);
};
ECharts2.prototype.updateLabelLayout = function() {
lifecycle.trigger("series:layoutlabels", this._model, this._api, {
// Not adding series labels.
// TODO
updatedSeries: []
});
};
ECharts2.prototype.appendData = function(params) {
if (this._disposed) {
disposedWarning(this.id);
return;
}
var seriesIndex = params.seriesIndex;
var ecModel = this.getModel();
var seriesModel = ecModel.getSeriesByIndex(seriesIndex);
seriesModel.appendData(params);
this._scheduler.unfinished = true;
this.getZr().wakeUp();
};
ECharts2.internalField = function() {
prepare = function(ecIns) {
var scheduler2 = ecIns._scheduler;
scheduler2.restorePipelines(ecIns._model);
scheduler2.prepareStageTasks();
prepareView(ecIns, true);
prepareView(ecIns, false);
scheduler2.plan();
};
prepareView = function(ecIns, isComponent) {
var ecModel = ecIns._model;
var scheduler2 = ecIns._scheduler;
var viewList = isComponent ? ecIns._componentsViews : ecIns._chartsViews;
var viewMap = isComponent ? ecIns._componentsMap : ecIns._chartsMap;
var zr = ecIns._zr;
var api = ecIns._api;
for (var i = 0; i < viewList.length; i++) {
viewList[i].__alive = false;
}
isComponent ? ecModel.eachComponent(function(componentType, model) {
componentType !== "series" && doPrepare(model);
}) : ecModel.eachSeries(doPrepare);
function doPrepare(model) {
var requireNewView = model.__requireNewView;
model.__requireNewView = false;
var viewId = "_ec_" + model.id + "_" + model.type;
var view2 = !requireNewView && viewMap[viewId];
if (!view2) {
var classType = parseClassType(model.type);
var Clazz = isComponent ? ComponentView.getClass(classType.main, classType.sub) : (
// FIXME:TS
// (ChartView as ChartViewConstructor).getClass('series', classType.sub)
// For backward compat, still support a chart type declared as only subType
// like "liquidfill", but recommend "series.liquidfill"
// But need a base class to make a type series.
ChartView.getClass(classType.sub)
);
view2 = new Clazz();
view2.init(ecModel, api);
viewMap[viewId] = view2;
viewList.push(view2);
zr.add(view2.group);
}
model.__viewId = view2.__id = viewId;
view2.__alive = true;
view2.__model = model;
view2.group.__ecComponentInfo = {
mainType: model.mainType,
index: model.componentIndex
};
!isComponent && scheduler2.prepareView(view2, model, ecModel, api);
}
for (var i = 0; i < viewList.length; ) {
var view = viewList[i];
if (!view.__alive) {
!isComponent && view.renderTask.dispose();
zr.remove(view.group);
view.dispose(ecModel, api);
viewList.splice(i, 1);
if (viewMap[view.__id] === view) {
delete viewMap[view.__id];
}
view.__id = view.group.__ecComponentInfo = null;
} else {
i++;
}
}
};
updateDirectly = function(ecIns, method4, payload, mainType, subType) {
var ecModel = ecIns._model;
ecModel.setUpdatePayload(payload);
if (!mainType) {
each$f([].concat(ecIns._componentsViews).concat(ecIns._chartsViews), callView);
return;
}
var query = {};
query[mainType + "Id"] = payload[mainType + "Id"];
query[mainType + "Index"] = payload[mainType + "Index"];
query[mainType + "Name"] = payload[mainType + "Name"];
var condition = {
mainType,
query
};
subType && (condition.subType = subType);
var excludeSeriesId = payload.excludeSeriesId;
var excludeSeriesIdMap;
if (excludeSeriesId != null) {
excludeSeriesIdMap = createHashMap();
each$f(normalizeToArray(excludeSeriesId), function(id2) {
var modelId = convertOptionIdName(id2, null);
if (modelId != null) {
excludeSeriesIdMap.set(modelId, true);
}
});
}
ecModel && ecModel.eachComponent(condition, function(model) {
var isExcluded = excludeSeriesIdMap && excludeSeriesIdMap.get(model.id) != null;
if (isExcluded) {
return;
}
if (isHighDownPayload(payload)) {
if (model instanceof SeriesModel) {
if (payload.type === HIGHLIGHT_ACTION_TYPE && !payload.notBlur && !model.get(["emphasis", "disabled"])) {
blurSeriesFromHighlightPayload(model, payload, ecIns._api);
}
} else {
var _a2 = findComponentHighDownDispatchers(model.mainType, model.componentIndex, payload.name, ecIns._api), focusSelf = _a2.focusSelf, dispatchers = _a2.dispatchers;
if (payload.type === HIGHLIGHT_ACTION_TYPE && focusSelf && !payload.notBlur) {
blurComponent(model.mainType, model.componentIndex, ecIns._api);
}
if (dispatchers) {
each$f(dispatchers, function(dispatcher) {
payload.type === HIGHLIGHT_ACTION_TYPE ? enterEmphasis(dispatcher) : leaveEmphasis(dispatcher);
});
}
}
} else if (isSelectChangePayload(payload)) {
if (model instanceof SeriesModel) {
toggleSelectionFromPayload(model, payload, ecIns._api);
updateSeriesElementSelection(model);
markStatusToUpdate(ecIns);
}
}
}, ecIns);
ecModel && ecModel.eachComponent(condition, function(model) {
var isExcluded = excludeSeriesIdMap && excludeSeriesIdMap.get(model.id) != null;
if (isExcluded) {
return;
}
callView(ecIns[mainType === "series" ? "_chartsMap" : "_componentsMap"][model.__viewId]);
}, ecIns);
function callView(view) {
view && view.__alive && view[method4] && view[method4](view.__model, ecModel, ecIns._api, payload);
}
};
updateMethods = {
prepareAndUpdate: function(payload) {
prepare(this);
updateMethods.update.call(this, payload, {
// Needs to mark option changed if newOption is given.
// It's from MagicType.
// TODO If use a separate flag optionChanged in payload?
optionChanged: payload.newOption != null
});
},
update: function(payload, updateParams) {
var ecModel = this._model;
var api = this._api;
var zr = this._zr;
var coordSysMgr = this._coordSysMgr;
var scheduler2 = this._scheduler;
if (!ecModel) {
return;
}
ecModel.setUpdatePayload(payload);
scheduler2.restoreData(ecModel, payload);
scheduler2.performSeriesTasks(ecModel);
coordSysMgr.create(ecModel, api);
scheduler2.performDataProcessorTasks(ecModel, payload);
updateStreamModes(this, ecModel);
coordSysMgr.update(ecModel, api);
clearColorPalette(ecModel);
scheduler2.performVisualTasks(ecModel, payload);
render(this, ecModel, api, payload, updateParams);
var backgroundColor2 = ecModel.get("backgroundColor") || "transparent";
var darkMode = ecModel.get("darkMode");
zr.setBackgroundColor(backgroundColor2);
if (darkMode != null && darkMode !== "auto") {
zr.setDarkMode(darkMode);
}
lifecycle.trigger("afterupdate", ecModel, api);
},
updateTransform: function(payload) {
var _this = this;
var ecModel = this._model;
var api = this._api;
if (!ecModel) {
return;
}
ecModel.setUpdatePayload(payload);
var componentDirtyList = [];
ecModel.eachComponent(function(componentType, componentModel) {
if (componentType === "series") {
return;
}
var componentView = _this.getViewOfComponentModel(componentModel);
if (componentView && componentView.__alive) {
if (componentView.updateTransform) {
var result = componentView.updateTransform(componentModel, ecModel, api, payload);
result && result.update && componentDirtyList.push(componentView);
} else {
componentDirtyList.push(componentView);
}
}
});
var seriesDirtyMap = createHashMap();
ecModel.eachSeries(function(seriesModel) {
var chartView = _this._chartsMap[seriesModel.__viewId];
if (chartView.updateTransform) {
var result = chartView.updateTransform(seriesModel, ecModel, api, payload);
result && result.update && seriesDirtyMap.set(seriesModel.uid, 1);
} else {
seriesDirtyMap.set(seriesModel.uid, 1);
}
});
clearColorPalette(ecModel);
this._scheduler.performVisualTasks(ecModel, payload, {
setDirty: true,
dirtyMap: seriesDirtyMap
});
renderSeries(this, ecModel, api, payload, {}, seriesDirtyMap);
lifecycle.trigger("afterupdate", ecModel, api);
},
updateView: function(payload) {
var ecModel = this._model;
if (!ecModel) {
return;
}
ecModel.setUpdatePayload(payload);
ChartView.markUpdateMethod(payload, "updateView");
clearColorPalette(ecModel);
this._scheduler.performVisualTasks(ecModel, payload, {
setDirty: true
});
render(this, ecModel, this._api, payload, {});
lifecycle.trigger("afterupdate", ecModel, this._api);
},
updateVisual: function(payload) {
var _this = this;
var ecModel = this._model;
if (!ecModel) {
return;
}
ecModel.setUpdatePayload(payload);
ecModel.eachSeries(function(seriesModel) {
seriesModel.getData().clearAllVisual();
});
ChartView.markUpdateMethod(payload, "updateVisual");
clearColorPalette(ecModel);
this._scheduler.performVisualTasks(ecModel, payload, {
visualType: "visual",
setDirty: true
});
ecModel.eachComponent(function(componentType, componentModel) {
if (componentType !== "series") {
var componentView = _this.getViewOfComponentModel(componentModel);
componentView && componentView.__alive && componentView.updateVisual(componentModel, ecModel, _this._api, payload);
}
});
ecModel.eachSeries(function(seriesModel) {
var chartView = _this._chartsMap[seriesModel.__viewId];
chartView.updateVisual(seriesModel, ecModel, _this._api, payload);
});
lifecycle.trigger("afterupdate", ecModel, this._api);
},
updateLayout: function(payload) {
updateMethods.update.call(this, payload);
}
};
doConvertPixel = function(ecIns, methodName, finder, value) {
if (ecIns._disposed) {
disposedWarning(ecIns.id);
return;
}
var ecModel = ecIns._model;
var coordSysList = ecIns._coordSysMgr.getCoordinateSystems();
var result;
var parsedFinder = parseFinder$1(ecModel, finder);
for (var i = 0; i < coordSysList.length; i++) {
var coordSys = coordSysList[i];
if (coordSys[methodName] && (result = coordSys[methodName](ecModel, parsedFinder, value)) != null) {
return result;
}
}
};
updateStreamModes = function(ecIns, ecModel) {
var chartsMap = ecIns._chartsMap;
var scheduler2 = ecIns._scheduler;
ecModel.eachSeries(function(seriesModel) {
scheduler2.updateStreamModes(seriesModel, chartsMap[seriesModel.__viewId]);
});
};
doDispatchAction = function(payload, silent) {
var _this = this;
var ecModel = this.getModel();
var payloadType = payload.type;
var escapeConnect = payload.escapeConnect;
var actionWrap = actions[payloadType];
var actionInfo2 = actionWrap.actionInfo;
var cptTypeTmp = (actionInfo2.update || "update").split(":");
var updateMethod = cptTypeTmp.pop();
var cptType = cptTypeTmp[0] != null && parseClassType(cptTypeTmp[0]);
this[IN_MAIN_PROCESS_KEY] = true;
var payloads = [payload];
var batched = false;
if (payload.batch) {
batched = true;
payloads = map$1(payload.batch, function(item) {
item = defaults(extend({}, item), payload);
item.batch = null;
return item;
});
}
var eventObjBatch = [];
var eventObj;
var isSelectChange = isSelectChangePayload(payload);
var isHighDown = isHighDownPayload(payload);
if (isHighDown) {
allLeaveBlur(this._api);
}
each$f(payloads, function(batchItem) {
eventObj = actionWrap.action(batchItem, _this._model, _this._api);
eventObj = eventObj || extend({}, batchItem);
eventObj.type = actionInfo2.event || eventObj.type;
eventObjBatch.push(eventObj);
if (isHighDown) {
var _a2 = preParseFinder(payload), queryOptionMap = _a2.queryOptionMap, mainTypeSpecified = _a2.mainTypeSpecified;
var componentMainType = mainTypeSpecified ? queryOptionMap.keys()[0] : "series";
updateDirectly(_this, updateMethod, batchItem, componentMainType);
markStatusToUpdate(_this);
} else if (isSelectChange) {
updateDirectly(_this, updateMethod, batchItem, "series");
markStatusToUpdate(_this);
} else if (cptType) {
updateDirectly(_this, updateMethod, batchItem, cptType.main, cptType.sub);
}
});
if (updateMethod !== "none" && !isHighDown && !isSelectChange && !cptType) {
try {
if (this[PENDING_UPDATE]) {
prepare(this);
updateMethods.update.call(this, payload);
this[PENDING_UPDATE] = null;
} else {
updateMethods[updateMethod].call(this, payload);
}
} catch (e2) {
this[IN_MAIN_PROCESS_KEY] = false;
throw e2;
}
}
if (batched) {
eventObj = {
type: actionInfo2.event || payloadType,
escapeConnect,
batch: eventObjBatch
};
} else {
eventObj = eventObjBatch[0];
}
this[IN_MAIN_PROCESS_KEY] = false;
if (!silent) {
var messageCenter = this._messageCenter;
messageCenter.trigger(eventObj.type, eventObj);
if (isSelectChange) {
var newObj = {
type: "selectchanged",
escapeConnect,
selected: getAllSelectedIndices(ecModel),
isFromClick: payload.isFromClick || false,
fromAction: payload.type,
fromActionPayload: payload
};
messageCenter.trigger(newObj.type, newObj);
}
}
};
flushPendingActions = function(silent) {
var pendingActions = this._pendingActions;
while (pendingActions.length) {
var payload = pendingActions.shift();
doDispatchAction.call(this, payload, silent);
}
};
triggerUpdatedEvent = function(silent) {
!silent && this.trigger("updated");
};
bindRenderedEvent = function(zr, ecIns) {
zr.on("rendered", function(params) {
ecIns.trigger("rendered", params);
if (
// Although zr is dirty if initial animation is not finished
// and this checking is called on frame, we also check
// animation finished for robustness.
zr.animation.isFinished() && !ecIns[PENDING_UPDATE] && !ecIns._scheduler.unfinished && !ecIns._pendingActions.length
) {
ecIns.trigger("finished");
}
});
};
bindMouseEvent = function(zr, ecIns) {
zr.on("mouseover", function(e2) {
var el2 = e2.target;
var dispatcher = findEventDispatcher(el2, isHighDownDispatcher);
if (dispatcher) {
handleGlobalMouseOverForHighDown(dispatcher, e2, ecIns._api);
markStatusToUpdate(ecIns);
}
}).on("mouseout", function(e2) {
var el2 = e2.target;
var dispatcher = findEventDispatcher(el2, isHighDownDispatcher);
if (dispatcher) {
handleGlobalMouseOutForHighDown(dispatcher, e2, ecIns._api);
markStatusToUpdate(ecIns);
}
}).on("click", function(e2) {
var el2 = e2.target;
var dispatcher = findEventDispatcher(el2, function(target) {
return getECData(target).dataIndex != null;
}, true);
if (dispatcher) {
var actionType = dispatcher.selected ? "unselect" : "select";
var ecData = getECData(dispatcher);
ecIns._api.dispatchAction({
type: actionType,
dataType: ecData.dataType,
dataIndexInside: ecData.dataIndex,
seriesIndex: ecData.seriesIndex,
isFromClick: true
});
}
});
};
function clearColorPalette(ecModel) {
ecModel.clearColorPalette();
ecModel.eachSeries(function(seriesModel) {
seriesModel.clearColorPalette();
});
}
function allocateZlevels(ecModel) {
var componentZLevels = [];
var seriesZLevels = [];
var hasSeparateZLevel = false;
ecModel.eachComponent(function(componentType, componentModel) {
var zlevel = componentModel.get("zlevel") || 0;
var z2 = componentModel.get("z") || 0;
var zlevelKey = componentModel.getZLevelKey();
hasSeparateZLevel = hasSeparateZLevel || !!zlevelKey;
(componentType === "series" ? seriesZLevels : componentZLevels).push({
zlevel,
z: z2,
idx: componentModel.componentIndex,
type: componentType,
key: zlevelKey
});
});
if (hasSeparateZLevel) {
var zLevels = componentZLevels.concat(seriesZLevels);
var lastSeriesZLevel_1;
var lastSeriesKey_1;
sort$2(zLevels, function(a, b2) {
if (a.zlevel === b2.zlevel) {
return a.z - b2.z;
}
return a.zlevel - b2.zlevel;
});
each$f(zLevels, function(item) {
var componentModel = ecModel.getComponent(item.type, item.idx);
var zlevel = item.zlevel;
var key = item.key;
if (lastSeriesZLevel_1 != null) {
zlevel = Math.max(lastSeriesZLevel_1, zlevel);
}
if (key) {
if (zlevel === lastSeriesZLevel_1 && key !== lastSeriesKey_1) {
zlevel++;
}
lastSeriesKey_1 = key;
} else if (lastSeriesKey_1) {
if (zlevel === lastSeriesZLevel_1) {
zlevel++;
}
lastSeriesKey_1 = "";
}
lastSeriesZLevel_1 = zlevel;
componentModel.setZLevel(zlevel);
});
}
}
render = function(ecIns, ecModel, api, payload, updateParams) {
allocateZlevels(ecModel);
renderComponents(ecIns, ecModel, api, payload, updateParams);
each$f(ecIns._chartsViews, function(chart) {
chart.__alive = false;
});
renderSeries(ecIns, ecModel, api, payload, updateParams);
each$f(ecIns._chartsViews, function(chart) {
if (!chart.__alive) {
chart.remove(ecModel, api);
}
});
};
renderComponents = function(ecIns, ecModel, api, payload, updateParams, dirtyList) {
each$f(dirtyList || ecIns._componentsViews, function(componentView) {
var componentModel = componentView.__model;
clearStates(componentModel, componentView);
componentView.render(componentModel, ecModel, api, payload);
updateZ2(componentModel, componentView);
updateStates(componentModel, componentView);
});
};
renderSeries = function(ecIns, ecModel, api, payload, updateParams, dirtyMap) {
var scheduler2 = ecIns._scheduler;
updateParams = extend(updateParams || {}, {
updatedSeries: ecModel.getSeries()
});
lifecycle.trigger("series:beforeupdate", ecModel, api, updateParams);
var unfinished = false;
ecModel.eachSeries(function(seriesModel) {
var chartView = ecIns._chartsMap[seriesModel.__viewId];
chartView.__alive = true;
var renderTask = chartView.renderTask;
scheduler2.updatePayload(renderTask, payload);
clearStates(seriesModel, chartView);
if (dirtyMap && dirtyMap.get(seriesModel.uid)) {
renderTask.dirty();
}
if (renderTask.perform(scheduler2.getPerformArgs(renderTask))) {
unfinished = true;
}
chartView.group.silent = !!seriesModel.get("silent");
updateBlend(seriesModel, chartView);
updateSeriesElementSelection(seriesModel);
});
scheduler2.unfinished = unfinished || scheduler2.unfinished;
lifecycle.trigger("series:layoutlabels", ecModel, api, updateParams);
lifecycle.trigger("series:transition", ecModel, api, updateParams);
ecModel.eachSeries(function(seriesModel) {
var chartView = ecIns._chartsMap[seriesModel.__viewId];
updateZ2(seriesModel, chartView);
updateStates(seriesModel, chartView);
});
updateHoverLayerStatus(ecIns, ecModel);
lifecycle.trigger("series:afterupdate", ecModel, api, updateParams);
};
markStatusToUpdate = function(ecIns) {
ecIns[STATUS_NEEDS_UPDATE_KEY] = true;
ecIns.getZr().wakeUp();
};
applyChangedStates = function(ecIns) {
if (!ecIns[STATUS_NEEDS_UPDATE_KEY]) {
return;
}
ecIns.getZr().storage.traverse(function(el2) {
if (isElementRemoved(el2)) {
return;
}
applyElementStates(el2);
});
ecIns[STATUS_NEEDS_UPDATE_KEY] = false;
};
function applyElementStates(el2) {
var newStates = [];
var oldStates = el2.currentStates;
for (var i = 0; i < oldStates.length; i++) {
var stateName = oldStates[i];
if (!(stateName === "emphasis" || stateName === "blur" || stateName === "select")) {
newStates.push(stateName);
}
}
if (el2.selected && el2.states.select) {
newStates.push("select");
}
if (el2.hoverState === HOVER_STATE_EMPHASIS && el2.states.emphasis) {
newStates.push("emphasis");
} else if (el2.hoverState === HOVER_STATE_BLUR && el2.states.blur) {
newStates.push("blur");
}
el2.useStates(newStates);
}
function updateHoverLayerStatus(ecIns, ecModel) {
var zr = ecIns._zr;
var storage2 = zr.storage;
var elCount = 0;
storage2.traverse(function(el2) {
if (!el2.isGroup) {
elCount++;
}
});
if (elCount > ecModel.get("hoverLayerThreshold") && !env.node && !env.worker) {
ecModel.eachSeries(function(seriesModel) {
if (seriesModel.preventUsingHoverLayer) {
return;
}
var chartView = ecIns._chartsMap[seriesModel.__viewId];
if (chartView.__alive) {
chartView.eachRendered(function(el2) {
if (el2.states.emphasis) {
el2.states.emphasis.hoverLayer = true;
}
});
}
});
}
}
function updateBlend(seriesModel, chartView) {
var blendMode = seriesModel.get("blendMode") || null;
chartView.eachRendered(function(el2) {
if (!el2.isGroup) {
el2.style.blend = blendMode;
}
});
}
function updateZ2(model, view) {
if (model.preventAutoZ) {
return;
}
var z2 = model.get("z") || 0;
var zlevel = model.get("zlevel") || 0;
view.eachRendered(function(el2) {
doUpdateZ(el2, z2, zlevel, -Infinity);
return true;
});
}
function doUpdateZ(el2, z2, zlevel, maxZ2) {
var label = el2.getTextContent();
var labelLine = el2.getTextGuideLine();
var isGroup = el2.isGroup;
if (isGroup) {
var children = el2.childrenRef();
for (var i = 0; i < children.length; i++) {
maxZ2 = Math.max(doUpdateZ(children[i], z2, zlevel, maxZ2), maxZ2);
}
} else {
el2.z = z2;
el2.zlevel = zlevel;
maxZ2 = Math.max(el2.z2, maxZ2);
}
if (label) {
label.z = z2;
label.zlevel = zlevel;
isFinite(maxZ2) && (label.z2 = maxZ2 + 2);
}
if (labelLine) {
var textGuideLineConfig = el2.textGuideLineConfig;
labelLine.z = z2;
labelLine.zlevel = zlevel;
isFinite(maxZ2) && (labelLine.z2 = maxZ2 + (textGuideLineConfig && textGuideLineConfig.showAbove ? 1 : -1));
}
return maxZ2;
}
function clearStates(model, view) {
view.eachRendered(function(el2) {
if (isElementRemoved(el2)) {
return;
}
var textContent = el2.getTextContent();
var textGuide = el2.getTextGuideLine();
if (el2.stateTransition) {
el2.stateTransition = null;
}
if (textContent && textContent.stateTransition) {
textContent.stateTransition = null;
}
if (textGuide && textGuide.stateTransition) {
textGuide.stateTransition = null;
}
if (el2.hasState()) {
el2.prevStates = el2.currentStates;
el2.clearStates();
} else if (el2.prevStates) {
el2.prevStates = null;
}
});
}
function updateStates(model, view) {
var stateAnimationModel = model.getModel("stateAnimation");
var enableAnimation = model.isAnimationEnabled();
var duration = stateAnimationModel.get("duration");
var stateTransition = duration > 0 ? {
duration,
delay: stateAnimationModel.get("delay"),
easing: stateAnimationModel.get("easing")
// additive: stateAnimationModel.get('additive')
} : null;
view.eachRendered(function(el2) {
if (el2.states && el2.states.emphasis) {
if (isElementRemoved(el2)) {
return;
}
if (el2 instanceof Path) {
savePathStates(el2);
}
if (el2.__dirty) {
var prevStates = el2.prevStates;
if (prevStates) {
el2.useStates(prevStates);
}
}
if (enableAnimation) {
el2.stateTransition = stateTransition;
var textContent = el2.getTextContent();
var textGuide = el2.getTextGuideLine();
if (textContent) {
textContent.stateTransition = stateTransition;
}
if (textGuide) {
textGuide.stateTransition = stateTransition;
}
}
if (el2.__dirty) {
applyElementStates(el2);
}
}
});
}
createExtensionAPI = function(ecIns) {
return new /** @class */
(function(_super2) {
__extends(class_1, _super2);
function class_1() {
return _super2 !== null && _super2.apply(this, arguments) || this;
}
class_1.prototype.getCoordinateSystems = function() {
return ecIns._coordSysMgr.getCoordinateSystems();
};
class_1.prototype.getComponentByElement = function(el2) {
while (el2) {
var modelInfo = el2.__ecComponentInfo;
if (modelInfo != null) {
return ecIns._model.getComponent(modelInfo.mainType, modelInfo.index);
}
el2 = el2.parent;
}
};
class_1.prototype.enterEmphasis = function(el2, highlightDigit) {
enterEmphasis(el2, highlightDigit);
markStatusToUpdate(ecIns);
};
class_1.prototype.leaveEmphasis = function(el2, highlightDigit) {
leaveEmphasis(el2, highlightDigit);
markStatusToUpdate(ecIns);
};
class_1.prototype.enterBlur = function(el2) {
enterBlur(el2);
markStatusToUpdate(ecIns);
};
class_1.prototype.leaveBlur = function(el2) {
leaveBlur(el2);
markStatusToUpdate(ecIns);
};
class_1.prototype.enterSelect = function(el2) {
enterSelect(el2);
markStatusToUpdate(ecIns);
};
class_1.prototype.leaveSelect = function(el2) {
leaveSelect(el2);
markStatusToUpdate(ecIns);
};
class_1.prototype.getModel = function() {
return ecIns.getModel();
};
class_1.prototype.getViewOfComponentModel = function(componentModel) {
return ecIns.getViewOfComponentModel(componentModel);
};
class_1.prototype.getViewOfSeriesModel = function(seriesModel) {
return ecIns.getViewOfSeriesModel(seriesModel);
};
return class_1;
}(ExtensionAPI))(ecIns);
};
enableConnect = function(chart) {
function updateConnectedChartsStatus(charts, status) {
for (var i = 0; i < charts.length; i++) {
var otherChart = charts[i];
otherChart[CONNECT_STATUS_KEY] = status;
}
}
each$f(eventActionMap, function(actionType, eventType) {
chart._messageCenter.on(eventType, function(event) {
if (connectedGroups[chart.group] && chart[CONNECT_STATUS_KEY] !== CONNECT_STATUS_PENDING) {
if (event && event.escapeConnect) {
return;
}
var action_1 = chart.makeActionFromEvent(event);
var otherCharts_1 = [];
each$f(instances, function(otherChart) {
if (otherChart !== chart && otherChart.group === chart.group) {
otherCharts_1.push(otherChart);
}
});
updateConnectedChartsStatus(otherCharts_1, CONNECT_STATUS_PENDING);
each$f(otherCharts_1, function(otherChart) {
if (otherChart[CONNECT_STATUS_KEY] !== CONNECT_STATUS_UPDATING) {
otherChart.dispatchAction(action_1);
}
});
updateConnectedChartsStatus(otherCharts_1, CONNECT_STATUS_UPDATED);
}
});
});
};
}();
return ECharts2;
}(Eventful)
);
var echartsProto = ECharts.prototype;
echartsProto.on = createRegisterEventWithLowercaseECharts("on");
echartsProto.off = createRegisterEventWithLowercaseECharts("off");
echartsProto.one = function(eventName, cb2, ctx) {
var self2 = this;
function wrapped() {
var args2 = [];
for (var _i = 0; _i < arguments.length; _i++) {
args2[_i] = arguments[_i];
}
cb2 && cb2.apply && cb2.apply(this, args2);
self2.off(eventName, wrapped);
}
this.on.call(this, eventName, wrapped, ctx);
};
var MOUSE_EVENT_NAMES = ["click", "dblclick", "mouseover", "mouseout", "mousemove", "mousedown", "mouseup", "globalout", "contextmenu"];
function disposedWarning(id2) {
}
var actions = {};
var eventActionMap = {};
var dataProcessorFuncs = [];
var optionPreprocessorFuncs = [];
var visualFuncs = [];
var themeStorage = {};
var loadingEffects = {};
var instances = {};
var connectedGroups = {};
var idBase = +/* @__PURE__ */ new Date() - 0;
var groupIdBase = +/* @__PURE__ */ new Date() - 0;
var DOM_ATTRIBUTE_KEY = "_echarts_instance_";
function init$1(dom, theme2, opts) {
var isClient2 = !(opts && opts.ssr);
if (isClient2) {
var existInstance = getInstanceByDom(dom);
if (existInstance) {
return existInstance;
}
}
var chart = new ECharts(dom, theme2, opts);
chart.id = "ec_" + idBase++;
instances[chart.id] = chart;
isClient2 && setAttribute(dom, DOM_ATTRIBUTE_KEY, chart.id);
enableConnect(chart);
lifecycle.trigger("afterinit", chart);
return chart;
}
function connect(groupId) {
if (isArray$1(groupId)) {
var charts = groupId;
groupId = null;
each$f(charts, function(chart) {
if (chart.group != null) {
groupId = chart.group;
}
});
groupId = groupId || "g_" + groupIdBase++;
each$f(charts, function(chart) {
chart.group = groupId;
});
}
connectedGroups[groupId] = true;
return groupId;
}
function disconnect(groupId) {
connectedGroups[groupId] = false;
}
var disConnect = disconnect;
function dispose(chart) {
if (isString$1(chart)) {
chart = instances[chart];
} else if (!(chart instanceof ECharts)) {
chart = getInstanceByDom(chart);
}
if (chart instanceof ECharts && !chart.isDisposed()) {
chart.dispose();
}
}
function getInstanceByDom(dom) {
return instances[getAttribute(dom, DOM_ATTRIBUTE_KEY)];
}
function getInstanceById(key) {
return instances[key];
}
function registerTheme(name, theme2) {
themeStorage[name] = theme2;
}
function registerPreprocessor(preprocessorFunc) {
if (indexOf(optionPreprocessorFuncs, preprocessorFunc) < 0) {
optionPreprocessorFuncs.push(preprocessorFunc);
}
}
function registerProcessor(priority, processor) {
normalizeRegister(dataProcessorFuncs, priority, processor, PRIORITY_PROCESSOR_DEFAULT);
}
function registerPostInit(postInitFunc) {
registerUpdateLifecycle("afterinit", postInitFunc);
}
function registerPostUpdate(postUpdateFunc) {
registerUpdateLifecycle("afterupdate", postUpdateFunc);
}
function registerUpdateLifecycle(name, cb2) {
lifecycle.on(name, cb2);
}
function registerAction(actionInfo2, eventName, action) {
if (isFunction$1(eventName)) {
action = eventName;
eventName = "";
}
var actionType = isObject$3(actionInfo2) ? actionInfo2.type : [actionInfo2, actionInfo2 = {
event: eventName
}][0];
actionInfo2.event = (actionInfo2.event || actionType).toLowerCase();
eventName = actionInfo2.event;
if (eventActionMap[eventName]) {
return;
}
assert(ACTION_REG.test(actionType) && ACTION_REG.test(eventName));
if (!actions[actionType]) {
actions[actionType] = {
action,
actionInfo: actionInfo2
};
}
eventActionMap[eventName] = actionType;
}
function registerCoordinateSystem(type4, coordSysCreator) {
CoordinateSystemManager.register(type4, coordSysCreator);
}
function getCoordinateSystemDimensions(type4) {
var coordSysCreator = CoordinateSystemManager.get(type4);
if (coordSysCreator) {
return coordSysCreator.getDimensionsInfo ? coordSysCreator.getDimensionsInfo() : coordSysCreator.dimensions.slice();
}
}
function registerLayout(priority, layoutTask) {
normalizeRegister(visualFuncs, priority, layoutTask, PRIORITY_VISUAL_LAYOUT, "layout");
}
function registerVisual(priority, visualTask) {
normalizeRegister(visualFuncs, priority, visualTask, PRIORITY_VISUAL_CHART, "visual");
}
var registeredTasks = [];
function normalizeRegister(targetList, priority, fn, defaultPriority, visualType) {
if (isFunction$1(priority) || isObject$3(priority)) {
fn = priority;
priority = defaultPriority;
}
if (indexOf(registeredTasks, fn) >= 0) {
return;
}
registeredTasks.push(fn);
var stageHandler = Scheduler.wrapStageHandler(fn, visualType);
stageHandler.__prio = priority;
stageHandler.__raw = fn;
targetList.push(stageHandler);
}
function registerLoading(name, loadingFx) {
loadingEffects[name] = loadingFx;
}
function setCanvasCreator(creator) {
setPlatformAPI({
createCanvas: creator
});
}
function registerMap$1(mapName, geoJson, specialAreas) {
var registerMap2 = getImpl("registerMap");
registerMap2 && registerMap2(mapName, geoJson, specialAreas);
}
function getMap(mapName) {
var getMap2 = getImpl("getMap");
return getMap2 && getMap2(mapName);
}
var registerTransform = registerExternalTransform;
registerVisual(PRIORITY_VISUAL_GLOBAL, seriesStyleTask);
registerVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataStyleTask);
registerVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataColorPaletteTask);
registerVisual(PRIORITY_VISUAL_GLOBAL, seriesSymbolTask);
registerVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataSymbolTask);
registerVisual(PRIORITY_VISUAL_DECAL, decalVisual);
registerPreprocessor(globalBackwardCompat);
registerProcessor(PRIORITY_PROCESSOR_DATASTACK, dataStack$1);
registerLoading("default", defaultLoading);
registerAction({
type: HIGHLIGHT_ACTION_TYPE,
event: HIGHLIGHT_ACTION_TYPE,
update: HIGHLIGHT_ACTION_TYPE
}, noop2);
registerAction({
type: DOWNPLAY_ACTION_TYPE,
event: DOWNPLAY_ACTION_TYPE,
update: DOWNPLAY_ACTION_TYPE
}, noop2);
registerAction({
type: SELECT_ACTION_TYPE,
event: SELECT_ACTION_TYPE,
update: SELECT_ACTION_TYPE
}, noop2);
registerAction({
type: UNSELECT_ACTION_TYPE,
event: UNSELECT_ACTION_TYPE,
update: UNSELECT_ACTION_TYPE
}, noop2);
registerAction({
type: TOGGLE_SELECT_ACTION_TYPE,
event: TOGGLE_SELECT_ACTION_TYPE,
update: TOGGLE_SELECT_ACTION_TYPE
}, noop2);
registerTheme("light", lightTheme);
registerTheme("dark", theme);
var dataTool = {};
var extensions = [];
var extensionRegisters = {
registerPreprocessor,
registerProcessor,
registerPostInit,
registerPostUpdate,
registerUpdateLifecycle,
registerAction,
registerCoordinateSystem,
registerLayout,
registerVisual,
registerTransform,
registerLoading,
registerMap: registerMap$1,
registerImpl,
PRIORITY,
ComponentModel,
ComponentView,
SeriesModel,
ChartView,
// TODO Use ComponentModel and SeriesModel instead of Constructor
registerComponentModel: function(ComponentModelClass) {
ComponentModel.registerClass(ComponentModelClass);
},
registerComponentView: function(ComponentViewClass) {
ComponentView.registerClass(ComponentViewClass);
},
registerSeriesModel: function(SeriesModelClass) {
SeriesModel.registerClass(SeriesModelClass);
},
registerChartView: function(ChartViewClass) {
ChartView.registerClass(ChartViewClass);
},
registerSubTypeDefaulter: function(componentType, defaulter) {
ComponentModel.registerSubTypeDefaulter(componentType, defaulter);
},
registerPainter: function(painterType, PainterCtor) {
registerPainter(painterType, PainterCtor);
}
};
function use(ext) {
if (isArray$1(ext)) {
each$f(ext, function(singleExt) {
use(singleExt);
});
return;
}
if (indexOf(extensions, ext) >= 0) {
return;
}
extensions.push(ext);
if (isFunction$1(ext)) {
ext = {
install: ext
};
}
ext.install(extensionRegisters);
}
function dataIndexMapValueLength(valNumOrArrLengthMoreThan2) {
return valNumOrArrLengthMoreThan2 == null ? 0 : valNumOrArrLengthMoreThan2.length || 1;
}
function defaultKeyGetter(item) {
return item;
}
var DataDiffer = (
/** @class */
function() {
function DataDiffer2(oldArr, newArr, oldKeyGetter, newKeyGetter, context, diffMode) {
this._old = oldArr;
this._new = newArr;
this._oldKeyGetter = oldKeyGetter || defaultKeyGetter;
this._newKeyGetter = newKeyGetter || defaultKeyGetter;
this.context = context;
this._diffModeMultiple = diffMode === "multiple";
}
DataDiffer2.prototype.add = function(func) {
this._add = func;
return this;
};
DataDiffer2.prototype.update = function(func) {
this._update = func;
return this;
};
DataDiffer2.prototype.updateManyToOne = function(func) {
this._updateManyToOne = func;
return this;
};
DataDiffer2.prototype.updateOneToMany = function(func) {
this._updateOneToMany = func;
return this;
};
DataDiffer2.prototype.updateManyToMany = function(func) {
this._updateManyToMany = func;
return this;
};
DataDiffer2.prototype.remove = function(func) {
this._remove = func;
return this;
};
DataDiffer2.prototype.execute = function() {
this[this._diffModeMultiple ? "_executeMultiple" : "_executeOneToOne"]();
};
DataDiffer2.prototype._executeOneToOne = function() {
var oldArr = this._old;
var newArr = this._new;
var newDataIndexMap = {};
var oldDataKeyArr = new Array(oldArr.length);
var newDataKeyArr = new Array(newArr.length);
this._initIndexMap(oldArr, null, oldDataKeyArr, "_oldKeyGetter");
this._initIndexMap(newArr, newDataIndexMap, newDataKeyArr, "_newKeyGetter");
for (var i = 0; i < oldArr.length; i++) {
var oldKey = oldDataKeyArr[i];
var newIdxMapVal = newDataIndexMap[oldKey];
var newIdxMapValLen = dataIndexMapValueLength(newIdxMapVal);
if (newIdxMapValLen > 1) {
var newIdx = newIdxMapVal.shift();
if (newIdxMapVal.length === 1) {
newDataIndexMap[oldKey] = newIdxMapVal[0];
}
this._update && this._update(newIdx, i);
} else if (newIdxMapValLen === 1) {
newDataIndexMap[oldKey] = null;
this._update && this._update(newIdxMapVal, i);
} else {
this._remove && this._remove(i);
}
}
this._performRestAdd(newDataKeyArr, newDataIndexMap);
};
DataDiffer2.prototype._executeMultiple = function() {
var oldArr = this._old;
var newArr = this._new;
var oldDataIndexMap = {};
var newDataIndexMap = {};
var oldDataKeyArr = [];
var newDataKeyArr = [];
this._initIndexMap(oldArr, oldDataIndexMap, oldDataKeyArr, "_oldKeyGetter");
this._initIndexMap(newArr, newDataIndexMap, newDataKeyArr, "_newKeyGetter");
for (var i = 0; i < oldDataKeyArr.length; i++) {
var oldKey = oldDataKeyArr[i];
var oldIdxMapVal = oldDataIndexMap[oldKey];
var newIdxMapVal = newDataIndexMap[oldKey];
var oldIdxMapValLen = dataIndexMapValueLength(oldIdxMapVal);
var newIdxMapValLen = dataIndexMapValueLength(newIdxMapVal);
if (oldIdxMapValLen > 1 && newIdxMapValLen === 1) {
this._updateManyToOne && this._updateManyToOne(newIdxMapVal, oldIdxMapVal);
newDataIndexMap[oldKey] = null;
} else if (oldIdxMapValLen === 1 && newIdxMapValLen > 1) {
this._updateOneToMany && this._updateOneToMany(newIdxMapVal, oldIdxMapVal);
newDataIndexMap[oldKey] = null;
} else if (oldIdxMapValLen === 1 && newIdxMapValLen === 1) {
this._update && this._update(newIdxMapVal, oldIdxMapVal);
newDataIndexMap[oldKey] = null;
} else if (oldIdxMapValLen > 1 && newIdxMapValLen > 1) {
this._updateManyToMany && this._updateManyToMany(newIdxMapVal, oldIdxMapVal);
newDataIndexMap[oldKey] = null;
} else if (oldIdxMapValLen > 1) {
for (var i_1 = 0; i_1 < oldIdxMapValLen; i_1++) {
this._remove && this._remove(oldIdxMapVal[i_1]);
}
} else {
this._remove && this._remove(oldIdxMapVal);
}
}
this._performRestAdd(newDataKeyArr, newDataIndexMap);
};
DataDiffer2.prototype._performRestAdd = function(newDataKeyArr, newDataIndexMap) {
for (var i = 0; i < newDataKeyArr.length; i++) {
var newKey = newDataKeyArr[i];
var newIdxMapVal = newDataIndexMap[newKey];
var idxMapValLen = dataIndexMapValueLength(newIdxMapVal);
if (idxMapValLen > 1) {
for (var j = 0; j < idxMapValLen; j++) {
this._add && this._add(newIdxMapVal[j]);
}
} else if (idxMapValLen === 1) {
this._add && this._add(newIdxMapVal);
}
newDataIndexMap[newKey] = null;
}
};
DataDiffer2.prototype._initIndexMap = function(arr, map2, keyArr, keyGetterName) {
var cbModeMultiple = this._diffModeMultiple;
for (var i = 0; i < arr.length; i++) {
var key = "_ec_" + this[keyGetterName](arr[i], i);
if (!cbModeMultiple) {
keyArr[i] = key;
}
if (!map2) {
continue;
}
var idxMapVal = map2[key];
var idxMapValLen = dataIndexMapValueLength(idxMapVal);
if (idxMapValLen === 0) {
map2[key] = i;
if (cbModeMultiple) {
keyArr.push(key);
}
} else if (idxMapValLen === 1) {
map2[key] = [idxMapVal, i];
} else {
idxMapVal.push(i);
}
}
};
return DataDiffer2;
}()
);
var DimensionUserOuput = (
/** @class */
function() {
function DimensionUserOuput2(encode, dimRequest) {
this._encode = encode;
this._schema = dimRequest;
}
DimensionUserOuput2.prototype.get = function() {
return {
// Do not generate full dimension name until fist used.
fullDimensions: this._getFullDimensionNames(),
encode: this._encode
};
};
DimensionUserOuput2.prototype._getFullDimensionNames = function() {
if (!this._cachedDimNames) {
this._cachedDimNames = this._schema ? this._schema.makeOutputDimensionNames() : [];
}
return this._cachedDimNames;
};
return DimensionUserOuput2;
}()
);
function summarizeDimensions(data, schema) {
var summary = {};
var encode = summary.encode = {};
var notExtraCoordDimMap = createHashMap();
var defaultedLabel = [];
var defaultedTooltip = [];
var userOutputEncode = {};
each$f(data.dimensions, function(dimName) {
var dimItem = data.getDimensionInfo(dimName);
var coordDim = dimItem.coordDim;
if (coordDim) {
var coordDimIndex = dimItem.coordDimIndex;
getOrCreateEncodeArr(encode, coordDim)[coordDimIndex] = dimName;
if (!dimItem.isExtraCoord) {
notExtraCoordDimMap.set(coordDim, 1);
if (mayLabelDimType(dimItem.type)) {
defaultedLabel[0] = dimName;
}
getOrCreateEncodeArr(userOutputEncode, coordDim)[coordDimIndex] = data.getDimensionIndex(dimItem.name);
}
if (dimItem.defaultTooltip) {
defaultedTooltip.push(dimName);
}
}
VISUAL_DIMENSIONS.each(function(v4, otherDim) {
var encodeArr = getOrCreateEncodeArr(encode, otherDim);
var dimIndex = dimItem.otherDims[otherDim];
if (dimIndex != null && dimIndex !== false) {
encodeArr[dimIndex] = dimItem.name;
}
});
});
var dataDimsOnCoord = [];
var encodeFirstDimNotExtra = {};
notExtraCoordDimMap.each(function(v4, coordDim) {
var dimArr = encode[coordDim];
encodeFirstDimNotExtra[coordDim] = dimArr[0];
dataDimsOnCoord = dataDimsOnCoord.concat(dimArr);
});
summary.dataDimsOnCoord = dataDimsOnCoord;
summary.dataDimIndicesOnCoord = map$1(dataDimsOnCoord, function(dimName) {
return data.getDimensionInfo(dimName).storeDimIndex;
});
summary.encodeFirstDimNotExtra = encodeFirstDimNotExtra;
var encodeLabel = encode.label;
if (encodeLabel && encodeLabel.length) {
defaultedLabel = encodeLabel.slice();
}
var encodeTooltip = encode.tooltip;
if (encodeTooltip && encodeTooltip.length) {
defaultedTooltip = encodeTooltip.slice();
} else if (!defaultedTooltip.length) {
defaultedTooltip = defaultedLabel.slice();
}
encode.defaultedLabel = defaultedLabel;
encode.defaultedTooltip = defaultedTooltip;
summary.userOutput = new DimensionUserOuput(userOutputEncode, schema);
return summary;
}
function getOrCreateEncodeArr(encode, dim) {
if (!encode.hasOwnProperty(dim)) {
encode[dim] = [];
}
return encode[dim];
}
function getDimensionTypeByAxis(axisType) {
return axisType === "category" ? "ordinal" : axisType === "time" ? "time" : "float";
}
function mayLabelDimType(dimType) {
return !(dimType === "ordinal" || dimType === "time");
}
var SeriesDimensionDefine = (
/** @class */
/* @__PURE__ */ function() {
function SeriesDimensionDefine2(opt) {
this.otherDims = {};
if (opt != null) {
extend(this, opt);
}
}
return SeriesDimensionDefine2;
}()
);
var inner$h = makeInner();
var dimTypeShort = {
float: "f",
int: "i",
ordinal: "o",
number: "n",
time: "t"
};
var SeriesDataSchema = (
/** @class */
function() {
function SeriesDataSchema2(opt) {
this.dimensions = opt.dimensions;
this._dimOmitted = opt.dimensionOmitted;
this.source = opt.source;
this._fullDimCount = opt.fullDimensionCount;
this._updateDimOmitted(opt.dimensionOmitted);
}
SeriesDataSchema2.prototype.isDimensionOmitted = function() {
return this._dimOmitted;
};
SeriesDataSchema2.prototype._updateDimOmitted = function(dimensionOmitted) {
this._dimOmitted = dimensionOmitted;
if (!dimensionOmitted) {
return;
}
if (!this._dimNameMap) {
this._dimNameMap = ensureSourceDimNameMap(this.source);
}
};
SeriesDataSchema2.prototype.getSourceDimensionIndex = function(dimName) {
return retrieve2(this._dimNameMap.get(dimName), -1);
};
SeriesDataSchema2.prototype.getSourceDimension = function(dimIndex) {
var dimensionsDefine = this.source.dimensionsDefine;
if (dimensionsDefine) {
return dimensionsDefine[dimIndex];
}
};
SeriesDataSchema2.prototype.makeStoreSchema = function() {
var dimCount = this._fullDimCount;
var willRetrieveDataByName = shouldRetrieveDataByName(this.source);
var makeHashStrict = !shouldOmitUnusedDimensions(dimCount);
var dimHash = "";
var dims = [];
for (var fullDimIdx = 0, seriesDimIdx = 0; fullDimIdx < dimCount; fullDimIdx++) {
var property = void 0;
var type4 = void 0;
var ordinalMeta = void 0;
var seriesDimDef = this.dimensions[seriesDimIdx];
if (seriesDimDef && seriesDimDef.storeDimIndex === fullDimIdx) {
property = willRetrieveDataByName ? seriesDimDef.name : null;
type4 = seriesDimDef.type;
ordinalMeta = seriesDimDef.ordinalMeta;
seriesDimIdx++;
} else {
var sourceDimDef = this.getSourceDimension(fullDimIdx);
if (sourceDimDef) {
property = willRetrieveDataByName ? sourceDimDef.name : null;
type4 = sourceDimDef.type;
}
}
dims.push({
property,
type: type4,
ordinalMeta
});
if (willRetrieveDataByName && property != null && (!seriesDimDef || !seriesDimDef.isCalculationCoord)) {
dimHash += makeHashStrict ? property.replace(/\`/g, "`1").replace(/\$/g, "`2") : property;
}
dimHash += "$";
dimHash += dimTypeShort[type4] || "f";
if (ordinalMeta) {
dimHash += ordinalMeta.uid;
}
dimHash += "$";
}
var source = this.source;
var hash = [source.seriesLayoutBy, source.startIndex, dimHash].join("$$");
return {
dimensions: dims,
hash
};
};
SeriesDataSchema2.prototype.makeOutputDimensionNames = function() {
var result = [];
for (var fullDimIdx = 0, seriesDimIdx = 0; fullDimIdx < this._fullDimCount; fullDimIdx++) {
var name_1 = void 0;
var seriesDimDef = this.dimensions[seriesDimIdx];
if (seriesDimDef && seriesDimDef.storeDimIndex === fullDimIdx) {
if (!seriesDimDef.isCalculationCoord) {
name_1 = seriesDimDef.name;
}
seriesDimIdx++;
} else {
var sourceDimDef = this.getSourceDimension(fullDimIdx);
if (sourceDimDef) {
name_1 = sourceDimDef.name;
}
}
result.push(name_1);
}
return result;
};
SeriesDataSchema2.prototype.appendCalculationDimension = function(dimDef) {
this.dimensions.push(dimDef);
dimDef.isCalculationCoord = true;
this._fullDimCount++;
this._updateDimOmitted(true);
};
return SeriesDataSchema2;
}()
);
function isSeriesDataSchema(schema) {
return schema instanceof SeriesDataSchema;
}
function createDimNameMap(dimsDef) {
var dataDimNameMap = createHashMap();
for (var i = 0; i < (dimsDef || []).length; i++) {
var dimDefItemRaw = dimsDef[i];
var userDimName = isObject$3(dimDefItemRaw) ? dimDefItemRaw.name : dimDefItemRaw;
if (userDimName != null && dataDimNameMap.get(userDimName) == null) {
dataDimNameMap.set(userDimName, i);
}
}
return dataDimNameMap;
}
function ensureSourceDimNameMap(source) {
var innerSource = inner$h(source);
return innerSource.dimNameMap || (innerSource.dimNameMap = createDimNameMap(source.dimensionsDefine));
}
function shouldOmitUnusedDimensions(dimCount) {
return dimCount > 30;
}
var isObject$1 = isObject$3;
var map = map$1;
var CtorInt32Array = typeof Int32Array === "undefined" ? Array : Int32Array;
var ID_PREFIX = "e\0\0";
var INDEX_NOT_FOUND = -1;
var TRANSFERABLE_PROPERTIES = ["hasItemOption", "_nameList", "_idList", "_invertedIndicesMap", "_dimSummary", "userOutput", "_rawData", "_dimValueGetter", "_nameDimIdx", "_idDimIdx", "_nameRepeatCount"];
var CLONE_PROPERTIES = ["_approximateExtent"];
var prepareInvertedIndex;
var getId;
var getIdNameFromStore;
var normalizeDimensions;
var transferProperties;
var cloneListForMapAndSample;
var makeIdFromName;
var SeriesData = (
/** @class */
function() {
function SeriesData2(dimensionsInput, hostModel) {
this.type = "list";
this._dimOmitted = false;
this._nameList = [];
this._idList = [];
this._visual = {};
this._layout = {};
this._itemVisuals = [];
this._itemLayouts = [];
this._graphicEls = [];
this._approximateExtent = {};
this._calculationInfo = {};
this.hasItemOption = false;
this.TRANSFERABLE_METHODS = ["cloneShallow", "downSample", "lttbDownSample", "map"];
this.CHANGABLE_METHODS = ["filterSelf", "selectRange"];
this.DOWNSAMPLE_METHODS = ["downSample", "lttbDownSample"];
var dimensions;
var assignStoreDimIdx = false;
if (isSeriesDataSchema(dimensionsInput)) {
dimensions = dimensionsInput.dimensions;
this._dimOmitted = dimensionsInput.isDimensionOmitted();
this._schema = dimensionsInput;
} else {
assignStoreDimIdx = true;
dimensions = dimensionsInput;
}
dimensions = dimensions || ["x", "y"];
var dimensionInfos = {};
var dimensionNames = [];
var invertedIndicesMap = {};
var needsHasOwn = false;
var emptyObj = {};
for (var i = 0; i < dimensions.length; i++) {
var dimInfoInput = dimensions[i];
var dimensionInfo = isString$1(dimInfoInput) ? new SeriesDimensionDefine({
name: dimInfoInput
}) : !(dimInfoInput instanceof SeriesDimensionDefine) ? new SeriesDimensionDefine(dimInfoInput) : dimInfoInput;
var dimensionName = dimensionInfo.name;
dimensionInfo.type = dimensionInfo.type || "float";
if (!dimensionInfo.coordDim) {
dimensionInfo.coordDim = dimensionName;
dimensionInfo.coordDimIndex = 0;
}
var otherDims = dimensionInfo.otherDims = dimensionInfo.otherDims || {};
dimensionNames.push(dimensionName);
dimensionInfos[dimensionName] = dimensionInfo;
if (emptyObj[dimensionName] != null) {
needsHasOwn = true;
}
if (dimensionInfo.createInvertedIndices) {
invertedIndicesMap[dimensionName] = [];
}
if (otherDims.itemName === 0) {
this._nameDimIdx = i;
}
if (otherDims.itemId === 0) {
this._idDimIdx = i;
}
if (assignStoreDimIdx) {
dimensionInfo.storeDimIndex = i;
}
}
this.dimensions = dimensionNames;
this._dimInfos = dimensionInfos;
this._initGetDimensionInfo(needsHasOwn);
this.hostModel = hostModel;
this._invertedIndicesMap = invertedIndicesMap;
if (this._dimOmitted) {
var dimIdxToName_1 = this._dimIdxToName = createHashMap();
each$f(dimensionNames, function(dimName) {
dimIdxToName_1.set(dimensionInfos[dimName].storeDimIndex, dimName);
});
}
}
SeriesData2.prototype.getDimension = function(dim) {
var dimIdx = this._recognizeDimIndex(dim);
if (dimIdx == null) {
return dim;
}
dimIdx = dim;
if (!this._dimOmitted) {
return this.dimensions[dimIdx];
}
var dimName = this._dimIdxToName.get(dimIdx);
if (dimName != null) {
return dimName;
}
var sourceDimDef = this._schema.getSourceDimension(dimIdx);
if (sourceDimDef) {
return sourceDimDef.name;
}
};
SeriesData2.prototype.getDimensionIndex = function(dim) {
var dimIdx = this._recognizeDimIndex(dim);
if (dimIdx != null) {
return dimIdx;
}
if (dim == null) {
return -1;
}
var dimInfo = this._getDimInfo(dim);
return dimInfo ? dimInfo.storeDimIndex : this._dimOmitted ? this._schema.getSourceDimensionIndex(dim) : -1;
};
SeriesData2.prototype._recognizeDimIndex = function(dim) {
if (isNumber(dim) || dim != null && !isNaN(dim) && !this._getDimInfo(dim) && (!this._dimOmitted || this._schema.getSourceDimensionIndex(dim) < 0)) {
return +dim;
}
};
SeriesData2.prototype._getStoreDimIndex = function(dim) {
var dimIdx = this.getDimensionIndex(dim);
return dimIdx;
};
SeriesData2.prototype.getDimensionInfo = function(dim) {
return this._getDimInfo(this.getDimension(dim));
};
SeriesData2.prototype._initGetDimensionInfo = function(needsHasOwn) {
var dimensionInfos = this._dimInfos;
this._getDimInfo = needsHasOwn ? function(dimName) {
return dimensionInfos.hasOwnProperty(dimName) ? dimensionInfos[dimName] : void 0;
} : function(dimName) {
return dimensionInfos[dimName];
};
};
SeriesData2.prototype.getDimensionsOnCoord = function() {
return this._dimSummary.dataDimsOnCoord.slice();
};
SeriesData2.prototype.mapDimension = function(coordDim, idx) {
var dimensionsSummary = this._dimSummary;
if (idx == null) {
return dimensionsSummary.encodeFirstDimNotExtra[coordDim];
}
var dims = dimensionsSummary.encode[coordDim];
return dims ? dims[idx] : null;
};
SeriesData2.prototype.mapDimensionsAll = function(coordDim) {
var dimensionsSummary = this._dimSummary;
var dims = dimensionsSummary.encode[coordDim];
return (dims || []).slice();
};
SeriesData2.prototype.getStore = function() {
return this._store;
};
SeriesData2.prototype.initData = function(data, nameList, dimValueGetter) {
var _this = this;
var store;
if (data instanceof DataStore) {
store = data;
}
if (!store) {
var dimensions = this.dimensions;
var provider = isSourceInstance(data) || isArrayLike(data) ? new DefaultDataProvider(data, dimensions.length) : data;
store = new DataStore();
var dimensionInfos = map(dimensions, function(dimName) {
return {
type: _this._dimInfos[dimName].type,
property: dimName
};
});
store.initData(provider, dimensionInfos, dimValueGetter);
}
this._store = store;
this._nameList = (nameList || []).slice();
this._idList = [];
this._nameRepeatCount = {};
this._doInit(0, store.count());
this._dimSummary = summarizeDimensions(this, this._schema);
this.userOutput = this._dimSummary.userOutput;
};
SeriesData2.prototype.appendData = function(data) {
var range3 = this._store.appendData(data);
this._doInit(range3[0], range3[1]);
};
SeriesData2.prototype.appendValues = function(values, names2) {
var _a2 = this._store.appendValues(values, names2.length), start2 = _a2.start, end2 = _a2.end;
var shouldMakeIdFromName = this._shouldMakeIdFromName();
this._updateOrdinalMeta();
if (names2) {
for (var idx = start2; idx < end2; idx++) {
var sourceIdx = idx - start2;
this._nameList[idx] = names2[sourceIdx];
if (shouldMakeIdFromName) {
makeIdFromName(this, idx);
}
}
}
};
SeriesData2.prototype._updateOrdinalMeta = function() {
var store = this._store;
var dimensions = this.dimensions;
for (var i = 0; i < dimensions.length; i++) {
var dimInfo = this._dimInfos[dimensions[i]];
if (dimInfo.ordinalMeta) {
store.collectOrdinalMeta(dimInfo.storeDimIndex, dimInfo.ordinalMeta);
}
}
};
SeriesData2.prototype._shouldMakeIdFromName = function() {
var provider = this._store.getProvider();
return this._idDimIdx == null && provider.getSource().sourceFormat !== SOURCE_FORMAT_TYPED_ARRAY && !provider.fillStorage;
};
SeriesData2.prototype._doInit = function(start2, end2) {
if (start2 >= end2) {
return;
}
var store = this._store;
var provider = store.getProvider();
this._updateOrdinalMeta();
var nameList = this._nameList;
var idList = this._idList;
var sourceFormat = provider.getSource().sourceFormat;
var isFormatOriginal = sourceFormat === SOURCE_FORMAT_ORIGINAL;
if (isFormatOriginal && !provider.pure) {
var sharedDataItem = [];
for (var idx = start2; idx < end2; idx++) {
var dataItem = provider.getItem(idx, sharedDataItem);
if (!this.hasItemOption && isDataItemOption(dataItem)) {
this.hasItemOption = true;
}
if (dataItem) {
var itemName = dataItem.name;
if (nameList[idx] == null && itemName != null) {
nameList[idx] = convertOptionIdName(itemName, null);
}
var itemId = dataItem.id;
if (idList[idx] == null && itemId != null) {
idList[idx] = convertOptionIdName(itemId, null);
}
}
}
}
if (this._shouldMakeIdFromName()) {
for (var idx = start2; idx < end2; idx++) {
makeIdFromName(this, idx);
}
}
prepareInvertedIndex(this);
};
SeriesData2.prototype.getApproximateExtent = function(dim) {
return this._approximateExtent[dim] || this._store.getDataExtent(this._getStoreDimIndex(dim));
};
SeriesData2.prototype.setApproximateExtent = function(extent3, dim) {
dim = this.getDimension(dim);
this._approximateExtent[dim] = extent3.slice();
};
SeriesData2.prototype.getCalculationInfo = function(key) {
return this._calculationInfo[key];
};
SeriesData2.prototype.setCalculationInfo = function(key, value) {
isObject$1(key) ? extend(this._calculationInfo, key) : this._calculationInfo[key] = value;
};
SeriesData2.prototype.getName = function(idx) {
var rawIndex = this.getRawIndex(idx);
var name = this._nameList[rawIndex];
if (name == null && this._nameDimIdx != null) {
name = getIdNameFromStore(this, this._nameDimIdx, rawIndex);
}
if (name == null) {
name = "";
}
return name;
};
SeriesData2.prototype._getCategory = function(dimIdx, idx) {
var ordinal = this._store.get(dimIdx, idx);
var ordinalMeta = this._store.getOrdinalMeta(dimIdx);
if (ordinalMeta) {
return ordinalMeta.categories[ordinal];
}
return ordinal;
};
SeriesData2.prototype.getId = function(idx) {
return getId(this, this.getRawIndex(idx));
};
SeriesData2.prototype.count = function() {
return this._store.count();
};
SeriesData2.prototype.get = function(dim, idx) {
var store = this._store;
var dimInfo = this._dimInfos[dim];
if (dimInfo) {
return store.get(dimInfo.storeDimIndex, idx);
}
};
SeriesData2.prototype.getByRawIndex = function(dim, rawIdx) {
var store = this._store;
var dimInfo = this._dimInfos[dim];
if (dimInfo) {
return store.getByRawIndex(dimInfo.storeDimIndex, rawIdx);
}
};
SeriesData2.prototype.getIndices = function() {
return this._store.getIndices();
};
SeriesData2.prototype.getDataExtent = function(dim) {
return this._store.getDataExtent(this._getStoreDimIndex(dim));
};
SeriesData2.prototype.getSum = function(dim) {
return this._store.getSum(this._getStoreDimIndex(dim));
};
SeriesData2.prototype.getMedian = function(dim) {
return this._store.getMedian(this._getStoreDimIndex(dim));
};
SeriesData2.prototype.getValues = function(dimensions, idx) {
var _this = this;
var store = this._store;
return isArray$1(dimensions) ? store.getValues(map(dimensions, function(dim) {
return _this._getStoreDimIndex(dim);
}), idx) : store.getValues(dimensions);
};
SeriesData2.prototype.hasValue = function(idx) {
var dataDimIndicesOnCoord = this._dimSummary.dataDimIndicesOnCoord;
for (var i = 0, len2 = dataDimIndicesOnCoord.length; i < len2; i++) {
if (isNaN(this._store.get(dataDimIndicesOnCoord[i], idx))) {
return false;
}
}
return true;
};
SeriesData2.prototype.indexOfName = function(name) {
for (var i = 0, len2 = this._store.count(); i < len2; i++) {
if (this.getName(i) === name) {
return i;
}
}
return -1;
};
SeriesData2.prototype.getRawIndex = function(idx) {
return this._store.getRawIndex(idx);
};
SeriesData2.prototype.indexOfRawIndex = function(rawIndex) {
return this._store.indexOfRawIndex(rawIndex);
};
SeriesData2.prototype.rawIndexOf = function(dim, value) {
var invertedIndices = dim && this._invertedIndicesMap[dim];
var rawIndex = invertedIndices[value];
if (rawIndex == null || isNaN(rawIndex)) {
return INDEX_NOT_FOUND;
}
return rawIndex;
};
SeriesData2.prototype.indicesOfNearest = function(dim, value, maxDistance) {
return this._store.indicesOfNearest(this._getStoreDimIndex(dim), value, maxDistance);
};
SeriesData2.prototype.each = function(dims, cb2, ctx) {
if (isFunction$1(dims)) {
ctx = cb2;
cb2 = dims;
dims = [];
}
var fCtx = ctx || this;
var dimIndices = map(normalizeDimensions(dims), this._getStoreDimIndex, this);
this._store.each(dimIndices, fCtx ? bind$2(cb2, fCtx) : cb2);
};
SeriesData2.prototype.filterSelf = function(dims, cb2, ctx) {
if (isFunction$1(dims)) {
ctx = cb2;
cb2 = dims;
dims = [];
}
var fCtx = ctx || this;
var dimIndices = map(normalizeDimensions(dims), this._getStoreDimIndex, this);
this._store = this._store.filter(dimIndices, fCtx ? bind$2(cb2, fCtx) : cb2);
return this;
};
SeriesData2.prototype.selectRange = function(range3) {
var _this = this;
var innerRange = {};
var dims = keys(range3);
each$f(dims, function(dim) {
var dimIdx = _this._getStoreDimIndex(dim);
innerRange[dimIdx] = range3[dim];
});
this._store = this._store.selectRange(innerRange);
return this;
};
SeriesData2.prototype.mapArray = function(dims, cb2, ctx) {
if (isFunction$1(dims)) {
ctx = cb2;
cb2 = dims;
dims = [];
}
ctx = ctx || this;
var result = [];
this.each(dims, function() {
result.push(cb2 && cb2.apply(this, arguments));
}, ctx);
return result;
};
SeriesData2.prototype.map = function(dims, cb2, ctx, ctxCompat) {
var fCtx = ctx || ctxCompat || this;
var dimIndices = map(normalizeDimensions(dims), this._getStoreDimIndex, this);
var list = cloneListForMapAndSample(this);
list._store = this._store.map(dimIndices, fCtx ? bind$2(cb2, fCtx) : cb2);
return list;
};
SeriesData2.prototype.modify = function(dims, cb2, ctx, ctxCompat) {
var fCtx = ctx || ctxCompat || this;
var dimIndices = map(normalizeDimensions(dims), this._getStoreDimIndex, this);
this._store.modify(dimIndices, fCtx ? bind$2(cb2, fCtx) : cb2);
};
SeriesData2.prototype.downSample = function(dimension, rate, sampleValue, sampleIndex) {
var list = cloneListForMapAndSample(this);
list._store = this._store.downSample(this._getStoreDimIndex(dimension), rate, sampleValue, sampleIndex);
return list;
};
SeriesData2.prototype.lttbDownSample = function(valueDimension, rate) {
var list = cloneListForMapAndSample(this);
list._store = this._store.lttbDownSample(this._getStoreDimIndex(valueDimension), rate);
return list;
};
SeriesData2.prototype.getRawDataItem = function(idx) {
return this._store.getRawDataItem(idx);
};
SeriesData2.prototype.getItemModel = function(idx) {
var hostModel = this.hostModel;
var dataItem = this.getRawDataItem(idx);
return new Model(dataItem, hostModel, hostModel && hostModel.ecModel);
};
SeriesData2.prototype.diff = function(otherList) {
var thisList = this;
return new DataDiffer(otherList ? otherList.getStore().getIndices() : [], this.getStore().getIndices(), function(idx) {
return getId(otherList, idx);
}, function(idx) {
return getId(thisList, idx);
});
};
SeriesData2.prototype.getVisual = function(key) {
var visual = this._visual;
return visual && visual[key];
};
SeriesData2.prototype.setVisual = function(kvObj, val) {
this._visual = this._visual || {};
if (isObject$1(kvObj)) {
extend(this._visual, kvObj);
} else {
this._visual[kvObj] = val;
}
};
SeriesData2.prototype.getItemVisual = function(idx, key) {
var itemVisual = this._itemVisuals[idx];
var val = itemVisual && itemVisual[key];
if (val == null) {
return this.getVisual(key);
}
return val;
};
SeriesData2.prototype.hasItemVisual = function() {
return this._itemVisuals.length > 0;
};
SeriesData2.prototype.ensureUniqueItemVisual = function(idx, key) {
var itemVisuals = this._itemVisuals;
var itemVisual = itemVisuals[idx];
if (!itemVisual) {
itemVisual = itemVisuals[idx] = {};
}
var val = itemVisual[key];
if (val == null) {
val = this.getVisual(key);
if (isArray$1(val)) {
val = val.slice();
} else if (isObject$1(val)) {
val = extend({}, val);
}
itemVisual[key] = val;
}
return val;
};
SeriesData2.prototype.setItemVisual = function(idx, key, value) {
var itemVisual = this._itemVisuals[idx] || {};
this._itemVisuals[idx] = itemVisual;
if (isObject$1(key)) {
extend(itemVisual, key);
} else {
itemVisual[key] = value;
}
};
SeriesData2.prototype.clearAllVisual = function() {
this._visual = {};
this._itemVisuals = [];
};
SeriesData2.prototype.setLayout = function(key, val) {
isObject$1(key) ? extend(this._layout, key) : this._layout[key] = val;
};
SeriesData2.prototype.getLayout = function(key) {
return this._layout[key];
};
SeriesData2.prototype.getItemLayout = function(idx) {
return this._itemLayouts[idx];
};
SeriesData2.prototype.setItemLayout = function(idx, layout2, merge2) {
this._itemLayouts[idx] = merge2 ? extend(this._itemLayouts[idx] || {}, layout2) : layout2;
};
SeriesData2.prototype.clearItemLayouts = function() {
this._itemLayouts.length = 0;
};
SeriesData2.prototype.setItemGraphicEl = function(idx, el2) {
var seriesIndex = this.hostModel && this.hostModel.seriesIndex;
setCommonECData(seriesIndex, this.dataType, idx, el2);
this._graphicEls[idx] = el2;
};
SeriesData2.prototype.getItemGraphicEl = function(idx) {
return this._graphicEls[idx];
};
SeriesData2.prototype.eachItemGraphicEl = function(cb2, context) {
each$f(this._graphicEls, function(el2, idx) {
if (el2) {
cb2 && cb2.call(context, el2, idx);
}
});
};
SeriesData2.prototype.cloneShallow = function(list) {
if (!list) {
list = new SeriesData2(this._schema ? this._schema : map(this.dimensions, this._getDimInfo, this), this.hostModel);
}
transferProperties(list, this);
list._store = this._store;
return list;
};
SeriesData2.prototype.wrapMethod = function(methodName, injectFunction) {
var originalMethod = this[methodName];
if (!isFunction$1(originalMethod)) {
return;
}
this.__wrappedMethods = this.__wrappedMethods || [];
this.__wrappedMethods.push(methodName);
this[methodName] = function() {
var res = originalMethod.apply(this, arguments);
return injectFunction.apply(this, [res].concat(slice(arguments)));
};
};
SeriesData2.internalField = function() {
prepareInvertedIndex = function(data) {
var invertedIndicesMap = data._invertedIndicesMap;
each$f(invertedIndicesMap, function(invertedIndices, dim) {
var dimInfo = data._dimInfos[dim];
var ordinalMeta = dimInfo.ordinalMeta;
var store = data._store;
if (ordinalMeta) {
invertedIndices = invertedIndicesMap[dim] = new CtorInt32Array(ordinalMeta.categories.length);
for (var i = 0; i < invertedIndices.length; i++) {
invertedIndices[i] = INDEX_NOT_FOUND;
}
for (var i = 0; i < store.count(); i++) {
invertedIndices[store.get(dimInfo.storeDimIndex, i)] = i;
}
}
});
};
getIdNameFromStore = function(data, dimIdx, idx) {
return convertOptionIdName(data._getCategory(dimIdx, idx), null);
};
getId = function(data, rawIndex) {
var id2 = data._idList[rawIndex];
if (id2 == null && data._idDimIdx != null) {
id2 = getIdNameFromStore(data, data._idDimIdx, rawIndex);
}
if (id2 == null) {
id2 = ID_PREFIX + rawIndex;
}
return id2;
};
normalizeDimensions = function(dimensions) {
if (!isArray$1(dimensions)) {
dimensions = dimensions != null ? [dimensions] : [];
}
return dimensions;
};
cloneListForMapAndSample = function(original) {
var list = new SeriesData2(original._schema ? original._schema : map(original.dimensions, original._getDimInfo, original), original.hostModel);
transferProperties(list, original);
return list;
};
transferProperties = function(target, source) {
each$f(TRANSFERABLE_PROPERTIES.concat(source.__wrappedMethods || []), function(propName) {
if (source.hasOwnProperty(propName)) {
target[propName] = source[propName];
}
});
target.__wrappedMethods = source.__wrappedMethods;
each$f(CLONE_PROPERTIES, function(propName) {
target[propName] = clone$4(source[propName]);
});
target._calculationInfo = extend({}, source._calculationInfo);
};
makeIdFromName = function(data, idx) {
var nameList = data._nameList;
var idList = data._idList;
var nameDimIdx = data._nameDimIdx;
var idDimIdx = data._idDimIdx;
var name = nameList[idx];
var id2 = idList[idx];
if (name == null && nameDimIdx != null) {
nameList[idx] = name = getIdNameFromStore(data, nameDimIdx, idx);
}
if (id2 == null && idDimIdx != null) {
idList[idx] = id2 = getIdNameFromStore(data, idDimIdx, idx);
}
if (id2 == null && name != null) {
var nameRepeatCount = data._nameRepeatCount;
var nmCnt = nameRepeatCount[name] = (nameRepeatCount[name] || 0) + 1;
id2 = name;
if (nmCnt > 1) {
id2 += "__ec__" + nmCnt;
}
idList[idx] = id2;
}
};
}();
return SeriesData2;
}()
);
function createDimensions(source, opt) {
return prepareSeriesDataSchema(source, opt).dimensions;
}
function prepareSeriesDataSchema(source, opt) {
if (!isSourceInstance(source)) {
source = createSourceFromSeriesDataOption(source);
}
opt = opt || {};
var sysDims = opt.coordDimensions || [];
var dimsDef = opt.dimensionsDefine || source.dimensionsDefine || [];
var coordDimNameMap = createHashMap();
var resultList = [];
var dimCount = getDimCount(source, sysDims, dimsDef, opt.dimensionsCount);
var omitUnusedDimensions = opt.canOmitUnusedDimensions && shouldOmitUnusedDimensions(dimCount);
var isUsingSourceDimensionsDef = dimsDef === source.dimensionsDefine;
var dataDimNameMap = isUsingSourceDimensionsDef ? ensureSourceDimNameMap(source) : createDimNameMap(dimsDef);
var encodeDef = opt.encodeDefine;
if (!encodeDef && opt.encodeDefaulter) {
encodeDef = opt.encodeDefaulter(source, dimCount);
}
var encodeDefMap = createHashMap(encodeDef);
var indicesMap = new CtorInt32Array$1(dimCount);
for (var i = 0; i < indicesMap.length; i++) {
indicesMap[i] = -1;
}
function getResultItem(dimIdx) {
var idx = indicesMap[dimIdx];
if (idx < 0) {
var dimDefItemRaw = dimsDef[dimIdx];
var dimDefItem = isObject$3(dimDefItemRaw) ? dimDefItemRaw : {
name: dimDefItemRaw
};
var resultItem2 = new SeriesDimensionDefine();
var userDimName = dimDefItem.name;
if (userDimName != null && dataDimNameMap.get(userDimName) != null) {
resultItem2.name = resultItem2.displayName = userDimName;
}
dimDefItem.type != null && (resultItem2.type = dimDefItem.type);
dimDefItem.displayName != null && (resultItem2.displayName = dimDefItem.displayName);
var newIdx = resultList.length;
indicesMap[dimIdx] = newIdx;
resultItem2.storeDimIndex = dimIdx;
resultList.push(resultItem2);
return resultItem2;
}
return resultList[idx];
}
if (!omitUnusedDimensions) {
for (var i = 0; i < dimCount; i++) {
getResultItem(i);
}
}
encodeDefMap.each(function(dataDimsRaw, coordDim2) {
var dataDims = normalizeToArray(dataDimsRaw).slice();
if (dataDims.length === 1 && !isString$1(dataDims[0]) && dataDims[0] < 0) {
encodeDefMap.set(coordDim2, false);
return;
}
var validDataDims = encodeDefMap.set(coordDim2, []);
each$f(dataDims, function(resultDimIdxOrName, idx) {
var resultDimIdx2 = isString$1(resultDimIdxOrName) ? dataDimNameMap.get(resultDimIdxOrName) : resultDimIdxOrName;
if (resultDimIdx2 != null && resultDimIdx2 < dimCount) {
validDataDims[idx] = resultDimIdx2;
applyDim(getResultItem(resultDimIdx2), coordDim2, idx);
}
});
});
var availDimIdx = 0;
each$f(sysDims, function(sysDimItemRaw) {
var coordDim2;
var sysDimItemDimsDef;
var sysDimItemOtherDims;
var sysDimItem;
if (isString$1(sysDimItemRaw)) {
coordDim2 = sysDimItemRaw;
sysDimItem = {};
} else {
sysDimItem = sysDimItemRaw;
coordDim2 = sysDimItem.name;
var ordinalMeta = sysDimItem.ordinalMeta;
sysDimItem.ordinalMeta = null;
sysDimItem = extend({}, sysDimItem);
sysDimItem.ordinalMeta = ordinalMeta;
sysDimItemDimsDef = sysDimItem.dimsDef;
sysDimItemOtherDims = sysDimItem.otherDims;
sysDimItem.name = sysDimItem.coordDim = sysDimItem.coordDimIndex = sysDimItem.dimsDef = sysDimItem.otherDims = null;
}
var dataDims = encodeDefMap.get(coordDim2);
if (dataDims === false) {
return;
}
dataDims = normalizeToArray(dataDims);
if (!dataDims.length) {
for (var i2 = 0; i2 < (sysDimItemDimsDef && sysDimItemDimsDef.length || 1); i2++) {
while (availDimIdx < dimCount && getResultItem(availDimIdx).coordDim != null) {
availDimIdx++;
}
availDimIdx < dimCount && dataDims.push(availDimIdx++);
}
}
each$f(dataDims, function(resultDimIdx2, coordDimIndex) {
var resultItem2 = getResultItem(resultDimIdx2);
if (isUsingSourceDimensionsDef && sysDimItem.type != null) {
resultItem2.type = sysDimItem.type;
}
applyDim(defaults(resultItem2, sysDimItem), coordDim2, coordDimIndex);
if (resultItem2.name == null && sysDimItemDimsDef) {
var sysDimItemDimsDefItem = sysDimItemDimsDef[coordDimIndex];
!isObject$3(sysDimItemDimsDefItem) && (sysDimItemDimsDefItem = {
name: sysDimItemDimsDefItem
});
resultItem2.name = resultItem2.displayName = sysDimItemDimsDefItem.name;
resultItem2.defaultTooltip = sysDimItemDimsDefItem.defaultTooltip;
}
sysDimItemOtherDims && defaults(resultItem2.otherDims, sysDimItemOtherDims);
});
});
function applyDim(resultItem2, coordDim2, coordDimIndex) {
if (VISUAL_DIMENSIONS.get(coordDim2) != null) {
resultItem2.otherDims[coordDim2] = coordDimIndex;
} else {
resultItem2.coordDim = coordDim2;
resultItem2.coordDimIndex = coordDimIndex;
coordDimNameMap.set(coordDim2, true);
}
}
var generateCoord = opt.generateCoord;
var generateCoordCount = opt.generateCoordCount;
var fromZero = generateCoordCount != null;
generateCoordCount = generateCoord ? generateCoordCount || 1 : 0;
var extra = generateCoord || "value";
function ifNoNameFillWithCoordName(resultItem2) {
if (resultItem2.name == null) {
resultItem2.name = resultItem2.coordDim;
}
}
if (!omitUnusedDimensions) {
for (var resultDimIdx = 0; resultDimIdx < dimCount; resultDimIdx++) {
var resultItem = getResultItem(resultDimIdx);
var coordDim = resultItem.coordDim;
if (coordDim == null) {
resultItem.coordDim = genCoordDimName(extra, coordDimNameMap, fromZero);
resultItem.coordDimIndex = 0;
if (!generateCoord || generateCoordCount <= 0) {
resultItem.isExtraCoord = true;
}
generateCoordCount--;
}
ifNoNameFillWithCoordName(resultItem);
if (resultItem.type == null && (guessOrdinal(source, resultDimIdx) === BE_ORDINAL.Must || resultItem.isExtraCoord && (resultItem.otherDims.itemName != null || resultItem.otherDims.seriesName != null))) {
resultItem.type = "ordinal";
}
}
} else {
each$f(resultList, function(resultItem2) {
ifNoNameFillWithCoordName(resultItem2);
});
resultList.sort(function(item0, item1) {
return item0.storeDimIndex - item1.storeDimIndex;
});
}
removeDuplication(resultList);
return new SeriesDataSchema({
source,
dimensions: resultList,
fullDimensionCount: dimCount,
dimensionOmitted: omitUnusedDimensions
});
}
function removeDuplication(result) {
var duplicationMap = createHashMap();
for (var i = 0; i < result.length; i++) {
var dim = result[i];
var dimOriginalName = dim.name;
var count2 = duplicationMap.get(dimOriginalName) || 0;
if (count2 > 0) {
dim.name = dimOriginalName + (count2 - 1);
}
count2++;
duplicationMap.set(dimOriginalName, count2);
}
}
function getDimCount(source, sysDims, dimsDef, optDimCount) {
var dimCount = Math.max(source.dimensionsDetectedCount || 1, sysDims.length, dimsDef.length, optDimCount || 0);
each$f(sysDims, function(sysDimItem) {
var sysDimItemDimsDef;
if (isObject$3(sysDimItem) && (sysDimItemDimsDef = sysDimItem.dimsDef)) {
dimCount = Math.max(dimCount, sysDimItemDimsDef.length);
}
});
return dimCount;
}
function genCoordDimName(name, map2, fromZero) {
if (fromZero || map2.hasKey(name)) {
var i = 0;
while (map2.hasKey(name + i)) {
i++;
}
name += i;
}
map2.set(name, true);
return name;
}
var CoordSysInfo = (
/** @class */
/* @__PURE__ */ function() {
function CoordSysInfo2(coordSysName) {
this.coordSysDims = [];
this.axisMap = createHashMap();
this.categoryAxisMap = createHashMap();
this.coordSysName = coordSysName;
}
return CoordSysInfo2;
}()
);
function getCoordSysInfoBySeries(seriesModel) {
var coordSysName = seriesModel.get("coordinateSystem");
var result = new CoordSysInfo(coordSysName);
var fetch = fetchers[coordSysName];
if (fetch) {
fetch(seriesModel, result, result.axisMap, result.categoryAxisMap);
return result;
}
}
var fetchers = {
cartesian2d: function(seriesModel, result, axisMap, categoryAxisMap) {
var xAxisModel = seriesModel.getReferringComponents("xAxis", SINGLE_REFERRING).models[0];
var yAxisModel = seriesModel.getReferringComponents("yAxis", SINGLE_REFERRING).models[0];
result.coordSysDims = ["x", "y"];
axisMap.set("x", xAxisModel);
axisMap.set("y", yAxisModel);
if (isCategory(xAxisModel)) {
categoryAxisMap.set("x", xAxisModel);
result.firstCategoryDimIndex = 0;
}
if (isCategory(yAxisModel)) {
categoryAxisMap.set("y", yAxisModel);
result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1);
}
},
singleAxis: function(seriesModel, result, axisMap, categoryAxisMap) {
var singleAxisModel = seriesModel.getReferringComponents("singleAxis", SINGLE_REFERRING).models[0];
result.coordSysDims = ["single"];
axisMap.set("single", singleAxisModel);
if (isCategory(singleAxisModel)) {
categoryAxisMap.set("single", singleAxisModel);
result.firstCategoryDimIndex = 0;
}
},
polar: function(seriesModel, result, axisMap, categoryAxisMap) {
var polarModel = seriesModel.getReferringComponents("polar", SINGLE_REFERRING).models[0];
var radiusAxisModel = polarModel.findAxisModel("radiusAxis");
var angleAxisModel = polarModel.findAxisModel("angleAxis");
result.coordSysDims = ["radius", "angle"];
axisMap.set("radius", radiusAxisModel);
axisMap.set("angle", angleAxisModel);
if (isCategory(radiusAxisModel)) {
categoryAxisMap.set("radius", radiusAxisModel);
result.firstCategoryDimIndex = 0;
}
if (isCategory(angleAxisModel)) {
categoryAxisMap.set("angle", angleAxisModel);
result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1);
}
},
geo: function(seriesModel, result, axisMap, categoryAxisMap) {
result.coordSysDims = ["lng", "lat"];
},
parallel: function(seriesModel, result, axisMap, categoryAxisMap) {
var ecModel = seriesModel.ecModel;
var parallelModel = ecModel.getComponent("parallel", seriesModel.get("parallelIndex"));
var coordSysDims = result.coordSysDims = parallelModel.dimensions.slice();
each$f(parallelModel.parallelAxisIndex, function(axisIndex, index2) {
var axisModel = ecModel.getComponent("parallelAxis", axisIndex);
var axisDim = coordSysDims[index2];
axisMap.set(axisDim, axisModel);
if (isCategory(axisModel)) {
categoryAxisMap.set(axisDim, axisModel);
if (result.firstCategoryDimIndex == null) {
result.firstCategoryDimIndex = index2;
}
}
});
}
};
function isCategory(axisModel) {
return axisModel.get("type") === "category";
}
function enableDataStack(seriesModel, dimensionsInput, opt) {
opt = opt || {};
var byIndex = opt.byIndex;
var stackedCoordDimension = opt.stackedCoordDimension;
var dimensionDefineList;
var schema;
var store;
if (isLegacyDimensionsInput(dimensionsInput)) {
dimensionDefineList = dimensionsInput;
} else {
schema = dimensionsInput.schema;
dimensionDefineList = schema.dimensions;
store = dimensionsInput.store;
}
var mayStack = !!(seriesModel && seriesModel.get("stack"));
var stackedByDimInfo;
var stackedDimInfo;
var stackResultDimension;
var stackedOverDimension;
each$f(dimensionDefineList, function(dimensionInfo, index2) {
if (isString$1(dimensionInfo)) {
dimensionDefineList[index2] = dimensionInfo = {
name: dimensionInfo
};
}
if (mayStack && !dimensionInfo.isExtraCoord) {
if (!byIndex && !stackedByDimInfo && dimensionInfo.ordinalMeta) {
stackedByDimInfo = dimensionInfo;
}
if (!stackedDimInfo && dimensionInfo.type !== "ordinal" && dimensionInfo.type !== "time" && (!stackedCoordDimension || stackedCoordDimension === dimensionInfo.coordDim)) {
stackedDimInfo = dimensionInfo;
}
}
});
if (stackedDimInfo && !byIndex && !stackedByDimInfo) {
byIndex = true;
}
if (stackedDimInfo) {
stackResultDimension = "__\0ecstackresult_" + seriesModel.id;
stackedOverDimension = "__\0ecstackedover_" + seriesModel.id;
if (stackedByDimInfo) {
stackedByDimInfo.createInvertedIndices = true;
}
var stackedDimCoordDim_1 = stackedDimInfo.coordDim;
var stackedDimType = stackedDimInfo.type;
var stackedDimCoordIndex_1 = 0;
each$f(dimensionDefineList, function(dimensionInfo) {
if (dimensionInfo.coordDim === stackedDimCoordDim_1) {
stackedDimCoordIndex_1++;
}
});
var stackedOverDimensionDefine = {
name: stackResultDimension,
coordDim: stackedDimCoordDim_1,
coordDimIndex: stackedDimCoordIndex_1,
type: stackedDimType,
isExtraCoord: true,
isCalculationCoord: true,
storeDimIndex: dimensionDefineList.length
};
var stackResultDimensionDefine = {
name: stackedOverDimension,
// This dimension contains stack base (generally, 0), so do not set it as
// `stackedDimCoordDim` to avoid extent calculation, consider log scale.
coordDim: stackedOverDimension,
coordDimIndex: stackedDimCoordIndex_1 + 1,
type: stackedDimType,
isExtraCoord: true,
isCalculationCoord: true,
storeDimIndex: dimensionDefineList.length + 1
};
if (schema) {
if (store) {
stackedOverDimensionDefine.storeDimIndex = store.ensureCalculationDimension(stackedOverDimension, stackedDimType);
stackResultDimensionDefine.storeDimIndex = store.ensureCalculationDimension(stackResultDimension, stackedDimType);
}
schema.appendCalculationDimension(stackedOverDimensionDefine);
schema.appendCalculationDimension(stackResultDimensionDefine);
} else {
dimensionDefineList.push(stackedOverDimensionDefine);
dimensionDefineList.push(stackResultDimensionDefine);
}
}
return {
stackedDimension: stackedDimInfo && stackedDimInfo.name,
stackedByDimension: stackedByDimInfo && stackedByDimInfo.name,
isStackedByIndex: byIndex,
stackedOverDimension,
stackResultDimension
};
}
function isLegacyDimensionsInput(dimensionsInput) {
return !isSeriesDataSchema(dimensionsInput.schema);
}
function isDimensionStacked(data, stackedDim) {
return !!stackedDim && stackedDim === data.getCalculationInfo("stackedDimension");
}
function getStackedDimension(data, targetDim) {
return isDimensionStacked(data, targetDim) ? data.getCalculationInfo("stackResultDimension") : targetDim;
}
function getCoordSysDimDefs(seriesModel, coordSysInfo) {
var coordSysName = seriesModel.get("coordinateSystem");
var registeredCoordSys = CoordinateSystemManager.get(coordSysName);
var coordSysDimDefs;
if (coordSysInfo && coordSysInfo.coordSysDims) {
coordSysDimDefs = map$1(coordSysInfo.coordSysDims, function(dim) {
var dimInfo = {
name: dim
};
var axisModel = coordSysInfo.axisMap.get(dim);
if (axisModel) {
var axisType = axisModel.get("type");
dimInfo.type = getDimensionTypeByAxis(axisType);
}
return dimInfo;
});
}
if (!coordSysDimDefs) {
coordSysDimDefs = registeredCoordSys && (registeredCoordSys.getDimensionsInfo ? registeredCoordSys.getDimensionsInfo() : registeredCoordSys.dimensions.slice()) || ["x", "y"];
}
return coordSysDimDefs;
}
function injectOrdinalMeta(dimInfoList, createInvertedIndices, coordSysInfo) {
var firstCategoryDimIndex;
var hasNameEncode;
coordSysInfo && each$f(dimInfoList, function(dimInfo, dimIndex) {
var coordDim = dimInfo.coordDim;
var categoryAxisModel = coordSysInfo.categoryAxisMap.get(coordDim);
if (categoryAxisModel) {
if (firstCategoryDimIndex == null) {
firstCategoryDimIndex = dimIndex;
}
dimInfo.ordinalMeta = categoryAxisModel.getOrdinalMeta();
if (createInvertedIndices) {
dimInfo.createInvertedIndices = true;
}
}
if (dimInfo.otherDims.itemName != null) {
hasNameEncode = true;
}
});
if (!hasNameEncode && firstCategoryDimIndex != null) {
dimInfoList[firstCategoryDimIndex].otherDims.itemName = 0;
}
return firstCategoryDimIndex;
}
function createSeriesData(sourceRaw, seriesModel, opt) {
opt = opt || {};
var sourceManager = seriesModel.getSourceManager();
var source;
var isOriginalSource = false;
if (sourceRaw) {
isOriginalSource = true;
source = createSourceFromSeriesDataOption(sourceRaw);
} else {
source = sourceManager.getSource();
isOriginalSource = source.sourceFormat === SOURCE_FORMAT_ORIGINAL;
}
var coordSysInfo = getCoordSysInfoBySeries(seriesModel);
var coordSysDimDefs = getCoordSysDimDefs(seriesModel, coordSysInfo);
var useEncodeDefaulter = opt.useEncodeDefaulter;
var encodeDefaulter = isFunction$1(useEncodeDefaulter) ? useEncodeDefaulter : useEncodeDefaulter ? curry$1(makeSeriesEncodeForAxisCoordSys, coordSysDimDefs, seriesModel) : null;
var createDimensionOptions = {
coordDimensions: coordSysDimDefs,
generateCoord: opt.generateCoord,
encodeDefine: seriesModel.getEncode(),
encodeDefaulter,
canOmitUnusedDimensions: !isOriginalSource
};
var schema = prepareSeriesDataSchema(source, createDimensionOptions);
var firstCategoryDimIndex = injectOrdinalMeta(schema.dimensions, opt.createInvertedIndices, coordSysInfo);
var store = !isOriginalSource ? sourceManager.getSharedDataStore(schema) : null;
var stackCalculationInfo = enableDataStack(seriesModel, {
schema,
store
});
var data = new SeriesData(schema, seriesModel);
data.setCalculationInfo(stackCalculationInfo);
var dimValueGetter = firstCategoryDimIndex != null && isNeedCompleteOrdinalData(source) ? function(itemOpt, dimName, dataIndex, dimIndex) {
return dimIndex === firstCategoryDimIndex ? dataIndex : this.defaultDimValueGetter(itemOpt, dimName, dataIndex, dimIndex);
} : null;
data.hasItemOption = false;
data.initData(
// Try to reuse the data store in sourceManager if using dataset.
isOriginalSource ? source : store,
null,
dimValueGetter
);
return data;
}
function isNeedCompleteOrdinalData(source) {
if (source.sourceFormat === SOURCE_FORMAT_ORIGINAL) {
var sampleItem = firstDataNotNull(source.data || []);
return !isArray$1(getDataItemValue(sampleItem));
}
}
function firstDataNotNull(arr) {
var i = 0;
while (i < arr.length && arr[i] == null) {
i++;
}
return arr[i];
}
var Scale = (
/** @class */
function() {
function Scale2(setting) {
this._setting = setting || {};
this._extent = [Infinity, -Infinity];
}
Scale2.prototype.getSetting = function(name) {
return this._setting[name];
};
Scale2.prototype.unionExtent = function(other) {
var extent3 = this._extent;
other[0] < extent3[0] && (extent3[0] = other[0]);
other[1] > extent3[1] && (extent3[1] = other[1]);
};
Scale2.prototype.unionExtentFromData = function(data, dim) {
this.unionExtent(data.getApproximateExtent(dim));
};
Scale2.prototype.getExtent = function() {
return this._extent.slice();
};
Scale2.prototype.setExtent = function(start2, end2) {
var thisExtent = this._extent;
if (!isNaN(start2)) {
thisExtent[0] = start2;
}
if (!isNaN(end2)) {
thisExtent[1] = end2;
}
};
Scale2.prototype.isInExtentRange = function(value) {
return this._extent[0] <= value && this._extent[1] >= value;
};
Scale2.prototype.isBlank = function() {
return this._isBlank;
};
Scale2.prototype.setBlank = function(isBlank) {
this._isBlank = isBlank;
};
return Scale2;
}()
);
enableClassManagement(Scale);
var uidBase = 0;
var OrdinalMeta = (
/** @class */
function() {
function OrdinalMeta2(opt) {
this.categories = opt.categories || [];
this._needCollect = opt.needCollect;
this._deduplication = opt.deduplication;
this.uid = ++uidBase;
}
OrdinalMeta2.createByAxisModel = function(axisModel) {
var option = axisModel.option;
var data = option.data;
var categories = data && map$1(data, getName);
return new OrdinalMeta2({
categories,
needCollect: !categories,
// deduplication is default in axis.
deduplication: option.dedplication !== false
});
};
OrdinalMeta2.prototype.getOrdinal = function(category) {
return this._getOrCreateMap().get(category);
};
OrdinalMeta2.prototype.parseAndCollect = function(category) {
var index2;
var needCollect = this._needCollect;
if (!isString$1(category) && !needCollect) {
return category;
}
if (needCollect && !this._deduplication) {
index2 = this.categories.length;
this.categories[index2] = category;
return index2;
}
var map2 = this._getOrCreateMap();
index2 = map2.get(category);
if (index2 == null) {
if (needCollect) {
index2 = this.categories.length;
this.categories[index2] = category;
map2.set(category, index2);
} else {
index2 = NaN;
}
}
return index2;
};
OrdinalMeta2.prototype._getOrCreateMap = function() {
return this._map || (this._map = createHashMap(this.categories));
};
return OrdinalMeta2;
}()
);
function getName(obj) {
if (isObject$3(obj) && obj.value != null) {
return obj.value;
} else {
return obj + "";
}
}
function isIntervalOrLogScale(scale2) {
return scale2.type === "interval" || scale2.type === "log";
}
function intervalScaleNiceTicks(extent3, splitNumber, minInterval, maxInterval) {
var result = {};
var span = extent3[1] - extent3[0];
var interval = result.interval = nice(span / splitNumber, true);
if (minInterval != null && interval < minInterval) {
interval = result.interval = minInterval;
}
if (maxInterval != null && interval > maxInterval) {
interval = result.interval = maxInterval;
}
var precision = result.intervalPrecision = getIntervalPrecision(interval);
var niceTickExtent = result.niceTickExtent = [round$3(Math.ceil(extent3[0] / interval) * interval, precision), round$3(Math.floor(extent3[1] / interval) * interval, precision)];
fixExtent(niceTickExtent, extent3);
return result;
}
function increaseInterval(interval) {
var exp10 = Math.pow(10, quantityExponent(interval));
var f2 = interval / exp10;
if (!f2) {
f2 = 1;
} else if (f2 === 2) {
f2 = 3;
} else if (f2 === 3) {
f2 = 5;
} else {
f2 *= 2;
}
return round$3(f2 * exp10);
}
function getIntervalPrecision(interval) {
return getPrecision(interval) + 2;
}
function clamp(niceTickExtent, idx, extent3) {
niceTickExtent[idx] = Math.max(Math.min(niceTickExtent[idx], extent3[1]), extent3[0]);
}
function fixExtent(niceTickExtent, extent3) {
!isFinite(niceTickExtent[0]) && (niceTickExtent[0] = extent3[0]);
!isFinite(niceTickExtent[1]) && (niceTickExtent[1] = extent3[1]);
clamp(niceTickExtent, 0, extent3);
clamp(niceTickExtent, 1, extent3);
if (niceTickExtent[0] > niceTickExtent[1]) {
niceTickExtent[0] = niceTickExtent[1];
}
}
function contain$1(val, extent3) {
return val >= extent3[0] && val <= extent3[1];
}
function normalize$2(val, extent3) {
if (extent3[1] === extent3[0]) {
return 0.5;
}
return (val - extent3[0]) / (extent3[1] - extent3[0]);
}
function scale(val, extent3) {
return val * (extent3[1] - extent3[0]) + extent3[0];
}
var OrdinalScale = (
/** @class */
function(_super) {
__extends(OrdinalScale2, _super);
function OrdinalScale2(setting) {
var _this = _super.call(this, setting) || this;
_this.type = "ordinal";
var ordinalMeta = _this.getSetting("ordinalMeta");
if (!ordinalMeta) {
ordinalMeta = new OrdinalMeta({});
}
if (isArray$1(ordinalMeta)) {
ordinalMeta = new OrdinalMeta({
categories: map$1(ordinalMeta, function(item) {
return isObject$3(item) ? item.value : item;
})
});
}
_this._ordinalMeta = ordinalMeta;
_this._extent = _this.getSetting("extent") || [0, ordinalMeta.categories.length - 1];
return _this;
}
OrdinalScale2.prototype.parse = function(val) {
if (val == null) {
return NaN;
}
return isString$1(val) ? this._ordinalMeta.getOrdinal(val) : Math.round(val);
};
OrdinalScale2.prototype.contain = function(rank) {
rank = this.parse(rank);
return contain$1(rank, this._extent) && this._ordinalMeta.categories[rank] != null;
};
OrdinalScale2.prototype.normalize = function(val) {
val = this._getTickNumber(this.parse(val));
return normalize$2(val, this._extent);
};
OrdinalScale2.prototype.scale = function(val) {
val = Math.round(scale(val, this._extent));
return this.getRawOrdinalNumber(val);
};
OrdinalScale2.prototype.getTicks = function() {
var ticks = [];
var extent3 = this._extent;
var rank = extent3[0];
while (rank <= extent3[1]) {
ticks.push({
value: rank
});
rank++;
}
return ticks;
};
OrdinalScale2.prototype.getMinorTicks = function(splitNumber) {
return;
};
OrdinalScale2.prototype.setSortInfo = function(info) {
if (info == null) {
this._ordinalNumbersByTick = this._ticksByOrdinalNumber = null;
return;
}
var infoOrdinalNumbers = info.ordinalNumbers;
var ordinalsByTick = this._ordinalNumbersByTick = [];
var ticksByOrdinal = this._ticksByOrdinalNumber = [];
var tickNum = 0;
var allCategoryLen = this._ordinalMeta.categories.length;
for (var len2 = Math.min(allCategoryLen, infoOrdinalNumbers.length); tickNum < len2; ++tickNum) {
var ordinalNumber = infoOrdinalNumbers[tickNum];
ordinalsByTick[tickNum] = ordinalNumber;
ticksByOrdinal[ordinalNumber] = tickNum;
}
var unusedOrdinal = 0;
for (; tickNum < allCategoryLen; ++tickNum) {
while (ticksByOrdinal[unusedOrdinal] != null) {
unusedOrdinal++;
}
ordinalsByTick.push(unusedOrdinal);
ticksByOrdinal[unusedOrdinal] = tickNum;
}
};
OrdinalScale2.prototype._getTickNumber = function(ordinal) {
var ticksByOrdinalNumber = this._ticksByOrdinalNumber;
return ticksByOrdinalNumber && ordinal >= 0 && ordinal < ticksByOrdinalNumber.length ? ticksByOrdinalNumber[ordinal] : ordinal;
};
OrdinalScale2.prototype.getRawOrdinalNumber = function(tickNumber) {
var ordinalNumbersByTick = this._ordinalNumbersByTick;
return ordinalNumbersByTick && tickNumber >= 0 && tickNumber < ordinalNumbersByTick.length ? ordinalNumbersByTick[tickNumber] : tickNumber;
};
OrdinalScale2.prototype.getLabel = function(tick) {
if (!this.isBlank()) {
var ordinalNumber = this.getRawOrdinalNumber(tick.value);
var cateogry = this._ordinalMeta.categories[ordinalNumber];
return cateogry == null ? "" : cateogry + "";
}
};
OrdinalScale2.prototype.count = function() {
return this._extent[1] - this._extent[0] + 1;
};
OrdinalScale2.prototype.unionExtentFromData = function(data, dim) {
this.unionExtent(data.getApproximateExtent(dim));
};
OrdinalScale2.prototype.isInExtentRange = function(value) {
value = this._getTickNumber(value);
return this._extent[0] <= value && this._extent[1] >= value;
};
OrdinalScale2.prototype.getOrdinalMeta = function() {
return this._ordinalMeta;
};
OrdinalScale2.prototype.calcNiceTicks = function() {
};
OrdinalScale2.prototype.calcNiceExtent = function() {
};
OrdinalScale2.type = "ordinal";
return OrdinalScale2;
}(Scale)
);
Scale.registerClass(OrdinalScale);
var roundNumber = round$3;
var IntervalScale = (
/** @class */
function(_super) {
__extends(IntervalScale2, _super);
function IntervalScale2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = "interval";
_this._interval = 0;
_this._intervalPrecision = 2;
return _this;
}
IntervalScale2.prototype.parse = function(val) {
return val;
};
IntervalScale2.prototype.contain = function(val) {
return contain$1(val, this._extent);
};
IntervalScale2.prototype.normalize = function(val) {
return normalize$2(val, this._extent);
};
IntervalScale2.prototype.scale = function(val) {
return scale(val, this._extent);
};
IntervalScale2.prototype.setExtent = function(start2, end2) {
var thisExtent = this._extent;
if (!isNaN(start2)) {
thisExtent[0] = parseFloat(start2);
}
if (!isNaN(end2)) {
thisExtent[1] = parseFloat(end2);
}
};
IntervalScale2.prototype.unionExtent = function(other) {
var extent3 = this._extent;
other[0] < extent3[0] && (extent3[0] = other[0]);
other[1] > extent3[1] && (extent3[1] = other[1]);
this.setExtent(extent3[0], extent3[1]);
};
IntervalScale2.prototype.getInterval = function() {
return this._interval;
};
IntervalScale2.prototype.setInterval = function(interval) {
this._interval = interval;
this._niceExtent = this._extent.slice();
this._intervalPrecision = getIntervalPrecision(interval);
};
IntervalScale2.prototype.getTicks = function(expandToNicedExtent) {
var interval = this._interval;
var extent3 = this._extent;
var niceTickExtent = this._niceExtent;
var intervalPrecision = this._intervalPrecision;
var ticks = [];
if (!interval) {
return ticks;
}
var safeLimit = 1e4;
if (extent3[0] < niceTickExtent[0]) {
if (expandToNicedExtent) {
ticks.push({
value: roundNumber(niceTickExtent[0] - interval, intervalPrecision)
});
} else {
ticks.push({
value: extent3[0]
});
}
}
var tick = niceTickExtent[0];
while (tick <= niceTickExtent[1]) {
ticks.push({
value: tick
});
tick = roundNumber(tick + interval, intervalPrecision);
if (tick === ticks[ticks.length - 1].value) {
break;
}
if (ticks.length > safeLimit) {
return [];
}
}
var lastNiceTick = ticks.length ? ticks[ticks.length - 1].value : niceTickExtent[1];
if (extent3[1] > lastNiceTick) {
if (expandToNicedExtent) {
ticks.push({
value: roundNumber(lastNiceTick + interval, intervalPrecision)
});
} else {
ticks.push({
value: extent3[1]
});
}
}
return ticks;
};
IntervalScale2.prototype.getMinorTicks = function(splitNumber) {
var ticks = this.getTicks(true);
var minorTicks = [];
var extent3 = this.getExtent();
for (var i = 1; i < ticks.length; i++) {
var nextTick = ticks[i];
var prevTick = ticks[i - 1];
var count2 = 0;
var minorTicksGroup = [];
var interval = nextTick.value - prevTick.value;
var minorInterval = interval / splitNumber;
while (count2 < splitNumber - 1) {
var minorTick = roundNumber(prevTick.value + (count2 + 1) * minorInterval);
if (minorTick > extent3[0] && minorTick < extent3[1]) {
minorTicksGroup.push(minorTick);
}
count2++;
}
minorTicks.push(minorTicksGroup);
}
return minorTicks;
};
IntervalScale2.prototype.getLabel = function(data, opt) {
if (data == null) {
return "";
}
var precision = opt && opt.precision;
if (precision == null) {
precision = getPrecision(data.value) || 0;
} else if (precision === "auto") {
precision = this._intervalPrecision;
}
var dataNum = roundNumber(data.value, precision, true);
return addCommas(dataNum);
};
IntervalScale2.prototype.calcNiceTicks = function(splitNumber, minInterval, maxInterval) {
splitNumber = splitNumber || 5;
var extent3 = this._extent;
var span = extent3[1] - extent3[0];
if (!isFinite(span)) {
return;
}
if (span < 0) {
span = -span;
extent3.reverse();
}
var result = intervalScaleNiceTicks(extent3, splitNumber, minInterval, maxInterval);
this._intervalPrecision = result.intervalPrecision;
this._interval = result.interval;
this._niceExtent = result.niceTickExtent;
};
IntervalScale2.prototype.calcNiceExtent = function(opt) {
var extent3 = this._extent;
if (extent3[0] === extent3[1]) {
if (extent3[0] !== 0) {
var expandSize = Math.abs(extent3[0]);
if (!opt.fixMax) {
extent3[1] += expandSize / 2;
extent3[0] -= expandSize / 2;
} else {
extent3[0] -= expandSize / 2;
}
} else {
extent3[1] = 1;
}
}
var span = extent3[1] - extent3[0];
if (!isFinite(span)) {
extent3[0] = 0;
extent3[1] = 1;
}
this.calcNiceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval);
var interval = this._interval;
if (!opt.fixMin) {
extent3[0] = roundNumber(Math.floor(extent3[0] / interval) * interval);
}
if (!opt.fixMax) {
extent3[1] = roundNumber(Math.ceil(extent3[1] / interval) * interval);
}
};
IntervalScale2.prototype.setNiceExtent = function(min3, max3) {
this._niceExtent = [min3, max3];
};
IntervalScale2.type = "interval";
return IntervalScale2;
}(Scale)
);
Scale.registerClass(IntervalScale);
var supportFloat32Array = typeof Float32Array !== "undefined";
var Float32ArrayCtor = !supportFloat32Array ? Array : Float32Array;
function createFloat32Array(arg) {
if (isArray$1(arg)) {
return supportFloat32Array ? new Float32Array(arg) : arg;
}
return new Float32ArrayCtor(arg);
}
var STACK_PREFIX = "__ec_stack_";
function getSeriesStackId$1(seriesModel) {
return seriesModel.get("stack") || STACK_PREFIX + seriesModel.seriesIndex;
}
function getAxisKey$1(axis) {
return axis.dim + axis.index;
}
function getLayoutOnAxis(opt) {
var params = [];
var baseAxis = opt.axis;
var axisKey = "axis0";
if (baseAxis.type !== "category") {
return;
}
var bandWidth = baseAxis.getBandWidth();
for (var i = 0; i < opt.count || 0; i++) {
params.push(defaults({
bandWidth,
axisKey,
stackId: STACK_PREFIX + i
}, opt));
}
var widthAndOffsets = doCalBarWidthAndOffset(params);
var result = [];
for (var i = 0; i < opt.count; i++) {
var item = widthAndOffsets[axisKey][STACK_PREFIX + i];
item.offsetCenter = item.offset + item.width / 2;
result.push(item);
}
return result;
}
function prepareLayoutBarSeries(seriesType2, ecModel) {
var seriesModels = [];
ecModel.eachSeriesByType(seriesType2, function(seriesModel) {
if (isOnCartesian(seriesModel)) {
seriesModels.push(seriesModel);
}
});
return seriesModels;
}
function getValueAxesMinGaps(barSeries) {
var axisValues = {};
each$f(barSeries, function(seriesModel) {
var cartesian = seriesModel.coordinateSystem;
var baseAxis = cartesian.getBaseAxis();
if (baseAxis.type !== "time" && baseAxis.type !== "value") {
return;
}
var data = seriesModel.getData();
var key2 = baseAxis.dim + "_" + baseAxis.index;
var dimIdx = data.getDimensionIndex(data.mapDimension(baseAxis.dim));
var store = data.getStore();
for (var i = 0, cnt = store.count(); i < cnt; ++i) {
var value = store.get(dimIdx, i);
if (!axisValues[key2]) {
axisValues[key2] = [value];
} else {
axisValues[key2].push(value);
}
}
});
var axisMinGaps = {};
for (var key in axisValues) {
if (axisValues.hasOwnProperty(key)) {
var valuesInAxis = axisValues[key];
if (valuesInAxis) {
valuesInAxis.sort(function(a, b2) {
return a - b2;
});
var min3 = null;
for (var j = 1; j < valuesInAxis.length; ++j) {
var delta = valuesInAxis[j] - valuesInAxis[j - 1];
if (delta > 0) {
min3 = min3 === null ? delta : Math.min(min3, delta);
}
}
axisMinGaps[key] = min3;
}
}
}
return axisMinGaps;
}
function makeColumnLayout(barSeries) {
var axisMinGaps = getValueAxesMinGaps(barSeries);
var seriesInfoList = [];
each$f(barSeries, function(seriesModel) {
var cartesian = seriesModel.coordinateSystem;
var baseAxis = cartesian.getBaseAxis();
var axisExtent = baseAxis.getExtent();
var bandWidth;
if (baseAxis.type === "category") {
bandWidth = baseAxis.getBandWidth();
} else if (baseAxis.type === "value" || baseAxis.type === "time") {
var key = baseAxis.dim + "_" + baseAxis.index;
var minGap = axisMinGaps[key];
var extentSpan = Math.abs(axisExtent[1] - axisExtent[0]);
var scale2 = baseAxis.scale.getExtent();
var scaleSpan = Math.abs(scale2[1] - scale2[0]);
bandWidth = minGap ? extentSpan / scaleSpan * minGap : extentSpan;
} else {
var data = seriesModel.getData();
bandWidth = Math.abs(axisExtent[1] - axisExtent[0]) / data.count();
}
var barWidth = parsePercent(seriesModel.get("barWidth"), bandWidth);
var barMaxWidth = parsePercent(seriesModel.get("barMaxWidth"), bandWidth);
var barMinWidth = parsePercent(
// barMinWidth by default is 0.5 / 1 in cartesian. Because in value axis,
// the auto-calculated bar width might be less than 0.5 / 1.
seriesModel.get("barMinWidth") || (isInLargeMode(seriesModel) ? 0.5 : 1),
bandWidth
);
var barGap = seriesModel.get("barGap");
var barCategoryGap = seriesModel.get("barCategoryGap");
seriesInfoList.push({
bandWidth,
barWidth,
barMaxWidth,
barMinWidth,
barGap,
barCategoryGap,
axisKey: getAxisKey$1(baseAxis),
stackId: getSeriesStackId$1(seriesModel)
});
});
return doCalBarWidthAndOffset(seriesInfoList);
}
function doCalBarWidthAndOffset(seriesInfoList) {
var columnsMap = {};
each$f(seriesInfoList, function(seriesInfo, idx) {
var axisKey = seriesInfo.axisKey;
var bandWidth = seriesInfo.bandWidth;
var columnsOnAxis = columnsMap[axisKey] || {
bandWidth,
remainedWidth: bandWidth,
autoWidthCount: 0,
categoryGap: null,
gap: "20%",
stacks: {}
};
var stacks = columnsOnAxis.stacks;
columnsMap[axisKey] = columnsOnAxis;
var stackId = seriesInfo.stackId;
if (!stacks[stackId]) {
columnsOnAxis.autoWidthCount++;
}
stacks[stackId] = stacks[stackId] || {
width: 0,
maxWidth: 0
};
var barWidth = seriesInfo.barWidth;
if (barWidth && !stacks[stackId].width) {
stacks[stackId].width = barWidth;
barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth);
columnsOnAxis.remainedWidth -= barWidth;
}
var barMaxWidth = seriesInfo.barMaxWidth;
barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth);
var barMinWidth = seriesInfo.barMinWidth;
barMinWidth && (stacks[stackId].minWidth = barMinWidth);
var barGap = seriesInfo.barGap;
barGap != null && (columnsOnAxis.gap = barGap);
var barCategoryGap = seriesInfo.barCategoryGap;
barCategoryGap != null && (columnsOnAxis.categoryGap = barCategoryGap);
});
var result = {};
each$f(columnsMap, function(columnsOnAxis, coordSysName) {
result[coordSysName] = {};
var stacks = columnsOnAxis.stacks;
var bandWidth = columnsOnAxis.bandWidth;
var categoryGapPercent = columnsOnAxis.categoryGap;
if (categoryGapPercent == null) {
var columnCount = keys(stacks).length;
categoryGapPercent = Math.max(35 - columnCount * 4, 15) + "%";
}
var categoryGap = parsePercent(categoryGapPercent, bandWidth);
var barGapPercent = parsePercent(columnsOnAxis.gap, 1);
var remainedWidth = columnsOnAxis.remainedWidth;
var autoWidthCount = columnsOnAxis.autoWidthCount;
var autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);
autoWidth = Math.max(autoWidth, 0);
each$f(stacks, function(column2) {
var maxWidth = column2.maxWidth;
var minWidth = column2.minWidth;
if (!column2.width) {
var finalWidth = autoWidth;
if (maxWidth && maxWidth < finalWidth) {
finalWidth = Math.min(maxWidth, remainedWidth);
}
if (minWidth && minWidth > finalWidth) {
finalWidth = minWidth;
}
if (finalWidth !== autoWidth) {
column2.width = finalWidth;
remainedWidth -= finalWidth + barGapPercent * finalWidth;
autoWidthCount--;
}
} else {
var finalWidth = column2.width;
if (maxWidth) {
finalWidth = Math.min(finalWidth, maxWidth);
}
if (minWidth) {
finalWidth = Math.max(finalWidth, minWidth);
}
column2.width = finalWidth;
remainedWidth -= finalWidth + barGapPercent * finalWidth;
autoWidthCount--;
}
});
autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);
autoWidth = Math.max(autoWidth, 0);
var widthSum = 0;
var lastColumn;
each$f(stacks, function(column2, idx) {
if (!column2.width) {
column2.width = autoWidth;
}
lastColumn = column2;
widthSum += column2.width * (1 + barGapPercent);
});
if (lastColumn) {
widthSum -= lastColumn.width * barGapPercent;
}
var offset2 = -widthSum / 2;
each$f(stacks, function(column2, stackId) {
result[coordSysName][stackId] = result[coordSysName][stackId] || {
bandWidth,
offset: offset2,
width: column2.width
};
offset2 += column2.width * (1 + barGapPercent);
});
});
return result;
}
function retrieveColumnLayout(barWidthAndOffset, axis, seriesModel) {
if (barWidthAndOffset && axis) {
var result = barWidthAndOffset[getAxisKey$1(axis)];
if (result != null && seriesModel != null) {
return result[getSeriesStackId$1(seriesModel)];
}
return result;
}
}
function layout$3(seriesType2, ecModel) {
var seriesModels = prepareLayoutBarSeries(seriesType2, ecModel);
var barWidthAndOffset = makeColumnLayout(seriesModels);
each$f(seriesModels, function(seriesModel) {
var data = seriesModel.getData();
var cartesian = seriesModel.coordinateSystem;
var baseAxis = cartesian.getBaseAxis();
var stackId = getSeriesStackId$1(seriesModel);
var columnLayoutInfo = barWidthAndOffset[getAxisKey$1(baseAxis)][stackId];
var columnOffset = columnLayoutInfo.offset;
var columnWidth = columnLayoutInfo.width;
data.setLayout({
bandWidth: columnLayoutInfo.bandWidth,
offset: columnOffset,
size: columnWidth
});
});
}
function createProgressiveLayout(seriesType2) {
return {
seriesType: seriesType2,
plan: createRenderPlanner(),
reset: function(seriesModel) {
if (!isOnCartesian(seriesModel)) {
return;
}
var data = seriesModel.getData();
var cartesian = seriesModel.coordinateSystem;
var baseAxis = cartesian.getBaseAxis();
var valueAxis2 = cartesian.getOtherAxis(baseAxis);
var valueDimIdx = data.getDimensionIndex(data.mapDimension(valueAxis2.dim));
var baseDimIdx = data.getDimensionIndex(data.mapDimension(baseAxis.dim));
var drawBackground = seriesModel.get("showBackground", true);
var valueDim = data.mapDimension(valueAxis2.dim);
var stackResultDim = data.getCalculationInfo("stackResultDimension");
var stacked = isDimensionStacked(data, valueDim) && !!data.getCalculationInfo("stackedOnSeries");
var isValueAxisH = valueAxis2.isHorizontal();
var valueAxisStart = getValueAxisStart(baseAxis, valueAxis2);
var isLarge = isInLargeMode(seriesModel);
var barMinHeight = seriesModel.get("barMinHeight") || 0;
var stackedDimIdx = stackResultDim && data.getDimensionIndex(stackResultDim);
var columnWidth = data.getLayout("size");
var columnOffset = data.getLayout("offset");
return {
progress: function(params, data2) {
var count2 = params.count;
var largePoints = isLarge && createFloat32Array(count2 * 3);
var largeBackgroundPoints = isLarge && drawBackground && createFloat32Array(count2 * 3);
var largeDataIndices = isLarge && createFloat32Array(count2);
var coordLayout = cartesian.master.getRect();
var bgSize = isValueAxisH ? coordLayout.width : coordLayout.height;
var dataIndex;
var store = data2.getStore();
var idxOffset = 0;
while ((dataIndex = params.next()) != null) {
var value = store.get(stacked ? stackedDimIdx : valueDimIdx, dataIndex);
var baseValue = store.get(baseDimIdx, dataIndex);
var baseCoord = valueAxisStart;
var stackStartValue = void 0;
if (stacked) {
stackStartValue = +value - store.get(valueDimIdx, dataIndex);
}
var x2 = void 0;
var y2 = void 0;
var width = void 0;
var height = void 0;
if (isValueAxisH) {
var coord = cartesian.dataToPoint([value, baseValue]);
if (stacked) {
var startCoord = cartesian.dataToPoint([stackStartValue, baseValue]);
baseCoord = startCoord[0];
}
x2 = baseCoord;
y2 = coord[1] + columnOffset;
width = coord[0] - baseCoord;
height = columnWidth;
if (Math.abs(width) < barMinHeight) {
width = (width < 0 ? -1 : 1) * barMinHeight;
}
} else {
var coord = cartesian.dataToPoint([baseValue, value]);
if (stacked) {
var startCoord = cartesian.dataToPoint([baseValue, stackStartValue]);
baseCoord = startCoord[1];
}
x2 = coord[0] + columnOffset;
y2 = baseCoord;
width = columnWidth;
height = coord[1] - baseCoord;
if (Math.abs(height) < barMinHeight) {
height = (height <= 0 ? -1 : 1) * barMinHeight;
}
}
if (!isLarge) {
data2.setItemLayout(dataIndex, {
x: x2,
y: y2,
width,
height
});
} else {
largePoints[idxOffset] = x2;
largePoints[idxOffset + 1] = y2;
largePoints[idxOffset + 2] = isValueAxisH ? width : height;
if (largeBackgroundPoints) {
largeBackgroundPoints[idxOffset] = isValueAxisH ? coordLayout.x : x2;
largeBackgroundPoints[idxOffset + 1] = isValueAxisH ? y2 : coordLayout.y;
largeBackgroundPoints[idxOffset + 2] = bgSize;
}
largeDataIndices[dataIndex] = dataIndex;
}
idxOffset += 3;
}
if (isLarge) {
data2.setLayout({
largePoints,
largeDataIndices,
largeBackgroundPoints,
valueAxisHorizontal: isValueAxisH
});
}
}
};
}
};
}
function isOnCartesian(seriesModel) {
return seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === "cartesian2d";
}
function isInLargeMode(seriesModel) {
return seriesModel.pipelineContext && seriesModel.pipelineContext.large;
}
function getValueAxisStart(baseAxis, valueAxis2) {
var startValue = valueAxis2.model.get("startValue");
if (!startValue) {
startValue = 0;
}
return valueAxis2.toGlobalCoord(valueAxis2.dataToCoord(valueAxis2.type === "log" ? startValue > 0 ? startValue : 1 : startValue));
}
var bisect = function(a, x2, lo, hi2) {
while (lo < hi2) {
var mid = lo + hi2 >>> 1;
if (a[mid][1] < x2) {
lo = mid + 1;
} else {
hi2 = mid;
}
}
return lo;
};
var TimeScale = (
/** @class */
function(_super) {
__extends(TimeScale2, _super);
function TimeScale2(settings) {
var _this = _super.call(this, settings) || this;
_this.type = "time";
return _this;
}
TimeScale2.prototype.getLabel = function(tick) {
var useUTC = this.getSetting("useUTC");
return format$1(tick.value, fullLeveledFormatter[getDefaultFormatPrecisionOfInterval(getPrimaryTimeUnit(this._minLevelUnit))] || fullLeveledFormatter.second, useUTC, this.getSetting("locale"));
};
TimeScale2.prototype.getFormattedLabel = function(tick, idx, labelFormatter) {
var isUTC = this.getSetting("useUTC");
var lang = this.getSetting("locale");
return leveledFormat(tick, idx, labelFormatter, lang, isUTC);
};
TimeScale2.prototype.getTicks = function() {
var interval = this._interval;
var extent3 = this._extent;
var ticks = [];
if (!interval) {
return ticks;
}
ticks.push({
value: extent3[0],
level: 0
});
var useUTC = this.getSetting("useUTC");
var innerTicks = getIntervalTicks(this._minLevelUnit, this._approxInterval, useUTC, extent3);
ticks = ticks.concat(innerTicks);
ticks.push({
value: extent3[1],
level: 0
});
return ticks;
};
TimeScale2.prototype.calcNiceExtent = function(opt) {
var extent3 = this._extent;
if (extent3[0] === extent3[1]) {
extent3[0] -= ONE_DAY;
extent3[1] += ONE_DAY;
}
if (extent3[1] === -Infinity && extent3[0] === Infinity) {
var d2 = /* @__PURE__ */ new Date();
extent3[1] = +new Date(d2.getFullYear(), d2.getMonth(), d2.getDate());
extent3[0] = extent3[1] - ONE_DAY;
}
this.calcNiceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval);
};
TimeScale2.prototype.calcNiceTicks = function(approxTickNum, minInterval, maxInterval) {
approxTickNum = approxTickNum || 10;
var extent3 = this._extent;
var span = extent3[1] - extent3[0];
this._approxInterval = span / approxTickNum;
if (minInterval != null && this._approxInterval < minInterval) {
this._approxInterval = minInterval;
}
if (maxInterval != null && this._approxInterval > maxInterval) {
this._approxInterval = maxInterval;
}
var scaleIntervalsLen = scaleIntervals.length;
var idx = Math.min(bisect(scaleIntervals, this._approxInterval, 0, scaleIntervalsLen), scaleIntervalsLen - 1);
this._interval = scaleIntervals[idx][1];
this._minLevelUnit = scaleIntervals[Math.max(idx - 1, 0)][0];
};
TimeScale2.prototype.parse = function(val) {
return isNumber(val) ? val : +parseDate(val);
};
TimeScale2.prototype.contain = function(val) {
return contain$1(this.parse(val), this._extent);
};
TimeScale2.prototype.normalize = function(val) {
return normalize$2(this.parse(val), this._extent);
};
TimeScale2.prototype.scale = function(val) {
return scale(val, this._extent);
};
TimeScale2.type = "time";
return TimeScale2;
}(IntervalScale)
);
var scaleIntervals = [
// Format interval
["second", ONE_SECOND],
["minute", ONE_MINUTE],
["hour", ONE_HOUR],
["quarter-day", ONE_HOUR * 6],
["half-day", ONE_HOUR * 12],
["day", ONE_DAY * 1.2],
["half-week", ONE_DAY * 3.5],
["week", ONE_DAY * 7],
["month", ONE_DAY * 31],
["quarter", ONE_DAY * 95],
["half-year", ONE_YEAR / 2],
["year", ONE_YEAR]
// 1Y
];
function isUnitValueSame(unit2, valueA, valueB, isUTC) {
var dateA = parseDate(valueA);
var dateB = parseDate(valueB);
var isSame = function(unit22) {
return getUnitValue(dateA, unit22, isUTC) === getUnitValue(dateB, unit22, isUTC);
};
var isSameYear = function() {
return isSame("year");
};
var isSameMonth = function() {
return isSameYear() && isSame("month");
};
var isSameDay = function() {
return isSameMonth() && isSame("day");
};
var isSameHour = function() {
return isSameDay() && isSame("hour");
};
var isSameMinute = function() {
return isSameHour() && isSame("minute");
};
var isSameSecond = function() {
return isSameMinute() && isSame("second");
};
var isSameMilliSecond = function() {
return isSameSecond() && isSame("millisecond");
};
switch (unit2) {
case "year":
return isSameYear();
case "month":
return isSameMonth();
case "day":
return isSameDay();
case "hour":
return isSameHour();
case "minute":
return isSameMinute();
case "second":
return isSameSecond();
case "millisecond":
return isSameMilliSecond();
}
}
function getDateInterval(approxInterval, daysInMonth) {
approxInterval /= ONE_DAY;
return approxInterval > 16 ? 16 : approxInterval > 7.5 ? 7 : approxInterval > 3.5 ? 4 : approxInterval > 1.5 ? 2 : 1;
}
function getMonthInterval(approxInterval) {
var APPROX_ONE_MONTH = 30 * ONE_DAY;
approxInterval /= APPROX_ONE_MONTH;
return approxInterval > 6 ? 6 : approxInterval > 3 ? 3 : approxInterval > 2 ? 2 : 1;
}
function getHourInterval(approxInterval) {
approxInterval /= ONE_HOUR;
return approxInterval > 12 ? 12 : approxInterval > 6 ? 6 : approxInterval > 3.5 ? 4 : approxInterval > 2 ? 2 : 1;
}
function getMinutesAndSecondsInterval(approxInterval, isMinutes) {
approxInterval /= isMinutes ? ONE_MINUTE : ONE_SECOND;
return approxInterval > 30 ? 30 : approxInterval > 20 ? 20 : approxInterval > 15 ? 15 : approxInterval > 10 ? 10 : approxInterval > 5 ? 5 : approxInterval > 2 ? 2 : 1;
}
function getMillisecondsInterval(approxInterval) {
return nice(approxInterval, true);
}
function getFirstTimestampOfUnit(date4, unitName, isUTC) {
var outDate = new Date(date4);
switch (getPrimaryTimeUnit(unitName)) {
case "year":
case "month":
outDate[monthSetterName(isUTC)](0);
case "day":
outDate[dateSetterName(isUTC)](1);
case "hour":
outDate[hoursSetterName(isUTC)](0);
case "minute":
outDate[minutesSetterName(isUTC)](0);
case "second":
outDate[secondsSetterName(isUTC)](0);
outDate[millisecondsSetterName(isUTC)](0);
}
return outDate.getTime();
}
function getIntervalTicks(bottomUnitName, approxInterval, isUTC, extent3) {
var safeLimit = 1e4;
var unitNames = timeUnits;
var iter = 0;
function addTicksInSpan(interval, minTimestamp, maxTimestamp, getMethodName, setMethodName, isDate, out2) {
var date4 = new Date(minTimestamp);
var dateTime = minTimestamp;
var d2 = date4[getMethodName]();
while (dateTime < maxTimestamp && dateTime <= extent3[1]) {
out2.push({
value: dateTime
});
d2 += interval;
date4[setMethodName](d2);
dateTime = date4.getTime();
}
out2.push({
value: dateTime,
notAdd: true
});
}
function addLevelTicks(unitName, lastLevelTicks, levelTicks2) {
var newAddedTicks = [];
var isFirstLevel = !lastLevelTicks.length;
if (isUnitValueSame(getPrimaryTimeUnit(unitName), extent3[0], extent3[1], isUTC)) {
return;
}
if (isFirstLevel) {
lastLevelTicks = [{
// TODO Optimize. Not include so may ticks.
value: getFirstTimestampOfUnit(new Date(extent3[0]), unitName, isUTC)
}, {
value: extent3[1]
}];
}
for (var i2 = 0; i2 < lastLevelTicks.length - 1; i2++) {
var startTick = lastLevelTicks[i2].value;
var endTick = lastLevelTicks[i2 + 1].value;
if (startTick === endTick) {
continue;
}
var interval = void 0;
var getterName = void 0;
var setterName = void 0;
var isDate = false;
switch (unitName) {
case "year":
interval = Math.max(1, Math.round(approxInterval / ONE_DAY / 365));
getterName = fullYearGetterName(isUTC);
setterName = fullYearSetterName(isUTC);
break;
case "half-year":
case "quarter":
case "month":
interval = getMonthInterval(approxInterval);
getterName = monthGetterName(isUTC);
setterName = monthSetterName(isUTC);
break;
case "week":
case "half-week":
case "day":
interval = getDateInterval(approxInterval);
getterName = dateGetterName(isUTC);
setterName = dateSetterName(isUTC);
isDate = true;
break;
case "half-day":
case "quarter-day":
case "hour":
interval = getHourInterval(approxInterval);
getterName = hoursGetterName(isUTC);
setterName = hoursSetterName(isUTC);
break;
case "minute":
interval = getMinutesAndSecondsInterval(approxInterval, true);
getterName = minutesGetterName(isUTC);
setterName = minutesSetterName(isUTC);
break;
case "second":
interval = getMinutesAndSecondsInterval(approxInterval, false);
getterName = secondsGetterName(isUTC);
setterName = secondsSetterName(isUTC);
break;
case "millisecond":
interval = getMillisecondsInterval(approxInterval);
getterName = millisecondsGetterName(isUTC);
setterName = millisecondsSetterName(isUTC);
break;
}
addTicksInSpan(interval, startTick, endTick, getterName, setterName, isDate, newAddedTicks);
if (unitName === "year" && levelTicks2.length > 1 && i2 === 0) {
levelTicks2.unshift({
value: levelTicks2[0].value - interval
});
}
}
for (var i2 = 0; i2 < newAddedTicks.length; i2++) {
levelTicks2.push(newAddedTicks[i2]);
}
return newAddedTicks;
}
var levelsTicks = [];
var currentLevelTicks = [];
var tickCount = 0;
var lastLevelTickCount = 0;
for (var i = 0; i < unitNames.length && iter++ < safeLimit; ++i) {
var primaryTimeUnit = getPrimaryTimeUnit(unitNames[i]);
if (!isPrimaryTimeUnit(unitNames[i])) {
continue;
}
addLevelTicks(unitNames[i], levelsTicks[levelsTicks.length - 1] || [], currentLevelTicks);
var nextPrimaryTimeUnit = unitNames[i + 1] ? getPrimaryTimeUnit(unitNames[i + 1]) : null;
if (primaryTimeUnit !== nextPrimaryTimeUnit) {
if (currentLevelTicks.length) {
lastLevelTickCount = tickCount;
currentLevelTicks.sort(function(a, b2) {
return a.value - b2.value;
});
var levelTicksRemoveDuplicated = [];
for (var i_1 = 0; i_1 < currentLevelTicks.length; ++i_1) {
var tickValue = currentLevelTicks[i_1].value;
if (i_1 === 0 || currentLevelTicks[i_1 - 1].value !== tickValue) {
levelTicksRemoveDuplicated.push(currentLevelTicks[i_1]);
if (tickValue >= extent3[0] && tickValue <= extent3[1]) {
tickCount++;
}
}
}
var targetTickNum = (extent3[1] - extent3[0]) / approxInterval;
if (tickCount > targetTickNum * 1.5 && lastLevelTickCount > targetTickNum / 1.5) {
break;
}
levelsTicks.push(levelTicksRemoveDuplicated);
if (tickCount > targetTickNum || bottomUnitName === unitNames[i]) {
break;
}
}
currentLevelTicks = [];
}
}
var levelsTicksInExtent = filter(map$1(levelsTicks, function(levelTicks2) {
return filter(levelTicks2, function(tick) {
return tick.value >= extent3[0] && tick.value <= extent3[1] && !tick.notAdd;
});
}), function(levelTicks2) {
return levelTicks2.length > 0;
});
var ticks = [];
var maxLevel = levelsTicksInExtent.length - 1;
for (var i = 0; i < levelsTicksInExtent.length; ++i) {
var levelTicks = levelsTicksInExtent[i];
for (var k2 = 0; k2 < levelTicks.length; ++k2) {
ticks.push({
value: levelTicks[k2].value,
level: maxLevel - i
});
}
}
ticks.sort(function(a, b2) {
return a.value - b2.value;
});
var result = [];
for (var i = 0; i < ticks.length; ++i) {
if (i === 0 || ticks[i].value !== ticks[i - 1].value) {
result.push(ticks[i]);
}
}
return result;
}
Scale.registerClass(TimeScale);
var scaleProto = Scale.prototype;
var intervalScaleProto = IntervalScale.prototype;
var roundingErrorFix = round$3;
var mathFloor$1 = Math.floor;
var mathCeil$1 = Math.ceil;
var mathPow$1 = Math.pow;
var mathLog$1 = Math.log;
var LogScale = (
/** @class */
function(_super) {
__extends(LogScale2, _super);
function LogScale2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = "log";
_this.base = 10;
_this._originalScale = new IntervalScale();
_this._interval = 0;
return _this;
}
LogScale2.prototype.getTicks = function(expandToNicedExtent) {
var originalScale = this._originalScale;
var extent3 = this._extent;
var originalExtent = originalScale.getExtent();
var ticks = intervalScaleProto.getTicks.call(this, expandToNicedExtent);
return map$1(ticks, function(tick) {
var val = tick.value;
var powVal = round$3(mathPow$1(this.base, val));
powVal = val === extent3[0] && this._fixMin ? fixRoundingError(powVal, originalExtent[0]) : powVal;
powVal = val === extent3[1] && this._fixMax ? fixRoundingError(powVal, originalExtent[1]) : powVal;
return {
value: powVal
};
}, this);
};
LogScale2.prototype.setExtent = function(start2, end2) {
var base2 = mathLog$1(this.base);
start2 = mathLog$1(Math.max(0, start2)) / base2;
end2 = mathLog$1(Math.max(0, end2)) / base2;
intervalScaleProto.setExtent.call(this, start2, end2);
};
LogScale2.prototype.getExtent = function() {
var base2 = this.base;
var extent3 = scaleProto.getExtent.call(this);
extent3[0] = mathPow$1(base2, extent3[0]);
extent3[1] = mathPow$1(base2, extent3[1]);
var originalScale = this._originalScale;
var originalExtent = originalScale.getExtent();
this._fixMin && (extent3[0] = fixRoundingError(extent3[0], originalExtent[0]));
this._fixMax && (extent3[1] = fixRoundingError(extent3[1], originalExtent[1]));
return extent3;
};
LogScale2.prototype.unionExtent = function(extent3) {
this._originalScale.unionExtent(extent3);
var base2 = this.base;
extent3[0] = mathLog$1(extent3[0]) / mathLog$1(base2);
extent3[1] = mathLog$1(extent3[1]) / mathLog$1(base2);
scaleProto.unionExtent.call(this, extent3);
};
LogScale2.prototype.unionExtentFromData = function(data, dim) {
this.unionExtent(data.getApproximateExtent(dim));
};
LogScale2.prototype.calcNiceTicks = function(approxTickNum) {
approxTickNum = approxTickNum || 10;
var extent3 = this._extent;
var span = extent3[1] - extent3[0];
if (span === Infinity || span <= 0) {
return;
}
var interval = quantity(span);
var err = approxTickNum / span * interval;
if (err <= 0.5) {
interval *= 10;
}
while (!isNaN(interval) && Math.abs(interval) < 1 && Math.abs(interval) > 0) {
interval *= 10;
}
var niceExtent = [round$3(mathCeil$1(extent3[0] / interval) * interval), round$3(mathFloor$1(extent3[1] / interval) * interval)];
this._interval = interval;
this._niceExtent = niceExtent;
};
LogScale2.prototype.calcNiceExtent = function(opt) {
intervalScaleProto.calcNiceExtent.call(this, opt);
this._fixMin = opt.fixMin;
this._fixMax = opt.fixMax;
};
LogScale2.prototype.parse = function(val) {
return val;
};
LogScale2.prototype.contain = function(val) {
val = mathLog$1(val) / mathLog$1(this.base);
return contain$1(val, this._extent);
};
LogScale2.prototype.normalize = function(val) {
val = mathLog$1(val) / mathLog$1(this.base);
return normalize$2(val, this._extent);
};
LogScale2.prototype.scale = function(val) {
val = scale(val, this._extent);
return mathPow$1(this.base, val);
};
LogScale2.type = "log";
return LogScale2;
}(Scale)
);
var proto = LogScale.prototype;
proto.getMinorTicks = intervalScaleProto.getMinorTicks;
proto.getLabel = intervalScaleProto.getLabel;
function fixRoundingError(val, originalVal) {
return roundingErrorFix(val, getPrecision(originalVal));
}
Scale.registerClass(LogScale);
var ScaleRawExtentInfo = (
/** @class */
function() {
function ScaleRawExtentInfo2(scale2, model, originalExtent) {
this._prepareParams(scale2, model, originalExtent);
}
ScaleRawExtentInfo2.prototype._prepareParams = function(scale2, model, dataExtent) {
if (dataExtent[1] < dataExtent[0]) {
dataExtent = [NaN, NaN];
}
this._dataMin = dataExtent[0];
this._dataMax = dataExtent[1];
var isOrdinal = this._isOrdinal = scale2.type === "ordinal";
this._needCrossZero = scale2.type === "interval" && model.getNeedCrossZero && model.getNeedCrossZero();
var axisMinValue = model.get("min", true);
if (axisMinValue == null) {
axisMinValue = model.get("startValue", true);
}
var modelMinRaw = this._modelMinRaw = axisMinValue;
if (isFunction$1(modelMinRaw)) {
this._modelMinNum = parseAxisModelMinMax(scale2, modelMinRaw({
min: dataExtent[0],
max: dataExtent[1]
}));
} else if (modelMinRaw !== "dataMin") {
this._modelMinNum = parseAxisModelMinMax(scale2, modelMinRaw);
}
var modelMaxRaw = this._modelMaxRaw = model.get("max", true);
if (isFunction$1(modelMaxRaw)) {
this._modelMaxNum = parseAxisModelMinMax(scale2, modelMaxRaw({
min: dataExtent[0],
max: dataExtent[1]
}));
} else if (modelMaxRaw !== "dataMax") {
this._modelMaxNum = parseAxisModelMinMax(scale2, modelMaxRaw);
}
if (isOrdinal) {
this._axisDataLen = model.getCategories().length;
} else {
var boundaryGap = model.get("boundaryGap");
var boundaryGapArr = isArray$1(boundaryGap) ? boundaryGap : [boundaryGap || 0, boundaryGap || 0];
if (typeof boundaryGapArr[0] === "boolean" || typeof boundaryGapArr[1] === "boolean") {
this._boundaryGapInner = [0, 0];
} else {
this._boundaryGapInner = [parsePercent$1(boundaryGapArr[0], 1), parsePercent$1(boundaryGapArr[1], 1)];
}
}
};
ScaleRawExtentInfo2.prototype.calculate = function() {
var isOrdinal = this._isOrdinal;
var dataMin = this._dataMin;
var dataMax = this._dataMax;
var axisDataLen = this._axisDataLen;
var boundaryGapInner = this._boundaryGapInner;
var span = !isOrdinal ? dataMax - dataMin || Math.abs(dataMin) : null;
var min3 = this._modelMinRaw === "dataMin" ? dataMin : this._modelMinNum;
var max3 = this._modelMaxRaw === "dataMax" ? dataMax : this._modelMaxNum;
var minFixed = min3 != null;
var maxFixed = max3 != null;
if (min3 == null) {
min3 = isOrdinal ? axisDataLen ? 0 : NaN : dataMin - boundaryGapInner[0] * span;
}
if (max3 == null) {
max3 = isOrdinal ? axisDataLen ? axisDataLen - 1 : NaN : dataMax + boundaryGapInner[1] * span;
}
(min3 == null || !isFinite(min3)) && (min3 = NaN);
(max3 == null || !isFinite(max3)) && (max3 = NaN);
var isBlank = eqNaN(min3) || eqNaN(max3) || isOrdinal && !axisDataLen;
if (this._needCrossZero) {
if (min3 > 0 && max3 > 0 && !minFixed) {
min3 = 0;
}
if (min3 < 0 && max3 < 0 && !maxFixed) {
max3 = 0;
}
}
var determinedMin = this._determinedMin;
var determinedMax = this._determinedMax;
if (determinedMin != null) {
min3 = determinedMin;
minFixed = true;
}
if (determinedMax != null) {
max3 = determinedMax;
maxFixed = true;
}
return {
min: min3,
max: max3,
minFixed,
maxFixed,
isBlank
};
};
ScaleRawExtentInfo2.prototype.modifyDataMinMax = function(minMaxName, val) {
this[DATA_MIN_MAX_ATTR[minMaxName]] = val;
};
ScaleRawExtentInfo2.prototype.setDeterminedMinMax = function(minMaxName, val) {
var attr = DETERMINED_MIN_MAX_ATTR[minMaxName];
this[attr] = val;
};
ScaleRawExtentInfo2.prototype.freeze = function() {
this.frozen = true;
};
return ScaleRawExtentInfo2;
}()
);
var DETERMINED_MIN_MAX_ATTR = {
min: "_determinedMin",
max: "_determinedMax"
};
var DATA_MIN_MAX_ATTR = {
min: "_dataMin",
max: "_dataMax"
};
function ensureScaleRawExtentInfo(scale2, model, originalExtent) {
var rawExtentInfo = scale2.rawExtentInfo;
if (rawExtentInfo) {
return rawExtentInfo;
}
rawExtentInfo = new ScaleRawExtentInfo(scale2, model, originalExtent);
scale2.rawExtentInfo = rawExtentInfo;
return rawExtentInfo;
}
function parseAxisModelMinMax(scale2, minMax) {
return minMax == null ? null : eqNaN(minMax) ? NaN : scale2.parse(minMax);
}
function getScaleExtent(scale2, model) {
var scaleType = scale2.type;
var rawExtentResult = ensureScaleRawExtentInfo(scale2, model, scale2.getExtent()).calculate();
scale2.setBlank(rawExtentResult.isBlank);
var min3 = rawExtentResult.min;
var max3 = rawExtentResult.max;
var ecModel = model.ecModel;
if (ecModel && scaleType === "time") {
var barSeriesModels = prepareLayoutBarSeries("bar", ecModel);
var isBaseAxisAndHasBarSeries_1 = false;
each$f(barSeriesModels, function(seriesModel) {
isBaseAxisAndHasBarSeries_1 = isBaseAxisAndHasBarSeries_1 || seriesModel.getBaseAxis() === model.axis;
});
if (isBaseAxisAndHasBarSeries_1) {
var barWidthAndOffset = makeColumnLayout(barSeriesModels);
var adjustedScale = adjustScaleForOverflow(min3, max3, model, barWidthAndOffset);
min3 = adjustedScale.min;
max3 = adjustedScale.max;
}
}
return {
extent: [min3, max3],
// "fix" means "fixed", the value should not be
// changed in the subsequent steps.
fixMin: rawExtentResult.minFixed,
fixMax: rawExtentResult.maxFixed
};
}
function adjustScaleForOverflow(min3, max3, model, barWidthAndOffset) {
var axisExtent = model.axis.getExtent();
var axisLength = axisExtent[1] - axisExtent[0];
var barsOnCurrentAxis = retrieveColumnLayout(barWidthAndOffset, model.axis);
if (barsOnCurrentAxis === void 0) {
return {
min: min3,
max: max3
};
}
var minOverflow = Infinity;
each$f(barsOnCurrentAxis, function(item) {
minOverflow = Math.min(item.offset, minOverflow);
});
var maxOverflow = -Infinity;
each$f(barsOnCurrentAxis, function(item) {
maxOverflow = Math.max(item.offset + item.width, maxOverflow);
});
minOverflow = Math.abs(minOverflow);
maxOverflow = Math.abs(maxOverflow);
var totalOverFlow = minOverflow + maxOverflow;
var oldRange = max3 - min3;
var oldRangePercentOfNew = 1 - (minOverflow + maxOverflow) / axisLength;
var overflowBuffer = oldRange / oldRangePercentOfNew - oldRange;
max3 += overflowBuffer * (maxOverflow / totalOverFlow);
min3 -= overflowBuffer * (minOverflow / totalOverFlow);
return {
min: min3,
max: max3
};
}
function niceScaleExtent(scale2, inModel) {
var model = inModel;
var extentInfo = getScaleExtent(scale2, model);
var extent3 = extentInfo.extent;
var splitNumber = model.get("splitNumber");
if (scale2 instanceof LogScale) {
scale2.base = model.get("logBase");
}
var scaleType = scale2.type;
var interval = model.get("interval");
var isIntervalOrTime = scaleType === "interval" || scaleType === "time";
scale2.setExtent(extent3[0], extent3[1]);
scale2.calcNiceExtent({
splitNumber,
fixMin: extentInfo.fixMin,
fixMax: extentInfo.fixMax,
minInterval: isIntervalOrTime ? model.get("minInterval") : null,
maxInterval: isIntervalOrTime ? model.get("maxInterval") : null
});
if (interval != null) {
scale2.setInterval && scale2.setInterval(interval);
}
}
function createScaleByModel$1(model, axisType) {
axisType = axisType || model.get("type");
if (axisType) {
switch (axisType) {
case "category":
return new OrdinalScale({
ordinalMeta: model.getOrdinalMeta ? model.getOrdinalMeta() : model.getCategories(),
extent: [Infinity, -Infinity]
});
case "time":
return new TimeScale({
locale: model.ecModel.getLocaleModel(),
useUTC: model.ecModel.get("useUTC")
});
default:
return new (Scale.getClass(axisType) || IntervalScale)();
}
}
}
function ifAxisCrossZero(axis) {
var dataExtent = axis.scale.getExtent();
var min3 = dataExtent[0];
var max3 = dataExtent[1];
return !(min3 > 0 && max3 > 0 || min3 < 0 && max3 < 0);
}
function makeLabelFormatter(axis) {
var labelFormatter = axis.getLabelModel().get("formatter");
var categoryTickStart = axis.type === "category" ? axis.scale.getExtent()[0] : null;
if (axis.scale.type === "time") {
return /* @__PURE__ */ function(tpl) {
return function(tick, idx) {
return axis.scale.getFormattedLabel(tick, idx, tpl);
};
}(labelFormatter);
} else if (isString$1(labelFormatter)) {
return /* @__PURE__ */ function(tpl) {
return function(tick) {
var label = axis.scale.getLabel(tick);
var text = tpl.replace("{value}", label != null ? label : "");
return text;
};
}(labelFormatter);
} else if (isFunction$1(labelFormatter)) {
return /* @__PURE__ */ function(cb2) {
return function(tick, idx) {
if (categoryTickStart != null) {
idx = tick.value - categoryTickStart;
}
return cb2(getAxisRawValue(axis, tick), idx, tick.level != null ? {
level: tick.level
} : null);
};
}(labelFormatter);
} else {
return function(tick) {
return axis.scale.getLabel(tick);
};
}
}
function getAxisRawValue(axis, tick) {
return axis.type === "category" ? axis.scale.getLabel(tick) : tick.value;
}
function estimateLabelUnionRect(axis) {
var axisModel = axis.model;
var scale2 = axis.scale;
if (!axisModel.get(["axisLabel", "show"]) || scale2.isBlank()) {
return;
}
var realNumberScaleTicks;
var tickCount;
var categoryScaleExtent = scale2.getExtent();
if (scale2 instanceof OrdinalScale) {
tickCount = scale2.count();
} else {
realNumberScaleTicks = scale2.getTicks();
tickCount = realNumberScaleTicks.length;
}
var axisLabelModel = axis.getLabelModel();
var labelFormatter = makeLabelFormatter(axis);
var rect;
var step = 1;
if (tickCount > 40) {
step = Math.ceil(tickCount / 40);
}
for (var i = 0; i < tickCount; i += step) {
var tick = realNumberScaleTicks ? realNumberScaleTicks[i] : {
value: categoryScaleExtent[0] + i
};
var label = labelFormatter(tick, i);
var unrotatedSingleRect = axisLabelModel.getTextRect(label);
var singleRect = rotateTextRect(unrotatedSingleRect, axisLabelModel.get("rotate") || 0);
rect ? rect.union(singleRect) : rect = singleRect;
}
return rect;
}
function rotateTextRect(textRect, rotate2) {
var rotateRadians = rotate2 * Math.PI / 180;
var beforeWidth = textRect.width;
var beforeHeight = textRect.height;
var afterWidth = beforeWidth * Math.abs(Math.cos(rotateRadians)) + Math.abs(beforeHeight * Math.sin(rotateRadians));
var afterHeight = beforeWidth * Math.abs(Math.sin(rotateRadians)) + Math.abs(beforeHeight * Math.cos(rotateRadians));
var rotatedRect = new BoundingRect(textRect.x, textRect.y, afterWidth, afterHeight);
return rotatedRect;
}
function getOptionCategoryInterval(model) {
var interval = model.get("interval");
return interval == null ? "auto" : interval;
}
function shouldShowAllLabels(axis) {
return axis.type === "category" && getOptionCategoryInterval(axis.getLabelModel()) === 0;
}
function getDataDimensionsOnAxis(data, axisDim) {
var dataDimMap = {};
each$f(data.mapDimensionsAll(axisDim), function(dataDim) {
dataDimMap[getStackedDimension(data, dataDim)] = true;
});
return keys(dataDimMap);
}
function unionAxisExtentFromData(dataExtent, data, axisDim) {
if (data) {
each$f(getDataDimensionsOnAxis(data, axisDim), function(dim) {
var seriesExtent = data.getApproximateExtent(dim);
seriesExtent[0] < dataExtent[0] && (dataExtent[0] = seriesExtent[0]);
seriesExtent[1] > dataExtent[1] && (dataExtent[1] = seriesExtent[1]);
});
}
}
var AxisModelCommonMixin = (
/** @class */
function() {
function AxisModelCommonMixin2() {
}
AxisModelCommonMixin2.prototype.getNeedCrossZero = function() {
var option = this.option;
return !option.scale;
};
AxisModelCommonMixin2.prototype.getCoordSysModel = function() {
return;
};
return AxisModelCommonMixin2;
}()
);
function createList$2(seriesModel) {
return createSeriesData(null, seriesModel);
}
var dataStack = {
isDimensionStacked,
enableDataStack,
getStackedDimension
};
function createScale(dataExtent, option) {
var axisModel = option;
if (!(option instanceof Model)) {
axisModel = new Model(option);
}
var scale2 = createScaleByModel$1(axisModel);
scale2.setExtent(dataExtent[0], dataExtent[1]);
niceScaleExtent(scale2, axisModel);
return scale2;
}
function mixinAxisModelCommonMethods(Model2) {
mixin(Model2, AxisModelCommonMixin);
}
function createTextStyle(textStyleModel, opts) {
opts = opts || {};
return createTextStyle$1(textStyleModel, null, null, opts.state !== "normal");
}
const helper = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
createDimensions,
createList: createList$2,
createScale,
createSymbol: createSymbol$1,
createTextStyle,
dataStack,
enableHoverEmphasis,
getECData,
getLayoutRect,
mixinAxisModelCommonMethods
}, Symbol.toStringTag, { value: "Module" }));
var EPSILON = 1e-8;
function isAroundEqual(a, b2) {
return Math.abs(a - b2) < EPSILON;
}
function contain(points2, x2, y2) {
var w2 = 0;
var p2 = points2[0];
if (!p2) {
return false;
}
for (var i = 1; i < points2.length; i++) {
var p22 = points2[i];
w2 += windingLine(p2[0], p2[1], p22[0], p22[1], x2, y2);
p2 = p22;
}
var p0 = points2[0];
if (!isAroundEqual(p2[0], p0[0]) || !isAroundEqual(p2[1], p0[1])) {
w2 += windingLine(p2[0], p2[1], p0[0], p0[1], x2, y2);
}
return w2 !== 0;
}
var TMP_TRANSFORM = [];
function transformPoints(points2, transform2) {
for (var p2 = 0; p2 < points2.length; p2++) {
applyTransform$1(points2[p2], points2[p2], transform2);
}
}
function updateBBoxFromPoints(points2, min3, max3, projection) {
for (var i = 0; i < points2.length; i++) {
var p2 = points2[i];
if (projection) {
p2 = projection.project(p2);
}
if (p2 && isFinite(p2[0]) && isFinite(p2[1])) {
min$1(min3, min3, p2);
max$1(max3, max3, p2);
}
}
}
function centroid$1(points2) {
var signedArea = 0;
var cx = 0;
var cy = 0;
var len2 = points2.length;
var x0 = points2[len2 - 1][0];
var y0 = points2[len2 - 1][1];
for (var i = 0; i < len2; i++) {
var x1 = points2[i][0];
var y1 = points2[i][1];
var a = x0 * y1 - x1 * y0;
signedArea += a;
cx += (x0 + x1) * a;
cy += (y0 + y1) * a;
x0 = x1;
y0 = y1;
}
return signedArea ? [cx / signedArea / 3, cy / signedArea / 3, signedArea] : [points2[0][0] || 0, points2[0][1] || 0];
}
var Region = (
/** @class */
function() {
function Region2(name) {
this.name = name;
}
Region2.prototype.setCenter = function(center2) {
this._center = center2;
};
Region2.prototype.getCenter = function() {
var center2 = this._center;
if (!center2) {
center2 = this._center = this.calcCenter();
}
return center2;
};
return Region2;
}()
);
var GeoJSONPolygonGeometry = (
/** @class */
/* @__PURE__ */ function() {
function GeoJSONPolygonGeometry2(exterior, interiors) {
this.type = "polygon";
this.exterior = exterior;
this.interiors = interiors;
}
return GeoJSONPolygonGeometry2;
}()
);
var GeoJSONLineStringGeometry = (
/** @class */
/* @__PURE__ */ function() {
function GeoJSONLineStringGeometry2(points2) {
this.type = "linestring";
this.points = points2;
}
return GeoJSONLineStringGeometry2;
}()
);
var GeoJSONRegion = (
/** @class */
function(_super) {
__extends(GeoJSONRegion2, _super);
function GeoJSONRegion2(name, geometries, cp) {
var _this = _super.call(this, name) || this;
_this.type = "geoJSON";
_this.geometries = geometries;
_this._center = cp && [cp[0], cp[1]];
return _this;
}
GeoJSONRegion2.prototype.calcCenter = function() {
var geometries = this.geometries;
var largestGeo;
var largestGeoSize = 0;
for (var i = 0; i < geometries.length; i++) {
var geo = geometries[i];
var exterior = geo.exterior;
var size = exterior && exterior.length;
if (size > largestGeoSize) {
largestGeo = geo;
largestGeoSize = size;
}
}
if (largestGeo) {
return centroid$1(largestGeo.exterior);
}
var rect = this.getBoundingRect();
return [rect.x + rect.width / 2, rect.y + rect.height / 2];
};
GeoJSONRegion2.prototype.getBoundingRect = function(projection) {
var rect = this._rect;
if (rect && !projection) {
return rect;
}
var min3 = [Infinity, Infinity];
var max3 = [-Infinity, -Infinity];
var geometries = this.geometries;
each$f(geometries, function(geo) {
if (geo.type === "polygon") {
updateBBoxFromPoints(geo.exterior, min3, max3, projection);
} else {
each$f(geo.points, function(points2) {
updateBBoxFromPoints(points2, min3, max3, projection);
});
}
});
if (!(isFinite(min3[0]) && isFinite(min3[1]) && isFinite(max3[0]) && isFinite(max3[1]))) {
min3[0] = min3[1] = max3[0] = max3[1] = 0;
}
rect = new BoundingRect(min3[0], min3[1], max3[0] - min3[0], max3[1] - min3[1]);
if (!projection) {
this._rect = rect;
}
return rect;
};
GeoJSONRegion2.prototype.contain = function(coord) {
var rect = this.getBoundingRect();
var geometries = this.geometries;
if (!rect.contain(coord[0], coord[1])) {
return false;
}
loopGeo: for (var i = 0, len2 = geometries.length; i < len2; i++) {
var geo = geometries[i];
if (geo.type !== "polygon") {
continue;
}
var exterior = geo.exterior;
var interiors = geo.interiors;
if (contain(exterior, coord[0], coord[1])) {
for (var k2 = 0; k2 < (interiors ? interiors.length : 0); k2++) {
if (contain(interiors[k2], coord[0], coord[1])) {
continue loopGeo;
}
}
return true;
}
}
return false;
};
GeoJSONRegion2.prototype.transformTo = function(x2, y2, width, height) {
var rect = this.getBoundingRect();
var aspect = rect.width / rect.height;
if (!width) {
width = aspect * height;
} else if (!height) {
height = width / aspect;
}
var target = new BoundingRect(x2, y2, width, height);
var transform2 = rect.calculateTransform(target);
var geometries = this.geometries;
for (var i = 0; i < geometries.length; i++) {
var geo = geometries[i];
if (geo.type === "polygon") {
transformPoints(geo.exterior, transform2);
each$f(geo.interiors, function(interior) {
transformPoints(interior, transform2);
});
} else {
each$f(geo.points, function(points2) {
transformPoints(points2, transform2);
});
}
}
rect = this._rect;
rect.copy(target);
this._center = [rect.x + rect.width / 2, rect.y + rect.height / 2];
};
GeoJSONRegion2.prototype.cloneShallow = function(name) {
name == null && (name = this.name);
var newRegion = new GeoJSONRegion2(name, this.geometries, this._center);
newRegion._rect = this._rect;
newRegion.transformTo = null;
return newRegion;
};
return GeoJSONRegion2;
}(Region)
);
var GeoSVGRegion = (
/** @class */
function(_super) {
__extends(GeoSVGRegion2, _super);
function GeoSVGRegion2(name, elOnlyForCalculate) {
var _this = _super.call(this, name) || this;
_this.type = "geoSVG";
_this._elOnlyForCalculate = elOnlyForCalculate;
return _this;
}
GeoSVGRegion2.prototype.calcCenter = function() {
var el2 = this._elOnlyForCalculate;
var rect = el2.getBoundingRect();
var center2 = [rect.x + rect.width / 2, rect.y + rect.height / 2];
var mat = identity(TMP_TRANSFORM);
var target = el2;
while (target && !target.isGeoSVGGraphicRoot) {
mul(mat, target.getLocalTransform(), mat);
target = target.parent;
}
invert(mat, mat);
applyTransform$1(center2, center2, mat);
return center2;
};
return GeoSVGRegion2;
}(Region)
);
function decode(json) {
if (!json.UTF8Encoding) {
return json;
}
var jsonCompressed = json;
var encodeScale = jsonCompressed.UTF8Scale;
if (encodeScale == null) {
encodeScale = 1024;
}
var features2 = jsonCompressed.features;
each$f(features2, function(feature) {
var geometry = feature.geometry;
var encodeOffsets = geometry.encodeOffsets;
var coordinates = geometry.coordinates;
if (!encodeOffsets) {
return;
}
switch (geometry.type) {
case "LineString":
geometry.coordinates = decodeRing(coordinates, encodeOffsets, encodeScale);
break;
case "Polygon":
decodeRings(coordinates, encodeOffsets, encodeScale);
break;
case "MultiLineString":
decodeRings(coordinates, encodeOffsets, encodeScale);
break;
case "MultiPolygon":
each$f(coordinates, function(rings, idx) {
return decodeRings(rings, encodeOffsets[idx], encodeScale);
});
}
});
jsonCompressed.UTF8Encoding = false;
return jsonCompressed;
}
function decodeRings(rings, encodeOffsets, encodeScale) {
for (var c2 = 0; c2 < rings.length; c2++) {
rings[c2] = decodeRing(rings[c2], encodeOffsets[c2], encodeScale);
}
}
function decodeRing(coordinate, encodeOffsets, encodeScale) {
var result = [];
var prevX = encodeOffsets[0];
var prevY = encodeOffsets[1];
for (var i = 0; i < coordinate.length; i += 2) {
var x2 = coordinate.charCodeAt(i) - 64;
var y2 = coordinate.charCodeAt(i + 1) - 64;
x2 = x2 >> 1 ^ -(x2 & 1);
y2 = y2 >> 1 ^ -(y2 & 1);
x2 += prevX;
y2 += prevY;
prevX = x2;
prevY = y2;
result.push([x2 / encodeScale, y2 / encodeScale]);
}
return result;
}
function parseGeoJSON(geoJson, nameProperty) {
geoJson = decode(geoJson);
return map$1(filter(geoJson.features, function(featureObj) {
return featureObj.geometry && featureObj.properties && featureObj.geometry.coordinates.length > 0;
}), function(featureObj) {
var properties = featureObj.properties;
var geo = featureObj.geometry;
var geometries = [];
switch (geo.type) {
case "Polygon":
var coordinates = geo.coordinates;
geometries.push(new GeoJSONPolygonGeometry(coordinates[0], coordinates.slice(1)));
break;
case "MultiPolygon":
each$f(geo.coordinates, function(item) {
if (item[0]) {
geometries.push(new GeoJSONPolygonGeometry(item[0], item.slice(1)));
}
});
break;
case "LineString":
geometries.push(new GeoJSONLineStringGeometry([geo.coordinates]));
break;
case "MultiLineString":
geometries.push(new GeoJSONLineStringGeometry(geo.coordinates));
}
var region = new GeoJSONRegion(properties[nameProperty || "name"], geometries, properties.cp);
region.properties = properties;
return region;
});
}
const number3 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
MAX_SAFE_INTEGER,
asc: asc$2,
getPercentWithPrecision,
getPixelPrecision,
getPrecision,
getPrecisionSafe,
isNumeric,
isRadianAroundZero,
linearMap: linearMap$2,
nice,
numericToNumber,
parseDate,
quantile,
quantity,
quantityExponent,
reformIntervals,
remRadian,
round: round$3
}, Symbol.toStringTag, { value: "Module" }));
const time = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
format: format$1,
parse: parseDate
}, Symbol.toStringTag, { value: "Module" }));
const graphic = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
Arc,
BezierCurve,
BoundingRect,
Circle,
CompoundPath,
Ellipse,
Group: Group$3,
Image: ZRImage,
IncrementalDisplayable,
Line: Line$1,
LinearGradient,
Polygon,
Polyline: Polyline$1,
RadialGradient,
Rect: Rect$2,
Ring,
Sector,
Text: ZRText,
clipPointsByRect,
clipRectByRect,
createIcon,
extendPath,
extendShape,
getShapeClass,
getTransform: getTransform$1,
initProps,
makeImage,
makePath,
mergePath,
registerShape,
resizePath,
updateProps: updateProps$1
}, Symbol.toStringTag, { value: "Module" }));
const format = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
addCommas,
capitalFirst,
encodeHTML,
formatTime: formatTime$1,
formatTpl,
getTextRect,
getTooltipMarker,
normalizeCssArray,
toCamelCase,
truncateText
}, Symbol.toStringTag, { value: "Module" }));
const util = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
bind: bind$2,
clone: clone$4,
curry: curry$1,
defaults,
each: each$f,
extend,
filter,
indexOf,
inherits,
isArray: isArray$1,
isFunction: isFunction$1,
isObject: isObject$3,
isString: isString$1,
map: map$1,
merge,
reduce
}, Symbol.toStringTag, { value: "Module" }));
var inner$g = makeInner();
function tickValuesToNumbers(axis, values) {
var nums = map$1(values, function(val) {
return axis.scale.parse(val);
});
if (axis.type === "time" && nums.length > 0) {
nums.sort();
nums.unshift(nums[0]);
nums.push(nums[nums.length - 1]);
}
return nums;
}
function createAxisLabels(axis) {
var custom = axis.getLabelModel().get("customValues");
if (custom) {
var labelFormatter_1 = makeLabelFormatter(axis);
return {
labels: tickValuesToNumbers(axis, custom).map(function(numval) {
var tick = {
value: numval
};
return {
formattedLabel: labelFormatter_1(tick),
rawLabel: axis.scale.getLabel(tick),
tickValue: numval
};
})
};
}
return axis.type === "category" ? makeCategoryLabels(axis) : makeRealNumberLabels(axis);
}
function createAxisTicks(axis, tickModel) {
var custom = axis.getTickModel().get("customValues");
if (custom) {
return {
ticks: tickValuesToNumbers(axis, custom)
};
}
return axis.type === "category" ? makeCategoryTicks(axis, tickModel) : {
ticks: map$1(axis.scale.getTicks(), function(tick) {
return tick.value;
})
};
}
function makeCategoryLabels(axis) {
var labelModel = axis.getLabelModel();
var result = makeCategoryLabelsActually(axis, labelModel);
return !labelModel.get("show") || axis.scale.isBlank() ? {
labels: [],
labelCategoryInterval: result.labelCategoryInterval
} : result;
}
function makeCategoryLabelsActually(axis, labelModel) {
var labelsCache = getListCache(axis, "labels");
var optionLabelInterval = getOptionCategoryInterval(labelModel);
var result = listCacheGet(labelsCache, optionLabelInterval);
if (result) {
return result;
}
var labels;
var numericLabelInterval;
if (isFunction$1(optionLabelInterval)) {
labels = makeLabelsByCustomizedCategoryInterval(axis, optionLabelInterval);
} else {
numericLabelInterval = optionLabelInterval === "auto" ? makeAutoCategoryInterval(axis) : optionLabelInterval;
labels = makeLabelsByNumericCategoryInterval(axis, numericLabelInterval);
}
return listCacheSet(labelsCache, optionLabelInterval, {
labels,
labelCategoryInterval: numericLabelInterval
});
}
function makeCategoryTicks(axis, tickModel) {
var ticksCache = getListCache(axis, "ticks");
var optionTickInterval = getOptionCategoryInterval(tickModel);
var result = listCacheGet(ticksCache, optionTickInterval);
if (result) {
return result;
}
var ticks;
var tickCategoryInterval;
if (!tickModel.get("show") || axis.scale.isBlank()) {
ticks = [];
}
if (isFunction$1(optionTickInterval)) {
ticks = makeLabelsByCustomizedCategoryInterval(axis, optionTickInterval, true);
} else if (optionTickInterval === "auto") {
var labelsResult = makeCategoryLabelsActually(axis, axis.getLabelModel());
tickCategoryInterval = labelsResult.labelCategoryInterval;
ticks = map$1(labelsResult.labels, function(labelItem) {
return labelItem.tickValue;
});
} else {
tickCategoryInterval = optionTickInterval;
ticks = makeLabelsByNumericCategoryInterval(axis, tickCategoryInterval, true);
}
return listCacheSet(ticksCache, optionTickInterval, {
ticks,
tickCategoryInterval
});
}
function makeRealNumberLabels(axis) {
var ticks = axis.scale.getTicks();
var labelFormatter = makeLabelFormatter(axis);
return {
labels: map$1(ticks, function(tick, idx) {
return {
level: tick.level,
formattedLabel: labelFormatter(tick, idx),
rawLabel: axis.scale.getLabel(tick),
tickValue: tick.value
};
})
};
}
function getListCache(axis, prop) {
return inner$g(axis)[prop] || (inner$g(axis)[prop] = []);
}
function listCacheGet(cache, key) {
for (var i = 0; i < cache.length; i++) {
if (cache[i].key === key) {
return cache[i].value;
}
}
}
function listCacheSet(cache, key, value) {
cache.push({
key,
value
});
return value;
}
function makeAutoCategoryInterval(axis) {
var result = inner$g(axis).autoInterval;
return result != null ? result : inner$g(axis).autoInterval = axis.calculateCategoryInterval();
}
function calculateCategoryInterval(axis) {
var params = fetchAutoCategoryIntervalCalculationParams(axis);
var labelFormatter = makeLabelFormatter(axis);
var rotation = (params.axisRotate - params.labelRotate) / 180 * Math.PI;
var ordinalScale = axis.scale;
var ordinalExtent = ordinalScale.getExtent();
var tickCount = ordinalScale.count();
if (ordinalExtent[1] - ordinalExtent[0] < 1) {
return 0;
}
var step = 1;
if (tickCount > 40) {
step = Math.max(1, Math.floor(tickCount / 40));
}
var tickValue = ordinalExtent[0];
var unitSpan = axis.dataToCoord(tickValue + 1) - axis.dataToCoord(tickValue);
var unitW = Math.abs(unitSpan * Math.cos(rotation));
var unitH = Math.abs(unitSpan * Math.sin(rotation));
var maxW = 0;
var maxH = 0;
for (; tickValue <= ordinalExtent[1]; tickValue += step) {
var width = 0;
var height = 0;
var rect = getBoundingRect(labelFormatter({
value: tickValue
}), params.font, "center", "top");
width = rect.width * 1.3;
height = rect.height * 1.3;
maxW = Math.max(maxW, width, 7);
maxH = Math.max(maxH, height, 7);
}
var dw = maxW / unitW;
var dh2 = maxH / unitH;
isNaN(dw) && (dw = Infinity);
isNaN(dh2) && (dh2 = Infinity);
var interval = Math.max(0, Math.floor(Math.min(dw, dh2)));
var cache = inner$g(axis.model);
var axisExtent = axis.getExtent();
var lastAutoInterval = cache.lastAutoInterval;
var lastTickCount = cache.lastTickCount;
if (lastAutoInterval != null && lastTickCount != null && Math.abs(lastAutoInterval - interval) <= 1 && Math.abs(lastTickCount - tickCount) <= 1 && lastAutoInterval > interval && cache.axisExtent0 === axisExtent[0] && cache.axisExtent1 === axisExtent[1]) {
interval = lastAutoInterval;
} else {
cache.lastTickCount = tickCount;
cache.lastAutoInterval = interval;
cache.axisExtent0 = axisExtent[0];
cache.axisExtent1 = axisExtent[1];
}
return interval;
}
function fetchAutoCategoryIntervalCalculationParams(axis) {
var labelModel = axis.getLabelModel();
return {
axisRotate: axis.getRotate ? axis.getRotate() : axis.isHorizontal && !axis.isHorizontal() ? 90 : 0,
labelRotate: labelModel.get("rotate") || 0,
font: labelModel.getFont()
};
}
function makeLabelsByNumericCategoryInterval(axis, categoryInterval, onlyTick) {
var labelFormatter = makeLabelFormatter(axis);
var ordinalScale = axis.scale;
var ordinalExtent = ordinalScale.getExtent();
var labelModel = axis.getLabelModel();
var result = [];
var step = Math.max((categoryInterval || 0) + 1, 1);
var startTick = ordinalExtent[0];
var tickCount = ordinalScale.count();
if (startTick !== 0 && step > 1 && tickCount / step > 2) {
startTick = Math.round(Math.ceil(startTick / step) * step);
}
var showAllLabel = shouldShowAllLabels(axis);
var includeMinLabel = labelModel.get("showMinLabel") || showAllLabel;
var includeMaxLabel = labelModel.get("showMaxLabel") || showAllLabel;
if (includeMinLabel && startTick !== ordinalExtent[0]) {
addItem(ordinalExtent[0]);
}
var tickValue = startTick;
for (; tickValue <= ordinalExtent[1]; tickValue += step) {
addItem(tickValue);
}
if (includeMaxLabel && tickValue - step !== ordinalExtent[1]) {
addItem(ordinalExtent[1]);
}
function addItem(tickValue2) {
var tickObj = {
value: tickValue2
};
result.push(onlyTick ? tickValue2 : {
formattedLabel: labelFormatter(tickObj),
rawLabel: ordinalScale.getLabel(tickObj),
tickValue: tickValue2
});
}
return result;
}
function makeLabelsByCustomizedCategoryInterval(axis, categoryInterval, onlyTick) {
var ordinalScale = axis.scale;
var labelFormatter = makeLabelFormatter(axis);
var result = [];
each$f(ordinalScale.getTicks(), function(tick) {
var rawLabel = ordinalScale.getLabel(tick);
var tickValue = tick.value;
if (categoryInterval(tick.value, rawLabel)) {
result.push(onlyTick ? tickValue : {
formattedLabel: labelFormatter(tick),
rawLabel,
tickValue
});
}
});
return result;
}
var NORMALIZED_EXTENT = [0, 1];
var Axis = (
/** @class */
function() {
function Axis2(dim, scale2, extent3) {
this.onBand = false;
this.inverse = false;
this.dim = dim;
this.scale = scale2;
this._extent = extent3 || [0, 0];
}
Axis2.prototype.contain = function(coord) {
var extent3 = this._extent;
var min3 = Math.min(extent3[0], extent3[1]);
var max3 = Math.max(extent3[0], extent3[1]);
return coord >= min3 && coord <= max3;
};
Axis2.prototype.containData = function(data) {
return this.scale.contain(data);
};
Axis2.prototype.getExtent = function() {
return this._extent.slice();
};
Axis2.prototype.getPixelPrecision = function(dataExtent) {
return getPixelPrecision(dataExtent || this.scale.getExtent(), this._extent);
};
Axis2.prototype.setExtent = function(start2, end2) {
var extent3 = this._extent;
extent3[0] = start2;
extent3[1] = end2;
};
Axis2.prototype.dataToCoord = function(data, clamp2) {
var extent3 = this._extent;
var scale2 = this.scale;
data = scale2.normalize(data);
if (this.onBand && scale2.type === "ordinal") {
extent3 = extent3.slice();
fixExtentWithBands(extent3, scale2.count());
}
return linearMap$2(data, NORMALIZED_EXTENT, extent3, clamp2);
};
Axis2.prototype.coordToData = function(coord, clamp2) {
var extent3 = this._extent;
var scale2 = this.scale;
if (this.onBand && scale2.type === "ordinal") {
extent3 = extent3.slice();
fixExtentWithBands(extent3, scale2.count());
}
var t2 = linearMap$2(coord, extent3, NORMALIZED_EXTENT, clamp2);
return this.scale.scale(t2);
};
Axis2.prototype.pointToData = function(point, clamp2) {
return;
};
Axis2.prototype.getTicksCoords = function(opt) {
opt = opt || {};
var tickModel = opt.tickModel || this.getTickModel();
var result = createAxisTicks(this, tickModel);
var ticks = result.ticks;
var ticksCoords = map$1(ticks, function(tickVal) {
return {
coord: this.dataToCoord(this.scale.type === "ordinal" ? this.scale.getRawOrdinalNumber(tickVal) : tickVal),
tickValue: tickVal
};
}, this);
var alignWithLabel = tickModel.get("alignWithLabel");
fixOnBandTicksCoords(this, ticksCoords, alignWithLabel, opt.clamp);
return ticksCoords;
};
Axis2.prototype.getMinorTicksCoords = function() {
if (this.scale.type === "ordinal") {
return [];
}
var minorTickModel = this.model.getModel("minorTick");
var splitNumber = minorTickModel.get("splitNumber");
if (!(splitNumber > 0 && splitNumber < 100)) {
splitNumber = 5;
}
var minorTicks = this.scale.getMinorTicks(splitNumber);
var minorTicksCoords = map$1(minorTicks, function(minorTicksGroup) {
return map$1(minorTicksGroup, function(minorTick) {
return {
coord: this.dataToCoord(minorTick),
tickValue: minorTick
};
}, this);
}, this);
return minorTicksCoords;
};
Axis2.prototype.getViewLabels = function() {
return createAxisLabels(this).labels;
};
Axis2.prototype.getLabelModel = function() {
return this.model.getModel("axisLabel");
};
Axis2.prototype.getTickModel = function() {
return this.model.getModel("axisTick");
};
Axis2.prototype.getBandWidth = function() {
var axisExtent = this._extent;
var dataExtent = this.scale.getExtent();
var len2 = dataExtent[1] - dataExtent[0] + (this.onBand ? 1 : 0);
len2 === 0 && (len2 = 1);
var size = Math.abs(axisExtent[1] - axisExtent[0]);
return Math.abs(size) / len2;
};
Axis2.prototype.calculateCategoryInterval = function() {
return calculateCategoryInterval(this);
};
return Axis2;
}()
);
function fixExtentWithBands(extent3, nTick) {
var size = extent3[1] - extent3[0];
var len2 = nTick;
var margin = size / len2 / 2;
extent3[0] += margin;
extent3[1] -= margin;
}
function fixOnBandTicksCoords(axis, ticksCoords, alignWithLabel, clamp2) {
var ticksLen = ticksCoords.length;
if (!axis.onBand || alignWithLabel || !ticksLen) {
return;
}
var axisExtent = axis.getExtent();
var last;
var diffSize;
if (ticksLen === 1) {
ticksCoords[0].coord = axisExtent[0];
last = ticksCoords[1] = {
coord: axisExtent[1]
};
} else {
var crossLen = ticksCoords[ticksLen - 1].tickValue - ticksCoords[0].tickValue;
var shift_1 = (ticksCoords[ticksLen - 1].coord - ticksCoords[0].coord) / crossLen;
each$f(ticksCoords, function(ticksItem) {
ticksItem.coord -= shift_1 / 2;
});
var dataExtent = axis.scale.getExtent();
diffSize = 1 + dataExtent[1] - ticksCoords[ticksLen - 1].tickValue;
last = {
coord: ticksCoords[ticksLen - 1].coord + shift_1 * diffSize
};
ticksCoords.push(last);
}
var inverse = axisExtent[0] > axisExtent[1];
if (littleThan2(ticksCoords[0].coord, axisExtent[0])) {
clamp2 ? ticksCoords[0].coord = axisExtent[0] : ticksCoords.shift();
}
if (clamp2 && littleThan2(axisExtent[0], ticksCoords[0].coord)) {
ticksCoords.unshift({
coord: axisExtent[0]
});
}
if (littleThan2(axisExtent[1], last.coord)) {
clamp2 ? last.coord = axisExtent[1] : ticksCoords.pop();
}
if (clamp2 && littleThan2(last.coord, axisExtent[1])) {
ticksCoords.push({
coord: axisExtent[1]
});
}
function littleThan2(a, b2) {
a = round$3(a);
b2 = round$3(b2);
return inverse ? a > b2 : a < b2;
}
}
function extendComponentModel(proto2) {
var Model2 = ComponentModel.extend(proto2);
ComponentModel.registerClass(Model2);
return Model2;
}
function extendComponentView(proto2) {
var View2 = ComponentView.extend(proto2);
ComponentView.registerClass(View2);
return View2;
}
function extendSeriesModel(proto2) {
var Model2 = SeriesModel.extend(proto2);
SeriesModel.registerClass(Model2);
return Model2;
}
function extendChartView(proto2) {
var View2 = ChartView.extend(proto2);
ChartView.registerClass(View2);
return View2;
}
var PI2$2 = Math.PI * 2;
var CMD$1 = PathProxy.CMD;
var DEFAULT_SEARCH_SPACE = ["top", "right", "bottom", "left"];
function getCandidateAnchor(pos, distance2, rect, outPt, outDir) {
var width = rect.width;
var height = rect.height;
switch (pos) {
case "top":
outPt.set(rect.x + width / 2, rect.y - distance2);
outDir.set(0, -1);
break;
case "bottom":
outPt.set(rect.x + width / 2, rect.y + height + distance2);
outDir.set(0, 1);
break;
case "left":
outPt.set(rect.x - distance2, rect.y + height / 2);
outDir.set(-1, 0);
break;
case "right":
outPt.set(rect.x + width + distance2, rect.y + height / 2);
outDir.set(1, 0);
break;
}
}
function projectPointToArc(cx, cy, r2, startAngle, endAngle, anticlockwise, x2, y2, out2) {
x2 -= cx;
y2 -= cy;
var d2 = Math.sqrt(x2 * x2 + y2 * y2);
x2 /= d2;
y2 /= d2;
var ox = x2 * r2 + cx;
var oy = y2 * r2 + cy;
if (Math.abs(startAngle - endAngle) % PI2$2 < 1e-4) {
out2[0] = ox;
out2[1] = oy;
return d2 - r2;
}
if (anticlockwise) {
var tmp = startAngle;
startAngle = normalizeRadian(endAngle);
endAngle = normalizeRadian(tmp);
} else {
startAngle = normalizeRadian(startAngle);
endAngle = normalizeRadian(endAngle);
}
if (startAngle > endAngle) {
endAngle += PI2$2;
}
var angle = Math.atan2(y2, x2);
if (angle < 0) {
angle += PI2$2;
}
if (angle >= startAngle && angle <= endAngle || angle + PI2$2 >= startAngle && angle + PI2$2 <= endAngle) {
out2[0] = ox;
out2[1] = oy;
return d2 - r2;
}
var x1 = r2 * Math.cos(startAngle) + cx;
var y1 = r2 * Math.sin(startAngle) + cy;
var x22 = r2 * Math.cos(endAngle) + cx;
var y22 = r2 * Math.sin(endAngle) + cy;
var d1 = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);
var d22 = (x22 - x2) * (x22 - x2) + (y22 - y2) * (y22 - y2);
if (d1 < d22) {
out2[0] = x1;
out2[1] = y1;
return Math.sqrt(d1);
} else {
out2[0] = x22;
out2[1] = y22;
return Math.sqrt(d22);
}
}
function projectPointToLine(x1, y1, x2, y2, x3, y3, out2, limitToEnds) {
var dx = x3 - x1;
var dy = y3 - y1;
var dx1 = x2 - x1;
var dy1 = y2 - y1;
var lineLen = Math.sqrt(dx1 * dx1 + dy1 * dy1);
dx1 /= lineLen;
dy1 /= lineLen;
var projectedLen = dx * dx1 + dy * dy1;
var t2 = projectedLen / lineLen;
if (limitToEnds) {
t2 = Math.min(Math.max(t2, 0), 1);
}
t2 *= lineLen;
var ox = out2[0] = x1 + t2 * dx1;
var oy = out2[1] = y1 + t2 * dy1;
return Math.sqrt((ox - x3) * (ox - x3) + (oy - y3) * (oy - y3));
}
function projectPointToRect(x1, y1, width, height, x2, y2, out2) {
if (width < 0) {
x1 = x1 + width;
width = -width;
}
if (height < 0) {
y1 = y1 + height;
height = -height;
}
var x22 = x1 + width;
var y22 = y1 + height;
var ox = out2[0] = Math.min(Math.max(x2, x1), x22);
var oy = out2[1] = Math.min(Math.max(y2, y1), y22);
return Math.sqrt((ox - x2) * (ox - x2) + (oy - y2) * (oy - y2));
}
var tmpPt = [];
function nearestPointOnRect(pt, rect, out2) {
var dist2 = projectPointToRect(rect.x, rect.y, rect.width, rect.height, pt.x, pt.y, tmpPt);
out2.set(tmpPt[0], tmpPt[1]);
return dist2;
}
function nearestPointOnPath(pt, path, out2) {
var xi2 = 0;
var yi2 = 0;
var x0 = 0;
var y0 = 0;
var x1;
var y1;
var minDist = Infinity;
var data = path.data;
var x2 = pt.x;
var y2 = pt.y;
for (var i = 0; i < data.length; ) {
var cmd = data[i++];
if (i === 1) {
xi2 = data[i];
yi2 = data[i + 1];
x0 = xi2;
y0 = yi2;
}
var d2 = minDist;
switch (cmd) {
case CMD$1.M:
x0 = data[i++];
y0 = data[i++];
xi2 = x0;
yi2 = y0;
break;
case CMD$1.L:
d2 = projectPointToLine(xi2, yi2, data[i], data[i + 1], x2, y2, tmpPt, true);
xi2 = data[i++];
yi2 = data[i++];
break;
case CMD$1.C:
d2 = cubicProjectPoint(xi2, yi2, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], x2, y2, tmpPt);
xi2 = data[i++];
yi2 = data[i++];
break;
case CMD$1.Q:
d2 = quadraticProjectPoint(xi2, yi2, data[i++], data[i++], data[i], data[i + 1], x2, y2, tmpPt);
xi2 = data[i++];
yi2 = data[i++];
break;
case CMD$1.A:
var cx = data[i++];
var cy = data[i++];
var rx = data[i++];
var ry = data[i++];
var theta = data[i++];
var dTheta = data[i++];
i += 1;
var anticlockwise = !!(1 - data[i++]);
x1 = Math.cos(theta) * rx + cx;
y1 = Math.sin(theta) * ry + cy;
if (i <= 1) {
x0 = x1;
y0 = y1;
}
var _x = (x2 - cx) * ry / rx + cx;
d2 = projectPointToArc(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y2, tmpPt);
xi2 = Math.cos(theta + dTheta) * rx + cx;
yi2 = Math.sin(theta + dTheta) * ry + cy;
break;
case CMD$1.R:
x0 = xi2 = data[i++];
y0 = yi2 = data[i++];
var width = data[i++];
var height = data[i++];
d2 = projectPointToRect(x0, y0, width, height, x2, y2, tmpPt);
break;
case CMD$1.Z:
d2 = projectPointToLine(xi2, yi2, x0, y0, x2, y2, tmpPt, true);
xi2 = x0;
yi2 = y0;
break;
}
if (d2 < minDist) {
minDist = d2;
out2.set(tmpPt[0], tmpPt[1]);
}
}
return minDist;
}
var pt0 = new Point();
var pt1 = new Point();
var pt2 = new Point();
var dir = new Point();
var dir2 = new Point();
function updateLabelLinePoints(target, labelLineModel) {
if (!target) {
return;
}
var labelLine = target.getTextGuideLine();
var label = target.getTextContent();
if (!(label && labelLine)) {
return;
}
var labelGuideConfig = target.textGuideLineConfig || {};
var points2 = [[0, 0], [0, 0], [0, 0]];
var searchSpace = labelGuideConfig.candidates || DEFAULT_SEARCH_SPACE;
var labelRect = label.getBoundingRect().clone();
labelRect.applyTransform(label.getComputedTransform());
var minDist = Infinity;
var anchorPoint = labelGuideConfig.anchor;
var targetTransform = target.getComputedTransform();
var targetInversedTransform = targetTransform && invert([], targetTransform);
var len2 = labelLineModel.get("length2") || 0;
if (anchorPoint) {
pt2.copy(anchorPoint);
}
for (var i = 0; i < searchSpace.length; i++) {
var candidate = searchSpace[i];
getCandidateAnchor(candidate, 0, labelRect, pt0, dir);
Point.scaleAndAdd(pt1, pt0, dir, len2);
pt1.transform(targetInversedTransform);
var boundingRect = target.getBoundingRect();
var dist2 = anchorPoint ? anchorPoint.distance(pt1) : target instanceof Path ? nearestPointOnPath(pt1, target.path, pt2) : nearestPointOnRect(pt1, boundingRect, pt2);
if (dist2 < minDist) {
minDist = dist2;
pt1.transform(targetTransform);
pt2.transform(targetTransform);
pt2.toArray(points2[0]);
pt1.toArray(points2[1]);
pt0.toArray(points2[2]);
}
}
limitTurnAngle(points2, labelLineModel.get("minTurnAngle"));
labelLine.setShape({
points: points2
});
}
var tmpArr = [];
var tmpProjPoint = new Point();
function limitTurnAngle(linePoints, minTurnAngle) {
if (!(minTurnAngle <= 180 && minTurnAngle > 0)) {
return;
}
minTurnAngle = minTurnAngle / 180 * Math.PI;
pt0.fromArray(linePoints[0]);
pt1.fromArray(linePoints[1]);
pt2.fromArray(linePoints[2]);
Point.sub(dir, pt0, pt1);
Point.sub(dir2, pt2, pt1);
var len1 = dir.len();
var len2 = dir2.len();
if (len1 < 1e-3 || len2 < 1e-3) {
return;
}
dir.scale(1 / len1);
dir2.scale(1 / len2);
var angleCos = dir.dot(dir2);
var minTurnAngleCos = Math.cos(minTurnAngle);
if (minTurnAngleCos < angleCos) {
var d2 = projectPointToLine(pt1.x, pt1.y, pt2.x, pt2.y, pt0.x, pt0.y, tmpArr, false);
tmpProjPoint.fromArray(tmpArr);
tmpProjPoint.scaleAndAdd(dir2, d2 / Math.tan(Math.PI - minTurnAngle));
var t2 = pt2.x !== pt1.x ? (tmpProjPoint.x - pt1.x) / (pt2.x - pt1.x) : (tmpProjPoint.y - pt1.y) / (pt2.y - pt1.y);
if (isNaN(t2)) {
return;
}
if (t2 < 0) {
Point.copy(tmpProjPoint, pt1);
} else if (t2 > 1) {
Point.copy(tmpProjPoint, pt2);
}
tmpProjPoint.toArray(linePoints[1]);
}
}
function limitSurfaceAngle(linePoints, surfaceNormal, maxSurfaceAngle) {
if (!(maxSurfaceAngle <= 180 && maxSurfaceAngle > 0)) {
return;
}
maxSurfaceAngle = maxSurfaceAngle / 180 * Math.PI;
pt0.fromArray(linePoints[0]);
pt1.fromArray(linePoints[1]);
pt2.fromArray(linePoints[2]);
Point.sub(dir, pt1, pt0);
Point.sub(dir2, pt2, pt1);
var len1 = dir.len();
var len2 = dir2.len();
if (len1 < 1e-3 || len2 < 1e-3) {
return;
}
dir.scale(1 / len1);
dir2.scale(1 / len2);
var angleCos = dir.dot(surfaceNormal);
var maxSurfaceAngleCos = Math.cos(maxSurfaceAngle);
if (angleCos < maxSurfaceAngleCos) {
var d2 = projectPointToLine(pt1.x, pt1.y, pt2.x, pt2.y, pt0.x, pt0.y, tmpArr, false);
tmpProjPoint.fromArray(tmpArr);
var HALF_PI = Math.PI / 2;
var angle2 = Math.acos(dir2.dot(surfaceNormal));
var newAngle = HALF_PI + angle2 - maxSurfaceAngle;
if (newAngle >= HALF_PI) {
Point.copy(tmpProjPoint, pt2);
} else {
tmpProjPoint.scaleAndAdd(dir2, d2 / Math.tan(Math.PI / 2 - newAngle));
var t2 = pt2.x !== pt1.x ? (tmpProjPoint.x - pt1.x) / (pt2.x - pt1.x) : (tmpProjPoint.y - pt1.y) / (pt2.y - pt1.y);
if (isNaN(t2)) {
return;
}
if (t2 < 0) {
Point.copy(tmpProjPoint, pt1);
} else if (t2 > 1) {
Point.copy(tmpProjPoint, pt2);
}
}
tmpProjPoint.toArray(linePoints[1]);
}
}
function setLabelLineState(labelLine, ignore2, stateName, stateModel) {
var isNormal = stateName === "normal";
var stateObj = isNormal ? labelLine : labelLine.ensureState(stateName);
stateObj.ignore = ignore2;
var smooth = stateModel.get("smooth");
if (smooth && smooth === true) {
smooth = 0.3;
}
stateObj.shape = stateObj.shape || {};
if (smooth > 0) {
stateObj.shape.smooth = smooth;
}
var styleObj = stateModel.getModel("lineStyle").getLineStyle();
isNormal ? labelLine.useStyle(styleObj) : stateObj.style = styleObj;
}
function buildLabelLinePath(path, shape) {
var smooth = shape.smooth;
var points2 = shape.points;
if (!points2) {
return;
}
path.moveTo(points2[0][0], points2[0][1]);
if (smooth > 0 && points2.length >= 3) {
var len1 = dist$1(points2[0], points2[1]);
var len2 = dist$1(points2[1], points2[2]);
if (!len1 || !len2) {
path.lineTo(points2[1][0], points2[1][1]);
path.lineTo(points2[2][0], points2[2][1]);
return;
}
var moveLen = Math.min(len1, len2) * smooth;
var midPoint0 = lerp$1([], points2[1], points2[0], moveLen / len1);
var midPoint2 = lerp$1([], points2[1], points2[2], moveLen / len2);
var midPoint1 = lerp$1([], midPoint0, midPoint2, 0.5);
path.bezierCurveTo(midPoint0[0], midPoint0[1], midPoint0[0], midPoint0[1], midPoint1[0], midPoint1[1]);
path.bezierCurveTo(midPoint2[0], midPoint2[1], midPoint2[0], midPoint2[1], points2[2][0], points2[2][1]);
} else {
for (var i = 1; i < points2.length; i++) {
path.lineTo(points2[i][0], points2[i][1]);
}
}
}
function setLabelLineStyle(targetEl, statesModels, defaultStyle) {
var labelLine = targetEl.getTextGuideLine();
var label = targetEl.getTextContent();
if (!label) {
if (labelLine) {
targetEl.removeTextGuideLine();
}
return;
}
var normalModel = statesModels.normal;
var showNormal = normalModel.get("show");
var labelIgnoreNormal = label.ignore;
for (var i = 0; i < DISPLAY_STATES.length; i++) {
var stateName = DISPLAY_STATES[i];
var stateModel = statesModels[stateName];
var isNormal = stateName === "normal";
if (stateModel) {
var stateShow = stateModel.get("show");
var isLabelIgnored = isNormal ? labelIgnoreNormal : retrieve2(label.states[stateName] && label.states[stateName].ignore, labelIgnoreNormal);
if (isLabelIgnored || !retrieve2(stateShow, showNormal)) {
var stateObj = isNormal ? labelLine : labelLine && labelLine.states[stateName];
if (stateObj) {
stateObj.ignore = true;
}
if (!!labelLine) {
setLabelLineState(labelLine, true, stateName, stateModel);
}
continue;
}
if (!labelLine) {
labelLine = new Polyline$1();
targetEl.setTextGuideLine(labelLine);
if (!isNormal && (labelIgnoreNormal || !showNormal)) {
setLabelLineState(labelLine, true, "normal", statesModels.normal);
}
if (targetEl.stateProxy) {
labelLine.stateProxy = targetEl.stateProxy;
}
}
setLabelLineState(labelLine, false, stateName, stateModel);
}
}
if (labelLine) {
defaults(labelLine.style, defaultStyle);
labelLine.style.fill = null;
var showAbove = normalModel.get("showAbove");
var labelLineConfig = targetEl.textGuideLineConfig = targetEl.textGuideLineConfig || {};
labelLineConfig.showAbove = showAbove || false;
labelLine.buildPath = buildLabelLinePath;
}
}
function getLabelLineStatesModels(itemModel, labelLineName) {
labelLineName = labelLineName || "labelLine";
var statesModels = {
normal: itemModel.getModel(labelLineName)
};
for (var i = 0; i < SPECIAL_STATES.length; i++) {
var stateName = SPECIAL_STATES[i];
statesModels[stateName] = itemModel.getModel([stateName, labelLineName]);
}
return statesModels;
}
function prepareLayoutList(input) {
var list = [];
for (var i = 0; i < input.length; i++) {
var rawItem = input[i];
if (rawItem.defaultAttr.ignore) {
continue;
}
var label = rawItem.label;
var transform2 = label.getComputedTransform();
var localRect = label.getBoundingRect();
var isAxisAligned = !transform2 || transform2[1] < 1e-5 && transform2[2] < 1e-5;
var minMargin = label.style.margin || 0;
var globalRect = localRect.clone();
globalRect.applyTransform(transform2);
globalRect.x -= minMargin / 2;
globalRect.y -= minMargin / 2;
globalRect.width += minMargin;
globalRect.height += minMargin;
var obb = isAxisAligned ? new OrientedBoundingRect(localRect, transform2) : null;
list.push({
label,
labelLine: rawItem.labelLine,
rect: globalRect,
localRect,
obb,
priority: rawItem.priority,
defaultAttr: rawItem.defaultAttr,
layoutOption: rawItem.computedLayoutOption,
axisAligned: isAxisAligned,
transform: transform2
});
}
return list;
}
function shiftLayout(list, xyDim, sizeDim, minBound, maxBound, balanceShift) {
var len2 = list.length;
if (len2 < 2) {
return;
}
list.sort(function(a, b2) {
return a.rect[xyDim] - b2.rect[xyDim];
});
var lastPos = 0;
var delta;
var adjusted = false;
var totalShifts = 0;
for (var i = 0; i < len2; i++) {
var item = list[i];
var rect = item.rect;
delta = rect[xyDim] - lastPos;
if (delta < 0) {
rect[xyDim] -= delta;
item.label[xyDim] -= delta;
adjusted = true;
}
var shift = Math.max(-delta, 0);
totalShifts += shift;
lastPos = rect[xyDim] + rect[sizeDim];
}
if (totalShifts > 0 && balanceShift) {
shiftList(-totalShifts / len2, 0, len2);
}
var first = list[0];
var last = list[len2 - 1];
var minGap;
var maxGap;
updateMinMaxGap();
minGap < 0 && squeezeGaps(-minGap, 0.8);
maxGap < 0 && squeezeGaps(maxGap, 0.8);
updateMinMaxGap();
takeBoundsGap(minGap, maxGap, 1);
takeBoundsGap(maxGap, minGap, -1);
updateMinMaxGap();
if (minGap < 0) {
squeezeWhenBailout(-minGap);
}
if (maxGap < 0) {
squeezeWhenBailout(maxGap);
}
function updateMinMaxGap() {
minGap = first.rect[xyDim] - minBound;
maxGap = maxBound - last.rect[xyDim] - last.rect[sizeDim];
}
function takeBoundsGap(gapThisBound, gapOtherBound, moveDir) {
if (gapThisBound < 0) {
var moveFromMaxGap = Math.min(gapOtherBound, -gapThisBound);
if (moveFromMaxGap > 0) {
shiftList(moveFromMaxGap * moveDir, 0, len2);
var remained = moveFromMaxGap + gapThisBound;
if (remained < 0) {
squeezeGaps(-remained * moveDir, 1);
}
} else {
squeezeGaps(-gapThisBound * moveDir, 1);
}
}
}
function shiftList(delta2, start2, end2) {
if (delta2 !== 0) {
adjusted = true;
}
for (var i2 = start2; i2 < end2; i2++) {
var item2 = list[i2];
var rect2 = item2.rect;
rect2[xyDim] += delta2;
item2.label[xyDim] += delta2;
}
}
function squeezeGaps(delta2, maxSqeezePercent) {
var gaps = [];
var totalGaps = 0;
for (var i2 = 1; i2 < len2; i2++) {
var prevItemRect = list[i2 - 1].rect;
var gap = Math.max(list[i2].rect[xyDim] - prevItemRect[xyDim] - prevItemRect[sizeDim], 0);
gaps.push(gap);
totalGaps += gap;
}
if (!totalGaps) {
return;
}
var squeezePercent = Math.min(Math.abs(delta2) / totalGaps, maxSqeezePercent);
if (delta2 > 0) {
for (var i2 = 0; i2 < len2 - 1; i2++) {
var movement = gaps[i2] * squeezePercent;
shiftList(movement, 0, i2 + 1);
}
} else {
for (var i2 = len2 - 1; i2 > 0; i2--) {
var movement = gaps[i2 - 1] * squeezePercent;
shiftList(-movement, i2, len2);
}
}
}
function squeezeWhenBailout(delta2) {
var dir3 = delta2 < 0 ? -1 : 1;
delta2 = Math.abs(delta2);
var moveForEachLabel = Math.ceil(delta2 / (len2 - 1));
for (var i2 = 0; i2 < len2 - 1; i2++) {
if (dir3 > 0) {
shiftList(moveForEachLabel, 0, i2 + 1);
} else {
shiftList(-moveForEachLabel, len2 - i2 - 1, len2);
}
delta2 -= moveForEachLabel;
if (delta2 <= 0) {
return;
}
}
}
return adjusted;
}
function shiftLayoutOnX(list, leftBound, rightBound, balanceShift) {
return shiftLayout(list, "x", "width", leftBound, rightBound, balanceShift);
}
function shiftLayoutOnY(list, topBound, bottomBound, balanceShift) {
return shiftLayout(list, "y", "height", topBound, bottomBound, balanceShift);
}
function hideOverlap(labelList) {
var displayedLabels = [];
labelList.sort(function(a, b2) {
return b2.priority - a.priority;
});
var globalRect = new BoundingRect(0, 0, 0, 0);
function hideEl(el2) {
if (!el2.ignore) {
var emphasisState = el2.ensureState("emphasis");
if (emphasisState.ignore == null) {
emphasisState.ignore = false;
}
}
el2.ignore = true;
}
for (var i = 0; i < labelList.length; i++) {
var labelItem = labelList[i];
var isAxisAligned = labelItem.axisAligned;
var localRect = labelItem.localRect;
var transform2 = labelItem.transform;
var label = labelItem.label;
var labelLine = labelItem.labelLine;
globalRect.copy(labelItem.rect);
globalRect.width -= 0.1;
globalRect.height -= 0.1;
globalRect.x += 0.05;
globalRect.y += 0.05;
var obb = labelItem.obb;
var overlapped = false;
for (var j = 0; j < displayedLabels.length; j++) {
var existsTextCfg = displayedLabels[j];
if (!globalRect.intersect(existsTextCfg.rect)) {
continue;
}
if (isAxisAligned && existsTextCfg.axisAligned) {
overlapped = true;
break;
}
if (!existsTextCfg.obb) {
existsTextCfg.obb = new OrientedBoundingRect(existsTextCfg.localRect, existsTextCfg.transform);
}
if (!obb) {
obb = new OrientedBoundingRect(localRect, transform2);
}
if (obb.intersect(existsTextCfg.obb)) {
overlapped = true;
break;
}
}
if (overlapped) {
hideEl(label);
labelLine && hideEl(labelLine);
} else {
label.attr("ignore", labelItem.defaultAttr.ignore);
labelLine && labelLine.attr("ignore", labelItem.defaultAttr.labelGuideIgnore);
displayedLabels.push(labelItem);
}
}
}
function cloneArr(points2) {
if (points2) {
var newPoints = [];
for (var i = 0; i < points2.length; i++) {
newPoints.push(points2[i].slice());
}
return newPoints;
}
}
function prepareLayoutCallbackParams(labelItem, hostEl) {
var label = labelItem.label;
var labelLine = hostEl && hostEl.getTextGuideLine();
return {
dataIndex: labelItem.dataIndex,
dataType: labelItem.dataType,
seriesIndex: labelItem.seriesModel.seriesIndex,
text: labelItem.label.style.text,
rect: labelItem.hostRect,
labelRect: labelItem.rect,
// x: labelAttr.x,
// y: labelAttr.y,
align: label.style.align,
verticalAlign: label.style.verticalAlign,
labelLinePoints: cloneArr(labelLine && labelLine.shape.points)
};
}
var LABEL_OPTION_TO_STYLE_KEYS = ["align", "verticalAlign", "width", "height", "fontSize"];
var dummyTransformable = new Transformable();
var labelLayoutInnerStore = makeInner();
var labelLineAnimationStore = makeInner();
function extendWithKeys(target, source, keys2) {
for (var i = 0; i < keys2.length; i++) {
var key = keys2[i];
if (source[key] != null) {
target[key] = source[key];
}
}
}
var LABEL_LAYOUT_PROPS = ["x", "y", "rotation"];
var LabelManager = (
/** @class */
function() {
function LabelManager2() {
this._labelList = [];
this._chartViewList = [];
}
LabelManager2.prototype.clearLabels = function() {
this._labelList = [];
this._chartViewList = [];
};
LabelManager2.prototype._addLabel = function(dataIndex, dataType, seriesModel, label, layoutOption) {
var labelStyle = label.style;
var hostEl = label.__hostTarget;
var textConfig = hostEl.textConfig || {};
var labelTransform = label.getComputedTransform();
var labelRect = label.getBoundingRect().plain();
BoundingRect.applyTransform(labelRect, labelRect, labelTransform);
if (labelTransform) {
dummyTransformable.setLocalTransform(labelTransform);
} else {
dummyTransformable.x = dummyTransformable.y = dummyTransformable.rotation = dummyTransformable.originX = dummyTransformable.originY = 0;
dummyTransformable.scaleX = dummyTransformable.scaleY = 1;
}
dummyTransformable.rotation = normalizeRadian(dummyTransformable.rotation);
var host = label.__hostTarget;
var hostRect;
if (host) {
hostRect = host.getBoundingRect().plain();
var transform2 = host.getComputedTransform();
BoundingRect.applyTransform(hostRect, hostRect, transform2);
}
var labelGuide = hostRect && host.getTextGuideLine();
this._labelList.push({
label,
labelLine: labelGuide,
seriesModel,
dataIndex,
dataType,
layoutOption,
computedLayoutOption: null,
rect: labelRect,
hostRect,
// Label with lower priority will be hidden when overlapped
// Use rect size as default priority
priority: hostRect ? hostRect.width * hostRect.height : 0,
// Save default label attributes.
// For restore if developers want get back to default value in callback.
defaultAttr: {
ignore: label.ignore,
labelGuideIgnore: labelGuide && labelGuide.ignore,
x: dummyTransformable.x,
y: dummyTransformable.y,
scaleX: dummyTransformable.scaleX,
scaleY: dummyTransformable.scaleY,
rotation: dummyTransformable.rotation,
style: {
x: labelStyle.x,
y: labelStyle.y,
align: labelStyle.align,
verticalAlign: labelStyle.verticalAlign,
width: labelStyle.width,
height: labelStyle.height,
fontSize: labelStyle.fontSize
},
cursor: label.cursor,
attachedPos: textConfig.position,
attachedRot: textConfig.rotation
}
});
};
LabelManager2.prototype.addLabelsOfSeries = function(chartView) {
var _this = this;
this._chartViewList.push(chartView);
var seriesModel = chartView.__model;
var layoutOption = seriesModel.get("labelLayout");
if (!(isFunction$1(layoutOption) || keys(layoutOption).length)) {
return;
}
chartView.group.traverse(function(child) {
if (child.ignore) {
return true;
}
var textEl = child.getTextContent();
var ecData = getECData(child);
if (textEl && !textEl.disableLabelLayout) {
_this._addLabel(ecData.dataIndex, ecData.dataType, seriesModel, textEl, layoutOption);
}
});
};
LabelManager2.prototype.updateLayoutConfig = function(api) {
var width = api.getWidth();
var height = api.getHeight();
function createDragHandler(el2, labelLineModel) {
return function() {
updateLabelLinePoints(el2, labelLineModel);
};
}
for (var i = 0; i < this._labelList.length; i++) {
var labelItem = this._labelList[i];
var label = labelItem.label;
var hostEl = label.__hostTarget;
var defaultLabelAttr = labelItem.defaultAttr;
var layoutOption = void 0;
if (isFunction$1(labelItem.layoutOption)) {
layoutOption = labelItem.layoutOption(prepareLayoutCallbackParams(labelItem, hostEl));
} else {
layoutOption = labelItem.layoutOption;
}
layoutOption = layoutOption || {};
labelItem.computedLayoutOption = layoutOption;
var degreeToRadian = Math.PI / 180;
if (hostEl) {
hostEl.setTextConfig({
// Force to set local false.
local: false,
// Ignore position and rotation config on the host el if x or y is changed.
position: layoutOption.x != null || layoutOption.y != null ? null : defaultLabelAttr.attachedPos,
// Ignore rotation config on the host el if rotation is changed.
rotation: layoutOption.rotate != null ? layoutOption.rotate * degreeToRadian : defaultLabelAttr.attachedRot,
offset: [layoutOption.dx || 0, layoutOption.dy || 0]
});
}
var needsUpdateLabelLine = false;
if (layoutOption.x != null) {
label.x = parsePercent(layoutOption.x, width);
label.setStyle("x", 0);
needsUpdateLabelLine = true;
} else {
label.x = defaultLabelAttr.x;
label.setStyle("x", defaultLabelAttr.style.x);
}
if (layoutOption.y != null) {
label.y = parsePercent(layoutOption.y, height);
label.setStyle("y", 0);
needsUpdateLabelLine = true;
} else {
label.y = defaultLabelAttr.y;
label.setStyle("y", defaultLabelAttr.style.y);
}
if (layoutOption.labelLinePoints) {
var guideLine = hostEl.getTextGuideLine();
if (guideLine) {
guideLine.setShape({
points: layoutOption.labelLinePoints
});
needsUpdateLabelLine = false;
}
}
var labelLayoutStore = labelLayoutInnerStore(label);
labelLayoutStore.needsUpdateLabelLine = needsUpdateLabelLine;
label.rotation = layoutOption.rotate != null ? layoutOption.rotate * degreeToRadian : defaultLabelAttr.rotation;
label.scaleX = defaultLabelAttr.scaleX;
label.scaleY = defaultLabelAttr.scaleY;
for (var k2 = 0; k2 < LABEL_OPTION_TO_STYLE_KEYS.length; k2++) {
var key = LABEL_OPTION_TO_STYLE_KEYS[k2];
label.setStyle(key, layoutOption[key] != null ? layoutOption[key] : defaultLabelAttr.style[key]);
}
if (layoutOption.draggable) {
label.draggable = true;
label.cursor = "move";
if (hostEl) {
var hostModel = labelItem.seriesModel;
if (labelItem.dataIndex != null) {
var data = labelItem.seriesModel.getData(labelItem.dataType);
hostModel = data.getItemModel(labelItem.dataIndex);
}
label.on("drag", createDragHandler(hostEl, hostModel.getModel("labelLine")));
}
} else {
label.off("drag");
label.cursor = defaultLabelAttr.cursor;
}
}
};
LabelManager2.prototype.layout = function(api) {
var width = api.getWidth();
var height = api.getHeight();
var labelList = prepareLayoutList(this._labelList);
var labelsNeedsAdjustOnX = filter(labelList, function(item) {
return item.layoutOption.moveOverlap === "shiftX";
});
var labelsNeedsAdjustOnY = filter(labelList, function(item) {
return item.layoutOption.moveOverlap === "shiftY";
});
shiftLayoutOnX(labelsNeedsAdjustOnX, 0, width);
shiftLayoutOnY(labelsNeedsAdjustOnY, 0, height);
var labelsNeedsHideOverlap = filter(labelList, function(item) {
return item.layoutOption.hideOverlap;
});
hideOverlap(labelsNeedsHideOverlap);
};
LabelManager2.prototype.processLabelsOverall = function() {
var _this = this;
each$f(this._chartViewList, function(chartView) {
var seriesModel = chartView.__model;
var ignoreLabelLineUpdate = chartView.ignoreLabelLineUpdate;
var animationEnabled = seriesModel.isAnimationEnabled();
chartView.group.traverse(function(child) {
if (child.ignore && !child.forceLabelAnimation) {
return true;
}
var needsUpdateLabelLine = !ignoreLabelLineUpdate;
var label = child.getTextContent();
if (!needsUpdateLabelLine && label) {
needsUpdateLabelLine = labelLayoutInnerStore(label).needsUpdateLabelLine;
}
if (needsUpdateLabelLine) {
_this._updateLabelLine(child, seriesModel);
}
if (animationEnabled) {
_this._animateLabels(child, seriesModel);
}
});
});
};
LabelManager2.prototype._updateLabelLine = function(el2, seriesModel) {
var textEl = el2.getTextContent();
var ecData = getECData(el2);
var dataIndex = ecData.dataIndex;
if (textEl && dataIndex != null) {
var data = seriesModel.getData(ecData.dataType);
var itemModel = data.getItemModel(dataIndex);
var defaultStyle = {};
var visualStyle = data.getItemVisual(dataIndex, "style");
if (visualStyle) {
var visualType = data.getVisual("drawType");
defaultStyle.stroke = visualStyle[visualType];
}
var labelLineModel = itemModel.getModel("labelLine");
setLabelLineStyle(el2, getLabelLineStatesModels(itemModel), defaultStyle);
updateLabelLinePoints(el2, labelLineModel);
}
};
LabelManager2.prototype._animateLabels = function(el2, seriesModel) {
var textEl = el2.getTextContent();
var guideLine = el2.getTextGuideLine();
if (textEl && (el2.forceLabelAnimation || !textEl.ignore && !textEl.invisible && !el2.disableLabelAnimation && !isElementRemoved(el2))) {
var layoutStore = labelLayoutInnerStore(textEl);
var oldLayout = layoutStore.oldLayout;
var ecData = getECData(el2);
var dataIndex = ecData.dataIndex;
var newProps = {
x: textEl.x,
y: textEl.y,
rotation: textEl.rotation
};
var data = seriesModel.getData(ecData.dataType);
if (!oldLayout) {
textEl.attr(newProps);
if (!labelInner(textEl).valueAnimation) {
var oldOpacity = retrieve2(textEl.style.opacity, 1);
textEl.style.opacity = 0;
initProps(textEl, {
style: {
opacity: oldOpacity
}
}, seriesModel, dataIndex);
}
} else {
textEl.attr(oldLayout);
var prevStates = el2.prevStates;
if (prevStates) {
if (indexOf(prevStates, "select") >= 0) {
textEl.attr(layoutStore.oldLayoutSelect);
}
if (indexOf(prevStates, "emphasis") >= 0) {
textEl.attr(layoutStore.oldLayoutEmphasis);
}
}
updateProps$1(textEl, newProps, seriesModel, dataIndex);
}
layoutStore.oldLayout = newProps;
if (textEl.states.select) {
var layoutSelect = layoutStore.oldLayoutSelect = {};
extendWithKeys(layoutSelect, newProps, LABEL_LAYOUT_PROPS);
extendWithKeys(layoutSelect, textEl.states.select, LABEL_LAYOUT_PROPS);
}
if (textEl.states.emphasis) {
var layoutEmphasis = layoutStore.oldLayoutEmphasis = {};
extendWithKeys(layoutEmphasis, newProps, LABEL_LAYOUT_PROPS);
extendWithKeys(layoutEmphasis, textEl.states.emphasis, LABEL_LAYOUT_PROPS);
}
animateLabelValue(textEl, dataIndex, data, seriesModel, seriesModel);
}
if (guideLine && !guideLine.ignore && !guideLine.invisible) {
var layoutStore = labelLineAnimationStore(guideLine);
var oldLayout = layoutStore.oldLayout;
var newLayout = {
points: guideLine.shape.points
};
if (!oldLayout) {
guideLine.setShape(newLayout);
guideLine.style.strokePercent = 0;
initProps(guideLine, {
style: {
strokePercent: 1
}
}, seriesModel);
} else {
guideLine.attr({
shape: oldLayout
});
updateProps$1(guideLine, {
shape: newLayout
}, seriesModel);
}
layoutStore.oldLayout = newLayout;
}
};
return LabelManager2;
}()
);
var getLabelManager = makeInner();
function installLabelLayout(registers) {
registers.registerUpdateLifecycle("series:beforeupdate", function(ecModel, api, params) {
var labelManager = getLabelManager(api).labelManager;
if (!labelManager) {
labelManager = getLabelManager(api).labelManager = new LabelManager();
}
labelManager.clearLabels();
});
registers.registerUpdateLifecycle("series:layoutlabels", function(ecModel, api, params) {
var labelManager = getLabelManager(api).labelManager;
params.updatedSeries.forEach(function(series) {
labelManager.addLabelsOfSeries(api.getViewOfSeriesModel(series));
});
labelManager.updateLayoutConfig(api);
labelManager.layout(api);
labelManager.processLabelsOverall();
});
}
var mathSin = Math.sin;
var mathCos = Math.cos;
var PI$4 = Math.PI;
var PI2$1 = Math.PI * 2;
var degree = 180 / PI$4;
var SVGPathRebuilder = function() {
function SVGPathRebuilder2() {
}
SVGPathRebuilder2.prototype.reset = function(precision) {
this._start = true;
this._d = [];
this._str = "";
this._p = Math.pow(10, precision || 4);
};
SVGPathRebuilder2.prototype.moveTo = function(x2, y2) {
this._add("M", x2, y2);
};
SVGPathRebuilder2.prototype.lineTo = function(x2, y2) {
this._add("L", x2, y2);
};
SVGPathRebuilder2.prototype.bezierCurveTo = function(x2, y2, x22, y22, x3, y3) {
this._add("C", x2, y2, x22, y22, x3, y3);
};
SVGPathRebuilder2.prototype.quadraticCurveTo = function(x2, y2, x22, y22) {
this._add("Q", x2, y2, x22, y22);
};
SVGPathRebuilder2.prototype.arc = function(cx, cy, r2, startAngle, endAngle, anticlockwise) {
this.ellipse(cx, cy, r2, r2, 0, startAngle, endAngle, anticlockwise);
};
SVGPathRebuilder2.prototype.ellipse = function(cx, cy, rx, ry, psi, startAngle, endAngle, anticlockwise) {
var dTheta = endAngle - startAngle;
var clockwise = !anticlockwise;
var dThetaPositive = Math.abs(dTheta);
var isCircle = isAroundZero(dThetaPositive - PI2$1) || (clockwise ? dTheta >= PI2$1 : -dTheta >= PI2$1);
var unifiedTheta = dTheta > 0 ? dTheta % PI2$1 : dTheta % PI2$1 + PI2$1;
var large = false;
if (isCircle) {
large = true;
} else if (isAroundZero(dThetaPositive)) {
large = false;
} else {
large = unifiedTheta >= PI$4 === !!clockwise;
}
var x0 = cx + rx * mathCos(startAngle);
var y0 = cy + ry * mathSin(startAngle);
if (this._start) {
this._add("M", x0, y0);
}
var xRot = Math.round(psi * degree);
if (isCircle) {
var p2 = 1 / this._p;
var dTheta_1 = (clockwise ? 1 : -1) * (PI2$1 - p2);
this._add("A", rx, ry, xRot, 1, +clockwise, cx + rx * mathCos(startAngle + dTheta_1), cy + ry * mathSin(startAngle + dTheta_1));
if (p2 > 0.01) {
this._add("A", rx, ry, xRot, 0, +clockwise, x0, y0);
}
} else {
var x2 = cx + rx * mathCos(endAngle);
var y2 = cy + ry * mathSin(endAngle);
this._add("A", rx, ry, xRot, +large, +clockwise, x2, y2);
}
};
SVGPathRebuilder2.prototype.rect = function(x2, y2, w2, h2) {
this._add("M", x2, y2);
this._add("l", w2, 0);
this._add("l", 0, h2);
this._add("l", -w2, 0);
this._add("Z");
};
SVGPathRebuilder2.prototype.closePath = function() {
if (this._d.length > 0) {
this._add("Z");
}
};
SVGPathRebuilder2.prototype._add = function(cmd, a, b2, c2, d2, e2, f2, g2, h2) {
var vals = [];
var p2 = this._p;
for (var i = 1; i < arguments.length; i++) {
var val = arguments[i];
if (isNaN(val)) {
this._invalid = true;
return;
}
vals.push(Math.round(val * p2) / p2);
}
this._d.push(cmd + vals.join(" "));
this._start = cmd === "Z";
};
SVGPathRebuilder2.prototype.generateStr = function() {
this._str = this._invalid ? "" : this._d.join("");
this._d = [];
};
SVGPathRebuilder2.prototype.getStr = function() {
return this._str;
};
return SVGPathRebuilder2;
}();
var NONE = "none";
var mathRound = Math.round;
function pathHasFill(style2) {
var fill = style2.fill;
return fill != null && fill !== NONE;
}
function pathHasStroke(style2) {
var stroke = style2.stroke;
return stroke != null && stroke !== NONE;
}
var strokeProps = ["lineCap", "miterLimit", "lineJoin"];
var svgStrokeProps = map$1(strokeProps, function(prop) {
return "stroke-" + prop.toLowerCase();
});
function mapStyleToAttrs(updateAttr2, style2, el2, forceUpdate) {
var opacity = style2.opacity == null ? 1 : style2.opacity;
if (el2 instanceof ZRImage) {
updateAttr2("opacity", opacity);
return;
}
if (pathHasFill(style2)) {
var fill = normalizeColor(style2.fill);
updateAttr2("fill", fill.color);
var fillOpacity = style2.fillOpacity != null ? style2.fillOpacity * fill.opacity * opacity : fill.opacity * opacity;
if (fillOpacity < 1) {
updateAttr2("fill-opacity", fillOpacity);
}
} else {
updateAttr2("fill", NONE);
}
if (pathHasStroke(style2)) {
var stroke = normalizeColor(style2.stroke);
updateAttr2("stroke", stroke.color);
var strokeScale = style2.strokeNoScale ? el2.getLineScale() : 1;
var strokeWidth = strokeScale ? (style2.lineWidth || 0) / strokeScale : 0;
var strokeOpacity = style2.strokeOpacity != null ? style2.strokeOpacity * stroke.opacity * opacity : stroke.opacity * opacity;
var strokeFirst = style2.strokeFirst;
if (strokeWidth !== 1) {
updateAttr2("stroke-width", strokeWidth);
}
if (strokeFirst) {
updateAttr2("paint-order", strokeFirst ? "stroke" : "fill");
}
if (strokeOpacity < 1) {
updateAttr2("stroke-opacity", strokeOpacity);
}
if (style2.lineDash) {
var _a2 = getLineDash(el2), lineDash = _a2[0], lineDashOffset = _a2[1];
if (lineDash) {
lineDashOffset = mathRound(lineDashOffset || 0);
updateAttr2("stroke-dasharray", lineDash.join(","));
if (lineDashOffset || forceUpdate) {
updateAttr2("stroke-dashoffset", lineDashOffset);
}
}
}
for (var i = 0; i < strokeProps.length; i++) {
var propName = strokeProps[i];
if (style2[propName] !== DEFAULT_PATH_STYLE[propName]) {
var val = style2[propName] || DEFAULT_PATH_STYLE[propName];
val && updateAttr2(svgStrokeProps[i], val);
}
}
}
}
var SVGNS = "http://www.w3.org/2000/svg";
var XLINKNS = "http://www.w3.org/1999/xlink";
var XMLNS = "http://www.w3.org/2000/xmlns/";
var XML_NAMESPACE = "http://www.w3.org/XML/1998/namespace";
var META_DATA_PREFIX = "ecmeta_";
function createElement(name) {
return document.createElementNS(SVGNS, name);
}
function createVNode(tag, key, attrs, children, text) {
return {
tag,
attrs: attrs || {},
children,
text,
key
};
}
function createElementOpen(name, attrs) {
var attrsStr = [];
if (attrs) {
for (var key in attrs) {
var val = attrs[key];
var part = key;
if (val === false) {
continue;
} else if (val !== true && val != null) {
part += '="' + val + '"';
}
attrsStr.push(part);
}
}
return "<" + name + " " + attrsStr.join(" ") + ">";
}
function createElementClose(name) {
return "</" + name + ">";
}
function vNodeToString(el2, opts) {
opts = opts || {};
var S2 = opts.newline ? "\n" : "";
function convertElToString(el3) {
var children = el3.children, tag = el3.tag, attrs = el3.attrs, text = el3.text;
return createElementOpen(tag, attrs) + (tag !== "style" ? encodeHTML(text) : text || "") + (children ? "" + S2 + map$1(children, function(child) {
return convertElToString(child);
}).join(S2) + S2 : "") + createElementClose(tag);
}
return convertElToString(el2);
}
function getCssString(selectorNodes, animationNodes, opts) {
opts = opts || {};
var S2 = opts.newline ? "\n" : "";
var bracketBegin = " {" + S2;
var bracketEnd = S2 + "}";
var selectors = map$1(keys(selectorNodes), function(className) {
return className + bracketBegin + map$1(keys(selectorNodes[className]), function(attrName) {
return attrName + ":" + selectorNodes[className][attrName] + ";";
}).join(S2) + bracketEnd;
}).join(S2);
var animations = map$1(keys(animationNodes), function(animationName) {
return "@keyframes " + animationName + bracketBegin + map$1(keys(animationNodes[animationName]), function(percent) {
return percent + bracketBegin + map$1(keys(animationNodes[animationName][percent]), function(attrName) {
var val = animationNodes[animationName][percent][attrName];
if (attrName === "d") {
val = 'path("' + val + '")';
}
return attrName + ":" + val + ";";
}).join(S2) + bracketEnd;
}).join(S2) + bracketEnd;
}).join(S2);
if (!selectors && !animations) {
return "";
}
return ["<![CDATA[", selectors, animations, "]]>"].join(S2);
}
function createBrushScope(zrId) {
return {
zrId,
shadowCache: {},
patternCache: {},
gradientCache: {},
clipPathCache: {},
defs: {},
cssNodes: {},
cssAnims: {},
cssStyleCache: {},
cssAnimIdx: 0,
shadowIdx: 0,
gradientIdx: 0,
patternIdx: 0,
clipPathIdx: 0
};
}
function createSVGVNode(width, height, children, useViewBox) {
return createVNode("svg", "root", {
"width": width,
"height": height,
"xmlns": SVGNS,
"xmlns:xlink": XLINKNS,
"version": "1.1",
"baseProfile": "full",
"viewBox": useViewBox ? "0 0 " + width + " " + height : false
}, children);
}
var cssClassIdx = 0;
function getClassId() {
return cssClassIdx++;
}
var EASING_MAP = {
cubicIn: "0.32,0,0.67,0",
cubicOut: "0.33,1,0.68,1",
cubicInOut: "0.65,0,0.35,1",
quadraticIn: "0.11,0,0.5,0",
quadraticOut: "0.5,1,0.89,1",
quadraticInOut: "0.45,0,0.55,1",
quarticIn: "0.5,0,0.75,0",
quarticOut: "0.25,1,0.5,1",
quarticInOut: "0.76,0,0.24,1",
quinticIn: "0.64,0,0.78,0",
quinticOut: "0.22,1,0.36,1",
quinticInOut: "0.83,0,0.17,1",
sinusoidalIn: "0.12,0,0.39,0",
sinusoidalOut: "0.61,1,0.88,1",
sinusoidalInOut: "0.37,0,0.63,1",
exponentialIn: "0.7,0,0.84,0",
exponentialOut: "0.16,1,0.3,1",
exponentialInOut: "0.87,0,0.13,1",
circularIn: "0.55,0,1,0.45",
circularOut: "0,0.55,0.45,1",
circularInOut: "0.85,0,0.15,1"
};
var transformOriginKey = "transform-origin";
function buildPathString(el2, kfShape, path) {
var shape = extend({}, el2.shape);
extend(shape, kfShape);
el2.buildPath(path, shape);
var svgPathBuilder = new SVGPathRebuilder();
svgPathBuilder.reset(getPathPrecision(el2));
path.rebuildPath(svgPathBuilder, 1);
svgPathBuilder.generateStr();
return svgPathBuilder.getStr();
}
function setTransformOrigin(target, transform2) {
var originX = transform2.originX, originY = transform2.originY;
if (originX || originY) {
target[transformOriginKey] = originX + "px " + originY + "px";
}
}
var ANIMATE_STYLE_MAP = {
fill: "fill",
opacity: "opacity",
lineWidth: "stroke-width",
lineDashOffset: "stroke-dashoffset"
};
function addAnimation(cssAnim, scope) {
var animationName = scope.zrId + "-ani-" + scope.cssAnimIdx++;
scope.cssAnims[animationName] = cssAnim;
return animationName;
}
function createCompoundPathCSSAnimation(el2, attrs, scope) {
var paths = el2.shape.paths;
var composedAnim = {};
var cssAnimationCfg;
var cssAnimationName;
each$f(paths, function(path) {
var subScope = createBrushScope(scope.zrId);
subScope.animation = true;
createCSSAnimation(path, {}, subScope, true);
var cssAnims = subScope.cssAnims;
var cssNodes = subScope.cssNodes;
var animNames = keys(cssAnims);
var len2 = animNames.length;
if (!len2) {
return;
}
cssAnimationName = animNames[len2 - 1];
var lastAnim = cssAnims[cssAnimationName];
for (var percent in lastAnim) {
var kf = lastAnim[percent];
composedAnim[percent] = composedAnim[percent] || { d: "" };
composedAnim[percent].d += kf.d || "";
}
for (var className in cssNodes) {
var val = cssNodes[className].animation;
if (val.indexOf(cssAnimationName) >= 0) {
cssAnimationCfg = val;
}
}
});
if (!cssAnimationCfg) {
return;
}
attrs.d = false;
var animationName = addAnimation(composedAnim, scope);
return cssAnimationCfg.replace(cssAnimationName, animationName);
}
function getEasingFunc(easing) {
return isString$1(easing) ? EASING_MAP[easing] ? "cubic-bezier(" + EASING_MAP[easing] + ")" : createCubicEasingFunc(easing) ? easing : "" : "";
}
function createCSSAnimation(el2, attrs, scope, onlyShape) {
var animators = el2.animators;
var len2 = animators.length;
var cssAnimations = [];
if (el2 instanceof CompoundPath) {
var animationCfg = createCompoundPathCSSAnimation(el2, attrs, scope);
if (animationCfg) {
cssAnimations.push(animationCfg);
} else if (!len2) {
return;
}
} else if (!len2) {
return;
}
var groupAnimators = {};
for (var i = 0; i < len2; i++) {
var animator = animators[i];
var cfgArr = [animator.getMaxTime() / 1e3 + "s"];
var easing = getEasingFunc(animator.getClip().easing);
var delay = animator.getDelay();
if (easing) {
cfgArr.push(easing);
} else {
cfgArr.push("linear");
}
if (delay) {
cfgArr.push(delay / 1e3 + "s");
}
if (animator.getLoop()) {
cfgArr.push("infinite");
}
var cfg = cfgArr.join(" ");
groupAnimators[cfg] = groupAnimators[cfg] || [cfg, []];
groupAnimators[cfg][1].push(animator);
}
function createSingleCSSAnimation(groupAnimator) {
var animators2 = groupAnimator[1];
var len3 = animators2.length;
var transformKfs = {};
var shapeKfs = {};
var finalKfs = {};
var animationTimingFunctionAttrName = "animation-timing-function";
function saveAnimatorTrackToCssKfs(animator3, cssKfs, toCssAttrName) {
var tracks = animator3.getTracks();
var maxTime = animator3.getMaxTime();
for (var k2 = 0; k2 < tracks.length; k2++) {
var track = tracks[k2];
if (track.needsAnimate()) {
var kfs = track.keyframes;
var attrName = track.propName;
toCssAttrName && (attrName = toCssAttrName(attrName));
if (attrName) {
for (var i3 = 0; i3 < kfs.length; i3++) {
var kf = kfs[i3];
var percent2 = Math.round(kf.time / maxTime * 100) + "%";
var kfEasing = getEasingFunc(kf.easing);
var rawValue = kf.rawValue;
if (isString$1(rawValue) || isNumber(rawValue)) {
cssKfs[percent2] = cssKfs[percent2] || {};
cssKfs[percent2][attrName] = kf.rawValue;
if (kfEasing) {
cssKfs[percent2][animationTimingFunctionAttrName] = kfEasing;
}
}
}
}
}
}
}
for (var i2 = 0; i2 < len3; i2++) {
var animator2 = animators2[i2];
var targetProp = animator2.targetName;
if (!targetProp) {
!onlyShape && saveAnimatorTrackToCssKfs(animator2, transformKfs);
} else if (targetProp === "shape") {
saveAnimatorTrackToCssKfs(animator2, shapeKfs);
}
}
for (var percent in transformKfs) {
var transform2 = {};
copyTransform(transform2, el2);
extend(transform2, transformKfs[percent]);
var str = getSRTTransformString(transform2);
var timingFunction = transformKfs[percent][animationTimingFunctionAttrName];
finalKfs[percent] = str ? {
transform: str
} : {};
setTransformOrigin(finalKfs[percent], transform2);
if (timingFunction) {
finalKfs[percent][animationTimingFunctionAttrName] = timingFunction;
}
}
var path;
var canAnimateShape = true;
for (var percent in shapeKfs) {
finalKfs[percent] = finalKfs[percent] || {};
var isFirst = !path;
var timingFunction = shapeKfs[percent][animationTimingFunctionAttrName];
if (isFirst) {
path = new PathProxy();
}
var len_1 = path.len();
path.reset();
finalKfs[percent].d = buildPathString(el2, shapeKfs[percent], path);
var newLen = path.len();
if (!isFirst && len_1 !== newLen) {
canAnimateShape = false;
break;
}
if (timingFunction) {
finalKfs[percent][animationTimingFunctionAttrName] = timingFunction;
}
}
if (!canAnimateShape) {
for (var percent in finalKfs) {
delete finalKfs[percent].d;
}
}
if (!onlyShape) {
for (var i2 = 0; i2 < len3; i2++) {
var animator2 = animators2[i2];
var targetProp = animator2.targetName;
if (targetProp === "style") {
saveAnimatorTrackToCssKfs(animator2, finalKfs, function(propName) {
return ANIMATE_STYLE_MAP[propName];
});
}
}
}
var percents = keys(finalKfs);
var allTransformOriginSame = true;
var transformOrigin;
for (var i2 = 1; i2 < percents.length; i2++) {
var p0 = percents[i2 - 1];
var p1 = percents[i2];
if (finalKfs[p0][transformOriginKey] !== finalKfs[p1][transformOriginKey]) {
allTransformOriginSame = false;
break;
}
transformOrigin = finalKfs[p0][transformOriginKey];
}
if (allTransformOriginSame && transformOrigin) {
for (var percent in finalKfs) {
if (finalKfs[percent][transformOriginKey]) {
delete finalKfs[percent][transformOriginKey];
}
}
attrs[transformOriginKey] = transformOrigin;
}
if (filter(percents, function(percent2) {
return keys(finalKfs[percent2]).length > 0;
}).length) {
var animationName = addAnimation(finalKfs, scope);
return animationName + " " + groupAnimator[0] + " both";
}
}
for (var key in groupAnimators) {
var animationCfg = createSingleCSSAnimation(groupAnimators[key]);
if (animationCfg) {
cssAnimations.push(animationCfg);
}
}
if (cssAnimations.length) {
var className = scope.zrId + "-cls-" + getClassId();
scope.cssNodes["." + className] = {
animation: cssAnimations.join(",")
};
attrs["class"] = className;
}
}
function createCSSEmphasis(el2, attrs, scope) {
if (!el2.ignore) {
if (el2.isSilent()) {
var style2 = {
"pointer-events": "none"
};
setClassAttribute(style2, attrs, scope);
} else {
var emphasisStyle = el2.states.emphasis && el2.states.emphasis.style ? el2.states.emphasis.style : {};
var fill = emphasisStyle.fill;
if (!fill) {
var normalFill = el2.style && el2.style.fill;
var selectFill = el2.states.select && el2.states.select.style && el2.states.select.style.fill;
var fromFill = el2.currentStates.indexOf("select") >= 0 ? selectFill || normalFill : normalFill;
if (fromFill) {
fill = liftColor(fromFill);
}
}
var lineWidth = emphasisStyle.lineWidth;
if (lineWidth) {
var scaleX = !emphasisStyle.strokeNoScale && el2.transform ? el2.transform[0] : 1;
lineWidth = lineWidth / scaleX;
}
var style2 = {
cursor: "pointer"
};
if (fill) {
style2.fill = fill;
}
if (emphasisStyle.stroke) {
style2.stroke = emphasisStyle.stroke;
}
if (lineWidth) {
style2["stroke-width"] = lineWidth;
}
setClassAttribute(style2, attrs, scope);
}
}
}
function setClassAttribute(style2, attrs, scope, withHover) {
var styleKey = JSON.stringify(style2);
var className = scope.cssStyleCache[styleKey];
if (!className) {
className = scope.zrId + "-cls-" + getClassId();
scope.cssStyleCache[styleKey] = className;
scope.cssNodes["." + className + ":hover"] = style2;
}
attrs["class"] = attrs["class"] ? attrs["class"] + " " + className : className;
}
var round$1 = Math.round;
function isImageLike(val) {
return val && isString$1(val.src);
}
function isCanvasLike(val) {
return val && isFunction$1(val.toDataURL);
}
function setStyleAttrs(attrs, style2, el2, scope) {
mapStyleToAttrs(function(key, val) {
var isFillStroke = key === "fill" || key === "stroke";
if (isFillStroke && isGradient(val)) {
setGradient(style2, attrs, key, scope);
} else if (isFillStroke && isPattern(val)) {
setPattern(el2, attrs, key, scope);
} else if (isFillStroke && val === "none") {
attrs[key] = "transparent";
} else {
attrs[key] = val;
}
}, style2, el2, false);
setShadow(el2, attrs, scope);
}
function setMetaData(attrs, el2) {
var metaData = getElementSSRData(el2);
if (metaData) {
metaData.each(function(val, key) {
val != null && (attrs[(META_DATA_PREFIX + key).toLowerCase()] = val + "");
});
if (el2.isSilent()) {
attrs[META_DATA_PREFIX + "silent"] = "true";
}
}
}
function noRotateScale(m2) {
return isAroundZero(m2[0] - 1) && isAroundZero(m2[1]) && isAroundZero(m2[2]) && isAroundZero(m2[3] - 1);
}
function noTranslate(m2) {
return isAroundZero(m2[4]) && isAroundZero(m2[5]);
}
function setTransform(attrs, m2, compress) {
if (m2 && !(noTranslate(m2) && noRotateScale(m2))) {
var mul2 = 1e4;
attrs.transform = noRotateScale(m2) ? "translate(" + round$1(m2[4] * mul2) / mul2 + " " + round$1(m2[5] * mul2) / mul2 + ")" : getMatrixStr(m2);
}
}
function convertPolyShape(shape, attrs, mul2) {
var points2 = shape.points;
var strArr = [];
for (var i = 0; i < points2.length; i++) {
strArr.push(round$1(points2[i][0] * mul2) / mul2);
strArr.push(round$1(points2[i][1] * mul2) / mul2);
}
attrs.points = strArr.join(" ");
}
function validatePolyShape(shape) {
return !shape.smooth;
}
function createAttrsConvert(desc) {
var normalizedDesc = map$1(desc, function(item) {
return typeof item === "string" ? [item, item] : item;
});
return function(shape, attrs, mul2) {
for (var i = 0; i < normalizedDesc.length; i++) {
var item = normalizedDesc[i];
var val = shape[item[0]];
if (val != null) {
attrs[item[1]] = round$1(val * mul2) / mul2;
}
}
};
}
var builtinShapesDef = {
circle: [createAttrsConvert(["cx", "cy", "r"])],
polyline: [convertPolyShape, validatePolyShape],
polygon: [convertPolyShape, validatePolyShape]
};
function hasShapeAnimation(el2) {
var animators = el2.animators;
for (var i = 0; i < animators.length; i++) {
if (animators[i].targetName === "shape") {
return true;
}
}
return false;
}
function brushSVGPath(el2, scope) {
var style2 = el2.style;
var shape = el2.shape;
var builtinShpDef = builtinShapesDef[el2.type];
var attrs = {};
var needsAnimate = scope.animation;
var svgElType = "path";
var strokePercent = el2.style.strokePercent;
var precision = scope.compress && getPathPrecision(el2) || 4;
if (builtinShpDef && !scope.willUpdate && !(builtinShpDef[1] && !builtinShpDef[1](shape)) && !(needsAnimate && hasShapeAnimation(el2)) && !(strokePercent < 1)) {
svgElType = el2.type;
var mul2 = Math.pow(10, precision);
builtinShpDef[0](shape, attrs, mul2);
} else {
var needBuildPath = !el2.path || el2.shapeChanged();
if (!el2.path) {
el2.createPathProxy();
}
var path = el2.path;
if (needBuildPath) {
path.beginPath();
el2.buildPath(path, el2.shape);
el2.pathUpdated();
}
var pathVersion = path.getVersion();
var elExt = el2;
var svgPathBuilder = elExt.__svgPathBuilder;
if (elExt.__svgPathVersion !== pathVersion || !svgPathBuilder || strokePercent !== elExt.__svgPathStrokePercent) {
if (!svgPathBuilder) {
svgPathBuilder = elExt.__svgPathBuilder = new SVGPathRebuilder();
}
svgPathBuilder.reset(precision);
path.rebuildPath(svgPathBuilder, strokePercent);
svgPathBuilder.generateStr();
elExt.__svgPathVersion = pathVersion;
elExt.__svgPathStrokePercent = strokePercent;
}
attrs.d = svgPathBuilder.getStr();
}
setTransform(attrs, el2.transform);
setStyleAttrs(attrs, style2, el2, scope);
setMetaData(attrs, el2);
scope.animation && createCSSAnimation(el2, attrs, scope);
scope.emphasis && createCSSEmphasis(el2, attrs, scope);
return createVNode(svgElType, el2.id + "", attrs);
}
function brushSVGImage(el2, scope) {
var style2 = el2.style;
var image = style2.image;
if (image && !isString$1(image)) {
if (isImageLike(image)) {
image = image.src;
} else if (isCanvasLike(image)) {
image = image.toDataURL();
}
}
if (!image) {
return;
}
var x2 = style2.x || 0;
var y2 = style2.y || 0;
var dw = style2.width;
var dh2 = style2.height;
var attrs = {
href: image,
width: dw,
height: dh2
};
if (x2) {
attrs.x = x2;
}
if (y2) {
attrs.y = y2;
}
setTransform(attrs, el2.transform);
setStyleAttrs(attrs, style2, el2, scope);
setMetaData(attrs, el2);
scope.animation && createCSSAnimation(el2, attrs, scope);
return createVNode("image", el2.id + "", attrs);
}
function brushSVGTSpan(el2, scope) {
var style2 = el2.style;
var text = style2.text;
text != null && (text += "");
if (!text || isNaN(style2.x) || isNaN(style2.y)) {
return;
}
var font = style2.font || DEFAULT_FONT;
var x2 = style2.x || 0;
var y2 = adjustTextY$1(style2.y || 0, getLineHeight(font), style2.textBaseline);
var textAlign = TEXT_ALIGN_TO_ANCHOR[style2.textAlign] || style2.textAlign;
var attrs = {
"dominant-baseline": "central",
"text-anchor": textAlign
};
if (hasSeparateFont(style2)) {
var separatedFontStr = "";
var fontStyle = style2.fontStyle;
var fontSize = parseFontSize(style2.fontSize);
if (!parseFloat(fontSize)) {
return;
}
var fontFamily = style2.fontFamily || DEFAULT_FONT_FAMILY;
var fontWeight = style2.fontWeight;
separatedFontStr += "font-size:" + fontSize + ";font-family:" + fontFamily + ";";
if (fontStyle && fontStyle !== "normal") {
separatedFontStr += "font-style:" + fontStyle + ";";
}
if (fontWeight && fontWeight !== "normal") {
separatedFontStr += "font-weight:" + fontWeight + ";";
}
attrs.style = separatedFontStr;
} else {
attrs.style = "font: " + font;
}
if (text.match(/\s/)) {
attrs["xml:space"] = "preserve";
}
if (x2) {
attrs.x = x2;
}
if (y2) {
attrs.y = y2;
}
setTransform(attrs, el2.transform);
setStyleAttrs(attrs, style2, el2, scope);
setMetaData(attrs, el2);
scope.animation && createCSSAnimation(el2, attrs, scope);
return createVNode("text", el2.id + "", attrs, void 0, text);
}
function brush(el2, scope) {
if (el2 instanceof Path) {
return brushSVGPath(el2, scope);
} else if (el2 instanceof ZRImage) {
return brushSVGImage(el2, scope);
} else if (el2 instanceof TSpan) {
return brushSVGTSpan(el2, scope);
}
}
function setShadow(el2, attrs, scope) {
var style2 = el2.style;
if (hasShadow(style2)) {
var shadowKey = getShadowKey(el2);
var shadowCache = scope.shadowCache;
var shadowId = shadowCache[shadowKey];
if (!shadowId) {
var globalScale = el2.getGlobalScale();
var scaleX = globalScale[0];
var scaleY = globalScale[1];
if (!scaleX || !scaleY) {
return;
}
var offsetX = style2.shadowOffsetX || 0;
var offsetY = style2.shadowOffsetY || 0;
var blur_1 = style2.shadowBlur;
var _a2 = normalizeColor(style2.shadowColor), opacity = _a2.opacity, color2 = _a2.color;
var stdDx = blur_1 / 2 / scaleX;
var stdDy = blur_1 / 2 / scaleY;
var stdDeviation = stdDx + " " + stdDy;
shadowId = scope.zrId + "-s" + scope.shadowIdx++;
scope.defs[shadowId] = createVNode("filter", shadowId, {
"id": shadowId,
"x": "-100%",
"y": "-100%",
"width": "300%",
"height": "300%"
}, [
createVNode("feDropShadow", "", {
"dx": offsetX / scaleX,
"dy": offsetY / scaleY,
"stdDeviation": stdDeviation,
"flood-color": color2,
"flood-opacity": opacity
})
]);
shadowCache[shadowKey] = shadowId;
}
attrs.filter = getIdURL(shadowId);
}
}
function setGradient(style2, attrs, target, scope) {
var val = style2[target];
var gradientTag;
var gradientAttrs = {
"gradientUnits": val.global ? "userSpaceOnUse" : "objectBoundingBox"
};
if (isLinearGradient(val)) {
gradientTag = "linearGradient";
gradientAttrs.x1 = val.x;
gradientAttrs.y1 = val.y;
gradientAttrs.x2 = val.x2;
gradientAttrs.y2 = val.y2;
} else if (isRadialGradient(val)) {
gradientTag = "radialGradient";
gradientAttrs.cx = retrieve2(val.x, 0.5);
gradientAttrs.cy = retrieve2(val.y, 0.5);
gradientAttrs.r = retrieve2(val.r, 0.5);
} else {
return;
}
var colors = val.colorStops;
var colorStops = [];
for (var i = 0, len2 = colors.length; i < len2; ++i) {
var offset2 = round4(colors[i].offset) * 100 + "%";
var stopColor = colors[i].color;
var _a2 = normalizeColor(stopColor), color2 = _a2.color, opacity = _a2.opacity;
var stopsAttrs = {
"offset": offset2
};
stopsAttrs["stop-color"] = color2;
if (opacity < 1) {
stopsAttrs["stop-opacity"] = opacity;
}
colorStops.push(createVNode("stop", i + "", stopsAttrs));
}
var gradientVNode = createVNode(gradientTag, "", gradientAttrs, colorStops);
var gradientKey = vNodeToString(gradientVNode);
var gradientCache = scope.gradientCache;
var gradientId = gradientCache[gradientKey];
if (!gradientId) {
gradientId = scope.zrId + "-g" + scope.gradientIdx++;
gradientCache[gradientKey] = gradientId;
gradientAttrs.id = gradientId;
scope.defs[gradientId] = createVNode(gradientTag, gradientId, gradientAttrs, colorStops);
}
attrs[target] = getIdURL(gradientId);
}
function setPattern(el2, attrs, target, scope) {
var val = el2.style[target];
var boundingRect = el2.getBoundingRect();
var patternAttrs = {};
var repeat = val.repeat;
var noRepeat = repeat === "no-repeat";
var repeatX = repeat === "repeat-x";
var repeatY = repeat === "repeat-y";
var child;
if (isImagePattern(val)) {
var imageWidth_1 = val.imageWidth;
var imageHeight_1 = val.imageHeight;
var imageSrc = void 0;
var patternImage = val.image;
if (isString$1(patternImage)) {
imageSrc = patternImage;
} else if (isImageLike(patternImage)) {
imageSrc = patternImage.src;
} else if (isCanvasLike(patternImage)) {
imageSrc = patternImage.toDataURL();
}
if (typeof Image === "undefined") {
var errMsg = "Image width/height must been given explictly in svg-ssr renderer.";
assert(imageWidth_1, errMsg);
assert(imageHeight_1, errMsg);
} else if (imageWidth_1 == null || imageHeight_1 == null) {
var setSizeToVNode_1 = function(vNode, img) {
if (vNode) {
var svgEl = vNode.elm;
var width = imageWidth_1 || img.width;
var height = imageHeight_1 || img.height;
if (vNode.tag === "pattern") {
if (repeatX) {
height = 1;
width /= boundingRect.width;
} else if (repeatY) {
width = 1;
height /= boundingRect.height;
}
}
vNode.attrs.width = width;
vNode.attrs.height = height;
if (svgEl) {
svgEl.setAttribute("width", width);
svgEl.setAttribute("height", height);
}
}
};
var createdImage = createOrUpdateImage(imageSrc, null, el2, function(img) {
noRepeat || setSizeToVNode_1(patternVNode, img);
setSizeToVNode_1(child, img);
});
if (createdImage && createdImage.width && createdImage.height) {
imageWidth_1 = imageWidth_1 || createdImage.width;
imageHeight_1 = imageHeight_1 || createdImage.height;
}
}
child = createVNode("image", "img", {
href: imageSrc,
width: imageWidth_1,
height: imageHeight_1
});
patternAttrs.width = imageWidth_1;
patternAttrs.height = imageHeight_1;
} else if (val.svgElement) {
child = clone$4(val.svgElement);
patternAttrs.width = val.svgWidth;
patternAttrs.height = val.svgHeight;
}
if (!child) {
return;
}
var patternWidth;
var patternHeight;
if (noRepeat) {
patternWidth = patternHeight = 1;
} else if (repeatX) {
patternHeight = 1;
patternWidth = patternAttrs.width / boundingRect.width;
} else if (repeatY) {
patternWidth = 1;
patternHeight = patternAttrs.height / boundingRect.height;
} else {
patternAttrs.patternUnits = "userSpaceOnUse";
}
if (patternWidth != null && !isNaN(patternWidth)) {
patternAttrs.width = patternWidth;
}
if (patternHeight != null && !isNaN(patternHeight)) {
patternAttrs.height = patternHeight;
}
var patternTransform = getSRTTransformString(val);
patternTransform && (patternAttrs.patternTransform = patternTransform);
var patternVNode = createVNode("pattern", "", patternAttrs, [child]);
var patternKey = vNodeToString(patternVNode);
var patternCache = scope.patternCache;
var patternId = patternCache[patternKey];
if (!patternId) {
patternId = scope.zrId + "-p" + scope.patternIdx++;
patternCache[patternKey] = patternId;
patternAttrs.id = patternId;
patternVNode = scope.defs[patternId] = createVNode("pattern", patternId, patternAttrs, [child]);
}
attrs[target] = getIdURL(patternId);
}
function setClipPath(clipPath, attrs, scope) {
var clipPathCache = scope.clipPathCache, defs = scope.defs;
var clipPathId = clipPathCache[clipPath.id];
if (!clipPathId) {
clipPathId = scope.zrId + "-c" + scope.clipPathIdx++;
var clipPathAttrs = {
id: clipPathId
};
clipPathCache[clipPath.id] = clipPathId;
defs[clipPathId] = createVNode("clipPath", clipPathId, clipPathAttrs, [brushSVGPath(clipPath, scope)]);
}
attrs["clip-path"] = getIdURL(clipPathId);
}
function createTextNode(text) {
return document.createTextNode(text);
}
function insertBefore(parentNode2, newNode, referenceNode) {
parentNode2.insertBefore(newNode, referenceNode);
}
function removeChild(node2, child) {
node2.removeChild(child);
}
function appendChild(node2, child) {
node2.appendChild(child);
}
function parentNode(node2) {
return node2.parentNode;
}
function nextSibling(node2) {
return node2.nextSibling;
}
function setTextContent(node2, text) {
node2.textContent = text;
}
var colonChar = 58;
var xChar = 120;
var emptyNode = createVNode("", "");
function isUndef(s) {
return s === void 0;
}
function isDef(s) {
return s !== void 0;
}
function createKeyToOldIdx(children, beginIdx, endIdx) {
var map2 = {};
for (var i = beginIdx; i <= endIdx; ++i) {
var key = children[i].key;
if (key !== void 0) {
map2[key] = i;
}
}
return map2;
}
function sameVnode(vnode1, vnode2) {
var isSameKey = vnode1.key === vnode2.key;
var isSameTag = vnode1.tag === vnode2.tag;
return isSameTag && isSameKey;
}
function createElm(vnode) {
var i;
var children = vnode.children;
var tag = vnode.tag;
if (isDef(tag)) {
var elm = vnode.elm = createElement(tag);
updateAttrs(emptyNode, vnode);
if (isArray$1(children)) {
for (i = 0; i < children.length; ++i) {
var ch2 = children[i];
if (ch2 != null) {
appendChild(elm, createElm(ch2));
}
}
} else if (isDef(vnode.text) && !isObject$3(vnode.text)) {
appendChild(elm, createTextNode(vnode.text));
}
} else {
vnode.elm = createTextNode(vnode.text);
}
return vnode.elm;
}
function addVnodes(parentElm, before, vnodes, startIdx, endIdx) {
for (; startIdx <= endIdx; ++startIdx) {
var ch2 = vnodes[startIdx];
if (ch2 != null) {
insertBefore(parentElm, createElm(ch2), before);
}
}
}
function removeVnodes(parentElm, vnodes, startIdx, endIdx) {
for (; startIdx <= endIdx; ++startIdx) {
var ch2 = vnodes[startIdx];
if (ch2 != null) {
if (isDef(ch2.tag)) {
var parent_1 = parentNode(ch2.elm);
removeChild(parent_1, ch2.elm);
} else {
removeChild(parentElm, ch2.elm);
}
}
}
}
function updateAttrs(oldVnode, vnode) {
var key;
var elm = vnode.elm;
var oldAttrs = oldVnode && oldVnode.attrs || {};
var attrs = vnode.attrs || {};
if (oldAttrs === attrs) {
return;
}
for (key in attrs) {
var cur = attrs[key];
var old = oldAttrs[key];
if (old !== cur) {
if (cur === true) {
elm.setAttribute(key, "");
} else if (cur === false) {
elm.removeAttribute(key);
} else {
if (key === "style") {
elm.style.cssText = cur;
} else if (key.charCodeAt(0) !== xChar) {
elm.setAttribute(key, cur);
} else if (key === "xmlns:xlink" || key === "xmlns") {
elm.setAttributeNS(XMLNS, key, cur);
} else if (key.charCodeAt(3) === colonChar) {
elm.setAttributeNS(XML_NAMESPACE, key, cur);
} else if (key.charCodeAt(5) === colonChar) {
elm.setAttributeNS(XLINKNS, key, cur);
} else {
elm.setAttribute(key, cur);
}
}
}
}
for (key in oldAttrs) {
if (!(key in attrs)) {
elm.removeAttribute(key);
}
}
}
function updateChildren(parentElm, oldCh, newCh) {
var oldStartIdx = 0;
var newStartIdx = 0;
var oldEndIdx = oldCh.length - 1;
var oldStartVnode = oldCh[0];
var oldEndVnode = oldCh[oldEndIdx];
var newEndIdx = newCh.length - 1;
var newStartVnode = newCh[0];
var newEndVnode = newCh[newEndIdx];
var oldKeyToIdx;
var idxInOld;
var elmToMove;
var before;
while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {
if (oldStartVnode == null) {
oldStartVnode = oldCh[++oldStartIdx];
} else if (oldEndVnode == null) {
oldEndVnode = oldCh[--oldEndIdx];
} else if (newStartVnode == null) {
newStartVnode = newCh[++newStartIdx];
} else if (newEndVnode == null) {
newEndVnode = newCh[--newEndIdx];
} else if (sameVnode(oldStartVnode, newStartVnode)) {
patchVnode(oldStartVnode, newStartVnode);
oldStartVnode = oldCh[++oldStartIdx];
newStartVnode = newCh[++newStartIdx];
} else if (sameVnode(oldEndVnode, newEndVnode)) {
patchVnode(oldEndVnode, newEndVnode);
oldEndVnode = oldCh[--oldEndIdx];
newEndVnode = newCh[--newEndIdx];
} else if (sameVnode(oldStartVnode, newEndVnode)) {
patchVnode(oldStartVnode, newEndVnode);
insertBefore(parentElm, oldStartVnode.elm, nextSibling(oldEndVnode.elm));
oldStartVnode = oldCh[++oldStartIdx];
newEndVnode = newCh[--newEndIdx];
} else if (sameVnode(oldEndVnode, newStartVnode)) {
patchVnode(oldEndVnode, newStartVnode);
insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);
oldEndVnode = oldCh[--oldEndIdx];
newStartVnode = newCh[++newStartIdx];
} else {
if (isUndef(oldKeyToIdx)) {
oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx);
}
idxInOld = oldKeyToIdx[newStartVnode.key];
if (isUndef(idxInOld)) {
insertBefore(parentElm, createElm(newStartVnode), oldStartVnode.elm);
} else {
elmToMove = oldCh[idxInOld];
if (elmToMove.tag !== newStartVnode.tag) {
insertBefore(parentElm, createElm(newStartVnode), oldStartVnode.elm);
} else {
patchVnode(elmToMove, newStartVnode);
oldCh[idxInOld] = void 0;
insertBefore(parentElm, elmToMove.elm, oldStartVnode.elm);
}
}
newStartVnode = newCh[++newStartIdx];
}
}
if (oldStartIdx <= oldEndIdx || newStartIdx <= newEndIdx) {
if (oldStartIdx > oldEndIdx) {
before = newCh[newEndIdx + 1] == null ? null : newCh[newEndIdx + 1].elm;
addVnodes(parentElm, before, newCh, newStartIdx, newEndIdx);
} else {
removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);
}
}
}
function patchVnode(oldVnode, vnode) {
var elm = vnode.elm = oldVnode.elm;
var oldCh = oldVnode.children;
var ch2 = vnode.children;
if (oldVnode === vnode) {
return;
}
updateAttrs(oldVnode, vnode);
if (isUndef(vnode.text)) {
if (isDef(oldCh) && isDef(ch2)) {
if (oldCh !== ch2) {
updateChildren(elm, oldCh, ch2);
}
} else if (isDef(ch2)) {
if (isDef(oldVnode.text)) {
setTextContent(elm, "");
}
addVnodes(elm, null, ch2, 0, ch2.length - 1);
} else if (isDef(oldCh)) {
removeVnodes(elm, oldCh, 0, oldCh.length - 1);
} else if (isDef(oldVnode.text)) {
setTextContent(elm, "");
}
} else if (oldVnode.text !== vnode.text) {
if (isDef(oldCh)) {
removeVnodes(elm, oldCh, 0, oldCh.length - 1);
}
setTextContent(elm, vnode.text);
}
}
function patch(oldVnode, vnode) {
if (sameVnode(oldVnode, vnode)) {
patchVnode(oldVnode, vnode);
} else {
var elm = oldVnode.elm;
var parent_2 = parentNode(elm);
createElm(vnode);
if (parent_2 !== null) {
insertBefore(parent_2, vnode.elm, nextSibling(elm));
removeVnodes(parent_2, [oldVnode], 0, 0);
}
}
return vnode;
}
var svgId = 0;
var SVGPainter = function() {
function SVGPainter2(root, storage2, opts) {
this.type = "svg";
this.refreshHover = createMethodNotSupport();
this.configLayer = createMethodNotSupport();
this.storage = storage2;
this._opts = opts = extend({}, opts);
this.root = root;
this._id = "zr" + svgId++;
this._oldVNode = createSVGVNode(opts.width, opts.height);
if (root && !opts.ssr) {
var viewport = this._viewport = document.createElement("div");
viewport.style.cssText = "position:relative;overflow:hidden";
var svgDom = this._svgDom = this._oldVNode.elm = createElement("svg");
updateAttrs(null, this._oldVNode);
viewport.appendChild(svgDom);
root.appendChild(viewport);
}
this.resize(opts.width, opts.height);
}
SVGPainter2.prototype.getType = function() {
return this.type;
};
SVGPainter2.prototype.getViewportRoot = function() {
return this._viewport;
};
SVGPainter2.prototype.getViewportRootOffset = function() {
var viewportRoot = this.getViewportRoot();
if (viewportRoot) {
return {
offsetLeft: viewportRoot.offsetLeft || 0,
offsetTop: viewportRoot.offsetTop || 0
};
}
};
SVGPainter2.prototype.getSvgDom = function() {
return this._svgDom;
};
SVGPainter2.prototype.refresh = function() {
if (this.root) {
var vnode = this.renderToVNode({
willUpdate: true
});
vnode.attrs.style = "position:absolute;left:0;top:0;user-select:none";
patch(this._oldVNode, vnode);
this._oldVNode = vnode;
}
};
SVGPainter2.prototype.renderOneToVNode = function(el2) {
return brush(el2, createBrushScope(this._id));
};
SVGPainter2.prototype.renderToVNode = function(opts) {
opts = opts || {};
var list = this.storage.getDisplayList(true);
var width = this._width;
var height = this._height;
var scope = createBrushScope(this._id);
scope.animation = opts.animation;
scope.willUpdate = opts.willUpdate;
scope.compress = opts.compress;
scope.emphasis = opts.emphasis;
var children = [];
var bgVNode = this._bgVNode = createBackgroundVNode(width, height, this._backgroundColor, scope);
bgVNode && children.push(bgVNode);
var mainVNode = !opts.compress ? this._mainVNode = createVNode("g", "main", {}, []) : null;
this._paintList(list, scope, mainVNode ? mainVNode.children : children);
mainVNode && children.push(mainVNode);
var defs = map$1(keys(scope.defs), function(id2) {
return scope.defs[id2];
});
if (defs.length) {
children.push(createVNode("defs", "defs", {}, defs));
}
if (opts.animation) {
var animationCssStr = getCssString(scope.cssNodes, scope.cssAnims, { newline: true });
if (animationCssStr) {
var styleNode = createVNode("style", "stl", {}, [], animationCssStr);
children.push(styleNode);
}
}
return createSVGVNode(width, height, children, opts.useViewBox);
};
SVGPainter2.prototype.renderToString = function(opts) {
opts = opts || {};
return vNodeToString(this.renderToVNode({
animation: retrieve2(opts.cssAnimation, true),
emphasis: retrieve2(opts.cssEmphasis, true),
willUpdate: false,
compress: true,
useViewBox: retrieve2(opts.useViewBox, true)
}), { newline: true });
};
SVGPainter2.prototype.setBackgroundColor = function(backgroundColor2) {
this._backgroundColor = backgroundColor2;
};
SVGPainter2.prototype.getSvgRoot = function() {
return this._mainVNode && this._mainVNode.elm;
};
SVGPainter2.prototype._paintList = function(list, scope, out2) {
var listLen = list.length;
var clipPathsGroupsStack = [];
var clipPathsGroupsStackDepth = 0;
var currentClipPathGroup;
var prevClipPaths;
var clipGroupNodeIdx = 0;
for (var i = 0; i < listLen; i++) {
var displayable = list[i];
if (!displayable.invisible) {
var clipPaths = displayable.__clipPaths;
var len2 = clipPaths && clipPaths.length || 0;
var prevLen = prevClipPaths && prevClipPaths.length || 0;
var lca = void 0;
for (lca = Math.max(len2 - 1, prevLen - 1); lca >= 0; lca--) {
if (clipPaths && prevClipPaths && clipPaths[lca] === prevClipPaths[lca]) {
break;
}
}
for (var i_1 = prevLen - 1; i_1 > lca; i_1--) {
clipPathsGroupsStackDepth--;
currentClipPathGroup = clipPathsGroupsStack[clipPathsGroupsStackDepth - 1];
}
for (var i_2 = lca + 1; i_2 < len2; i_2++) {
var groupAttrs = {};
setClipPath(clipPaths[i_2], groupAttrs, scope);
var g2 = createVNode("g", "clip-g-" + clipGroupNodeIdx++, groupAttrs, []);
(currentClipPathGroup ? currentClipPathGroup.children : out2).push(g2);
clipPathsGroupsStack[clipPathsGroupsStackDepth++] = g2;
currentClipPathGroup = g2;
}
prevClipPaths = clipPaths;
var ret = brush(displayable, scope);
if (ret) {
(currentClipPathGroup ? currentClipPathGroup.children : out2).push(ret);
}
}
}
};
SVGPainter2.prototype.resize = function(width, height) {
var opts = this._opts;
var root = this.root;
var viewport = this._viewport;
width != null && (opts.width = width);
height != null && (opts.height = height);
if (root && viewport) {
viewport.style.display = "none";
width = getSize$1(root, 0, opts);
height = getSize$1(root, 1, opts);
viewport.style.display = "";
}
if (this._width !== width || this._height !== height) {
this._width = width;
this._height = height;
if (viewport) {
var viewportStyle = viewport.style;
viewportStyle.width = width + "px";
viewportStyle.height = height + "px";
}
if (!isPattern(this._backgroundColor)) {
var svgDom = this._svgDom;
if (svgDom) {
svgDom.setAttribute("width", width);
svgDom.setAttribute("height", height);
}
var bgEl = this._bgVNode && this._bgVNode.elm;
if (bgEl) {
bgEl.setAttribute("width", width);
bgEl.setAttribute("height", height);
}
} else {
this.refresh();
}
}
};
SVGPainter2.prototype.getWidth = function() {
return this._width;
};
SVGPainter2.prototype.getHeight = function() {
return this._height;
};
SVGPainter2.prototype.dispose = function() {
if (this.root) {
this.root.innerHTML = "";
}
this._svgDom = this._viewport = this.storage = this._oldVNode = this._bgVNode = this._mainVNode = null;
};
SVGPainter2.prototype.clear = function() {
if (this._svgDom) {
this._svgDom.innerHTML = null;
}
this._oldVNode = null;
};
SVGPainter2.prototype.toDataURL = function(base64) {
var str = this.renderToString();
var prefix = "data:image/svg+xml;";
if (base64) {
str = encodeBase64(str);
return str && prefix + "base64," + str;
}
return prefix + "charset=UTF-8," + encodeURIComponent(str);
};
return SVGPainter2;
}();
function createMethodNotSupport(method4) {
return function() {
};
}
function createBackgroundVNode(width, height, backgroundColor2, scope) {
var bgVNode;
if (backgroundColor2 && backgroundColor2 !== "none") {
bgVNode = createVNode("rect", "bg", {
width,
height,
x: "0",
y: "0"
});
if (isGradient(backgroundColor2)) {
setGradient({ fill: backgroundColor2 }, bgVNode.attrs, "fill", scope);
} else if (isPattern(backgroundColor2)) {
setPattern({
style: {
fill: backgroundColor2
},
dirty: noop2,
getBoundingRect: function() {
return { width, height };
}
}, bgVNode.attrs, "fill", scope);
} else {
var _a2 = normalizeColor(backgroundColor2), color2 = _a2.color, opacity = _a2.opacity;
bgVNode.attrs.fill = color2;
opacity < 1 && (bgVNode.attrs["fill-opacity"] = opacity);
}
}
return bgVNode;
}
function install$S(registers) {
registers.registerPainter("svg", SVGPainter);
}
function createDom(id2, painter, dpr2) {
var newDom = platformApi.createCanvas();
var width = painter.getWidth();
var height = painter.getHeight();
var newDomStyle = newDom.style;
if (newDomStyle) {
newDomStyle.position = "absolute";
newDomStyle.left = "0";
newDomStyle.top = "0";
newDomStyle.width = width + "px";
newDomStyle.height = height + "px";
newDom.setAttribute("data-zr-dom-id", id2);
}
newDom.width = width * dpr2;
newDom.height = height * dpr2;
return newDom;
}
var Layer = function(_super) {
__extends(Layer2, _super);
function Layer2(id2, painter, dpr2) {
var _this = _super.call(this) || this;
_this.motionBlur = false;
_this.lastFrameAlpha = 0.7;
_this.dpr = 1;
_this.virtual = false;
_this.config = {};
_this.incremental = false;
_this.zlevel = 0;
_this.maxRepaintRectCount = 5;
_this.__dirty = true;
_this.__firstTimePaint = true;
_this.__used = false;
_this.__drawIndex = 0;
_this.__startIndex = 0;
_this.__endIndex = 0;
_this.__prevStartIndex = null;
_this.__prevEndIndex = null;
var dom;
dpr2 = dpr2 || devicePixelRatio;
if (typeof id2 === "string") {
dom = createDom(id2, painter, dpr2);
} else if (isObject$3(id2)) {
dom = id2;
id2 = dom.id;
}
_this.id = id2;
_this.dom = dom;
var domStyle = dom.style;
if (domStyle) {
disableUserSelect(dom);
dom.onselectstart = function() {
return false;
};
domStyle.padding = "0";
domStyle.margin = "0";
domStyle.borderWidth = "0";
}
_this.painter = painter;
_this.dpr = dpr2;
return _this;
}
Layer2.prototype.getElementCount = function() {
return this.__endIndex - this.__startIndex;
};
Layer2.prototype.afterBrush = function() {
this.__prevStartIndex = this.__startIndex;
this.__prevEndIndex = this.__endIndex;
};
Layer2.prototype.initContext = function() {
this.ctx = this.dom.getContext("2d");
this.ctx.dpr = this.dpr;
};
Layer2.prototype.setUnpainted = function() {
this.__firstTimePaint = true;
};
Layer2.prototype.createBackBuffer = function() {
var dpr2 = this.dpr;
this.domBack = createDom("back-" + this.id, this.painter, dpr2);
this.ctxBack = this.domBack.getContext("2d");
if (dpr2 !== 1) {
this.ctxBack.scale(dpr2, dpr2);
}
};
Layer2.prototype.createRepaintRects = function(displayList, prevList, viewWidth, viewHeight) {
if (this.__firstTimePaint) {
this.__firstTimePaint = false;
return null;
}
var mergedRepaintRects = [];
var maxRepaintRectCount = this.maxRepaintRectCount;
var full = false;
var pendingRect = new BoundingRect(0, 0, 0, 0);
function addRectToMergePool(rect) {
if (!rect.isFinite() || rect.isZero()) {
return;
}
if (mergedRepaintRects.length === 0) {
var boundingRect = new BoundingRect(0, 0, 0, 0);
boundingRect.copy(rect);
mergedRepaintRects.push(boundingRect);
} else {
var isMerged = false;
var minDeltaArea = Infinity;
var bestRectToMergeIdx = 0;
for (var i2 = 0; i2 < mergedRepaintRects.length; ++i2) {
var mergedRect = mergedRepaintRects[i2];
if (mergedRect.intersect(rect)) {
var pendingRect_1 = new BoundingRect(0, 0, 0, 0);
pendingRect_1.copy(mergedRect);
pendingRect_1.union(rect);
mergedRepaintRects[i2] = pendingRect_1;
isMerged = true;
break;
} else if (full) {
pendingRect.copy(rect);
pendingRect.union(mergedRect);
var aArea = rect.width * rect.height;
var bArea = mergedRect.width * mergedRect.height;
var pendingArea = pendingRect.width * pendingRect.height;
var deltaArea = pendingArea - aArea - bArea;
if (deltaArea < minDeltaArea) {
minDeltaArea = deltaArea;
bestRectToMergeIdx = i2;
}
}
}
if (full) {
mergedRepaintRects[bestRectToMergeIdx].union(rect);
isMerged = true;
}
if (!isMerged) {
var boundingRect = new BoundingRect(0, 0, 0, 0);
boundingRect.copy(rect);
mergedRepaintRects.push(boundingRect);
}
if (!full) {
full = mergedRepaintRects.length >= maxRepaintRectCount;
}
}
}
for (var i = this.__startIndex; i < this.__endIndex; ++i) {
var el2 = displayList[i];
if (el2) {
var shouldPaint = el2.shouldBePainted(viewWidth, viewHeight, true, true);
var prevRect = el2.__isRendered && (el2.__dirty & REDRAW_BIT || !shouldPaint) ? el2.getPrevPaintRect() : null;
if (prevRect) {
addRectToMergePool(prevRect);
}
var curRect = shouldPaint && (el2.__dirty & REDRAW_BIT || !el2.__isRendered) ? el2.getPaintRect() : null;
if (curRect) {
addRectToMergePool(curRect);
}
}
}
for (var i = this.__prevStartIndex; i < this.__prevEndIndex; ++i) {
var el2 = prevList[i];
var shouldPaint = el2 && el2.shouldBePainted(viewWidth, viewHeight, true, true);
if (el2 && (!shouldPaint || !el2.__zr) && el2.__isRendered) {
var prevRect = el2.getPrevPaintRect();
if (prevRect) {
addRectToMergePool(prevRect);
}
}
}
var hasIntersections;
do {
hasIntersections = false;
for (var i = 0; i < mergedRepaintRects.length; ) {
if (mergedRepaintRects[i].isZero()) {
mergedRepaintRects.splice(i, 1);
continue;
}
for (var j = i + 1; j < mergedRepaintRects.length; ) {
if (mergedRepaintRects[i].intersect(mergedRepaintRects[j])) {
hasIntersections = true;
mergedRepaintRects[i].union(mergedRepaintRects[j]);
mergedRepaintRects.splice(j, 1);
} else {
j++;
}
}
i++;
}
} while (hasIntersections);
this._paintRects = mergedRepaintRects;
return mergedRepaintRects;
};
Layer2.prototype.debugGetPaintRects = function() {
return (this._paintRects || []).slice();
};
Layer2.prototype.resize = function(width, height) {
var dpr2 = this.dpr;
var dom = this.dom;
var domStyle = dom.style;
var domBack = this.domBack;
if (domStyle) {
domStyle.width = width + "px";
domStyle.height = height + "px";
}
dom.width = width * dpr2;
dom.height = height * dpr2;
if (domBack) {
domBack.width = width * dpr2;
domBack.height = height * dpr2;
if (dpr2 !== 1) {
this.ctxBack.scale(dpr2, dpr2);
}
}
};
Layer2.prototype.clear = function(clearAll, clearColor, repaintRects) {
var dom = this.dom;
var ctx = this.ctx;
var width = dom.width;
var height = dom.height;
clearColor = clearColor || this.clearColor;
var haveMotionBLur = this.motionBlur && !clearAll;
var lastFrameAlpha = this.lastFrameAlpha;
var dpr2 = this.dpr;
var self2 = this;
if (haveMotionBLur) {
if (!this.domBack) {
this.createBackBuffer();
}
this.ctxBack.globalCompositeOperation = "copy";
this.ctxBack.drawImage(dom, 0, 0, width / dpr2, height / dpr2);
}
var domBack = this.domBack;
function doClear(x2, y2, width2, height2) {
ctx.clearRect(x2, y2, width2, height2);
if (clearColor && clearColor !== "transparent") {
var clearColorGradientOrPattern = void 0;
if (isGradientObject(clearColor)) {
var shouldCache = clearColor.global || clearColor.__width === width2 && clearColor.__height === height2;
clearColorGradientOrPattern = shouldCache && clearColor.__canvasGradient || getCanvasGradient(ctx, clearColor, {
x: 0,
y: 0,
width: width2,
height: height2
});
clearColor.__canvasGradient = clearColorGradientOrPattern;
clearColor.__width = width2;
clearColor.__height = height2;
} else if (isImagePatternObject(clearColor)) {
clearColor.scaleX = clearColor.scaleX || dpr2;
clearColor.scaleY = clearColor.scaleY || dpr2;
clearColorGradientOrPattern = createCanvasPattern(ctx, clearColor, {
dirty: function() {
self2.setUnpainted();
self2.painter.refresh();
}
});
}
ctx.save();
ctx.fillStyle = clearColorGradientOrPattern || clearColor;
ctx.fillRect(x2, y2, width2, height2);
ctx.restore();
}
if (haveMotionBLur) {
ctx.save();
ctx.globalAlpha = lastFrameAlpha;
ctx.drawImage(domBack, x2, y2, width2, height2);
ctx.restore();
}
}
if (!repaintRects || haveMotionBLur) {
doClear(0, 0, width, height);
} else if (repaintRects.length) {
each$f(repaintRects, function(rect) {
doClear(rect.x * dpr2, rect.y * dpr2, rect.width * dpr2, rect.height * dpr2);
});
}
};
return Layer2;
}(Eventful);
var HOVER_LAYER_ZLEVEL = 1e5;
var CANVAS_ZLEVEL = 314159;
var EL_AFTER_INCREMENTAL_INC = 0.01;
var INCREMENTAL_INC = 1e-3;
function isLayerValid(layer) {
if (!layer) {
return false;
}
if (layer.__builtin__) {
return true;
}
if (typeof layer.resize !== "function" || typeof layer.refresh !== "function") {
return false;
}
return true;
}
function createRoot(width, height) {
var domRoot = document.createElement("div");
domRoot.style.cssText = [
"position:relative",
"width:" + width + "px",
"height:" + height + "px",
"padding:0",
"margin:0",
"border-width:0"
].join(";") + ";";
return domRoot;
}
var CanvasPainter = function() {
function CanvasPainter2(root, storage2, opts, id2) {
this.type = "canvas";
this._zlevelList = [];
this._prevDisplayList = [];
this._layers = {};
this._layerConfig = {};
this._needsManuallyCompositing = false;
this.type = "canvas";
var singleCanvas = !root.nodeName || root.nodeName.toUpperCase() === "CANVAS";
this._opts = opts = extend({}, opts || {});
this.dpr = opts.devicePixelRatio || devicePixelRatio;
this._singleCanvas = singleCanvas;
this.root = root;
var rootStyle = root.style;
if (rootStyle) {
disableUserSelect(root);
root.innerHTML = "";
}
this.storage = storage2;
var zlevelList = this._zlevelList;
this._prevDisplayList = [];
var layers = this._layers;
if (!singleCanvas) {
this._width = getSize$1(root, 0, opts);
this._height = getSize$1(root, 1, opts);
var domRoot = this._domRoot = createRoot(this._width, this._height);
root.appendChild(domRoot);
} else {
var rootCanvas = root;
var width = rootCanvas.width;
var height = rootCanvas.height;
if (opts.width != null) {
width = opts.width;
}
if (opts.height != null) {
height = opts.height;
}
this.dpr = opts.devicePixelRatio || 1;
rootCanvas.width = width * this.dpr;
rootCanvas.height = height * this.dpr;
this._width = width;
this._height = height;
var mainLayer = new Layer(rootCanvas, this, this.dpr);
mainLayer.__builtin__ = true;
mainLayer.initContext();
layers[CANVAS_ZLEVEL] = mainLayer;
mainLayer.zlevel = CANVAS_ZLEVEL;
zlevelList.push(CANVAS_ZLEVEL);
this._domRoot = root;
}
}
CanvasPainter2.prototype.getType = function() {
return "canvas";
};
CanvasPainter2.prototype.isSingleCanvas = function() {
return this._singleCanvas;
};
CanvasPainter2.prototype.getViewportRoot = function() {
return this._domRoot;
};
CanvasPainter2.prototype.getViewportRootOffset = function() {
var viewportRoot = this.getViewportRoot();
if (viewportRoot) {
return {
offsetLeft: viewportRoot.offsetLeft || 0,
offsetTop: viewportRoot.offsetTop || 0
};
}
};
CanvasPainter2.prototype.refresh = function(paintAll) {
var list = this.storage.getDisplayList(true);
var prevList = this._prevDisplayList;
var zlevelList = this._zlevelList;
this._redrawId = Math.random();
this._paintList(list, prevList, paintAll, this._redrawId);
for (var i = 0; i < zlevelList.length; i++) {
var z2 = zlevelList[i];
var layer = this._layers[z2];
if (!layer.__builtin__ && layer.refresh) {
var clearColor = i === 0 ? this._backgroundColor : null;
layer.refresh(clearColor);
}
}
if (this._opts.useDirtyRect) {
this._prevDisplayList = list.slice();
}
return this;
};
CanvasPainter2.prototype.refreshHover = function() {
this._paintHoverList(this.storage.getDisplayList(false));
};
CanvasPainter2.prototype._paintHoverList = function(list) {
var len2 = list.length;
var hoverLayer = this._hoverlayer;
hoverLayer && hoverLayer.clear();
if (!len2) {
return;
}
var scope = {
inHover: true,
viewWidth: this._width,
viewHeight: this._height
};
var ctx;
for (var i = 0; i < len2; i++) {
var el2 = list[i];
if (el2.__inHover) {
if (!hoverLayer) {
hoverLayer = this._hoverlayer = this.getLayer(HOVER_LAYER_ZLEVEL);
}
if (!ctx) {
ctx = hoverLayer.ctx;
ctx.save();
}
brush$1(ctx, el2, scope, i === len2 - 1);
}
}
if (ctx) {
ctx.restore();
}
};
CanvasPainter2.prototype.getHoverLayer = function() {
return this.getLayer(HOVER_LAYER_ZLEVEL);
};
CanvasPainter2.prototype.paintOne = function(ctx, el2) {
brushSingle(ctx, el2);
};
CanvasPainter2.prototype._paintList = function(list, prevList, paintAll, redrawId) {
if (this._redrawId !== redrawId) {
return;
}
paintAll = paintAll || false;
this._updateLayerStatus(list);
var _a2 = this._doPaintList(list, prevList, paintAll), finished = _a2.finished, needsRefreshHover = _a2.needsRefreshHover;
if (this._needsManuallyCompositing) {
this._compositeManually();
}
if (needsRefreshHover) {
this._paintHoverList(list);
}
if (!finished) {
var self_1 = this;
requestAnimationFrame$1(function() {
self_1._paintList(list, prevList, paintAll, redrawId);
});
} else {
this.eachLayer(function(layer) {
layer.afterBrush && layer.afterBrush();
});
}
};
CanvasPainter2.prototype._compositeManually = function() {
var ctx = this.getLayer(CANVAS_ZLEVEL).ctx;
var width = this._domRoot.width;
var height = this._domRoot.height;
ctx.clearRect(0, 0, width, height);
this.eachBuiltinLayer(function(layer) {
if (layer.virtual) {
ctx.drawImage(layer.dom, 0, 0, width, height);
}
});
};
CanvasPainter2.prototype._doPaintList = function(list, prevList, paintAll) {
var _this = this;
var layerList = [];
var useDirtyRect = this._opts.useDirtyRect;
for (var zi2 = 0; zi2 < this._zlevelList.length; zi2++) {
var zlevel = this._zlevelList[zi2];
var layer = this._layers[zlevel];
if (layer.__builtin__ && layer !== this._hoverlayer && (layer.__dirty || paintAll)) {
layerList.push(layer);
}
}
var finished = true;
var needsRefreshHover = false;
var _loop_1 = function(k22) {
var layer2 = layerList[k22];
var ctx = layer2.ctx;
var repaintRects = useDirtyRect && layer2.createRepaintRects(list, prevList, this_1._width, this_1._height);
var start2 = paintAll ? layer2.__startIndex : layer2.__drawIndex;
var useTimer = !paintAll && layer2.incremental && Date.now;
var startTime = useTimer && Date.now();
var clearColor = layer2.zlevel === this_1._zlevelList[0] ? this_1._backgroundColor : null;
if (layer2.__startIndex === layer2.__endIndex) {
layer2.clear(false, clearColor, repaintRects);
} else if (start2 === layer2.__startIndex) {
var firstEl = list[start2];
if (!firstEl.incremental || !firstEl.notClear || paintAll) {
layer2.clear(false, clearColor, repaintRects);
}
}
if (start2 === -1) {
console.error("For some unknown reason. drawIndex is -1");
start2 = layer2.__startIndex;
}
var i;
var repaint = function(repaintRect) {
var scope = {
inHover: false,
allClipped: false,
prevEl: null,
viewWidth: _this._width,
viewHeight: _this._height
};
for (i = start2; i < layer2.__endIndex; i++) {
var el2 = list[i];
if (el2.__inHover) {
needsRefreshHover = true;
}
_this._doPaintEl(el2, layer2, useDirtyRect, repaintRect, scope, i === layer2.__endIndex - 1);
if (useTimer) {
var dTime = Date.now() - startTime;
if (dTime > 15) {
break;
}
}
}
if (scope.prevElClipPaths) {
ctx.restore();
}
};
if (repaintRects) {
if (repaintRects.length === 0) {
i = layer2.__endIndex;
} else {
var dpr2 = this_1.dpr;
for (var r2 = 0; r2 < repaintRects.length; ++r2) {
var rect = repaintRects[r2];
ctx.save();
ctx.beginPath();
ctx.rect(rect.x * dpr2, rect.y * dpr2, rect.width * dpr2, rect.height * dpr2);
ctx.clip();
repaint(rect);
ctx.restore();
}
}
} else {
ctx.save();
repaint();
ctx.restore();
}
layer2.__drawIndex = i;
if (layer2.__drawIndex < layer2.__endIndex) {
finished = false;
}
};
var this_1 = this;
for (var k2 = 0; k2 < layerList.length; k2++) {
_loop_1(k2);
}
if (env.wxa) {
each$f(this._layers, function(layer2) {
if (layer2 && layer2.ctx && layer2.ctx.draw) {
layer2.ctx.draw();
}
});
}
return {
finished,
needsRefreshHover
};
};
CanvasPainter2.prototype._doPaintEl = function(el2, currentLayer, useDirtyRect, repaintRect, scope, isLast) {
var ctx = currentLayer.ctx;
if (useDirtyRect) {
var paintRect = el2.getPaintRect();
if (!repaintRect || paintRect && paintRect.intersect(repaintRect)) {
brush$1(ctx, el2, scope, isLast);
el2.setPrevPaintRect(paintRect);
}
} else {
brush$1(ctx, el2, scope, isLast);
}
};
CanvasPainter2.prototype.getLayer = function(zlevel, virtual) {
if (this._singleCanvas && !this._needsManuallyCompositing) {
zlevel = CANVAS_ZLEVEL;
}
var layer = this._layers[zlevel];
if (!layer) {
layer = new Layer("zr_" + zlevel, this, this.dpr);
layer.zlevel = zlevel;
layer.__builtin__ = true;
if (this._layerConfig[zlevel]) {
merge(layer, this._layerConfig[zlevel], true);
} else if (this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC]) {
merge(layer, this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC], true);
}
if (virtual) {
layer.virtual = virtual;
}
this.insertLayer(zlevel, layer);
layer.initContext();
}
return layer;
};
CanvasPainter2.prototype.insertLayer = function(zlevel, layer) {
var layersMap = this._layers;
var zlevelList = this._zlevelList;
var len2 = zlevelList.length;
var domRoot = this._domRoot;
var prevLayer = null;
var i = -1;
if (layersMap[zlevel]) {
return;
}
if (!isLayerValid(layer)) {
return;
}
if (len2 > 0 && zlevel > zlevelList[0]) {
for (i = 0; i < len2 - 1; i++) {
if (zlevelList[i] < zlevel && zlevelList[i + 1] > zlevel) {
break;
}
}
prevLayer = layersMap[zlevelList[i]];
}
zlevelList.splice(i + 1, 0, zlevel);
layersMap[zlevel] = layer;
if (!layer.virtual) {
if (prevLayer) {
var prevDom = prevLayer.dom;
if (prevDom.nextSibling) {
domRoot.insertBefore(layer.dom, prevDom.nextSibling);
} else {
domRoot.appendChild(layer.dom);
}
} else {
if (domRoot.firstChild) {
domRoot.insertBefore(layer.dom, domRoot.firstChild);
} else {
domRoot.appendChild(layer.dom);
}
}
}
layer.painter || (layer.painter = this);
};
CanvasPainter2.prototype.eachLayer = function(cb2, context) {
var zlevelList = this._zlevelList;
for (var i = 0; i < zlevelList.length; i++) {
var z2 = zlevelList[i];
cb2.call(context, this._layers[z2], z2);
}
};
CanvasPainter2.prototype.eachBuiltinLayer = function(cb2, context) {
var zlevelList = this._zlevelList;
for (var i = 0; i < zlevelList.length; i++) {
var z2 = zlevelList[i];
var layer = this._layers[z2];
if (layer.__builtin__) {
cb2.call(context, layer, z2);
}
}
};
CanvasPainter2.prototype.eachOtherLayer = function(cb2, context) {
var zlevelList = this._zlevelList;
for (var i = 0; i < zlevelList.length; i++) {
var z2 = zlevelList[i];
var layer = this._layers[z2];
if (!layer.__builtin__) {
cb2.call(context, layer, z2);
}
}
};
CanvasPainter2.prototype.getLayers = function() {
return this._layers;
};
CanvasPainter2.prototype._updateLayerStatus = function(list) {
this.eachBuiltinLayer(function(layer2, z2) {
layer2.__dirty = layer2.__used = false;
});
function updatePrevLayer(idx) {
if (prevLayer) {
if (prevLayer.__endIndex !== idx) {
prevLayer.__dirty = true;
}
prevLayer.__endIndex = idx;
}
}
if (this._singleCanvas) {
for (var i_1 = 1; i_1 < list.length; i_1++) {
var el2 = list[i_1];
if (el2.zlevel !== list[i_1 - 1].zlevel || el2.incremental) {
this._needsManuallyCompositing = true;
break;
}
}
}
var prevLayer = null;
var incrementalLayerCount = 0;
var prevZlevel;
var i;
for (i = 0; i < list.length; i++) {
var el2 = list[i];
var zlevel = el2.zlevel;
var layer = void 0;
if (prevZlevel !== zlevel) {
prevZlevel = zlevel;
incrementalLayerCount = 0;
}
if (el2.incremental) {
layer = this.getLayer(zlevel + INCREMENTAL_INC, this._needsManuallyCompositing);
layer.incremental = true;
incrementalLayerCount = 1;
} else {
layer = this.getLayer(zlevel + (incrementalLayerCount > 0 ? EL_AFTER_INCREMENTAL_INC : 0), this._needsManuallyCompositing);
}
if (!layer.__builtin__) {
logError("ZLevel " + zlevel + " has been used by unkown layer " + layer.id);
}
if (layer !== prevLayer) {
layer.__used = true;
if (layer.__startIndex !== i) {
layer.__dirty = true;
}
layer.__startIndex = i;
if (!layer.incremental) {
layer.__drawIndex = i;
} else {
layer.__drawIndex = -1;
}
updatePrevLayer(i);
prevLayer = layer;
}
if (el2.__dirty & REDRAW_BIT && !el2.__inHover) {
layer.__dirty = true;
if (layer.incremental && layer.__drawIndex < 0) {
layer.__drawIndex = i;
}
}
}
updatePrevLayer(i);
this.eachBuiltinLayer(function(layer2, z2) {
if (!layer2.__used && layer2.getElementCount() > 0) {
layer2.__dirty = true;
layer2.__startIndex = layer2.__endIndex = layer2.__drawIndex = 0;
}
if (layer2.__dirty && layer2.__drawIndex < 0) {
layer2.__drawIndex = layer2.__startIndex;
}
});
};
CanvasPainter2.prototype.clear = function() {
this.eachBuiltinLayer(this._clearLayer);
return this;
};
CanvasPainter2.prototype._clearLayer = function(layer) {
layer.clear();
};
CanvasPainter2.prototype.setBackgroundColor = function(backgroundColor2) {
this._backgroundColor = backgroundColor2;
each$f(this._layers, function(layer) {
layer.setUnpainted();
});
};
CanvasPainter2.prototype.configLayer = function(zlevel, config) {
if (config) {
var layerConfig = this._layerConfig;
if (!layerConfig[zlevel]) {
layerConfig[zlevel] = config;
} else {
merge(layerConfig[zlevel], config, true);
}
for (var i = 0; i < this._zlevelList.length; i++) {
var _zlevel = this._zlevelList[i];
if (_zlevel === zlevel || _zlevel === zlevel + EL_AFTER_INCREMENTAL_INC) {
var layer = this._layers[_zlevel];
merge(layer, layerConfig[zlevel], true);
}
}
}
};
CanvasPainter2.prototype.delLayer = function(zlevel) {
var layers = this._layers;
var zlevelList = this._zlevelList;
var layer = layers[zlevel];
if (!layer) {
return;
}
layer.dom.parentNode.removeChild(layer.dom);
delete layers[zlevel];
zlevelList.splice(indexOf(zlevelList, zlevel), 1);
};
CanvasPainter2.prototype.resize = function(width, height) {
if (!this._domRoot.style) {
if (width == null || height == null) {
return;
}
this._width = width;
this._height = height;
this.getLayer(CANVAS_ZLEVEL).resize(width, height);
} else {
var domRoot = this._domRoot;
domRoot.style.display = "none";
var opts = this._opts;
var root = this.root;
width != null && (opts.width = width);
height != null && (opts.height = height);
width = getSize$1(root, 0, opts);
height = getSize$1(root, 1, opts);
domRoot.style.display = "";
if (this._width !== width || height !== this._height) {
domRoot.style.width = width + "px";
domRoot.style.height = height + "px";
for (var id2 in this._layers) {
if (this._layers.hasOwnProperty(id2)) {
this._layers[id2].resize(width, height);
}
}
this.refresh(true);
}
this._width = width;
this._height = height;
}
return this;
};
CanvasPainter2.prototype.clearLayer = function(zlevel) {
var layer = this._layers[zlevel];
if (layer) {
layer.clear();
}
};
CanvasPainter2.prototype.dispose = function() {
this.root.innerHTML = "";
this.root = this.storage = this._domRoot = this._layers = null;
};
CanvasPainter2.prototype.getRenderedCanvas = function(opts) {
opts = opts || {};
if (this._singleCanvas && !this._compositeManually) {
return this._layers[CANVAS_ZLEVEL].dom;
}
var imageLayer = new Layer("image", this, opts.pixelRatio || this.dpr);
imageLayer.initContext();
imageLayer.clear(false, opts.backgroundColor || this._backgroundColor);
var ctx = imageLayer.ctx;
if (opts.pixelRatio <= this.dpr) {
this.refresh();
var width_1 = imageLayer.dom.width;
var height_1 = imageLayer.dom.height;
this.eachLayer(function(layer) {
if (layer.__builtin__) {
ctx.drawImage(layer.dom, 0, 0, width_1, height_1);
} else if (layer.renderToCanvas) {
ctx.save();
layer.renderToCanvas(ctx);
ctx.restore();
}
});
} else {
var scope = {
inHover: false,
viewWidth: this._width,
viewHeight: this._height
};
var displayList = this.storage.getDisplayList(true);
for (var i = 0, len2 = displayList.length; i < len2; i++) {
var el2 = displayList[i];
brush$1(ctx, el2, scope, i === len2 - 1);
}
}
return imageLayer.dom;
};
CanvasPainter2.prototype.getWidth = function() {
return this._width;
};
CanvasPainter2.prototype.getHeight = function() {
return this._height;
};
return CanvasPainter2;
}();
function install$R(registers) {
registers.registerPainter("canvas", CanvasPainter);
}
var LineSeriesModel = (
/** @class */
function(_super) {
__extends(LineSeriesModel2, _super);
function LineSeriesModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = LineSeriesModel2.type;
_this.hasSymbolVisual = true;
return _this;
}
LineSeriesModel2.prototype.getInitialData = function(option) {
return createSeriesData(null, this, {
useEncodeDefaulter: true
});
};
LineSeriesModel2.prototype.getLegendIcon = function(opt) {
var group = new Group$3();
var line2 = createSymbol$1("line", 0, opt.itemHeight / 2, opt.itemWidth, 0, opt.lineStyle.stroke, false);
group.add(line2);
line2.setStyle(opt.lineStyle);
var visualType = this.getData().getVisual("symbol");
var visualRotate = this.getData().getVisual("symbolRotate");
var symbolType = visualType === "none" ? "circle" : visualType;
var size = opt.itemHeight * 0.8;
var symbol = createSymbol$1(symbolType, (opt.itemWidth - size) / 2, (opt.itemHeight - size) / 2, size, size, opt.itemStyle.fill);
group.add(symbol);
symbol.setStyle(opt.itemStyle);
var symbolRotate = opt.iconRotate === "inherit" ? visualRotate : opt.iconRotate || 0;
symbol.rotation = symbolRotate * Math.PI / 180;
symbol.setOrigin([opt.itemWidth / 2, opt.itemHeight / 2]);
if (symbolType.indexOf("empty") > -1) {
symbol.style.stroke = symbol.style.fill;
symbol.style.fill = "#fff";
symbol.style.lineWidth = 2;
}
return group;
};
LineSeriesModel2.type = "series.line";
LineSeriesModel2.dependencies = ["grid", "polar"];
LineSeriesModel2.defaultOption = {
// zlevel: 0,
z: 3,
coordinateSystem: "cartesian2d",
legendHoverLink: true,
clip: true,
label: {
position: "top"
},
// itemStyle: {
// },
endLabel: {
show: false,
valueAnimation: true,
distance: 8
},
lineStyle: {
width: 2,
type: "solid"
},
emphasis: {
scale: true
},
// areaStyle: {
// origin of areaStyle. Valid values:
// `'auto'/null/undefined`: from axisLine to data
// `'start'`: from min to data
// `'end'`: from data to max
// origin: 'auto'
// },
// false, 'start', 'end', 'middle'
step: false,
// Disabled if step is true
smooth: false,
smoothMonotone: null,
symbol: "emptyCircle",
symbolSize: 4,
symbolRotate: null,
showSymbol: true,
// `false`: follow the label interval strategy.
// `true`: show all symbols.
// `'auto'`: If possible, show all symbols, otherwise
// follow the label interval strategy.
showAllSymbol: "auto",
// Whether to connect break point.
connectNulls: false,
// Sampling for large data. Can be: 'average', 'max', 'min', 'sum', 'lttb'.
sampling: "none",
animationEasing: "linear",
// Disable progressive
progressive: 0,
hoverLayerThreshold: Infinity,
universalTransition: {
divideShape: "clone"
},
triggerLineEvent: false
};
return LineSeriesModel2;
}(SeriesModel)
);
function getDefaultLabel(data, dataIndex) {
var labelDims = data.mapDimensionsAll("defaultedLabel");
var len2 = labelDims.length;
if (len2 === 1) {
var rawVal = retrieveRawValue(data, dataIndex, labelDims[0]);
return rawVal != null ? rawVal + "" : null;
} else if (len2) {
var vals = [];
for (var i = 0; i < labelDims.length; i++) {
vals.push(retrieveRawValue(data, dataIndex, labelDims[i]));
}
return vals.join(" ");
}
}
function getDefaultInterpolatedLabel(data, interpolatedValue) {
var labelDims = data.mapDimensionsAll("defaultedLabel");
if (!isArray$1(interpolatedValue)) {
return interpolatedValue + "";
}
var vals = [];
for (var i = 0; i < labelDims.length; i++) {
var dimIndex = data.getDimensionIndex(labelDims[i]);
if (dimIndex >= 0) {
vals.push(interpolatedValue[dimIndex]);
}
}
return vals.join(" ");
}
var Symbol$1 = (
/** @class */
function(_super) {
__extends(Symbol2, _super);
function Symbol2(data, idx, seriesScope, opts) {
var _this = _super.call(this) || this;
_this.updateData(data, idx, seriesScope, opts);
return _this;
}
Symbol2.prototype._createSymbol = function(symbolType, data, idx, symbolSize, keepAspect) {
this.removeAll();
var symbolPath = createSymbol$1(symbolType, -1, -1, 2, 2, null, keepAspect);
symbolPath.attr({
z2: 100,
culling: true,
scaleX: symbolSize[0] / 2,
scaleY: symbolSize[1] / 2
});
symbolPath.drift = driftSymbol;
this._symbolType = symbolType;
this.add(symbolPath);
};
Symbol2.prototype.stopSymbolAnimation = function(toLastFrame) {
this.childAt(0).stopAnimation(null, toLastFrame);
};
Symbol2.prototype.getSymbolType = function() {
return this._symbolType;
};
Symbol2.prototype.getSymbolPath = function() {
return this.childAt(0);
};
Symbol2.prototype.highlight = function() {
enterEmphasis(this.childAt(0));
};
Symbol2.prototype.downplay = function() {
leaveEmphasis(this.childAt(0));
};
Symbol2.prototype.setZ = function(zlevel, z2) {
var symbolPath = this.childAt(0);
symbolPath.zlevel = zlevel;
symbolPath.z = z2;
};
Symbol2.prototype.setDraggable = function(draggable, hasCursorOption) {
var symbolPath = this.childAt(0);
symbolPath.draggable = draggable;
symbolPath.cursor = !hasCursorOption && draggable ? "move" : symbolPath.cursor;
};
Symbol2.prototype.updateData = function(data, idx, seriesScope, opts) {
this.silent = false;
var symbolType = data.getItemVisual(idx, "symbol") || "circle";
var seriesModel = data.hostModel;
var symbolSize = Symbol2.getSymbolSize(data, idx);
var isInit = symbolType !== this._symbolType;
var disableAnimation = opts && opts.disableAnimation;
if (isInit) {
var keepAspect = data.getItemVisual(idx, "symbolKeepAspect");
this._createSymbol(symbolType, data, idx, symbolSize, keepAspect);
} else {
var symbolPath = this.childAt(0);
symbolPath.silent = false;
var target = {
scaleX: symbolSize[0] / 2,
scaleY: symbolSize[1] / 2
};
disableAnimation ? symbolPath.attr(target) : updateProps$1(symbolPath, target, seriesModel, idx);
saveOldStyle(symbolPath);
}
this._updateCommon(data, idx, symbolSize, seriesScope, opts);
if (isInit) {
var symbolPath = this.childAt(0);
if (!disableAnimation) {
var target = {
scaleX: this._sizeX,
scaleY: this._sizeY,
style: {
// Always fadeIn. Because it has fadeOut animation when symbol is removed..
opacity: symbolPath.style.opacity
}
};
symbolPath.scaleX = symbolPath.scaleY = 0;
symbolPath.style.opacity = 0;
initProps(symbolPath, target, seriesModel, idx);
}
}
if (disableAnimation) {
this.childAt(0).stopAnimation("leave");
}
};
Symbol2.prototype._updateCommon = function(data, idx, symbolSize, seriesScope, opts) {
var symbolPath = this.childAt(0);
var seriesModel = data.hostModel;
var emphasisItemStyle;
var blurItemStyle;
var selectItemStyle;
var focus;
var blurScope;
var emphasisDisabled;
var labelStatesModels;
var hoverScale;
var cursorStyle;
if (seriesScope) {
emphasisItemStyle = seriesScope.emphasisItemStyle;
blurItemStyle = seriesScope.blurItemStyle;
selectItemStyle = seriesScope.selectItemStyle;
focus = seriesScope.focus;
blurScope = seriesScope.blurScope;
labelStatesModels = seriesScope.labelStatesModels;
hoverScale = seriesScope.hoverScale;
cursorStyle = seriesScope.cursorStyle;
emphasisDisabled = seriesScope.emphasisDisabled;
}
if (!seriesScope || data.hasItemOption) {
var itemModel = seriesScope && seriesScope.itemModel ? seriesScope.itemModel : data.getItemModel(idx);
var emphasisModel = itemModel.getModel("emphasis");
emphasisItemStyle = emphasisModel.getModel("itemStyle").getItemStyle();
selectItemStyle = itemModel.getModel(["select", "itemStyle"]).getItemStyle();
blurItemStyle = itemModel.getModel(["blur", "itemStyle"]).getItemStyle();
focus = emphasisModel.get("focus");
blurScope = emphasisModel.get("blurScope");
emphasisDisabled = emphasisModel.get("disabled");
labelStatesModels = getLabelStatesModels(itemModel);
hoverScale = emphasisModel.getShallow("scale");
cursorStyle = itemModel.getShallow("cursor");
}
var symbolRotate = data.getItemVisual(idx, "symbolRotate");
symbolPath.attr("rotation", (symbolRotate || 0) * Math.PI / 180 || 0);
var symbolOffset = normalizeSymbolOffset(data.getItemVisual(idx, "symbolOffset"), symbolSize);
if (symbolOffset) {
symbolPath.x = symbolOffset[0];
symbolPath.y = symbolOffset[1];
}
cursorStyle && symbolPath.attr("cursor", cursorStyle);
var symbolStyle = data.getItemVisual(idx, "style");
var visualColor = symbolStyle.fill;
if (symbolPath instanceof ZRImage) {
var pathStyle = symbolPath.style;
symbolPath.useStyle(extend({
// TODO other properties like x, y ?
image: pathStyle.image,
x: pathStyle.x,
y: pathStyle.y,
width: pathStyle.width,
height: pathStyle.height
}, symbolStyle));
} else {
if (symbolPath.__isEmptyBrush) {
symbolPath.useStyle(extend({}, symbolStyle));
} else {
symbolPath.useStyle(symbolStyle);
}
symbolPath.style.decal = null;
symbolPath.setColor(visualColor, opts && opts.symbolInnerColor);
symbolPath.style.strokeNoScale = true;
}
var liftZ = data.getItemVisual(idx, "liftZ");
var z2Origin = this._z2;
if (liftZ != null) {
if (z2Origin == null) {
this._z2 = symbolPath.z2;
symbolPath.z2 += liftZ;
}
} else if (z2Origin != null) {
symbolPath.z2 = z2Origin;
this._z2 = null;
}
var useNameLabel = opts && opts.useNameLabel;
setLabelStyle(symbolPath, labelStatesModels, {
labelFetcher: seriesModel,
labelDataIndex: idx,
defaultText: getLabelDefaultText,
inheritColor: visualColor,
defaultOpacity: symbolStyle.opacity
});
function getLabelDefaultText(idx2) {
return useNameLabel ? data.getName(idx2) : getDefaultLabel(data, idx2);
}
this._sizeX = symbolSize[0] / 2;
this._sizeY = symbolSize[1] / 2;
var emphasisState = symbolPath.ensureState("emphasis");
emphasisState.style = emphasisItemStyle;
symbolPath.ensureState("select").style = selectItemStyle;
symbolPath.ensureState("blur").style = blurItemStyle;
var scaleRatio = hoverScale == null || hoverScale === true ? Math.max(1.1, 3 / this._sizeY) : isFinite(hoverScale) && hoverScale > 0 ? +hoverScale : 1;
emphasisState.scaleX = this._sizeX * scaleRatio;
emphasisState.scaleY = this._sizeY * scaleRatio;
this.setSymbolScale(1);
toggleHoverEmphasis(this, focus, blurScope, emphasisDisabled);
};
Symbol2.prototype.setSymbolScale = function(scale2) {
this.scaleX = this.scaleY = scale2;
};
Symbol2.prototype.fadeOut = function(cb2, seriesModel, opt) {
var symbolPath = this.childAt(0);
var dataIndex = getECData(this).dataIndex;
var animationOpt = opt && opt.animation;
this.silent = symbolPath.silent = true;
if (opt && opt.fadeLabel) {
var textContent = symbolPath.getTextContent();
if (textContent) {
removeElement(textContent, {
style: {
opacity: 0
}
}, seriesModel, {
dataIndex,
removeOpt: animationOpt,
cb: function() {
symbolPath.removeTextContent();
}
});
}
} else {
symbolPath.removeTextContent();
}
removeElement(symbolPath, {
style: {
opacity: 0
},
scaleX: 0,
scaleY: 0
}, seriesModel, {
dataIndex,
cb: cb2,
removeOpt: animationOpt
});
};
Symbol2.getSymbolSize = function(data, idx) {
return normalizeSymbolSize(data.getItemVisual(idx, "symbolSize"));
};
return Symbol2;
}(Group$3)
);
function driftSymbol(dx, dy) {
this.parent.drift(dx, dy);
}
function symbolNeedsDraw$1(data, point, idx, opt) {
return point && !isNaN(point[0]) && !isNaN(point[1]) && !(opt.isIgnore && opt.isIgnore(idx)) && !(opt.clipShape && !opt.clipShape.contain(point[0], point[1])) && data.getItemVisual(idx, "symbol") !== "none";
}
function normalizeUpdateOpt(opt) {
if (opt != null && !isObject$3(opt)) {
opt = {
isIgnore: opt
};
}
return opt || {};
}
function makeSeriesScope$2(data) {
var seriesModel = data.hostModel;
var emphasisModel = seriesModel.getModel("emphasis");
return {
emphasisItemStyle: emphasisModel.getModel("itemStyle").getItemStyle(),
blurItemStyle: seriesModel.getModel(["blur", "itemStyle"]).getItemStyle(),
selectItemStyle: seriesModel.getModel(["select", "itemStyle"]).getItemStyle(),
focus: emphasisModel.get("focus"),
blurScope: emphasisModel.get("blurScope"),
emphasisDisabled: emphasisModel.get("disabled"),
hoverScale: emphasisModel.get("scale"),
labelStatesModels: getLabelStatesModels(seriesModel),
cursorStyle: seriesModel.get("cursor")
};
}
var SymbolDraw = (
/** @class */
function() {
function SymbolDraw2(SymbolCtor) {
this.group = new Group$3();
this._SymbolCtor = SymbolCtor || Symbol$1;
}
SymbolDraw2.prototype.updateData = function(data, opt) {
this._progressiveEls = null;
opt = normalizeUpdateOpt(opt);
var group = this.group;
var seriesModel = data.hostModel;
var oldData = this._data;
var SymbolCtor = this._SymbolCtor;
var disableAnimation = opt.disableAnimation;
var seriesScope = makeSeriesScope$2(data);
var symbolUpdateOpt = {
disableAnimation
};
var getSymbolPoint = opt.getSymbolPoint || function(idx) {
return data.getItemLayout(idx);
};
if (!oldData) {
group.removeAll();
}
data.diff(oldData).add(function(newIdx) {
var point = getSymbolPoint(newIdx);
if (symbolNeedsDraw$1(data, point, newIdx, opt)) {
var symbolEl = new SymbolCtor(data, newIdx, seriesScope, symbolUpdateOpt);
symbolEl.setPosition(point);
data.setItemGraphicEl(newIdx, symbolEl);
group.add(symbolEl);
}
}).update(function(newIdx, oldIdx) {
var symbolEl = oldData.getItemGraphicEl(oldIdx);
var point = getSymbolPoint(newIdx);
if (!symbolNeedsDraw$1(data, point, newIdx, opt)) {
group.remove(symbolEl);
return;
}
var newSymbolType = data.getItemVisual(newIdx, "symbol") || "circle";
var oldSymbolType = symbolEl && symbolEl.getSymbolType && symbolEl.getSymbolType();
if (!symbolEl || oldSymbolType && oldSymbolType !== newSymbolType) {
group.remove(symbolEl);
symbolEl = new SymbolCtor(data, newIdx, seriesScope, symbolUpdateOpt);
symbolEl.setPosition(point);
} else {
symbolEl.updateData(data, newIdx, seriesScope, symbolUpdateOpt);
var target = {
x: point[0],
y: point[1]
};
disableAnimation ? symbolEl.attr(target) : updateProps$1(symbolEl, target, seriesModel);
}
group.add(symbolEl);
data.setItemGraphicEl(newIdx, symbolEl);
}).remove(function(oldIdx) {
var el2 = oldData.getItemGraphicEl(oldIdx);
el2 && el2.fadeOut(function() {
group.remove(el2);
}, seriesModel);
}).execute();
this._getSymbolPoint = getSymbolPoint;
this._data = data;
};
SymbolDraw2.prototype.updateLayout = function() {
var _this = this;
var data = this._data;
if (data) {
data.eachItemGraphicEl(function(el2, idx) {
var point = _this._getSymbolPoint(idx);
el2.setPosition(point);
el2.markRedraw();
});
}
};
SymbolDraw2.prototype.incrementalPrepareUpdate = function(data) {
this._seriesScope = makeSeriesScope$2(data);
this._data = null;
this.group.removeAll();
};
SymbolDraw2.prototype.incrementalUpdate = function(taskParams, data, opt) {
this._progressiveEls = [];
opt = normalizeUpdateOpt(opt);
function updateIncrementalAndHover(el3) {
if (!el3.isGroup) {
el3.incremental = true;
el3.ensureState("emphasis").hoverLayer = true;
}
}
for (var idx = taskParams.start; idx < taskParams.end; idx++) {
var point = data.getItemLayout(idx);
if (symbolNeedsDraw$1(data, point, idx, opt)) {
var el2 = new this._SymbolCtor(data, idx, this._seriesScope);
el2.traverse(updateIncrementalAndHover);
el2.setPosition(point);
this.group.add(el2);
data.setItemGraphicEl(idx, el2);
this._progressiveEls.push(el2);
}
}
};
SymbolDraw2.prototype.eachRendered = function(cb2) {
traverseElements(this._progressiveEls || this.group, cb2);
};
SymbolDraw2.prototype.remove = function(enableAnimation) {
var group = this.group;
var data = this._data;
if (data && enableAnimation) {
data.eachItemGraphicEl(function(el2) {
el2.fadeOut(function() {
group.remove(el2);
}, data.hostModel);
});
} else {
group.removeAll();
}
};
return SymbolDraw2;
}()
);
function prepareDataCoordInfo(coordSys, data, valueOrigin) {
var baseAxis = coordSys.getBaseAxis();
var valueAxis2 = coordSys.getOtherAxis(baseAxis);
var valueStart = getValueStart(valueAxis2, valueOrigin);
var baseAxisDim = baseAxis.dim;
var valueAxisDim = valueAxis2.dim;
var valueDim = data.mapDimension(valueAxisDim);
var baseDim = data.mapDimension(baseAxisDim);
var baseDataOffset = valueAxisDim === "x" || valueAxisDim === "radius" ? 1 : 0;
var dims = map$1(coordSys.dimensions, function(coordDim) {
return data.mapDimension(coordDim);
});
var stacked = false;
var stackResultDim = data.getCalculationInfo("stackResultDimension");
if (isDimensionStacked(
data,
dims[0]
/* , dims[1] */
)) {
stacked = true;
dims[0] = stackResultDim;
}
if (isDimensionStacked(
data,
dims[1]
/* , dims[0] */
)) {
stacked = true;
dims[1] = stackResultDim;
}
return {
dataDimsForPoint: dims,
valueStart,
valueAxisDim,
baseAxisDim,
stacked: !!stacked,
valueDim,
baseDim,
baseDataOffset,
stackedOverDimension: data.getCalculationInfo("stackedOverDimension")
};
}
function getValueStart(valueAxis2, valueOrigin) {
var valueStart = 0;
var extent3 = valueAxis2.scale.getExtent();
if (valueOrigin === "start") {
valueStart = extent3[0];
} else if (valueOrigin === "end") {
valueStart = extent3[1];
} else if (isNumber(valueOrigin) && !isNaN(valueOrigin)) {
valueStart = valueOrigin;
} else {
if (extent3[0] > 0) {
valueStart = extent3[0];
} else if (extent3[1] < 0) {
valueStart = extent3[1];
}
}
return valueStart;
}
function getStackedOnPoint(dataCoordInfo, coordSys, data, idx) {
var value = NaN;
if (dataCoordInfo.stacked) {
value = data.get(data.getCalculationInfo("stackedOverDimension"), idx);
}
if (isNaN(value)) {
value = dataCoordInfo.valueStart;
}
var baseDataOffset = dataCoordInfo.baseDataOffset;
var stackedData = [];
stackedData[baseDataOffset] = data.get(dataCoordInfo.baseDim, idx);
stackedData[1 - baseDataOffset] = value;
return coordSys.dataToPoint(stackedData);
}
function diffData(oldData, newData) {
var diffResult = [];
newData.diff(oldData).add(function(idx) {
diffResult.push({
cmd: "+",
idx
});
}).update(function(newIdx, oldIdx) {
diffResult.push({
cmd: "=",
idx: oldIdx,
idx1: newIdx
});
}).remove(function(idx) {
diffResult.push({
cmd: "-",
idx
});
}).execute();
return diffResult;
}
function lineAnimationDiff(oldData, newData, oldStackedOnPoints, newStackedOnPoints, oldCoordSys, newCoordSys, oldValueOrigin, newValueOrigin) {
var diff = diffData(oldData, newData);
var currPoints = [];
var nextPoints = [];
var currStackedPoints = [];
var nextStackedPoints = [];
var status = [];
var sortedIndices = [];
var rawIndices = [];
var newDataOldCoordInfo = prepareDataCoordInfo(oldCoordSys, newData, oldValueOrigin);
var oldPoints = oldData.getLayout("points") || [];
var newPoints = newData.getLayout("points") || [];
for (var i = 0; i < diff.length; i++) {
var diffItem = diff[i];
var pointAdded = true;
var oldIdx2 = void 0;
var newIdx2 = void 0;
switch (diffItem.cmd) {
case "=":
oldIdx2 = diffItem.idx * 2;
newIdx2 = diffItem.idx1 * 2;
var currentX = oldPoints[oldIdx2];
var currentY = oldPoints[oldIdx2 + 1];
var nextX = newPoints[newIdx2];
var nextY = newPoints[newIdx2 + 1];
if (isNaN(currentX) || isNaN(currentY)) {
currentX = nextX;
currentY = nextY;
}
currPoints.push(currentX, currentY);
nextPoints.push(nextX, nextY);
currStackedPoints.push(oldStackedOnPoints[oldIdx2], oldStackedOnPoints[oldIdx2 + 1]);
nextStackedPoints.push(newStackedOnPoints[newIdx2], newStackedOnPoints[newIdx2 + 1]);
rawIndices.push(newData.getRawIndex(diffItem.idx1));
break;
case "+":
var newIdx = diffItem.idx;
var newDataDimsForPoint = newDataOldCoordInfo.dataDimsForPoint;
var oldPt = oldCoordSys.dataToPoint([newData.get(newDataDimsForPoint[0], newIdx), newData.get(newDataDimsForPoint[1], newIdx)]);
newIdx2 = newIdx * 2;
currPoints.push(oldPt[0], oldPt[1]);
nextPoints.push(newPoints[newIdx2], newPoints[newIdx2 + 1]);
var stackedOnPoint = getStackedOnPoint(newDataOldCoordInfo, oldCoordSys, newData, newIdx);
currStackedPoints.push(stackedOnPoint[0], stackedOnPoint[1]);
nextStackedPoints.push(newStackedOnPoints[newIdx2], newStackedOnPoints[newIdx2 + 1]);
rawIndices.push(newData.getRawIndex(newIdx));
break;
case "-":
pointAdded = false;
}
if (pointAdded) {
status.push(diffItem);
sortedIndices.push(sortedIndices.length);
}
}
sortedIndices.sort(function(a, b2) {
return rawIndices[a] - rawIndices[b2];
});
var len2 = currPoints.length;
var sortedCurrPoints = createFloat32Array(len2);
var sortedNextPoints = createFloat32Array(len2);
var sortedCurrStackedPoints = createFloat32Array(len2);
var sortedNextStackedPoints = createFloat32Array(len2);
var sortedStatus = [];
for (var i = 0; i < sortedIndices.length; i++) {
var idx = sortedIndices[i];
var i2 = i * 2;
var idx2 = idx * 2;
sortedCurrPoints[i2] = currPoints[idx2];
sortedCurrPoints[i2 + 1] = currPoints[idx2 + 1];
sortedNextPoints[i2] = nextPoints[idx2];
sortedNextPoints[i2 + 1] = nextPoints[idx2 + 1];
sortedCurrStackedPoints[i2] = currStackedPoints[idx2];
sortedCurrStackedPoints[i2 + 1] = currStackedPoints[idx2 + 1];
sortedNextStackedPoints[i2] = nextStackedPoints[idx2];
sortedNextStackedPoints[i2 + 1] = nextStackedPoints[idx2 + 1];
sortedStatus[i] = status[idx];
}
return {
current: sortedCurrPoints,
next: sortedNextPoints,
stackedOnCurrent: sortedCurrStackedPoints,
stackedOnNext: sortedNextStackedPoints,
status: sortedStatus
};
}
var mathMin$5 = Math.min;
var mathMax$5 = Math.max;
function isPointNull$1(x2, y2) {
return isNaN(x2) || isNaN(y2);
}
function drawSegment(ctx, points2, start2, segLen, allLen, dir3, smooth, smoothMonotone, connectNulls) {
var prevX;
var prevY;
var cpx0;
var cpy0;
var cpx1;
var cpy1;
var idx = start2;
var k2 = 0;
for (; k2 < segLen; k2++) {
var x2 = points2[idx * 2];
var y2 = points2[idx * 2 + 1];
if (idx >= allLen || idx < 0) {
break;
}
if (isPointNull$1(x2, y2)) {
if (connectNulls) {
idx += dir3;
continue;
}
break;
}
if (idx === start2) {
ctx[dir3 > 0 ? "moveTo" : "lineTo"](x2, y2);
cpx0 = x2;
cpy0 = y2;
} else {
var dx = x2 - prevX;
var dy = y2 - prevY;
if (dx * dx + dy * dy < 0.5) {
idx += dir3;
continue;
}
if (smooth > 0) {
var nextIdx = idx + dir3;
var nextX = points2[nextIdx * 2];
var nextY = points2[nextIdx * 2 + 1];
while (nextX === x2 && nextY === y2 && k2 < segLen) {
k2++;
nextIdx += dir3;
idx += dir3;
nextX = points2[nextIdx * 2];
nextY = points2[nextIdx * 2 + 1];
x2 = points2[idx * 2];
y2 = points2[idx * 2 + 1];
dx = x2 - prevX;
dy = y2 - prevY;
}
var tmpK = k2 + 1;
if (connectNulls) {
while (isPointNull$1(nextX, nextY) && tmpK < segLen) {
tmpK++;
nextIdx += dir3;
nextX = points2[nextIdx * 2];
nextY = points2[nextIdx * 2 + 1];
}
}
var ratioNextSeg = 0.5;
var vx = 0;
var vy = 0;
var nextCpx0 = void 0;
var nextCpy0 = void 0;
if (tmpK >= segLen || isPointNull$1(nextX, nextY)) {
cpx1 = x2;
cpy1 = y2;
} else {
vx = nextX - prevX;
vy = nextY - prevY;
var dx0 = x2 - prevX;
var dx1 = nextX - x2;
var dy0 = y2 - prevY;
var dy1 = nextY - y2;
var lenPrevSeg = void 0;
var lenNextSeg = void 0;
if (smoothMonotone === "x") {
lenPrevSeg = Math.abs(dx0);
lenNextSeg = Math.abs(dx1);
var dir_1 = vx > 0 ? 1 : -1;
cpx1 = x2 - dir_1 * lenPrevSeg * smooth;
cpy1 = y2;
nextCpx0 = x2 + dir_1 * lenNextSeg * smooth;
nextCpy0 = y2;
} else if (smoothMonotone === "y") {
lenPrevSeg = Math.abs(dy0);
lenNextSeg = Math.abs(dy1);
var dir_2 = vy > 0 ? 1 : -1;
cpx1 = x2;
cpy1 = y2 - dir_2 * lenPrevSeg * smooth;
nextCpx0 = x2;
nextCpy0 = y2 + dir_2 * lenNextSeg * smooth;
} else {
lenPrevSeg = Math.sqrt(dx0 * dx0 + dy0 * dy0);
lenNextSeg = Math.sqrt(dx1 * dx1 + dy1 * dy1);
ratioNextSeg = lenNextSeg / (lenNextSeg + lenPrevSeg);
cpx1 = x2 - vx * smooth * (1 - ratioNextSeg);
cpy1 = y2 - vy * smooth * (1 - ratioNextSeg);
nextCpx0 = x2 + vx * smooth * ratioNextSeg;
nextCpy0 = y2 + vy * smooth * ratioNextSeg;
nextCpx0 = mathMin$5(nextCpx0, mathMax$5(nextX, x2));
nextCpy0 = mathMin$5(nextCpy0, mathMax$5(nextY, y2));
nextCpx0 = mathMax$5(nextCpx0, mathMin$5(nextX, x2));
nextCpy0 = mathMax$5(nextCpy0, mathMin$5(nextY, y2));
vx = nextCpx0 - x2;
vy = nextCpy0 - y2;
cpx1 = x2 - vx * lenPrevSeg / lenNextSeg;
cpy1 = y2 - vy * lenPrevSeg / lenNextSeg;
cpx1 = mathMin$5(cpx1, mathMax$5(prevX, x2));
cpy1 = mathMin$5(cpy1, mathMax$5(prevY, y2));
cpx1 = mathMax$5(cpx1, mathMin$5(prevX, x2));
cpy1 = mathMax$5(cpy1, mathMin$5(prevY, y2));
vx = x2 - cpx1;
vy = y2 - cpy1;
nextCpx0 = x2 + vx * lenNextSeg / lenPrevSeg;
nextCpy0 = y2 + vy * lenNextSeg / lenPrevSeg;
}
}
ctx.bezierCurveTo(cpx0, cpy0, cpx1, cpy1, x2, y2);
cpx0 = nextCpx0;
cpy0 = nextCpy0;
} else {
ctx.lineTo(x2, y2);
}
}
prevX = x2;
prevY = y2;
idx += dir3;
}
return k2;
}
var ECPolylineShape = (
/** @class */
/* @__PURE__ */ function() {
function ECPolylineShape2() {
this.smooth = 0;
this.smoothConstraint = true;
}
return ECPolylineShape2;
}()
);
var ECPolyline = (
/** @class */
function(_super) {
__extends(ECPolyline2, _super);
function ECPolyline2(opts) {
var _this = _super.call(this, opts) || this;
_this.type = "ec-polyline";
return _this;
}
ECPolyline2.prototype.getDefaultStyle = function() {
return {
stroke: "#000",
fill: null
};
};
ECPolyline2.prototype.getDefaultShape = function() {
return new ECPolylineShape();
};
ECPolyline2.prototype.buildPath = function(ctx, shape) {
var points2 = shape.points;
var i = 0;
var len2 = points2.length / 2;
if (shape.connectNulls) {
for (; len2 > 0; len2--) {
if (!isPointNull$1(points2[len2 * 2 - 2], points2[len2 * 2 - 1])) {
break;
}
}
for (; i < len2; i++) {
if (!isPointNull$1(points2[i * 2], points2[i * 2 + 1])) {
break;
}
}
}
while (i < len2) {
i += drawSegment(ctx, points2, i, len2, len2, 1, shape.smooth, shape.smoothMonotone, shape.connectNulls) + 1;
}
};
ECPolyline2.prototype.getPointOn = function(xOrY, dim) {
if (!this.path) {
this.createPathProxy();
this.buildPath(this.path, this.shape);
}
var path = this.path;
var data = path.data;
var CMD2 = PathProxy.CMD;
var x0;
var y0;
var isDimX = dim === "x";
var roots2 = [];
for (var i = 0; i < data.length; ) {
var cmd = data[i++];
var x2 = void 0;
var y2 = void 0;
var x22 = void 0;
var y22 = void 0;
var x3 = void 0;
var y3 = void 0;
var t2 = void 0;
switch (cmd) {
case CMD2.M:
x0 = data[i++];
y0 = data[i++];
break;
case CMD2.L:
x2 = data[i++];
y2 = data[i++];
t2 = isDimX ? (xOrY - x0) / (x2 - x0) : (xOrY - y0) / (y2 - y0);
if (t2 <= 1 && t2 >= 0) {
var val = isDimX ? (y2 - y0) * t2 + y0 : (x2 - x0) * t2 + x0;
return isDimX ? [xOrY, val] : [val, xOrY];
}
x0 = x2;
y0 = y2;
break;
case CMD2.C:
x2 = data[i++];
y2 = data[i++];
x22 = data[i++];
y22 = data[i++];
x3 = data[i++];
y3 = data[i++];
var nRoot = isDimX ? cubicRootAt(x0, x2, x22, x3, xOrY, roots2) : cubicRootAt(y0, y2, y22, y3, xOrY, roots2);
if (nRoot > 0) {
for (var i_1 = 0; i_1 < nRoot; i_1++) {
var t_1 = roots2[i_1];
if (t_1 <= 1 && t_1 >= 0) {
var val = isDimX ? cubicAt(y0, y2, y22, y3, t_1) : cubicAt(x0, x2, x22, x3, t_1);
return isDimX ? [xOrY, val] : [val, xOrY];
}
}
}
x0 = x3;
y0 = y3;
break;
}
}
};
return ECPolyline2;
}(Path)
);
var ECPolygonShape = (
/** @class */
function(_super) {
__extends(ECPolygonShape2, _super);
function ECPolygonShape2() {
return _super !== null && _super.apply(this, arguments) || this;
}
return ECPolygonShape2;
}(ECPolylineShape)
);
var ECPolygon = (
/** @class */
function(_super) {
__extends(ECPolygon2, _super);
function ECPolygon2(opts) {
var _this = _super.call(this, opts) || this;
_this.type = "ec-polygon";
return _this;
}
ECPolygon2.prototype.getDefaultShape = function() {
return new ECPolygonShape();
};
ECPolygon2.prototype.buildPath = function(ctx, shape) {
var points2 = shape.points;
var stackedOnPoints = shape.stackedOnPoints;
var i = 0;
var len2 = points2.length / 2;
var smoothMonotone = shape.smoothMonotone;
if (shape.connectNulls) {
for (; len2 > 0; len2--) {
if (!isPointNull$1(points2[len2 * 2 - 2], points2[len2 * 2 - 1])) {
break;
}
}
for (; i < len2; i++) {
if (!isPointNull$1(points2[i * 2], points2[i * 2 + 1])) {
break;
}
}
}
while (i < len2) {
var k2 = drawSegment(ctx, points2, i, len2, len2, 1, shape.smooth, smoothMonotone, shape.connectNulls);
drawSegment(ctx, stackedOnPoints, i + k2 - 1, k2, len2, -1, shape.stackedOnSmooth, smoothMonotone, shape.connectNulls);
i += k2 + 1;
ctx.closePath();
}
};
return ECPolygon2;
}(Path)
);
function createGridClipPath(cartesian, hasAnimation, seriesModel, done, during) {
var rect = cartesian.getArea();
var x2 = rect.x;
var y2 = rect.y;
var width = rect.width;
var height = rect.height;
var lineWidth = seriesModel.get(["lineStyle", "width"]) || 2;
x2 -= lineWidth / 2;
y2 -= lineWidth / 2;
width += lineWidth;
height += lineWidth;
width = Math.ceil(width);
if (x2 !== Math.floor(x2)) {
x2 = Math.floor(x2);
width++;
}
var clipPath = new Rect$2({
shape: {
x: x2,
y: y2,
width,
height
}
});
if (hasAnimation) {
var baseAxis = cartesian.getBaseAxis();
var isHorizontal = baseAxis.isHorizontal();
var isAxisInversed = baseAxis.inverse;
if (isHorizontal) {
if (isAxisInversed) {
clipPath.shape.x += width;
}
clipPath.shape.width = 0;
} else {
if (!isAxisInversed) {
clipPath.shape.y += height;
}
clipPath.shape.height = 0;
}
var duringCb = isFunction$1(during) ? function(percent) {
during(percent, clipPath);
} : null;
initProps(clipPath, {
shape: {
width,
height,
x: x2,
y: y2
}
}, seriesModel, null, done, duringCb);
}
return clipPath;
}
function createPolarClipPath(polar, hasAnimation, seriesModel) {
var sectorArea = polar.getArea();
var r0 = round$3(sectorArea.r0, 1);
var r2 = round$3(sectorArea.r, 1);
var clipPath = new Sector({
shape: {
cx: round$3(polar.cx, 1),
cy: round$3(polar.cy, 1),
r0,
r: r2,
startAngle: sectorArea.startAngle,
endAngle: sectorArea.endAngle,
clockwise: sectorArea.clockwise
}
});
if (hasAnimation) {
var isRadial = polar.getBaseAxis().dim === "angle";
if (isRadial) {
clipPath.shape.endAngle = sectorArea.startAngle;
} else {
clipPath.shape.r = r0;
}
initProps(clipPath, {
shape: {
endAngle: sectorArea.endAngle,
r: r2
}
}, seriesModel);
}
return clipPath;
}
function createClipPath(coordSys, hasAnimation, seriesModel, done, during) {
if (!coordSys) {
return null;
} else if (coordSys.type === "polar") {
return createPolarClipPath(coordSys, hasAnimation, seriesModel);
} else if (coordSys.type === "cartesian2d") {
return createGridClipPath(coordSys, hasAnimation, seriesModel, done, during);
}
return null;
}
function isCoordinateSystemType(coordSys, type4) {
return coordSys.type === type4;
}
function isPointsSame(points1, points2) {
if (points1.length !== points2.length) {
return;
}
for (var i = 0; i < points1.length; i++) {
if (points1[i] !== points2[i]) {
return;
}
}
return true;
}
function bboxFromPoints(points2) {
var minX = Infinity;
var minY = Infinity;
var maxX = -Infinity;
var maxY = -Infinity;
for (var i = 0; i < points2.length; ) {
var x2 = points2[i++];
var y2 = points2[i++];
if (!isNaN(x2)) {
minX = Math.min(x2, minX);
maxX = Math.max(x2, maxX);
}
if (!isNaN(y2)) {
minY = Math.min(y2, minY);
maxY = Math.max(y2, maxY);
}
}
return [[minX, minY], [maxX, maxY]];
}
function getBoundingDiff(points1, points2) {
var _a2 = bboxFromPoints(points1), min1 = _a2[0], max1 = _a2[1];
var _b2 = bboxFromPoints(points2), min22 = _b2[0], max22 = _b2[1];
return Math.max(Math.abs(min1[0] - min22[0]), Math.abs(min1[1] - min22[1]), Math.abs(max1[0] - max22[0]), Math.abs(max1[1] - max22[1]));
}
function getSmooth(smooth) {
return isNumber(smooth) ? smooth : smooth ? 0.5 : 0;
}
function getStackedOnPoints(coordSys, data, dataCoordInfo) {
if (!dataCoordInfo.valueDim) {
return [];
}
var len2 = data.count();
var points2 = createFloat32Array(len2 * 2);
for (var idx = 0; idx < len2; idx++) {
var pt = getStackedOnPoint(dataCoordInfo, coordSys, data, idx);
points2[idx * 2] = pt[0];
points2[idx * 2 + 1] = pt[1];
}
return points2;
}
function turnPointsIntoStep(points2, coordSys, stepTurnAt, connectNulls) {
var baseAxis = coordSys.getBaseAxis();
var baseIndex = baseAxis.dim === "x" || baseAxis.dim === "radius" ? 0 : 1;
var stepPoints = [];
var i = 0;
var stepPt = [];
var pt = [];
var nextPt = [];
var filteredPoints = [];
if (connectNulls) {
for (i = 0; i < points2.length; i += 2) {
if (!isNaN(points2[i]) && !isNaN(points2[i + 1])) {
filteredPoints.push(points2[i], points2[i + 1]);
}
}
points2 = filteredPoints;
}
for (i = 0; i < points2.length - 2; i += 2) {
nextPt[0] = points2[i + 2];
nextPt[1] = points2[i + 3];
pt[0] = points2[i];
pt[1] = points2[i + 1];
stepPoints.push(pt[0], pt[1]);
switch (stepTurnAt) {
case "end":
stepPt[baseIndex] = nextPt[baseIndex];
stepPt[1 - baseIndex] = pt[1 - baseIndex];
stepPoints.push(stepPt[0], stepPt[1]);
break;
case "middle":
var middle = (pt[baseIndex] + nextPt[baseIndex]) / 2;
var stepPt2 = [];
stepPt[baseIndex] = stepPt2[baseIndex] = middle;
stepPt[1 - baseIndex] = pt[1 - baseIndex];
stepPt2[1 - baseIndex] = nextPt[1 - baseIndex];
stepPoints.push(stepPt[0], stepPt[1]);
stepPoints.push(stepPt2[0], stepPt2[1]);
break;
default:
stepPt[baseIndex] = pt[baseIndex];
stepPt[1 - baseIndex] = nextPt[1 - baseIndex];
stepPoints.push(stepPt[0], stepPt[1]);
}
}
stepPoints.push(points2[i++], points2[i++]);
return stepPoints;
}
function clipColorStops(colorStops, maxSize) {
var newColorStops = [];
var len2 = colorStops.length;
var prevOutOfRangeColorStop;
var prevInRangeColorStop;
function lerpStop(stop0, stop1, clippedCoord) {
var coord0 = stop0.coord;
var p2 = (clippedCoord - coord0) / (stop1.coord - coord0);
var color2 = lerp(p2, [stop0.color, stop1.color]);
return {
coord: clippedCoord,
color: color2
};
}
for (var i = 0; i < len2; i++) {
var stop_1 = colorStops[i];
var coord = stop_1.coord;
if (coord < 0) {
prevOutOfRangeColorStop = stop_1;
} else if (coord > maxSize) {
if (prevInRangeColorStop) {
newColorStops.push(lerpStop(prevInRangeColorStop, stop_1, maxSize));
} else if (prevOutOfRangeColorStop) {
newColorStops.push(lerpStop(prevOutOfRangeColorStop, stop_1, 0), lerpStop(prevOutOfRangeColorStop, stop_1, maxSize));
}
break;
} else {
if (prevOutOfRangeColorStop) {
newColorStops.push(lerpStop(prevOutOfRangeColorStop, stop_1, 0));
prevOutOfRangeColorStop = null;
}
newColorStops.push(stop_1);
prevInRangeColorStop = stop_1;
}
}
return newColorStops;
}
function getVisualGradient(data, coordSys, api) {
var visualMetaList = data.getVisual("visualMeta");
if (!visualMetaList || !visualMetaList.length || !data.count()) {
return;
}
if (coordSys.type !== "cartesian2d") {
return;
}
var coordDim;
var visualMeta;
for (var i = visualMetaList.length - 1; i >= 0; i--) {
var dimInfo = data.getDimensionInfo(visualMetaList[i].dimension);
coordDim = dimInfo && dimInfo.coordDim;
if (coordDim === "x" || coordDim === "y") {
visualMeta = visualMetaList[i];
break;
}
}
if (!visualMeta) {
return;
}
var axis = coordSys.getAxis(coordDim);
var colorStops = map$1(visualMeta.stops, function(stop2) {
return {
coord: axis.toGlobalCoord(axis.dataToCoord(stop2.value)),
color: stop2.color
};
});
var stopLen = colorStops.length;
var outerColors = visualMeta.outerColors.slice();
if (stopLen && colorStops[0].coord > colorStops[stopLen - 1].coord) {
colorStops.reverse();
outerColors.reverse();
}
var colorStopsInRange = clipColorStops(colorStops, coordDim === "x" ? api.getWidth() : api.getHeight());
var inRangeStopLen = colorStopsInRange.length;
if (!inRangeStopLen && stopLen) {
return colorStops[0].coord < 0 ? outerColors[1] ? outerColors[1] : colorStops[stopLen - 1].color : outerColors[0] ? outerColors[0] : colorStops[0].color;
}
var tinyExtent = 10;
var minCoord = colorStopsInRange[0].coord - tinyExtent;
var maxCoord = colorStopsInRange[inRangeStopLen - 1].coord + tinyExtent;
var coordSpan = maxCoord - minCoord;
if (coordSpan < 1e-3) {
return "transparent";
}
each$f(colorStopsInRange, function(stop2) {
stop2.offset = (stop2.coord - minCoord) / coordSpan;
});
colorStopsInRange.push({
// NOTE: inRangeStopLen may still be 0 if stoplen is zero.
offset: inRangeStopLen ? colorStopsInRange[inRangeStopLen - 1].offset : 0.5,
color: outerColors[1] || "transparent"
});
colorStopsInRange.unshift({
offset: inRangeStopLen ? colorStopsInRange[0].offset : 0.5,
color: outerColors[0] || "transparent"
});
var gradient = new LinearGradient(0, 0, 0, 0, colorStopsInRange, true);
gradient[coordDim] = minCoord;
gradient[coordDim + "2"] = maxCoord;
return gradient;
}
function getIsIgnoreFunc(seriesModel, data, coordSys) {
var showAllSymbol = seriesModel.get("showAllSymbol");
var isAuto = showAllSymbol === "auto";
if (showAllSymbol && !isAuto) {
return;
}
var categoryAxis2 = coordSys.getAxesByScale("ordinal")[0];
if (!categoryAxis2) {
return;
}
if (isAuto && canShowAllSymbolForCategory(categoryAxis2, data)) {
return;
}
var categoryDataDim = data.mapDimension(categoryAxis2.dim);
var labelMap = {};
each$f(categoryAxis2.getViewLabels(), function(labelItem) {
var ordinalNumber = categoryAxis2.scale.getRawOrdinalNumber(labelItem.tickValue);
labelMap[ordinalNumber] = 1;
});
return function(dataIndex) {
return !labelMap.hasOwnProperty(data.get(categoryDataDim, dataIndex));
};
}
function canShowAllSymbolForCategory(categoryAxis2, data) {
var axisExtent = categoryAxis2.getExtent();
var availSize = Math.abs(axisExtent[1] - axisExtent[0]) / categoryAxis2.scale.count();
isNaN(availSize) && (availSize = 0);
var dataLen = data.count();
var step = Math.max(1, Math.round(dataLen / 5));
for (var dataIndex = 0; dataIndex < dataLen; dataIndex += step) {
if (Symbol$1.getSymbolSize(
data,
dataIndex
// Only for cartesian, where `isHorizontal` exists.
)[categoryAxis2.isHorizontal() ? 1 : 0] * 1.5 > availSize) {
return false;
}
}
return true;
}
function isPointNull(x2, y2) {
return isNaN(x2) || isNaN(y2);
}
function getLastIndexNotNull(points2) {
var len2 = points2.length / 2;
for (; len2 > 0; len2--) {
if (!isPointNull(points2[len2 * 2 - 2], points2[len2 * 2 - 1])) {
break;
}
}
return len2 - 1;
}
function getPointAtIndex(points2, idx) {
return [points2[idx * 2], points2[idx * 2 + 1]];
}
function getIndexRange(points2, xOrY, dim) {
var len2 = points2.length / 2;
var dimIdx = dim === "x" ? 0 : 1;
var a;
var b2;
var prevIndex = 0;
var nextIndex = -1;
for (var i = 0; i < len2; i++) {
b2 = points2[i * 2 + dimIdx];
if (isNaN(b2) || isNaN(points2[i * 2 + 1 - dimIdx])) {
continue;
}
if (i === 0) {
a = b2;
continue;
}
if (a <= xOrY && b2 >= xOrY || a >= xOrY && b2 <= xOrY) {
nextIndex = i;
break;
}
prevIndex = i;
a = b2;
}
return {
range: [prevIndex, nextIndex],
t: (xOrY - a) / (b2 - a)
};
}
function anyStateShowEndLabel(seriesModel) {
if (seriesModel.get(["endLabel", "show"])) {
return true;
}
for (var i = 0; i < SPECIAL_STATES.length; i++) {
if (seriesModel.get([SPECIAL_STATES[i], "endLabel", "show"])) {
return true;
}
}
return false;
}
function createLineClipPath(lineView, coordSys, hasAnimation, seriesModel) {
if (isCoordinateSystemType(coordSys, "cartesian2d")) {
var endLabelModel_1 = seriesModel.getModel("endLabel");
var valueAnimation_1 = endLabelModel_1.get("valueAnimation");
var data_1 = seriesModel.getData();
var labelAnimationRecord_1 = {
lastFrameIndex: 0
};
var during = anyStateShowEndLabel(seriesModel) ? function(percent, clipRect) {
lineView._endLabelOnDuring(percent, clipRect, data_1, labelAnimationRecord_1, valueAnimation_1, endLabelModel_1, coordSys);
} : null;
var isHorizontal = coordSys.getBaseAxis().isHorizontal();
var clipPath = createGridClipPath(coordSys, hasAnimation, seriesModel, function() {
var endLabel = lineView._endLabel;
if (endLabel && hasAnimation) {
if (labelAnimationRecord_1.originalX != null) {
endLabel.attr({
x: labelAnimationRecord_1.originalX,
y: labelAnimationRecord_1.originalY
});
}
}
}, during);
if (!seriesModel.get("clip", true)) {
var rectShape = clipPath.shape;
var expandSize = Math.max(rectShape.width, rectShape.height);
if (isHorizontal) {
rectShape.y -= expandSize;
rectShape.height += expandSize * 2;
} else {
rectShape.x -= expandSize;
rectShape.width += expandSize * 2;
}
}
if (during) {
during(1, clipPath);
}
return clipPath;
} else {
return createPolarClipPath(coordSys, hasAnimation, seriesModel);
}
}
function getEndLabelStateSpecified(endLabelModel, coordSys) {
var baseAxis = coordSys.getBaseAxis();
var isHorizontal = baseAxis.isHorizontal();
var isBaseInversed = baseAxis.inverse;
var align = isHorizontal ? isBaseInversed ? "right" : "left" : "center";
var verticalAlign = isHorizontal ? "middle" : isBaseInversed ? "top" : "bottom";
return {
normal: {
align: endLabelModel.get("align") || align,
verticalAlign: endLabelModel.get("verticalAlign") || verticalAlign
}
};
}
var LineView = (
/** @class */
function(_super) {
__extends(LineView2, _super);
function LineView2() {
return _super !== null && _super.apply(this, arguments) || this;
}
LineView2.prototype.init = function() {
var lineGroup = new Group$3();
var symbolDraw = new SymbolDraw();
this.group.add(symbolDraw.group);
this._symbolDraw = symbolDraw;
this._lineGroup = lineGroup;
};
LineView2.prototype.render = function(seriesModel, ecModel, api) {
var _this = this;
var coordSys = seriesModel.coordinateSystem;
var group = this.group;
var data = seriesModel.getData();
var lineStyleModel = seriesModel.getModel("lineStyle");
var areaStyleModel = seriesModel.getModel("areaStyle");
var points2 = data.getLayout("points") || [];
var isCoordSysPolar = coordSys.type === "polar";
var prevCoordSys = this._coordSys;
var symbolDraw = this._symbolDraw;
var polyline = this._polyline;
var polygon = this._polygon;
var lineGroup = this._lineGroup;
var hasAnimation = !ecModel.ssr && seriesModel.get("animation");
var isAreaChart = !areaStyleModel.isEmpty();
var valueOrigin = areaStyleModel.get("origin");
var dataCoordInfo = prepareDataCoordInfo(coordSys, data, valueOrigin);
var stackedOnPoints = isAreaChart && getStackedOnPoints(coordSys, data, dataCoordInfo);
var showSymbol = seriesModel.get("showSymbol");
var connectNulls = seriesModel.get("connectNulls");
var isIgnoreFunc = showSymbol && !isCoordSysPolar && getIsIgnoreFunc(seriesModel, data, coordSys);
var oldData = this._data;
oldData && oldData.eachItemGraphicEl(function(el2, idx) {
if (el2.__temp) {
group.remove(el2);
oldData.setItemGraphicEl(idx, null);
}
});
if (!showSymbol) {
symbolDraw.remove();
}
group.add(lineGroup);
var step = !isCoordSysPolar ? seriesModel.get("step") : false;
var clipShapeForSymbol;
if (coordSys && coordSys.getArea && seriesModel.get("clip", true)) {
clipShapeForSymbol = coordSys.getArea();
if (clipShapeForSymbol.width != null) {
clipShapeForSymbol.x -= 0.1;
clipShapeForSymbol.y -= 0.1;
clipShapeForSymbol.width += 0.2;
clipShapeForSymbol.height += 0.2;
} else if (clipShapeForSymbol.r0) {
clipShapeForSymbol.r0 -= 0.5;
clipShapeForSymbol.r += 0.5;
}
}
this._clipShapeForSymbol = clipShapeForSymbol;
var visualColor = getVisualGradient(data, coordSys, api) || data.getVisual("style")[data.getVisual("drawType")];
if (!(polyline && prevCoordSys.type === coordSys.type && step === this._step)) {
showSymbol && symbolDraw.updateData(data, {
isIgnore: isIgnoreFunc,
clipShape: clipShapeForSymbol,
disableAnimation: true,
getSymbolPoint: function(idx) {
return [points2[idx * 2], points2[idx * 2 + 1]];
}
});
hasAnimation && this._initSymbolLabelAnimation(data, coordSys, clipShapeForSymbol);
if (step) {
points2 = turnPointsIntoStep(points2, coordSys, step, connectNulls);
if (stackedOnPoints) {
stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step, connectNulls);
}
}
polyline = this._newPolyline(points2);
if (isAreaChart) {
polygon = this._newPolygon(points2, stackedOnPoints);
} else if (polygon) {
lineGroup.remove(polygon);
polygon = this._polygon = null;
}
if (!isCoordSysPolar) {
this._initOrUpdateEndLabel(seriesModel, coordSys, convertToColorString(visualColor));
}
lineGroup.setClipPath(createLineClipPath(this, coordSys, true, seriesModel));
} else {
if (isAreaChart && !polygon) {
polygon = this._newPolygon(points2, stackedOnPoints);
} else if (polygon && !isAreaChart) {
lineGroup.remove(polygon);
polygon = this._polygon = null;
}
if (!isCoordSysPolar) {
this._initOrUpdateEndLabel(seriesModel, coordSys, convertToColorString(visualColor));
}
var oldClipPath = lineGroup.getClipPath();
if (oldClipPath) {
var newClipPath = createLineClipPath(this, coordSys, false, seriesModel);
initProps(oldClipPath, {
shape: newClipPath.shape
}, seriesModel);
} else {
lineGroup.setClipPath(createLineClipPath(this, coordSys, true, seriesModel));
}
showSymbol && symbolDraw.updateData(data, {
isIgnore: isIgnoreFunc,
clipShape: clipShapeForSymbol,
disableAnimation: true,
getSymbolPoint: function(idx) {
return [points2[idx * 2], points2[idx * 2 + 1]];
}
});
if (!isPointsSame(this._stackedOnPoints, stackedOnPoints) || !isPointsSame(this._points, points2)) {
if (hasAnimation) {
this._doUpdateAnimation(data, stackedOnPoints, coordSys, api, step, valueOrigin, connectNulls);
} else {
if (step) {
points2 = turnPointsIntoStep(points2, coordSys, step, connectNulls);
if (stackedOnPoints) {
stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step, connectNulls);
}
}
polyline.setShape({
points: points2
});
polygon && polygon.setShape({
points: points2,
stackedOnPoints
});
}
}
}
var emphasisModel = seriesModel.getModel("emphasis");
var focus = emphasisModel.get("focus");
var blurScope = emphasisModel.get("blurScope");
var emphasisDisabled = emphasisModel.get("disabled");
polyline.useStyle(defaults(
// Use color in lineStyle first
lineStyleModel.getLineStyle(),
{
fill: "none",
stroke: visualColor,
lineJoin: "bevel"
}
));
setStatesStylesFromModel(polyline, seriesModel, "lineStyle");
if (polyline.style.lineWidth > 0 && seriesModel.get(["emphasis", "lineStyle", "width"]) === "bolder") {
var emphasisLineStyle = polyline.getState("emphasis").style;
emphasisLineStyle.lineWidth = +polyline.style.lineWidth + 1;
}
getECData(polyline).seriesIndex = seriesModel.seriesIndex;
toggleHoverEmphasis(polyline, focus, blurScope, emphasisDisabled);
var smooth = getSmooth(seriesModel.get("smooth"));
var smoothMonotone = seriesModel.get("smoothMonotone");
polyline.setShape({
smooth,
smoothMonotone,
connectNulls
});
if (polygon) {
var stackedOnSeries = data.getCalculationInfo("stackedOnSeries");
var stackedOnSmooth = 0;
polygon.useStyle(defaults(areaStyleModel.getAreaStyle(), {
fill: visualColor,
opacity: 0.7,
lineJoin: "bevel",
decal: data.getVisual("style").decal
}));
if (stackedOnSeries) {
stackedOnSmooth = getSmooth(stackedOnSeries.get("smooth"));
}
polygon.setShape({
smooth,
stackedOnSmooth,
smoothMonotone,
connectNulls
});
setStatesStylesFromModel(polygon, seriesModel, "areaStyle");
getECData(polygon).seriesIndex = seriesModel.seriesIndex;
toggleHoverEmphasis(polygon, focus, blurScope, emphasisDisabled);
}
var changePolyState = function(toState) {
_this._changePolyState(toState);
};
data.eachItemGraphicEl(function(el2) {
el2 && (el2.onHoverStateChange = changePolyState);
});
this._polyline.onHoverStateChange = changePolyState;
this._data = data;
this._coordSys = coordSys;
this._stackedOnPoints = stackedOnPoints;
this._points = points2;
this._step = step;
this._valueOrigin = valueOrigin;
if (seriesModel.get("triggerLineEvent")) {
this.packEventData(seriesModel, polyline);
polygon && this.packEventData(seriesModel, polygon);
}
};
LineView2.prototype.packEventData = function(seriesModel, el2) {
getECData(el2).eventData = {
componentType: "series",
componentSubType: "line",
componentIndex: seriesModel.componentIndex,
seriesIndex: seriesModel.seriesIndex,
seriesName: seriesModel.name,
seriesType: "line"
};
};
LineView2.prototype.highlight = function(seriesModel, ecModel, api, payload) {
var data = seriesModel.getData();
var dataIndex = queryDataIndex(data, payload);
this._changePolyState("emphasis");
if (!(dataIndex instanceof Array) && dataIndex != null && dataIndex >= 0) {
var points2 = data.getLayout("points");
var symbol = data.getItemGraphicEl(dataIndex);
if (!symbol) {
var x2 = points2[dataIndex * 2];
var y2 = points2[dataIndex * 2 + 1];
if (isNaN(x2) || isNaN(y2)) {
return;
}
if (this._clipShapeForSymbol && !this._clipShapeForSymbol.contain(x2, y2)) {
return;
}
var zlevel = seriesModel.get("zlevel") || 0;
var z2 = seriesModel.get("z") || 0;
symbol = new Symbol$1(data, dataIndex);
symbol.x = x2;
symbol.y = y2;
symbol.setZ(zlevel, z2);
var symbolLabel = symbol.getSymbolPath().getTextContent();
if (symbolLabel) {
symbolLabel.zlevel = zlevel;
symbolLabel.z = z2;
symbolLabel.z2 = this._polyline.z2 + 1;
}
symbol.__temp = true;
data.setItemGraphicEl(dataIndex, symbol);
symbol.stopSymbolAnimation(true);
this.group.add(symbol);
}
symbol.highlight();
} else {
ChartView.prototype.highlight.call(this, seriesModel, ecModel, api, payload);
}
};
LineView2.prototype.downplay = function(seriesModel, ecModel, api, payload) {
var data = seriesModel.getData();
var dataIndex = queryDataIndex(data, payload);
this._changePolyState("normal");
if (dataIndex != null && dataIndex >= 0) {
var symbol = data.getItemGraphicEl(dataIndex);
if (symbol) {
if (symbol.__temp) {
data.setItemGraphicEl(dataIndex, null);
this.group.remove(symbol);
} else {
symbol.downplay();
}
}
} else {
ChartView.prototype.downplay.call(this, seriesModel, ecModel, api, payload);
}
};
LineView2.prototype._changePolyState = function(toState) {
var polygon = this._polygon;
setStatesFlag(this._polyline, toState);
polygon && setStatesFlag(polygon, toState);
};
LineView2.prototype._newPolyline = function(points2) {
var polyline = this._polyline;
if (polyline) {
this._lineGroup.remove(polyline);
}
polyline = new ECPolyline({
shape: {
points: points2
},
segmentIgnoreThreshold: 2,
z2: 10
});
this._lineGroup.add(polyline);
this._polyline = polyline;
return polyline;
};
LineView2.prototype._newPolygon = function(points2, stackedOnPoints) {
var polygon = this._polygon;
if (polygon) {
this._lineGroup.remove(polygon);
}
polygon = new ECPolygon({
shape: {
points: points2,
stackedOnPoints
},
segmentIgnoreThreshold: 2
});
this._lineGroup.add(polygon);
this._polygon = polygon;
return polygon;
};
LineView2.prototype._initSymbolLabelAnimation = function(data, coordSys, clipShape) {
var isHorizontalOrRadial;
var isCoordSysPolar;
var baseAxis = coordSys.getBaseAxis();
var isAxisInverse = baseAxis.inverse;
if (coordSys.type === "cartesian2d") {
isHorizontalOrRadial = baseAxis.isHorizontal();
isCoordSysPolar = false;
} else if (coordSys.type === "polar") {
isHorizontalOrRadial = baseAxis.dim === "angle";
isCoordSysPolar = true;
}
var seriesModel = data.hostModel;
var seriesDuration = seriesModel.get("animationDuration");
if (isFunction$1(seriesDuration)) {
seriesDuration = seriesDuration(null);
}
var seriesDelay = seriesModel.get("animationDelay") || 0;
var seriesDelayValue = isFunction$1(seriesDelay) ? seriesDelay(null) : seriesDelay;
data.eachItemGraphicEl(function(symbol, idx) {
var el2 = symbol;
if (el2) {
var point = [symbol.x, symbol.y];
var start2 = void 0;
var end2 = void 0;
var current = void 0;
if (clipShape) {
if (isCoordSysPolar) {
var polarClip = clipShape;
var coord = coordSys.pointToCoord(point);
if (isHorizontalOrRadial) {
start2 = polarClip.startAngle;
end2 = polarClip.endAngle;
current = -coord[1] / 180 * Math.PI;
} else {
start2 = polarClip.r0;
end2 = polarClip.r;
current = coord[0];
}
} else {
var gridClip = clipShape;
if (isHorizontalOrRadial) {
start2 = gridClip.x;
end2 = gridClip.x + gridClip.width;
current = symbol.x;
} else {
start2 = gridClip.y + gridClip.height;
end2 = gridClip.y;
current = symbol.y;
}
}
}
var ratio = end2 === start2 ? 0 : (current - start2) / (end2 - start2);
if (isAxisInverse) {
ratio = 1 - ratio;
}
var delay = isFunction$1(seriesDelay) ? seriesDelay(idx) : seriesDuration * ratio + seriesDelayValue;
var symbolPath = el2.getSymbolPath();
var text = symbolPath.getTextContent();
el2.attr({
scaleX: 0,
scaleY: 0
});
el2.animateTo({
scaleX: 1,
scaleY: 1
}, {
duration: 200,
setToFinal: true,
delay
});
if (text) {
text.animateFrom({
style: {
opacity: 0
}
}, {
duration: 300,
delay
});
}
symbolPath.disableLabelAnimation = true;
}
});
};
LineView2.prototype._initOrUpdateEndLabel = function(seriesModel, coordSys, inheritColor) {
var endLabelModel = seriesModel.getModel("endLabel");
if (anyStateShowEndLabel(seriesModel)) {
var data_2 = seriesModel.getData();
var polyline = this._polyline;
var points2 = data_2.getLayout("points");
if (!points2) {
polyline.removeTextContent();
this._endLabel = null;
return;
}
var endLabel = this._endLabel;
if (!endLabel) {
endLabel = this._endLabel = new ZRText({
z2: 200
// should be higher than item symbol
});
endLabel.ignoreClip = true;
polyline.setTextContent(this._endLabel);
polyline.disableLabelAnimation = true;
}
var dataIndex = getLastIndexNotNull(points2);
if (dataIndex >= 0) {
setLabelStyle(polyline, getLabelStatesModels(seriesModel, "endLabel"), {
inheritColor,
labelFetcher: seriesModel,
labelDataIndex: dataIndex,
defaultText: function(dataIndex2, opt, interpolatedValue) {
return interpolatedValue != null ? getDefaultInterpolatedLabel(data_2, interpolatedValue) : getDefaultLabel(data_2, dataIndex2);
},
enableTextSetter: true
}, getEndLabelStateSpecified(endLabelModel, coordSys));
polyline.textConfig.position = null;
}
} else if (this._endLabel) {
this._polyline.removeTextContent();
this._endLabel = null;
}
};
LineView2.prototype._endLabelOnDuring = function(percent, clipRect, data, animationRecord, valueAnimation, endLabelModel, coordSys) {
var endLabel = this._endLabel;
var polyline = this._polyline;
if (endLabel) {
if (percent < 1 && animationRecord.originalX == null) {
animationRecord.originalX = endLabel.x;
animationRecord.originalY = endLabel.y;
}
var points2 = data.getLayout("points");
var seriesModel = data.hostModel;
var connectNulls = seriesModel.get("connectNulls");
var precision = endLabelModel.get("precision");
var distance2 = endLabelModel.get("distance") || 0;
var baseAxis = coordSys.getBaseAxis();
var isHorizontal = baseAxis.isHorizontal();
var isBaseInversed = baseAxis.inverse;
var clipShape = clipRect.shape;
var xOrY = isBaseInversed ? isHorizontal ? clipShape.x : clipShape.y + clipShape.height : isHorizontal ? clipShape.x + clipShape.width : clipShape.y;
var distanceX = (isHorizontal ? distance2 : 0) * (isBaseInversed ? -1 : 1);
var distanceY = (isHorizontal ? 0 : -distance2) * (isBaseInversed ? -1 : 1);
var dim = isHorizontal ? "x" : "y";
var dataIndexRange = getIndexRange(points2, xOrY, dim);
var indices = dataIndexRange.range;
var diff = indices[1] - indices[0];
var value = void 0;
if (diff >= 1) {
if (diff > 1 && !connectNulls) {
var pt = getPointAtIndex(points2, indices[0]);
endLabel.attr({
x: pt[0] + distanceX,
y: pt[1] + distanceY
});
valueAnimation && (value = seriesModel.getRawValue(indices[0]));
} else {
var pt = polyline.getPointOn(xOrY, dim);
pt && endLabel.attr({
x: pt[0] + distanceX,
y: pt[1] + distanceY
});
var startValue = seriesModel.getRawValue(indices[0]);
var endValue = seriesModel.getRawValue(indices[1]);
valueAnimation && (value = interpolateRawValues(data, precision, startValue, endValue, dataIndexRange.t));
}
animationRecord.lastFrameIndex = indices[0];
} else {
var idx = percent === 1 || animationRecord.lastFrameIndex > 0 ? indices[0] : 0;
var pt = getPointAtIndex(points2, idx);
valueAnimation && (value = seriesModel.getRawValue(idx));
endLabel.attr({
x: pt[0] + distanceX,
y: pt[1] + distanceY
});
}
if (valueAnimation) {
var inner2 = labelInner(endLabel);
if (typeof inner2.setLabelText === "function") {
inner2.setLabelText(value);
}
}
}
};
LineView2.prototype._doUpdateAnimation = function(data, stackedOnPoints, coordSys, api, step, valueOrigin, connectNulls) {
var polyline = this._polyline;
var polygon = this._polygon;
var seriesModel = data.hostModel;
var diff = lineAnimationDiff(this._data, data, this._stackedOnPoints, stackedOnPoints, this._coordSys, coordSys, this._valueOrigin);
var current = diff.current;
var stackedOnCurrent = diff.stackedOnCurrent;
var next2 = diff.next;
var stackedOnNext = diff.stackedOnNext;
if (step) {
current = turnPointsIntoStep(diff.current, coordSys, step, connectNulls);
stackedOnCurrent = turnPointsIntoStep(diff.stackedOnCurrent, coordSys, step, connectNulls);
next2 = turnPointsIntoStep(diff.next, coordSys, step, connectNulls);
stackedOnNext = turnPointsIntoStep(diff.stackedOnNext, coordSys, step, connectNulls);
}
if (getBoundingDiff(current, next2) > 3e3 || polygon && getBoundingDiff(stackedOnCurrent, stackedOnNext) > 3e3) {
polyline.stopAnimation();
polyline.setShape({
points: next2
});
if (polygon) {
polygon.stopAnimation();
polygon.setShape({
points: next2,
stackedOnPoints: stackedOnNext
});
}
return;
}
polyline.shape.__points = diff.current;
polyline.shape.points = current;
var target = {
shape: {
points: next2
}
};
if (diff.current !== current) {
target.shape.__points = diff.next;
}
polyline.stopAnimation();
updateProps$1(polyline, target, seriesModel);
if (polygon) {
polygon.setShape({
// Reuse the points with polyline.
points: current,
stackedOnPoints: stackedOnCurrent
});
polygon.stopAnimation();
updateProps$1(polygon, {
shape: {
stackedOnPoints: stackedOnNext
}
}, seriesModel);
if (polyline.shape.points !== polygon.shape.points) {
polygon.shape.points = polyline.shape.points;
}
}
var updatedDataInfo = [];
var diffStatus = diff.status;
for (var i = 0; i < diffStatus.length; i++) {
var cmd = diffStatus[i].cmd;
if (cmd === "=") {
var el2 = data.getItemGraphicEl(diffStatus[i].idx1);
if (el2) {
updatedDataInfo.push({
el: el2,
ptIdx: i
// Index of points
});
}
}
}
if (polyline.animators && polyline.animators.length) {
polyline.animators[0].during(function() {
polygon && polygon.dirtyShape();
var points2 = polyline.shape.__points;
for (var i2 = 0; i2 < updatedDataInfo.length; i2++) {
var el22 = updatedDataInfo[i2].el;
var offset2 = updatedDataInfo[i2].ptIdx * 2;
el22.x = points2[offset2];
el22.y = points2[offset2 + 1];
el22.markRedraw();
}
});
}
};
LineView2.prototype.remove = function(ecModel) {
var group = this.group;
var oldData = this._data;
this._lineGroup.removeAll();
this._symbolDraw.remove(true);
oldData && oldData.eachItemGraphicEl(function(el2, idx) {
if (el2.__temp) {
group.remove(el2);
oldData.setItemGraphicEl(idx, null);
}
});
this._polyline = this._polygon = this._coordSys = this._points = this._stackedOnPoints = this._endLabel = this._data = null;
};
LineView2.type = "line";
return LineView2;
}(ChartView)
);
function pointsLayout(seriesType2, forceStoreInTypedArray) {
return {
seriesType: seriesType2,
plan: createRenderPlanner(),
reset: function(seriesModel) {
var data = seriesModel.getData();
var coordSys = seriesModel.coordinateSystem;
var pipelineContext = seriesModel.pipelineContext;
var useTypedArray = forceStoreInTypedArray || pipelineContext.large;
if (!coordSys) {
return;
}
var dims = map$1(coordSys.dimensions, function(dim) {
return data.mapDimension(dim);
}).slice(0, 2);
var dimLen = dims.length;
var stackResultDim = data.getCalculationInfo("stackResultDimension");
if (isDimensionStacked(data, dims[0])) {
dims[0] = stackResultDim;
}
if (isDimensionStacked(data, dims[1])) {
dims[1] = stackResultDim;
}
var store = data.getStore();
var dimIdx0 = data.getDimensionIndex(dims[0]);
var dimIdx1 = data.getDimensionIndex(dims[1]);
return dimLen && {
progress: function(params, data2) {
var segCount = params.end - params.start;
var points2 = useTypedArray && createFloat32Array(segCount * dimLen);
var tmpIn = [];
var tmpOut = [];
for (var i = params.start, offset2 = 0; i < params.end; i++) {
var point = void 0;
if (dimLen === 1) {
var x2 = store.get(dimIdx0, i);
point = coordSys.dataToPoint(x2, null, tmpOut);
} else {
tmpIn[0] = store.get(dimIdx0, i);
tmpIn[1] = store.get(dimIdx1, i);
point = coordSys.dataToPoint(tmpIn, null, tmpOut);
}
if (useTypedArray) {
points2[offset2++] = point[0];
points2[offset2++] = point[1];
} else {
data2.setItemLayout(i, point.slice());
}
}
useTypedArray && data2.setLayout("points", points2);
}
};
}
};
}
var samplers = {
average: function(frame) {
var sum2 = 0;
var count2 = 0;
for (var i = 0; i < frame.length; i++) {
if (!isNaN(frame[i])) {
sum2 += frame[i];
count2++;
}
}
return count2 === 0 ? NaN : sum2 / count2;
},
sum: function(frame) {
var sum2 = 0;
for (var i = 0; i < frame.length; i++) {
sum2 += frame[i] || 0;
}
return sum2;
},
max: function(frame) {
var max3 = -Infinity;
for (var i = 0; i < frame.length; i++) {
frame[i] > max3 && (max3 = frame[i]);
}
return isFinite(max3) ? max3 : NaN;
},
min: function(frame) {
var min3 = Infinity;
for (var i = 0; i < frame.length; i++) {
frame[i] < min3 && (min3 = frame[i]);
}
return isFinite(min3) ? min3 : NaN;
},
minmax: function(frame) {
var turningPointAbsoluteValue = -Infinity;
var turningPointOriginalValue = -Infinity;
for (var i = 0; i < frame.length; i++) {
var originalValue = frame[i];
var absoluteValue = Math.abs(originalValue);
if (absoluteValue > turningPointAbsoluteValue) {
turningPointAbsoluteValue = absoluteValue;
turningPointOriginalValue = originalValue;
}
}
return isFinite(turningPointOriginalValue) ? turningPointOriginalValue : NaN;
},
// TODO
// Median
nearest: function(frame) {
return frame[0];
}
};
var indexSampler = function(frame) {
return Math.round(frame.length / 2);
};
function dataSample(seriesType2) {
return {
seriesType: seriesType2,
// FIXME:TS never used, so comment it
// modifyOutputEnd: true,
reset: function(seriesModel, ecModel, api) {
var data = seriesModel.getData();
var sampling = seriesModel.get("sampling");
var coordSys = seriesModel.coordinateSystem;
var count2 = data.count();
if (count2 > 10 && coordSys.type === "cartesian2d" && sampling) {
var baseAxis = coordSys.getBaseAxis();
var valueAxis2 = coordSys.getOtherAxis(baseAxis);
var extent3 = baseAxis.getExtent();
var dpr2 = api.getDevicePixelRatio();
var size = Math.abs(extent3[1] - extent3[0]) * (dpr2 || 1);
var rate = Math.round(count2 / size);
if (isFinite(rate) && rate > 1) {
if (sampling === "lttb") {
seriesModel.setData(data.lttbDownSample(data.mapDimension(valueAxis2.dim), 1 / rate));
}
var sampler = void 0;
if (isString$1(sampling)) {
sampler = samplers[sampling];
} else if (isFunction$1(sampling)) {
sampler = sampling;
}
if (sampler) {
seriesModel.setData(data.downSample(data.mapDimension(valueAxis2.dim), 1 / rate, sampler, indexSampler));
}
}
}
}
};
}
function install$Q(registers) {
registers.registerChartView(LineView);
registers.registerSeriesModel(LineSeriesModel);
registers.registerLayout(pointsLayout("line", true));
registers.registerVisual({
seriesType: "line",
reset: function(seriesModel) {
var data = seriesModel.getData();
var lineStyle = seriesModel.getModel("lineStyle").getLineStyle();
if (lineStyle && !lineStyle.stroke) {
lineStyle.stroke = data.getVisual("style").fill;
}
data.setVisual("legendLineStyle", lineStyle);
}
});
registers.registerProcessor(registers.PRIORITY.PROCESSOR.STATISTIC, dataSample("line"));
}
var BaseBarSeriesModel = (
/** @class */
function(_super) {
__extends(BaseBarSeriesModel2, _super);
function BaseBarSeriesModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = BaseBarSeriesModel2.type;
return _this;
}
BaseBarSeriesModel2.prototype.getInitialData = function(option, ecModel) {
return createSeriesData(null, this, {
useEncodeDefaulter: true
});
};
BaseBarSeriesModel2.prototype.getMarkerPosition = function(value, dims, startingAtTick) {
var coordSys = this.coordinateSystem;
if (coordSys && coordSys.clampData) {
var clampData_1 = coordSys.clampData(value);
var pt_1 = coordSys.dataToPoint(clampData_1);
if (startingAtTick) {
each$f(coordSys.getAxes(), function(axis, idx) {
if (axis.type === "category" && dims != null) {
var tickCoords = axis.getTicksCoords();
var alignTicksWithLabel = axis.getTickModel().get("alignWithLabel");
var targetTickId = clampData_1[idx];
var isEnd = dims[idx] === "x1" || dims[idx] === "y1";
if (isEnd && !alignTicksWithLabel) {
targetTickId += 1;
}
if (tickCoords.length < 2) {
return;
} else if (tickCoords.length === 2) {
pt_1[idx] = axis.toGlobalCoord(axis.getExtent()[isEnd ? 1 : 0]);
return;
}
var leftCoord = void 0;
var coord = void 0;
var stepTickValue = 1;
for (var i = 0; i < tickCoords.length; i++) {
var tickCoord = tickCoords[i].coord;
var tickValue = i === tickCoords.length - 1 ? tickCoords[i - 1].tickValue + stepTickValue : tickCoords[i].tickValue;
if (tickValue === targetTickId) {
coord = tickCoord;
break;
} else if (tickValue < targetTickId) {
leftCoord = tickCoord;
} else if (leftCoord != null && tickValue > targetTickId) {
coord = (tickCoord + leftCoord) / 2;
break;
}
if (i === 1) {
stepTickValue = tickValue - tickCoords[0].tickValue;
}
}
if (coord == null) {
if (!leftCoord) {
coord = tickCoords[0].coord;
} else if (leftCoord) {
coord = tickCoords[tickCoords.length - 1].coord;
}
}
pt_1[idx] = axis.toGlobalCoord(coord);
}
});
} else {
var data = this.getData();
var offset2 = data.getLayout("offset");
var size = data.getLayout("size");
var offsetIndex = coordSys.getBaseAxis().isHorizontal() ? 0 : 1;
pt_1[offsetIndex] += offset2 + size / 2;
}
return pt_1;
}
return [NaN, NaN];
};
BaseBarSeriesModel2.type = "series.__base_bar__";
BaseBarSeriesModel2.defaultOption = {
// zlevel: 0,
z: 2,
coordinateSystem: "cartesian2d",
legendHoverLink: true,
// stack: null
// Cartesian coordinate system
// xAxisIndex: 0,
// yAxisIndex: 0,
barMinHeight: 0,
barMinAngle: 0,
// cursor: null,
large: false,
largeThreshold: 400,
progressive: 3e3,
progressiveChunkMode: "mod"
};
return BaseBarSeriesModel2;
}(SeriesModel)
);
SeriesModel.registerClass(BaseBarSeriesModel);
var BarSeriesModel = (
/** @class */
function(_super) {
__extends(BarSeriesModel2, _super);
function BarSeriesModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = BarSeriesModel2.type;
return _this;
}
BarSeriesModel2.prototype.getInitialData = function() {
return createSeriesData(null, this, {
useEncodeDefaulter: true,
createInvertedIndices: !!this.get("realtimeSort", true) || null
});
};
BarSeriesModel2.prototype.getProgressive = function() {
return this.get("large") ? this.get("progressive") : false;
};
BarSeriesModel2.prototype.getProgressiveThreshold = function() {
var progressiveThreshold = this.get("progressiveThreshold");
var largeThreshold = this.get("largeThreshold");
if (largeThreshold > progressiveThreshold) {
progressiveThreshold = largeThreshold;
}
return progressiveThreshold;
};
BarSeriesModel2.prototype.brushSelector = function(dataIndex, data, selectors) {
return selectors.rect(data.getItemLayout(dataIndex));
};
BarSeriesModel2.type = "series.bar";
BarSeriesModel2.dependencies = ["grid", "polar"];
BarSeriesModel2.defaultOption = inheritDefaultOption(BaseBarSeriesModel.defaultOption, {
// If clipped
// Only available on cartesian2d
clip: true,
roundCap: false,
showBackground: false,
backgroundStyle: {
color: "rgba(180, 180, 180, 0.2)",
borderColor: null,
borderWidth: 0,
borderType: "solid",
borderRadius: 0,
shadowBlur: 0,
shadowColor: null,
shadowOffsetX: 0,
shadowOffsetY: 0,
opacity: 1
},
select: {
itemStyle: {
borderColor: "#212121"
}
},
realtimeSort: false
});
return BarSeriesModel2;
}(BaseBarSeriesModel)
);
var SausageShape = (
/** @class */
/* @__PURE__ */ function() {
function SausageShape2() {
this.cx = 0;
this.cy = 0;
this.r0 = 0;
this.r = 0;
this.startAngle = 0;
this.endAngle = Math.PI * 2;
this.clockwise = true;
}
return SausageShape2;
}()
);
var SausagePath = (
/** @class */
function(_super) {
__extends(SausagePath2, _super);
function SausagePath2(opts) {
var _this = _super.call(this, opts) || this;
_this.type = "sausage";
return _this;
}
SausagePath2.prototype.getDefaultShape = function() {
return new SausageShape();
};
SausagePath2.prototype.buildPath = function(ctx, shape) {
var cx = shape.cx;
var cy = shape.cy;
var r0 = Math.max(shape.r0 || 0, 0);
var r2 = Math.max(shape.r, 0);
var dr = (r2 - r0) * 0.5;
var rCenter = r0 + dr;
var startAngle = shape.startAngle;
var endAngle = shape.endAngle;
var clockwise = shape.clockwise;
var PI22 = Math.PI * 2;
var lessThanCircle = clockwise ? endAngle - startAngle < PI22 : startAngle - endAngle < PI22;
if (!lessThanCircle) {
startAngle = endAngle - (clockwise ? PI22 : -PI22);
}
var unitStartX = Math.cos(startAngle);
var unitStartY = Math.sin(startAngle);
var unitEndX = Math.cos(endAngle);
var unitEndY = Math.sin(endAngle);
if (lessThanCircle) {
ctx.moveTo(unitStartX * r0 + cx, unitStartY * r0 + cy);
ctx.arc(unitStartX * rCenter + cx, unitStartY * rCenter + cy, dr, -Math.PI + startAngle, startAngle, !clockwise);
} else {
ctx.moveTo(unitStartX * r2 + cx, unitStartY * r2 + cy);
}
ctx.arc(cx, cy, r2, startAngle, endAngle, !clockwise);
ctx.arc(unitEndX * rCenter + cx, unitEndY * rCenter + cy, dr, endAngle - Math.PI * 2, endAngle - Math.PI, !clockwise);
if (r0 !== 0) {
ctx.arc(cx, cy, r0, endAngle, startAngle, clockwise);
}
};
return SausagePath2;
}(Path)
);
function createSectorCalculateTextPosition(positionMapping, opts) {
opts = opts || {};
var isRoundCap = opts.isRoundCap;
return function(out2, opts2, boundingRect) {
var textPosition = opts2.position;
if (!textPosition || textPosition instanceof Array) {
return calculateTextPosition(out2, opts2, boundingRect);
}
var mappedSectorPosition = positionMapping(textPosition);
var distance2 = opts2.distance != null ? opts2.distance : 5;
var sector = this.shape;
var cx = sector.cx;
var cy = sector.cy;
var r2 = sector.r;
var r0 = sector.r0;
var middleR = (r2 + r0) / 2;
var startAngle = sector.startAngle;
var endAngle = sector.endAngle;
var middleAngle = (startAngle + endAngle) / 2;
var extraDist = isRoundCap ? Math.abs(r2 - r0) / 2 : 0;
var mathCos2 = Math.cos;
var mathSin2 = Math.sin;
var x2 = cx + r2 * mathCos2(startAngle);
var y2 = cy + r2 * mathSin2(startAngle);
var textAlign = "left";
var textVerticalAlign = "top";
switch (mappedSectorPosition) {
case "startArc":
x2 = cx + (r0 - distance2) * mathCos2(middleAngle);
y2 = cy + (r0 - distance2) * mathSin2(middleAngle);
textAlign = "center";
textVerticalAlign = "top";
break;
case "insideStartArc":
x2 = cx + (r0 + distance2) * mathCos2(middleAngle);
y2 = cy + (r0 + distance2) * mathSin2(middleAngle);
textAlign = "center";
textVerticalAlign = "bottom";
break;
case "startAngle":
x2 = cx + middleR * mathCos2(startAngle) + adjustAngleDistanceX(startAngle, distance2 + extraDist, false);
y2 = cy + middleR * mathSin2(startAngle) + adjustAngleDistanceY(startAngle, distance2 + extraDist, false);
textAlign = "right";
textVerticalAlign = "middle";
break;
case "insideStartAngle":
x2 = cx + middleR * mathCos2(startAngle) + adjustAngleDistanceX(startAngle, -distance2 + extraDist, false);
y2 = cy + middleR * mathSin2(startAngle) + adjustAngleDistanceY(startAngle, -distance2 + extraDist, false);
textAlign = "left";
textVerticalAlign = "middle";
break;
case "middle":
x2 = cx + middleR * mathCos2(middleAngle);
y2 = cy + middleR * mathSin2(middleAngle);
textAlign = "center";
textVerticalAlign = "middle";
break;
case "endArc":
x2 = cx + (r2 + distance2) * mathCos2(middleAngle);
y2 = cy + (r2 + distance2) * mathSin2(middleAngle);
textAlign = "center";
textVerticalAlign = "bottom";
break;
case "insideEndArc":
x2 = cx + (r2 - distance2) * mathCos2(middleAngle);
y2 = cy + (r2 - distance2) * mathSin2(middleAngle);
textAlign = "center";
textVerticalAlign = "top";
break;
case "endAngle":
x2 = cx + middleR * mathCos2(endAngle) + adjustAngleDistanceX(endAngle, distance2 + extraDist, true);
y2 = cy + middleR * mathSin2(endAngle) + adjustAngleDistanceY(endAngle, distance2 + extraDist, true);
textAlign = "left";
textVerticalAlign = "middle";
break;
case "insideEndAngle":
x2 = cx + middleR * mathCos2(endAngle) + adjustAngleDistanceX(endAngle, -distance2 + extraDist, true);
y2 = cy + middleR * mathSin2(endAngle) + adjustAngleDistanceY(endAngle, -distance2 + extraDist, true);
textAlign = "right";
textVerticalAlign = "middle";
break;
default:
return calculateTextPosition(out2, opts2, boundingRect);
}
out2 = out2 || {};
out2.x = x2;
out2.y = y2;
out2.align = textAlign;
out2.verticalAlign = textVerticalAlign;
return out2;
};
}
function setSectorTextRotation(sector, textPosition, positionMapping, rotateType) {
if (isNumber(rotateType)) {
sector.setTextConfig({
rotation: rotateType
});
return;
} else if (isArray$1(textPosition)) {
sector.setTextConfig({
rotation: 0
});
return;
}
var shape = sector.shape;
var startAngle = shape.clockwise ? shape.startAngle : shape.endAngle;
var endAngle = shape.clockwise ? shape.endAngle : shape.startAngle;
var middleAngle = (startAngle + endAngle) / 2;
var anchorAngle;
var mappedSectorPosition = positionMapping(textPosition);
switch (mappedSectorPosition) {
case "startArc":
case "insideStartArc":
case "middle":
case "insideEndArc":
case "endArc":
anchorAngle = middleAngle;
break;
case "startAngle":
case "insideStartAngle":
anchorAngle = startAngle;
break;
case "endAngle":
case "insideEndAngle":
anchorAngle = endAngle;
break;
default:
sector.setTextConfig({
rotation: 0
});
return;
}
var rotate2 = Math.PI * 1.5 - anchorAngle;
if (mappedSectorPosition === "middle" && rotate2 > Math.PI / 2 && rotate2 < Math.PI * 1.5) {
rotate2 -= Math.PI;
}
sector.setTextConfig({
rotation: rotate2
});
}
function adjustAngleDistanceX(angle, distance2, isEnd) {
return distance2 * Math.sin(angle) * (isEnd ? -1 : 1);
}
function adjustAngleDistanceY(angle, distance2, isEnd) {
return distance2 * Math.cos(angle) * (isEnd ? 1 : -1);
}
function getSectorCornerRadius(model, shape, zeroIfNull) {
var cornerRadius = model.get("borderRadius");
if (cornerRadius == null) {
return zeroIfNull ? {
cornerRadius: 0
} : null;
}
if (!isArray$1(cornerRadius)) {
cornerRadius = [cornerRadius, cornerRadius, cornerRadius, cornerRadius];
}
var dr = Math.abs(shape.r || 0 - shape.r0 || 0);
return {
cornerRadius: map$1(cornerRadius, function(cr) {
return parsePercent$1(cr, dr);
})
};
}
var mathMax$4 = Math.max;
var mathMin$4 = Math.min;
function getClipArea(coord, data) {
var coordSysClipArea = coord.getArea && coord.getArea();
if (isCoordinateSystemType(coord, "cartesian2d")) {
var baseAxis = coord.getBaseAxis();
if (baseAxis.type !== "category" || !baseAxis.onBand) {
var expandWidth = data.getLayout("bandWidth");
if (baseAxis.isHorizontal()) {
coordSysClipArea.x -= expandWidth;
coordSysClipArea.width += expandWidth * 2;
} else {
coordSysClipArea.y -= expandWidth;
coordSysClipArea.height += expandWidth * 2;
}
}
}
return coordSysClipArea;
}
var BarView = (
/** @class */
function(_super) {
__extends(BarView2, _super);
function BarView2() {
var _this = _super.call(this) || this;
_this.type = BarView2.type;
_this._isFirstFrame = true;
return _this;
}
BarView2.prototype.render = function(seriesModel, ecModel, api, payload) {
this._model = seriesModel;
this._removeOnRenderedListener(api);
this._updateDrawMode(seriesModel);
var coordinateSystemType = seriesModel.get("coordinateSystem");
if (coordinateSystemType === "cartesian2d" || coordinateSystemType === "polar") {
this._progressiveEls = null;
this._isLargeDraw ? this._renderLarge(seriesModel, ecModel, api) : this._renderNormal(seriesModel, ecModel, api, payload);
}
};
BarView2.prototype.incrementalPrepareRender = function(seriesModel) {
this._clear();
this._updateDrawMode(seriesModel);
this._updateLargeClip(seriesModel);
};
BarView2.prototype.incrementalRender = function(params, seriesModel) {
this._progressiveEls = [];
this._incrementalRenderLarge(params, seriesModel);
};
BarView2.prototype.eachRendered = function(cb2) {
traverseElements(this._progressiveEls || this.group, cb2);
};
BarView2.prototype._updateDrawMode = function(seriesModel) {
var isLargeDraw = seriesModel.pipelineContext.large;
if (this._isLargeDraw == null || isLargeDraw !== this._isLargeDraw) {
this._isLargeDraw = isLargeDraw;
this._clear();
}
};
BarView2.prototype._renderNormal = function(seriesModel, ecModel, api, payload) {
var group = this.group;
var data = seriesModel.getData();
var oldData = this._data;
var coord = seriesModel.coordinateSystem;
var baseAxis = coord.getBaseAxis();
var isHorizontalOrRadial;
if (coord.type === "cartesian2d") {
isHorizontalOrRadial = baseAxis.isHorizontal();
} else if (coord.type === "polar") {
isHorizontalOrRadial = baseAxis.dim === "angle";
}
var animationModel = seriesModel.isAnimationEnabled() ? seriesModel : null;
var realtimeSortCfg = shouldRealtimeSort(seriesModel, coord);
if (realtimeSortCfg) {
this._enableRealtimeSort(realtimeSortCfg, data, api);
}
var needsClip = seriesModel.get("clip", true) || realtimeSortCfg;
var coordSysClipArea = getClipArea(coord, data);
group.removeClipPath();
var roundCap = seriesModel.get("roundCap", true);
var drawBackground = seriesModel.get("showBackground", true);
var backgroundModel = seriesModel.getModel("backgroundStyle");
var barBorderRadius = backgroundModel.get("borderRadius") || 0;
var bgEls = [];
var oldBgEls = this._backgroundEls;
var isInitSort = payload && payload.isInitSort;
var isChangeOrder = payload && payload.type === "changeAxisOrder";
function createBackground(dataIndex) {
var bgLayout = getLayout[coord.type](data, dataIndex);
var bgEl = createBackgroundEl(coord, isHorizontalOrRadial, bgLayout);
bgEl.useStyle(backgroundModel.getItemStyle());
if (coord.type === "cartesian2d") {
bgEl.setShape("r", barBorderRadius);
} else {
bgEl.setShape("cornerRadius", barBorderRadius);
}
bgEls[dataIndex] = bgEl;
return bgEl;
}
data.diff(oldData).add(function(dataIndex) {
var itemModel = data.getItemModel(dataIndex);
var layout2 = getLayout[coord.type](data, dataIndex, itemModel);
if (drawBackground) {
createBackground(dataIndex);
}
if (!data.hasValue(dataIndex) || !isValidLayout[coord.type](layout2)) {
return;
}
var isClipped = false;
if (needsClip) {
isClipped = clip[coord.type](coordSysClipArea, layout2);
}
var el2 = elementCreator[coord.type](seriesModel, data, dataIndex, layout2, isHorizontalOrRadial, animationModel, baseAxis.model, false, roundCap);
if (realtimeSortCfg) {
el2.forceLabelAnimation = true;
}
updateStyle(el2, data, dataIndex, itemModel, layout2, seriesModel, isHorizontalOrRadial, coord.type === "polar");
if (isInitSort) {
el2.attr({
shape: layout2
});
} else if (realtimeSortCfg) {
updateRealtimeAnimation(realtimeSortCfg, animationModel, el2, layout2, dataIndex, isHorizontalOrRadial, false, false);
} else {
initProps(el2, {
shape: layout2
}, seriesModel, dataIndex);
}
data.setItemGraphicEl(dataIndex, el2);
group.add(el2);
el2.ignore = isClipped;
}).update(function(newIndex, oldIndex) {
var itemModel = data.getItemModel(newIndex);
var layout2 = getLayout[coord.type](data, newIndex, itemModel);
if (drawBackground) {
var bgEl = void 0;
if (oldBgEls.length === 0) {
bgEl = createBackground(oldIndex);
} else {
bgEl = oldBgEls[oldIndex];
bgEl.useStyle(backgroundModel.getItemStyle());
if (coord.type === "cartesian2d") {
bgEl.setShape("r", barBorderRadius);
} else {
bgEl.setShape("cornerRadius", barBorderRadius);
}
bgEls[newIndex] = bgEl;
}
var bgLayout = getLayout[coord.type](data, newIndex);
var shape = createBackgroundShape(isHorizontalOrRadial, bgLayout, coord);
updateProps$1(bgEl, {
shape
}, animationModel, newIndex);
}
var el2 = oldData.getItemGraphicEl(oldIndex);
if (!data.hasValue(newIndex) || !isValidLayout[coord.type](layout2)) {
group.remove(el2);
return;
}
var isClipped = false;
if (needsClip) {
isClipped = clip[coord.type](coordSysClipArea, layout2);
if (isClipped) {
group.remove(el2);
}
}
if (!el2) {
el2 = elementCreator[coord.type](seriesModel, data, newIndex, layout2, isHorizontalOrRadial, animationModel, baseAxis.model, !!el2, roundCap);
} else {
saveOldStyle(el2);
}
if (realtimeSortCfg) {
el2.forceLabelAnimation = true;
}
if (isChangeOrder) {
var textEl = el2.getTextContent();
if (textEl) {
var labelInnerStore = labelInner(textEl);
if (labelInnerStore.prevValue != null) {
labelInnerStore.prevValue = labelInnerStore.value;
}
}
} else {
updateStyle(el2, data, newIndex, itemModel, layout2, seriesModel, isHorizontalOrRadial, coord.type === "polar");
}
if (isInitSort) {
el2.attr({
shape: layout2
});
} else if (realtimeSortCfg) {
updateRealtimeAnimation(realtimeSortCfg, animationModel, el2, layout2, newIndex, isHorizontalOrRadial, true, isChangeOrder);
} else {
updateProps$1(el2, {
shape: layout2
}, seriesModel, newIndex, null);
}
data.setItemGraphicEl(newIndex, el2);
el2.ignore = isClipped;
group.add(el2);
}).remove(function(dataIndex) {
var el2 = oldData.getItemGraphicEl(dataIndex);
el2 && removeElementWithFadeOut(el2, seriesModel, dataIndex);
}).execute();
var bgGroup = this._backgroundGroup || (this._backgroundGroup = new Group$3());
bgGroup.removeAll();
for (var i = 0; i < bgEls.length; ++i) {
bgGroup.add(bgEls[i]);
}
group.add(bgGroup);
this._backgroundEls = bgEls;
this._data = data;
};
BarView2.prototype._renderLarge = function(seriesModel, ecModel, api) {
this._clear();
createLarge$1(seriesModel, this.group);
this._updateLargeClip(seriesModel);
};
BarView2.prototype._incrementalRenderLarge = function(params, seriesModel) {
this._removeBackground();
createLarge$1(seriesModel, this.group, this._progressiveEls, true);
};
BarView2.prototype._updateLargeClip = function(seriesModel) {
var clipPath = seriesModel.get("clip", true) && createClipPath(seriesModel.coordinateSystem, false, seriesModel);
var group = this.group;
if (clipPath) {
group.setClipPath(clipPath);
} else {
group.removeClipPath();
}
};
BarView2.prototype._enableRealtimeSort = function(realtimeSortCfg, data, api) {
var _this = this;
if (!data.count()) {
return;
}
var baseAxis = realtimeSortCfg.baseAxis;
if (this._isFirstFrame) {
this._dispatchInitSort(data, realtimeSortCfg, api);
this._isFirstFrame = false;
} else {
var orderMapping_1 = function(idx) {
var el2 = data.getItemGraphicEl(idx);
var shape = el2 && el2.shape;
return shape && // The result should be consistent with the initial sort by data value.
// Do not support the case that both positive and negative exist.
Math.abs(baseAxis.isHorizontal() ? shape.height : shape.width) || 0;
};
this._onRendered = function() {
_this._updateSortWithinSameData(data, orderMapping_1, baseAxis, api);
};
api.getZr().on("rendered", this._onRendered);
}
};
BarView2.prototype._dataSort = function(data, baseAxis, orderMapping) {
var info = [];
data.each(data.mapDimension(baseAxis.dim), function(ordinalNumber, dataIdx) {
var mappedValue = orderMapping(dataIdx);
mappedValue = mappedValue == null ? NaN : mappedValue;
info.push({
dataIndex: dataIdx,
mappedValue,
ordinalNumber
});
});
info.sort(function(a, b2) {
return b2.mappedValue - a.mappedValue;
});
return {
ordinalNumbers: map$1(info, function(item) {
return item.ordinalNumber;
})
};
};
BarView2.prototype._isOrderChangedWithinSameData = function(data, orderMapping, baseAxis) {
var scale2 = baseAxis.scale;
var ordinalDataDim = data.mapDimension(baseAxis.dim);
var lastValue = Number.MAX_VALUE;
for (var tickNum = 0, len2 = scale2.getOrdinalMeta().categories.length; tickNum < len2; ++tickNum) {
var rawIdx = data.rawIndexOf(ordinalDataDim, scale2.getRawOrdinalNumber(tickNum));
var value = rawIdx < 0 ? Number.MIN_VALUE : orderMapping(data.indexOfRawIndex(rawIdx));
if (value > lastValue) {
return true;
}
lastValue = value;
}
return false;
};
BarView2.prototype._isOrderDifferentInView = function(orderInfo, baseAxis) {
var scale2 = baseAxis.scale;
var extent3 = scale2.getExtent();
var tickNum = Math.max(0, extent3[0]);
var tickMax = Math.min(extent3[1], scale2.getOrdinalMeta().categories.length - 1);
for (; tickNum <= tickMax; ++tickNum) {
if (orderInfo.ordinalNumbers[tickNum] !== scale2.getRawOrdinalNumber(tickNum)) {
return true;
}
}
};
BarView2.prototype._updateSortWithinSameData = function(data, orderMapping, baseAxis, api) {
if (!this._isOrderChangedWithinSameData(data, orderMapping, baseAxis)) {
return;
}
var sortInfo = this._dataSort(data, baseAxis, orderMapping);
if (this._isOrderDifferentInView(sortInfo, baseAxis)) {
this._removeOnRenderedListener(api);
api.dispatchAction({
type: "changeAxisOrder",
componentType: baseAxis.dim + "Axis",
axisId: baseAxis.index,
sortInfo
});
}
};
BarView2.prototype._dispatchInitSort = function(data, realtimeSortCfg, api) {
var baseAxis = realtimeSortCfg.baseAxis;
var sortResult = this._dataSort(data, baseAxis, function(dataIdx) {
return data.get(data.mapDimension(realtimeSortCfg.otherAxis.dim), dataIdx);
});
api.dispatchAction({
type: "changeAxisOrder",
componentType: baseAxis.dim + "Axis",
isInitSort: true,
axisId: baseAxis.index,
sortInfo: sortResult
});
};
BarView2.prototype.remove = function(ecModel, api) {
this._clear(this._model);
this._removeOnRenderedListener(api);
};
BarView2.prototype.dispose = function(ecModel, api) {
this._removeOnRenderedListener(api);
};
BarView2.prototype._removeOnRenderedListener = function(api) {
if (this._onRendered) {
api.getZr().off("rendered", this._onRendered);
this._onRendered = null;
}
};
BarView2.prototype._clear = function(model) {
var group = this.group;
var data = this._data;
if (model && model.isAnimationEnabled() && data && !this._isLargeDraw) {
this._removeBackground();
this._backgroundEls = [];
data.eachItemGraphicEl(function(el2) {
removeElementWithFadeOut(el2, model, getECData(el2).dataIndex);
});
} else {
group.removeAll();
}
this._data = null;
this._isFirstFrame = true;
};
BarView2.prototype._removeBackground = function() {
this.group.remove(this._backgroundGroup);
this._backgroundGroup = null;
};
BarView2.type = "bar";
return BarView2;
}(ChartView)
);
var clip = {
cartesian2d: function(coordSysBoundingRect, layout2) {
var signWidth = layout2.width < 0 ? -1 : 1;
var signHeight = layout2.height < 0 ? -1 : 1;
if (signWidth < 0) {
layout2.x += layout2.width;
layout2.width = -layout2.width;
}
if (signHeight < 0) {
layout2.y += layout2.height;
layout2.height = -layout2.height;
}
var coordSysX2 = coordSysBoundingRect.x + coordSysBoundingRect.width;
var coordSysY2 = coordSysBoundingRect.y + coordSysBoundingRect.height;
var x2 = mathMax$4(layout2.x, coordSysBoundingRect.x);
var x22 = mathMin$4(layout2.x + layout2.width, coordSysX2);
var y2 = mathMax$4(layout2.y, coordSysBoundingRect.y);
var y22 = mathMin$4(layout2.y + layout2.height, coordSysY2);
var xClipped = x22 < x2;
var yClipped = y22 < y2;
layout2.x = xClipped && x2 > coordSysX2 ? x22 : x2;
layout2.y = yClipped && y2 > coordSysY2 ? y22 : y2;
layout2.width = xClipped ? 0 : x22 - x2;
layout2.height = yClipped ? 0 : y22 - y2;
if (signWidth < 0) {
layout2.x += layout2.width;
layout2.width = -layout2.width;
}
if (signHeight < 0) {
layout2.y += layout2.height;
layout2.height = -layout2.height;
}
return xClipped || yClipped;
},
polar: function(coordSysClipArea, layout2) {
var signR = layout2.r0 <= layout2.r ? 1 : -1;
if (signR < 0) {
var tmp = layout2.r;
layout2.r = layout2.r0;
layout2.r0 = tmp;
}
var r2 = mathMin$4(layout2.r, coordSysClipArea.r);
var r0 = mathMax$4(layout2.r0, coordSysClipArea.r0);
layout2.r = r2;
layout2.r0 = r0;
var clipped = r2 - r0 < 0;
if (signR < 0) {
var tmp = layout2.r;
layout2.r = layout2.r0;
layout2.r0 = tmp;
}
return clipped;
}
};
var elementCreator = {
cartesian2d: function(seriesModel, data, newIndex, layout2, isHorizontal, animationModel, axisModel, isUpdate, roundCap) {
var rect = new Rect$2({
shape: extend({}, layout2),
z2: 1
});
rect.__dataIndex = newIndex;
rect.name = "item";
if (animationModel) {
var rectShape = rect.shape;
var animateProperty = isHorizontal ? "height" : "width";
rectShape[animateProperty] = 0;
}
return rect;
},
polar: function(seriesModel, data, newIndex, layout2, isRadial, animationModel, axisModel, isUpdate, roundCap) {
var ShapeClass = !isRadial && roundCap ? SausagePath : Sector;
var sector = new ShapeClass({
shape: layout2,
z2: 1
});
sector.name = "item";
var positionMap = createPolarPositionMapping(isRadial);
sector.calculateTextPosition = createSectorCalculateTextPosition(positionMap, {
isRoundCap: ShapeClass === SausagePath
});
if (animationModel) {
var sectorShape = sector.shape;
var animateProperty = isRadial ? "r" : "endAngle";
var animateTarget = {};
sectorShape[animateProperty] = isRadial ? layout2.r0 : layout2.startAngle;
animateTarget[animateProperty] = layout2[animateProperty];
(isUpdate ? updateProps$1 : initProps)(sector, {
shape: animateTarget
// __value: typeof dataValue === 'string' ? parseInt(dataValue, 10) : dataValue
}, animationModel);
}
return sector;
}
};
function shouldRealtimeSort(seriesModel, coordSys) {
var realtimeSortOption = seriesModel.get("realtimeSort", true);
var baseAxis = coordSys.getBaseAxis();
if (realtimeSortOption && baseAxis.type === "category" && coordSys.type === "cartesian2d") {
return {
baseAxis,
otherAxis: coordSys.getOtherAxis(baseAxis)
};
}
}
function updateRealtimeAnimation(realtimeSortCfg, seriesAnimationModel, el2, layout2, newIndex, isHorizontal, isUpdate, isChangeOrder) {
var seriesTarget;
var axisTarget;
if (isHorizontal) {
axisTarget = {
x: layout2.x,
width: layout2.width
};
seriesTarget = {
y: layout2.y,
height: layout2.height
};
} else {
axisTarget = {
y: layout2.y,
height: layout2.height
};
seriesTarget = {
x: layout2.x,
width: layout2.width
};
}
if (!isChangeOrder) {
(isUpdate ? updateProps$1 : initProps)(el2, {
shape: seriesTarget
}, seriesAnimationModel, newIndex, null);
}
var axisAnimationModel = seriesAnimationModel ? realtimeSortCfg.baseAxis.model : null;
(isUpdate ? updateProps$1 : initProps)(el2, {
shape: axisTarget
}, axisAnimationModel, newIndex);
}
function checkPropertiesNotValid(obj, props) {
for (var i = 0; i < props.length; i++) {
if (!isFinite(obj[props[i]])) {
return true;
}
}
return false;
}
var rectPropties = ["x", "y", "width", "height"];
var polarPropties = ["cx", "cy", "r", "startAngle", "endAngle"];
var isValidLayout = {
cartesian2d: function(layout2) {
return !checkPropertiesNotValid(layout2, rectPropties);
},
polar: function(layout2) {
return !checkPropertiesNotValid(layout2, polarPropties);
}
};
var getLayout = {
// itemModel is only used to get borderWidth, which is not needed
// when calculating bar background layout.
cartesian2d: function(data, dataIndex, itemModel) {
var layout2 = data.getItemLayout(dataIndex);
var fixedLineWidth = itemModel ? getLineWidth(itemModel, layout2) : 0;
var signX = layout2.width > 0 ? 1 : -1;
var signY = layout2.height > 0 ? 1 : -1;
return {
x: layout2.x + signX * fixedLineWidth / 2,
y: layout2.y + signY * fixedLineWidth / 2,
width: layout2.width - signX * fixedLineWidth,
height: layout2.height - signY * fixedLineWidth
};
},
polar: function(data, dataIndex, itemModel) {
var layout2 = data.getItemLayout(dataIndex);
return {
cx: layout2.cx,
cy: layout2.cy,
r0: layout2.r0,
r: layout2.r,
startAngle: layout2.startAngle,
endAngle: layout2.endAngle,
clockwise: layout2.clockwise
};
}
};
function isZeroOnPolar(layout2) {
return layout2.startAngle != null && layout2.endAngle != null && layout2.startAngle === layout2.endAngle;
}
function createPolarPositionMapping(isRadial) {
return /* @__PURE__ */ function(isRadial2) {
var arcOrAngle = isRadial2 ? "Arc" : "Angle";
return function(position2) {
switch (position2) {
case "start":
case "insideStart":
case "end":
case "insideEnd":
return position2 + arcOrAngle;
default:
return position2;
}
};
}(isRadial);
}
function updateStyle(el2, data, dataIndex, itemModel, layout2, seriesModel, isHorizontalOrRadial, isPolar) {
var style2 = data.getItemVisual(dataIndex, "style");
if (!isPolar) {
var borderRadius = itemModel.get(["itemStyle", "borderRadius"]) || 0;
el2.setShape("r", borderRadius);
} else if (!seriesModel.get("roundCap")) {
var sectorShape = el2.shape;
var cornerRadius = getSectorCornerRadius(itemModel.getModel("itemStyle"), sectorShape, true);
extend(sectorShape, cornerRadius);
el2.setShape(sectorShape);
}
el2.useStyle(style2);
var cursorStyle = itemModel.getShallow("cursor");
cursorStyle && el2.attr("cursor", cursorStyle);
var labelPositionOutside = isPolar ? isHorizontalOrRadial ? layout2.r >= layout2.r0 ? "endArc" : "startArc" : layout2.endAngle >= layout2.startAngle ? "endAngle" : "startAngle" : isHorizontalOrRadial ? layout2.height >= 0 ? "bottom" : "top" : layout2.width >= 0 ? "right" : "left";
var labelStatesModels = getLabelStatesModels(itemModel);
setLabelStyle(el2, labelStatesModels, {
labelFetcher: seriesModel,
labelDataIndex: dataIndex,
defaultText: getDefaultLabel(seriesModel.getData(), dataIndex),
inheritColor: style2.fill,
defaultOpacity: style2.opacity,
defaultOutsidePosition: labelPositionOutside
});
var label = el2.getTextContent();
if (isPolar && label) {
var position2 = itemModel.get(["label", "position"]);
el2.textConfig.inside = position2 === "middle" ? true : null;
setSectorTextRotation(el2, position2 === "outside" ? labelPositionOutside : position2, createPolarPositionMapping(isHorizontalOrRadial), itemModel.get(["label", "rotate"]));
}
setLabelValueAnimation(label, labelStatesModels, seriesModel.getRawValue(dataIndex), function(value) {
return getDefaultInterpolatedLabel(data, value);
});
var emphasisModel = itemModel.getModel(["emphasis"]);
toggleHoverEmphasis(el2, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
setStatesStylesFromModel(el2, itemModel);
if (isZeroOnPolar(layout2)) {
el2.style.fill = "none";
el2.style.stroke = "none";
each$f(el2.states, function(state) {
if (state.style) {
state.style.fill = state.style.stroke = "none";
}
});
}
}
function getLineWidth(itemModel, rawLayout) {
var borderColor = itemModel.get(["itemStyle", "borderColor"]);
if (!borderColor || borderColor === "none") {
return 0;
}
var lineWidth = itemModel.get(["itemStyle", "borderWidth"]) || 0;
var width = isNaN(rawLayout.width) ? Number.MAX_VALUE : Math.abs(rawLayout.width);
var height = isNaN(rawLayout.height) ? Number.MAX_VALUE : Math.abs(rawLayout.height);
return Math.min(lineWidth, width, height);
}
var LagePathShape = (
/** @class */
/* @__PURE__ */ function() {
function LagePathShape2() {
}
return LagePathShape2;
}()
);
var LargePath = (
/** @class */
function(_super) {
__extends(LargePath2, _super);
function LargePath2(opts) {
var _this = _super.call(this, opts) || this;
_this.type = "largeBar";
return _this;
}
LargePath2.prototype.getDefaultShape = function() {
return new LagePathShape();
};
LargePath2.prototype.buildPath = function(ctx, shape) {
var points2 = shape.points;
var baseDimIdx = this.baseDimIdx;
var valueDimIdx = 1 - this.baseDimIdx;
var startPoint = [];
var size = [];
var barWidth = this.barWidth;
for (var i = 0; i < points2.length; i += 3) {
size[baseDimIdx] = barWidth;
size[valueDimIdx] = points2[i + 2];
startPoint[baseDimIdx] = points2[i + baseDimIdx];
startPoint[valueDimIdx] = points2[i + valueDimIdx];
ctx.rect(startPoint[0], startPoint[1], size[0], size[1]);
}
};
return LargePath2;
}(Path)
);
function createLarge$1(seriesModel, group, progressiveEls, incremental) {
var data = seriesModel.getData();
var baseDimIdx = data.getLayout("valueAxisHorizontal") ? 1 : 0;
var largeDataIndices = data.getLayout("largeDataIndices");
var barWidth = data.getLayout("size");
var backgroundModel = seriesModel.getModel("backgroundStyle");
var bgPoints = data.getLayout("largeBackgroundPoints");
if (bgPoints) {
var bgEl = new LargePath({
shape: {
points: bgPoints
},
incremental: !!incremental,
silent: true,
z2: 0
});
bgEl.baseDimIdx = baseDimIdx;
bgEl.largeDataIndices = largeDataIndices;
bgEl.barWidth = barWidth;
bgEl.useStyle(backgroundModel.getItemStyle());
group.add(bgEl);
progressiveEls && progressiveEls.push(bgEl);
}
var el2 = new LargePath({
shape: {
points: data.getLayout("largePoints")
},
incremental: !!incremental,
ignoreCoarsePointer: true,
z2: 1
});
el2.baseDimIdx = baseDimIdx;
el2.largeDataIndices = largeDataIndices;
el2.barWidth = barWidth;
group.add(el2);
el2.useStyle(data.getVisual("style"));
getECData(el2).seriesIndex = seriesModel.seriesIndex;
if (!seriesModel.get("silent")) {
el2.on("mousedown", largePathUpdateDataIndex);
el2.on("mousemove", largePathUpdateDataIndex);
}
progressiveEls && progressiveEls.push(el2);
}
var largePathUpdateDataIndex = throttle(function(event) {
var largePath = this;
var dataIndex = largePathFindDataIndex(largePath, event.offsetX, event.offsetY);
getECData(largePath).dataIndex = dataIndex >= 0 ? dataIndex : null;
}, 30, false);
function largePathFindDataIndex(largePath, x2, y2) {
var baseDimIdx = largePath.baseDimIdx;
var valueDimIdx = 1 - baseDimIdx;
var points2 = largePath.shape.points;
var largeDataIndices = largePath.largeDataIndices;
var startPoint = [];
var size = [];
var barWidth = largePath.barWidth;
for (var i = 0, len2 = points2.length / 3; i < len2; i++) {
var ii2 = i * 3;
size[baseDimIdx] = barWidth;
size[valueDimIdx] = points2[ii2 + 2];
startPoint[baseDimIdx] = points2[ii2 + baseDimIdx];
startPoint[valueDimIdx] = points2[ii2 + valueDimIdx];
if (size[valueDimIdx] < 0) {
startPoint[valueDimIdx] += size[valueDimIdx];
size[valueDimIdx] = -size[valueDimIdx];
}
if (x2 >= startPoint[0] && x2 <= startPoint[0] + size[0] && y2 >= startPoint[1] && y2 <= startPoint[1] + size[1]) {
return largeDataIndices[i];
}
}
return -1;
}
function createBackgroundShape(isHorizontalOrRadial, layout2, coord) {
if (isCoordinateSystemType(coord, "cartesian2d")) {
var rectShape = layout2;
var coordLayout = coord.getArea();
return {
x: isHorizontalOrRadial ? rectShape.x : coordLayout.x,
y: isHorizontalOrRadial ? coordLayout.y : rectShape.y,
width: isHorizontalOrRadial ? rectShape.width : coordLayout.width,
height: isHorizontalOrRadial ? coordLayout.height : rectShape.height
};
} else {
var coordLayout = coord.getArea();
var sectorShape = layout2;
return {
cx: coordLayout.cx,
cy: coordLayout.cy,
r0: isHorizontalOrRadial ? coordLayout.r0 : sectorShape.r0,
r: isHorizontalOrRadial ? coordLayout.r : sectorShape.r,
startAngle: isHorizontalOrRadial ? sectorShape.startAngle : 0,
endAngle: isHorizontalOrRadial ? sectorShape.endAngle : Math.PI * 2
};
}
}
function createBackgroundEl(coord, isHorizontalOrRadial, layout2) {
var ElementClz = coord.type === "polar" ? Sector : Rect$2;
return new ElementClz({
shape: createBackgroundShape(isHorizontalOrRadial, layout2, coord),
silent: true,
z2: 0
});
}
function install$P(registers) {
registers.registerChartView(BarView);
registers.registerSeriesModel(BarSeriesModel);
registers.registerLayout(registers.PRIORITY.VISUAL.LAYOUT, curry$1(layout$3, "bar"));
registers.registerLayout(registers.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, createProgressiveLayout("bar"));
registers.registerProcessor(registers.PRIORITY.PROCESSOR.STATISTIC, dataSample("bar"));
registers.registerAction({
type: "changeAxisOrder",
event: "changeAxisOrder",
update: "update"
}, function(payload, ecModel) {
var componentType = payload.componentType || "series";
ecModel.eachComponent({
mainType: componentType,
query: payload
}, function(componentModel) {
if (payload.sortInfo) {
componentModel.axis.setCategorySortInfo(payload.sortInfo);
}
});
});
}
var PI2 = Math.PI * 2;
var RADIAN$2 = Math.PI / 180;
function getViewRect$5(seriesModel, api) {
return getLayoutRect(seriesModel.getBoxLayoutParams(), {
width: api.getWidth(),
height: api.getHeight()
});
}
function getBasicPieLayout(seriesModel, api) {
var viewRect2 = getViewRect$5(seriesModel, api);
var center2 = seriesModel.get("center");
var radius2 = seriesModel.get("radius");
if (!isArray$1(radius2)) {
radius2 = [0, radius2];
}
var width = parsePercent(viewRect2.width, api.getWidth());
var height = parsePercent(viewRect2.height, api.getHeight());
var size = Math.min(width, height);
var r0 = parsePercent(radius2[0], size / 2);
var r2 = parsePercent(radius2[1], size / 2);
var cx;
var cy;
var coordSys = seriesModel.coordinateSystem;
if (coordSys) {
var point = coordSys.dataToPoint(center2);
cx = point[0] || 0;
cy = point[1] || 0;
} else {
if (!isArray$1(center2)) {
center2 = [center2, center2];
}
cx = parsePercent(center2[0], width) + viewRect2.x;
cy = parsePercent(center2[1], height) + viewRect2.y;
}
return {
cx,
cy,
r0,
r: r2
};
}
function pieLayout(seriesType2, ecModel, api) {
ecModel.eachSeriesByType(seriesType2, function(seriesModel) {
var data = seriesModel.getData();
var valueDim = data.mapDimension("value");
var viewRect2 = getViewRect$5(seriesModel, api);
var _a2 = getBasicPieLayout(seriesModel, api), cx = _a2.cx, cy = _a2.cy, r2 = _a2.r, r0 = _a2.r0;
var startAngle = -seriesModel.get("startAngle") * RADIAN$2;
var endAngle = seriesModel.get("endAngle");
var padAngle = seriesModel.get("padAngle") * RADIAN$2;
endAngle = endAngle === "auto" ? startAngle - PI2 : -endAngle * RADIAN$2;
var minAngle = seriesModel.get("minAngle") * RADIAN$2;
var minAndPadAngle = minAngle + padAngle;
var validDataCount = 0;
data.each(valueDim, function(value) {
!isNaN(value) && validDataCount++;
});
var sum2 = data.getSum(valueDim);
var unitRadian = Math.PI / (sum2 || validDataCount) * 2;
var clockwise = seriesModel.get("clockwise");
var roseType = seriesModel.get("roseType");
var stillShowZeroSum = seriesModel.get("stillShowZeroSum");
var extent3 = data.getDataExtent(valueDim);
extent3[0] = 0;
var dir3 = clockwise ? 1 : -1;
var angles = [startAngle, endAngle];
var halfPadAngle = dir3 * padAngle / 2;
normalizeArcAngles(angles, !clockwise);
startAngle = angles[0], endAngle = angles[1];
var layoutData = getSeriesLayoutData(seriesModel);
layoutData.startAngle = startAngle;
layoutData.endAngle = endAngle;
layoutData.clockwise = clockwise;
var angleRange = Math.abs(endAngle - startAngle);
var restAngle = angleRange;
var valueSumLargerThanMinAngle = 0;
var currentAngle = startAngle;
data.setLayout({
viewRect: viewRect2,
r: r2
});
data.each(valueDim, function(value, idx) {
var angle;
if (isNaN(value)) {
data.setItemLayout(idx, {
angle: NaN,
startAngle: NaN,
endAngle: NaN,
clockwise,
cx,
cy,
r0,
r: roseType ? NaN : r2
});
return;
}
if (roseType !== "area") {
angle = sum2 === 0 && stillShowZeroSum ? unitRadian : value * unitRadian;
} else {
angle = angleRange / validDataCount;
}
if (angle < minAndPadAngle) {
angle = minAndPadAngle;
restAngle -= minAndPadAngle;
} else {
valueSumLargerThanMinAngle += value;
}
var endAngle2 = currentAngle + dir3 * angle;
var actualStartAngle = 0;
var actualEndAngle = 0;
if (padAngle > angle) {
actualStartAngle = currentAngle + dir3 * angle / 2;
actualEndAngle = actualStartAngle;
} else {
actualStartAngle = currentAngle + halfPadAngle;
actualEndAngle = endAngle2 - halfPadAngle;
}
data.setItemLayout(idx, {
angle,
startAngle: actualStartAngle,
endAngle: actualEndAngle,
clockwise,
cx,
cy,
r0,
r: roseType ? linearMap$2(value, extent3, [r0, r2]) : r2
});
currentAngle = endAngle2;
});
if (restAngle < PI2 && validDataCount) {
if (restAngle <= 1e-3) {
var angle_1 = angleRange / validDataCount;
data.each(valueDim, function(value, idx) {
if (!isNaN(value)) {
var layout_1 = data.getItemLayout(idx);
layout_1.angle = angle_1;
var actualStartAngle = 0;
var actualEndAngle = 0;
if (angle_1 < padAngle) {
actualStartAngle = startAngle + dir3 * (idx + 1 / 2) * angle_1;
actualEndAngle = actualStartAngle;
} else {
actualStartAngle = startAngle + dir3 * idx * angle_1 + halfPadAngle;
actualEndAngle = startAngle + dir3 * (idx + 1) * angle_1 - halfPadAngle;
}
layout_1.startAngle = actualStartAngle;
layout_1.endAngle = actualEndAngle;
}
});
} else {
unitRadian = restAngle / valueSumLargerThanMinAngle;
currentAngle = startAngle;
data.each(valueDim, function(value, idx) {
if (!isNaN(value)) {
var layout_2 = data.getItemLayout(idx);
var angle = layout_2.angle === minAndPadAngle ? minAndPadAngle : value * unitRadian;
var actualStartAngle = 0;
var actualEndAngle = 0;
if (angle < padAngle) {
actualStartAngle = currentAngle + dir3 * angle / 2;
actualEndAngle = actualStartAngle;
} else {
actualStartAngle = currentAngle + halfPadAngle;
actualEndAngle = currentAngle + dir3 * angle - halfPadAngle;
}
layout_2.startAngle = actualStartAngle;
layout_2.endAngle = actualEndAngle;
currentAngle += dir3 * angle;
}
});
}
}
});
}
var getSeriesLayoutData = makeInner();
function dataFilter$1(seriesType2) {
return {
seriesType: seriesType2,
reset: function(seriesModel, ecModel) {
var legendModels = ecModel.findComponents({
mainType: "legend"
});
if (!legendModels || !legendModels.length) {
return;
}
var data = seriesModel.getData();
data.filterSelf(function(idx) {
var name = data.getName(idx);
for (var i = 0; i < legendModels.length; i++) {
if (!legendModels[i].isSelected(name)) {
return false;
}
}
return true;
});
}
};
}
var RADIAN$1 = Math.PI / 180;
function adjustSingleSide(list, cx, cy, r2, dir3, viewWidth, viewHeight, viewLeft, viewTop, farthestX) {
if (list.length < 2) {
return;
}
function recalculateXOnSemiToAlignOnEllipseCurve(semi) {
var rB = semi.rB;
var rB2 = rB * rB;
for (var i2 = 0; i2 < semi.list.length; i2++) {
var item = semi.list[i2];
var dy = Math.abs(item.label.y - cy);
var rA = r2 + item.len;
var rA2 = rA * rA;
var dx2 = Math.sqrt((1 - Math.abs(dy * dy / rB2)) * rA2);
var newX = cx + (dx2 + item.len2) * dir3;
var deltaX = newX - item.label.x;
var newTargetWidth = item.targetTextWidth - deltaX * dir3;
constrainTextWidth(item, newTargetWidth, true);
item.label.x = newX;
}
}
function recalculateX(items) {
var topSemi = {
list: [],
maxY: 0
};
var bottomSemi = {
list: [],
maxY: 0
};
for (var i2 = 0; i2 < items.length; i2++) {
if (items[i2].labelAlignTo !== "none") {
continue;
}
var item = items[i2];
var semi = item.label.y > cy ? bottomSemi : topSemi;
var dy = Math.abs(item.label.y - cy);
if (dy >= semi.maxY) {
var dx2 = item.label.x - cx - item.len2 * dir3;
var rA = r2 + item.len;
var rB = Math.abs(dx2) < rA ? Math.sqrt(dy * dy / (1 - dx2 * dx2 / rA / rA)) : rA;
semi.rB = rB;
semi.maxY = dy;
}
semi.list.push(item);
}
recalculateXOnSemiToAlignOnEllipseCurve(topSemi);
recalculateXOnSemiToAlignOnEllipseCurve(bottomSemi);
}
var len2 = list.length;
for (var i = 0; i < len2; i++) {
if (list[i].position === "outer" && list[i].labelAlignTo === "labelLine") {
var dx = list[i].label.x - farthestX;
list[i].linePoints[1][0] += dx;
list[i].label.x = farthestX;
}
}
if (shiftLayoutOnY(list, viewTop, viewTop + viewHeight)) {
recalculateX(list);
}
}
function avoidOverlap(labelLayoutList, cx, cy, r2, viewWidth, viewHeight, viewLeft, viewTop) {
var leftList = [];
var rightList = [];
var leftmostX = Number.MAX_VALUE;
var rightmostX = -Number.MAX_VALUE;
for (var i = 0; i < labelLayoutList.length; i++) {
var label = labelLayoutList[i].label;
if (isPositionCenter(labelLayoutList[i])) {
continue;
}
if (label.x < cx) {
leftmostX = Math.min(leftmostX, label.x);
leftList.push(labelLayoutList[i]);
} else {
rightmostX = Math.max(rightmostX, label.x);
rightList.push(labelLayoutList[i]);
}
}
for (var i = 0; i < labelLayoutList.length; i++) {
var layout2 = labelLayoutList[i];
if (!isPositionCenter(layout2) && layout2.linePoints) {
if (layout2.labelStyleWidth != null) {
continue;
}
var label = layout2.label;
var linePoints = layout2.linePoints;
var targetTextWidth = void 0;
if (layout2.labelAlignTo === "edge") {
if (label.x < cx) {
targetTextWidth = linePoints[2][0] - layout2.labelDistance - viewLeft - layout2.edgeDistance;
} else {
targetTextWidth = viewLeft + viewWidth - layout2.edgeDistance - linePoints[2][0] - layout2.labelDistance;
}
} else if (layout2.labelAlignTo === "labelLine") {
if (label.x < cx) {
targetTextWidth = leftmostX - viewLeft - layout2.bleedMargin;
} else {
targetTextWidth = viewLeft + viewWidth - rightmostX - layout2.bleedMargin;
}
} else {
if (label.x < cx) {
targetTextWidth = label.x - viewLeft - layout2.bleedMargin;
} else {
targetTextWidth = viewLeft + viewWidth - label.x - layout2.bleedMargin;
}
}
layout2.targetTextWidth = targetTextWidth;
constrainTextWidth(layout2, targetTextWidth);
}
}
adjustSingleSide(rightList, cx, cy, r2, 1, viewWidth, viewHeight, viewLeft, viewTop, rightmostX);
adjustSingleSide(leftList, cx, cy, r2, -1, viewWidth, viewHeight, viewLeft, viewTop, leftmostX);
for (var i = 0; i < labelLayoutList.length; i++) {
var layout2 = labelLayoutList[i];
if (!isPositionCenter(layout2) && layout2.linePoints) {
var label = layout2.label;
var linePoints = layout2.linePoints;
var isAlignToEdge = layout2.labelAlignTo === "edge";
var padding = label.style.padding;
var paddingH = padding ? padding[1] + padding[3] : 0;
var extraPaddingH = label.style.backgroundColor ? 0 : paddingH;
var realTextWidth = layout2.rect.width + extraPaddingH;
var dist2 = linePoints[1][0] - linePoints[2][0];
if (isAlignToEdge) {
if (label.x < cx) {
linePoints[2][0] = viewLeft + layout2.edgeDistance + realTextWidth + layout2.labelDistance;
} else {
linePoints[2][0] = viewLeft + viewWidth - layout2.edgeDistance - realTextWidth - layout2.labelDistance;
}
} else {
if (label.x < cx) {
linePoints[2][0] = label.x + layout2.labelDistance;
} else {
linePoints[2][0] = label.x - layout2.labelDistance;
}
linePoints[1][0] = linePoints[2][0] + dist2;
}
linePoints[1][1] = linePoints[2][1] = label.y;
}
}
}
function constrainTextWidth(layout2, availableWidth, forceRecalculate) {
if (forceRecalculate === void 0) {
forceRecalculate = false;
}
if (layout2.labelStyleWidth != null) {
return;
}
var label = layout2.label;
var style2 = label.style;
var textRect = layout2.rect;
var bgColor = style2.backgroundColor;
var padding = style2.padding;
var paddingH = padding ? padding[1] + padding[3] : 0;
var overflow = style2.overflow;
var oldOuterWidth = textRect.width + (bgColor ? 0 : paddingH);
if (availableWidth < oldOuterWidth || forceRecalculate) {
var oldHeight = textRect.height;
if (overflow && overflow.match("break")) {
label.setStyle("backgroundColor", null);
label.setStyle("width", availableWidth - paddingH);
var innerRect = label.getBoundingRect();
label.setStyle("width", Math.ceil(innerRect.width));
label.setStyle("backgroundColor", bgColor);
} else {
var availableInnerWidth = availableWidth - paddingH;
var newWidth = availableWidth < oldOuterWidth ? availableInnerWidth : (
// Current available width is enough, but the text may have
// already been wrapped with a smaller available width.
forceRecalculate ? availableInnerWidth > layout2.unconstrainedWidth ? null : availableInnerWidth : null
);
label.setStyle("width", newWidth);
}
var newRect = label.getBoundingRect();
textRect.width = newRect.width;
var margin = (label.style.margin || 0) + 2.1;
textRect.height = newRect.height + margin;
textRect.y -= (textRect.height - oldHeight) / 2;
}
}
function isPositionCenter(sectorShape) {
return sectorShape.position === "center";
}
function pieLabelLayout(seriesModel) {
var data = seriesModel.getData();
var labelLayoutList = [];
var cx;
var cy;
var hasLabelRotate = false;
var minShowLabelRadian = (seriesModel.get("minShowLabelAngle") || 0) * RADIAN$1;
var viewRect2 = data.getLayout("viewRect");
var r2 = data.getLayout("r");
var viewWidth = viewRect2.width;
var viewLeft = viewRect2.x;
var viewTop = viewRect2.y;
var viewHeight = viewRect2.height;
function setNotShow(el2) {
el2.ignore = true;
}
function isLabelShown(label2) {
if (!label2.ignore) {
return true;
}
for (var key in label2.states) {
if (label2.states[key].ignore === false) {
return true;
}
}
return false;
}
data.each(function(idx) {
var sector = data.getItemGraphicEl(idx);
var sectorShape = sector.shape;
var label2 = sector.getTextContent();
var labelLine2 = sector.getTextGuideLine();
var itemModel = data.getItemModel(idx);
var labelModel = itemModel.getModel("label");
var labelPosition = labelModel.get("position") || itemModel.get(["emphasis", "label", "position"]);
var labelDistance = labelModel.get("distanceToLabelLine");
var labelAlignTo = labelModel.get("alignTo");
var edgeDistance = parsePercent(labelModel.get("edgeDistance"), viewWidth);
var bleedMargin = labelModel.get("bleedMargin");
var labelLineModel = itemModel.getModel("labelLine");
var labelLineLen = labelLineModel.get("length");
labelLineLen = parsePercent(labelLineLen, viewWidth);
var labelLineLen2 = labelLineModel.get("length2");
labelLineLen2 = parsePercent(labelLineLen2, viewWidth);
if (Math.abs(sectorShape.endAngle - sectorShape.startAngle) < minShowLabelRadian) {
each$f(label2.states, setNotShow);
label2.ignore = true;
if (labelLine2) {
each$f(labelLine2.states, setNotShow);
labelLine2.ignore = true;
}
return;
}
if (!isLabelShown(label2)) {
return;
}
var midAngle = (sectorShape.startAngle + sectorShape.endAngle) / 2;
var nx = Math.cos(midAngle);
var ny = Math.sin(midAngle);
var textX;
var textY;
var linePoints2;
var textAlign;
cx = sectorShape.cx;
cy = sectorShape.cy;
var isLabelInside = labelPosition === "inside" || labelPosition === "inner";
if (labelPosition === "center") {
textX = sectorShape.cx;
textY = sectorShape.cy;
textAlign = "center";
} else {
var x1 = (isLabelInside ? (sectorShape.r + sectorShape.r0) / 2 * nx : sectorShape.r * nx) + cx;
var y1 = (isLabelInside ? (sectorShape.r + sectorShape.r0) / 2 * ny : sectorShape.r * ny) + cy;
textX = x1 + nx * 3;
textY = y1 + ny * 3;
if (!isLabelInside) {
var x2 = x1 + nx * (labelLineLen + r2 - sectorShape.r);
var y2 = y1 + ny * (labelLineLen + r2 - sectorShape.r);
var x3 = x2 + (nx < 0 ? -1 : 1) * labelLineLen2;
var y3 = y2;
if (labelAlignTo === "edge") {
textX = nx < 0 ? viewLeft + edgeDistance : viewLeft + viewWidth - edgeDistance;
} else {
textX = x3 + (nx < 0 ? -labelDistance : labelDistance);
}
textY = y3;
linePoints2 = [[x1, y1], [x2, y2], [x3, y3]];
}
textAlign = isLabelInside ? "center" : labelAlignTo === "edge" ? nx > 0 ? "right" : "left" : nx > 0 ? "left" : "right";
}
var PI3 = Math.PI;
var labelRotate = 0;
var rotate2 = labelModel.get("rotate");
if (isNumber(rotate2)) {
labelRotate = rotate2 * (PI3 / 180);
} else if (labelPosition === "center") {
labelRotate = 0;
} else if (rotate2 === "radial" || rotate2 === true) {
var radialAngle = nx < 0 ? -midAngle + PI3 : -midAngle;
labelRotate = radialAngle;
} else if (rotate2 === "tangential" && labelPosition !== "outside" && labelPosition !== "outer") {
var rad = Math.atan2(nx, ny);
if (rad < 0) {
rad = PI3 * 2 + rad;
}
var isDown = ny > 0;
if (isDown) {
rad = PI3 + rad;
}
labelRotate = rad - PI3;
}
hasLabelRotate = !!labelRotate;
label2.x = textX;
label2.y = textY;
label2.rotation = labelRotate;
label2.setStyle({
verticalAlign: "middle"
});
if (!isLabelInside) {
var textRect = label2.getBoundingRect().clone();
textRect.applyTransform(label2.getComputedTransform());
var margin = (label2.style.margin || 0) + 2.1;
textRect.y -= margin / 2;
textRect.height += margin;
labelLayoutList.push({
label: label2,
labelLine: labelLine2,
position: labelPosition,
len: labelLineLen,
len2: labelLineLen2,
minTurnAngle: labelLineModel.get("minTurnAngle"),
maxSurfaceAngle: labelLineModel.get("maxSurfaceAngle"),
surfaceNormal: new Point(nx, ny),
linePoints: linePoints2,
textAlign,
labelDistance,
labelAlignTo,
edgeDistance,
bleedMargin,
rect: textRect,
unconstrainedWidth: textRect.width,
labelStyleWidth: label2.style.width
});
} else {
label2.setStyle({
align: textAlign
});
var selectState2 = label2.states.select;
if (selectState2) {
selectState2.x += label2.x;
selectState2.y += label2.y;
}
}
sector.setTextConfig({
inside: isLabelInside
});
});
if (!hasLabelRotate && seriesModel.get("avoidLabelOverlap")) {
avoidOverlap(labelLayoutList, cx, cy, r2, viewWidth, viewHeight, viewLeft, viewTop);
}
for (var i = 0; i < labelLayoutList.length; i++) {
var layout2 = labelLayoutList[i];
var label = layout2.label;
var labelLine = layout2.labelLine;
var notShowLabel = isNaN(label.x) || isNaN(label.y);
if (label) {
label.setStyle({
align: layout2.textAlign
});
if (notShowLabel) {
each$f(label.states, setNotShow);
label.ignore = true;
}
var selectState = label.states.select;
if (selectState) {
selectState.x += label.x;
selectState.y += label.y;
}
}
if (labelLine) {
var linePoints = layout2.linePoints;
if (notShowLabel || !linePoints) {
each$f(labelLine.states, setNotShow);
labelLine.ignore = true;
} else {
limitTurnAngle(linePoints, layout2.minTurnAngle);
limitSurfaceAngle(linePoints, layout2.surfaceNormal, layout2.maxSurfaceAngle);
labelLine.setShape({
points: linePoints
});
label.__hostTarget.textGuideLineConfig = {
anchor: new Point(linePoints[0][0], linePoints[0][1])
};
}
}
}
}
var PiePiece = (
/** @class */
function(_super) {
__extends(PiePiece2, _super);
function PiePiece2(data, idx, startAngle) {
var _this = _super.call(this) || this;
_this.z2 = 2;
var text = new ZRText();
_this.setTextContent(text);
_this.updateData(data, idx, startAngle, true);
return _this;
}
PiePiece2.prototype.updateData = function(data, idx, startAngle, firstCreate) {
var sector = this;
var seriesModel = data.hostModel;
var itemModel = data.getItemModel(idx);
var emphasisModel = itemModel.getModel("emphasis");
var layout2 = data.getItemLayout(idx);
var sectorShape = extend(getSectorCornerRadius(itemModel.getModel("itemStyle"), layout2, true), layout2);
if (isNaN(sectorShape.startAngle)) {
sector.setShape(sectorShape);
return;
}
if (firstCreate) {
sector.setShape(sectorShape);
var animationType = seriesModel.getShallow("animationType");
if (seriesModel.ecModel.ssr) {
initProps(sector, {
scaleX: 0,
scaleY: 0
}, seriesModel, {
dataIndex: idx,
isFrom: true
});
sector.originX = sectorShape.cx;
sector.originY = sectorShape.cy;
} else if (animationType === "scale") {
sector.shape.r = layout2.r0;
initProps(sector, {
shape: {
r: layout2.r
}
}, seriesModel, idx);
} else {
if (startAngle != null) {
sector.setShape({
startAngle,
endAngle: startAngle
});
initProps(sector, {
shape: {
startAngle: layout2.startAngle,
endAngle: layout2.endAngle
}
}, seriesModel, idx);
} else {
sector.shape.endAngle = layout2.startAngle;
updateProps$1(sector, {
shape: {
endAngle: layout2.endAngle
}
}, seriesModel, idx);
}
}
} else {
saveOldStyle(sector);
updateProps$1(sector, {
shape: sectorShape
}, seriesModel, idx);
}
sector.useStyle(data.getItemVisual(idx, "style"));
setStatesStylesFromModel(sector, itemModel);
var midAngle = (layout2.startAngle + layout2.endAngle) / 2;
var offset2 = seriesModel.get("selectedOffset");
var dx = Math.cos(midAngle) * offset2;
var dy = Math.sin(midAngle) * offset2;
var cursorStyle = itemModel.getShallow("cursor");
cursorStyle && sector.attr("cursor", cursorStyle);
this._updateLabel(seriesModel, data, idx);
sector.ensureState("emphasis").shape = extend({
r: layout2.r + (emphasisModel.get("scale") ? emphasisModel.get("scaleSize") || 0 : 0)
}, getSectorCornerRadius(emphasisModel.getModel("itemStyle"), layout2));
extend(sector.ensureState("select"), {
x: dx,
y: dy,
shape: getSectorCornerRadius(itemModel.getModel(["select", "itemStyle"]), layout2)
});
extend(sector.ensureState("blur"), {
shape: getSectorCornerRadius(itemModel.getModel(["blur", "itemStyle"]), layout2)
});
var labelLine = sector.getTextGuideLine();
var labelText = sector.getTextContent();
labelLine && extend(labelLine.ensureState("select"), {
x: dx,
y: dy
});
extend(labelText.ensureState("select"), {
x: dx,
y: dy
});
toggleHoverEmphasis(this, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
};
PiePiece2.prototype._updateLabel = function(seriesModel, data, idx) {
var sector = this;
var itemModel = data.getItemModel(idx);
var labelLineModel = itemModel.getModel("labelLine");
var style2 = data.getItemVisual(idx, "style");
var visualColor = style2 && style2.fill;
var visualOpacity = style2 && style2.opacity;
setLabelStyle(sector, getLabelStatesModels(itemModel), {
labelFetcher: data.hostModel,
labelDataIndex: idx,
inheritColor: visualColor,
defaultOpacity: visualOpacity,
defaultText: seriesModel.getFormattedLabel(idx, "normal") || data.getName(idx)
});
var labelText = sector.getTextContent();
sector.setTextConfig({
// reset position, rotation
position: null,
rotation: null
});
labelText.attr({
z2: 10
});
var labelPosition = seriesModel.get(["label", "position"]);
if (labelPosition !== "outside" && labelPosition !== "outer") {
sector.removeTextGuideLine();
} else {
var polyline = this.getTextGuideLine();
if (!polyline) {
polyline = new Polyline$1();
this.setTextGuideLine(polyline);
}
setLabelLineStyle(this, getLabelLineStatesModels(itemModel), {
stroke: visualColor,
opacity: retrieve3(labelLineModel.get(["lineStyle", "opacity"]), visualOpacity, 1)
});
}
};
return PiePiece2;
}(Sector)
);
var PieView = (
/** @class */
function(_super) {
__extends(PieView2, _super);
function PieView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.ignoreLabelLineUpdate = true;
return _this;
}
PieView2.prototype.render = function(seriesModel, ecModel, api, payload) {
var data = seriesModel.getData();
var oldData = this._data;
var group = this.group;
var startAngle;
if (!oldData && data.count() > 0) {
var shape = data.getItemLayout(0);
for (var s = 1; isNaN(shape && shape.startAngle) && s < data.count(); ++s) {
shape = data.getItemLayout(s);
}
if (shape) {
startAngle = shape.startAngle;
}
}
if (this._emptyCircleSector) {
group.remove(this._emptyCircleSector);
}
if (data.count() === 0 && seriesModel.get("showEmptyCircle")) {
var layoutData = getSeriesLayoutData(seriesModel);
var sector = new Sector({
shape: extend(getBasicPieLayout(seriesModel, api), layoutData)
});
sector.useStyle(seriesModel.getModel("emptyCircleStyle").getItemStyle());
this._emptyCircleSector = sector;
group.add(sector);
}
data.diff(oldData).add(function(idx) {
var piePiece = new PiePiece(data, idx, startAngle);
data.setItemGraphicEl(idx, piePiece);
group.add(piePiece);
}).update(function(newIdx, oldIdx) {
var piePiece = oldData.getItemGraphicEl(oldIdx);
piePiece.updateData(data, newIdx, startAngle);
piePiece.off("click");
group.add(piePiece);
data.setItemGraphicEl(newIdx, piePiece);
}).remove(function(idx) {
var piePiece = oldData.getItemGraphicEl(idx);
removeElementWithFadeOut(piePiece, seriesModel, idx);
}).execute();
pieLabelLayout(seriesModel);
if (seriesModel.get("animationTypeUpdate") !== "expansion") {
this._data = data;
}
};
PieView2.prototype.dispose = function() {
};
PieView2.prototype.containPoint = function(point, seriesModel) {
var data = seriesModel.getData();
var itemLayout = data.getItemLayout(0);
if (itemLayout) {
var dx = point[0] - itemLayout.cx;
var dy = point[1] - itemLayout.cy;
var radius2 = Math.sqrt(dx * dx + dy * dy);
return radius2 <= itemLayout.r && radius2 >= itemLayout.r0;
}
};
PieView2.type = "pie";
return PieView2;
}(ChartView)
);
function createSeriesDataSimply(seriesModel, opt, nameList) {
opt = isArray$1(opt) && {
coordDimensions: opt
} || extend({
encodeDefine: seriesModel.getEncode()
}, opt);
var source = seriesModel.getSource();
var dimensions = prepareSeriesDataSchema(source, opt).dimensions;
var list = new SeriesData(dimensions, seriesModel);
list.initData(source, nameList);
return list;
}
var LegendVisualProvider = (
/** @class */
function() {
function LegendVisualProvider2(getDataWithEncodedVisual, getRawData2) {
this._getDataWithEncodedVisual = getDataWithEncodedVisual;
this._getRawData = getRawData2;
}
LegendVisualProvider2.prototype.getAllNames = function() {
var rawData = this._getRawData();
return rawData.mapArray(rawData.getName);
};
LegendVisualProvider2.prototype.containName = function(name) {
var rawData = this._getRawData();
return rawData.indexOfName(name) >= 0;
};
LegendVisualProvider2.prototype.indexOfName = function(name) {
var dataWithEncodedVisual = this._getDataWithEncodedVisual();
return dataWithEncodedVisual.indexOfName(name);
};
LegendVisualProvider2.prototype.getItemVisual = function(dataIndex, key) {
var dataWithEncodedVisual = this._getDataWithEncodedVisual();
return dataWithEncodedVisual.getItemVisual(dataIndex, key);
};
return LegendVisualProvider2;
}()
);
var innerData = makeInner();
var PieSeriesModel = (
/** @class */
function(_super) {
__extends(PieSeriesModel2, _super);
function PieSeriesModel2() {
return _super !== null && _super.apply(this, arguments) || this;
}
PieSeriesModel2.prototype.init = function(option) {
_super.prototype.init.apply(this, arguments);
this.legendVisualProvider = new LegendVisualProvider(bind$2(this.getData, this), bind$2(this.getRawData, this));
this._defaultLabelLine(option);
};
PieSeriesModel2.prototype.mergeOption = function() {
_super.prototype.mergeOption.apply(this, arguments);
};
PieSeriesModel2.prototype.getInitialData = function() {
return createSeriesDataSimply(this, {
coordDimensions: ["value"],
encodeDefaulter: curry$1(makeSeriesEncodeForNameBased, this)
});
};
PieSeriesModel2.prototype.getDataParams = function(dataIndex) {
var data = this.getData();
var dataInner = innerData(data);
var seats = dataInner.seats;
if (!seats) {
var valueList_1 = [];
data.each(data.mapDimension("value"), function(value) {
valueList_1.push(value);
});
seats = dataInner.seats = getPercentSeats(valueList_1, data.hostModel.get("percentPrecision"));
}
var params = _super.prototype.getDataParams.call(this, dataIndex);
params.percent = seats[dataIndex] || 0;
params.$vars.push("percent");
return params;
};
PieSeriesModel2.prototype._defaultLabelLine = function(option) {
defaultEmphasis(option, "labelLine", ["show"]);
var labelLineNormalOpt = option.labelLine;
var labelLineEmphasisOpt = option.emphasis.labelLine;
labelLineNormalOpt.show = labelLineNormalOpt.show && option.label.show;
labelLineEmphasisOpt.show = labelLineEmphasisOpt.show && option.emphasis.label.show;
};
PieSeriesModel2.type = "series.pie";
PieSeriesModel2.defaultOption = {
// zlevel: 0,
z: 2,
legendHoverLink: true,
colorBy: "data",
// 默认全局居中
center: ["50%", "50%"],
radius: [0, "75%"],
// 默认顺时针
clockwise: true,
startAngle: 90,
endAngle: "auto",
padAngle: 0,
// 最小角度改为0
minAngle: 0,
// If the angle of a sector less than `minShowLabelAngle`,
// the label will not be displayed.
minShowLabelAngle: 0,
// 选中时扇区偏移量
selectedOffset: 10,
// 选择模式,默认关闭,可选single,multiple
// selectedMode: false,
// 南丁格尔玫瑰图模式,'radius'(半径) | 'area'(面积)
// roseType: null,
percentPrecision: 2,
// If still show when all data zero.
stillShowZeroSum: true,
// cursor: null,
left: 0,
top: 0,
right: 0,
bottom: 0,
width: null,
height: null,
label: {
// color: 'inherit',
// If rotate around circle
rotate: 0,
show: true,
overflow: "truncate",
// 'outer', 'inside', 'center'
position: "outer",
// 'none', 'labelLine', 'edge'. Works only when position is 'outer'
alignTo: "none",
// Closest distance between label and chart edge.
// Works only position is 'outer' and alignTo is 'edge'.
edgeDistance: "25%",
// Works only position is 'outer' and alignTo is not 'edge'.
bleedMargin: 10,
// Distance between text and label line.
distanceToLabelLine: 5
// formatter: 标签文本格式器,同 tooltip.formatter,不支持异步回调
// 默认使用全局文本样式,详见 textStyle
// distance: 当position为inner时有效,为label位置到圆心的距离与圆半径(环状图为内外半径和)的比例系数
},
// Enabled when label.normal.position is 'outer'
labelLine: {
show: true,
// 引导线两段中的第一段长度
length: 15,
// 引导线两段中的第二段长度
length2: 15,
smooth: false,
minTurnAngle: 90,
maxSurfaceAngle: 90,
lineStyle: {
// color: 各异,
width: 1,
type: "solid"
}
},
itemStyle: {
borderWidth: 1,
borderJoin: "round"
},
showEmptyCircle: true,
emptyCircleStyle: {
color: "lightgray",
opacity: 1
},
labelLayout: {
// Hide the overlapped label.
hideOverlap: true
},
emphasis: {
scale: true,
scaleSize: 5
},
// If use strategy to avoid label overlapping
avoidLabelOverlap: true,
// Animation type. Valid values: expansion, scale
animationType: "expansion",
animationDuration: 1e3,
// Animation type when update. Valid values: transition, expansion
animationTypeUpdate: "transition",
animationEasingUpdate: "cubicInOut",
animationDurationUpdate: 500,
animationEasing: "cubicInOut"
};
return PieSeriesModel2;
}(SeriesModel)
);
function negativeDataFilter(seriesType2) {
return {
seriesType: seriesType2,
reset: function(seriesModel, ecModel) {
var data = seriesModel.getData();
data.filterSelf(function(idx) {
var valueDim = data.mapDimension("value");
var curValue = data.get(valueDim, idx);
if (isNumber(curValue) && !isNaN(curValue) && curValue < 0) {
return false;
}
return true;
});
}
};
}
function install$O(registers) {
registers.registerChartView(PieView);
registers.registerSeriesModel(PieSeriesModel);
createLegacyDataSelectAction("pie", registers.registerAction);
registers.registerLayout(curry$1(pieLayout, "pie"));
registers.registerProcessor(dataFilter$1("pie"));
registers.registerProcessor(negativeDataFilter("pie"));
}
var ScatterSeriesModel = (
/** @class */
function(_super) {
__extends(ScatterSeriesModel2, _super);
function ScatterSeriesModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = ScatterSeriesModel2.type;
_this.hasSymbolVisual = true;
return _this;
}
ScatterSeriesModel2.prototype.getInitialData = function(option, ecModel) {
return createSeriesData(null, this, {
useEncodeDefaulter: true
});
};
ScatterSeriesModel2.prototype.getProgressive = function() {
var progressive = this.option.progressive;
if (progressive == null) {
return this.option.large ? 5e3 : this.get("progressive");
}
return progressive;
};
ScatterSeriesModel2.prototype.getProgressiveThreshold = function() {
var progressiveThreshold = this.option.progressiveThreshold;
if (progressiveThreshold == null) {
return this.option.large ? 1e4 : this.get("progressiveThreshold");
}
return progressiveThreshold;
};
ScatterSeriesModel2.prototype.brushSelector = function(dataIndex, data, selectors) {
return selectors.point(data.getItemLayout(dataIndex));
};
ScatterSeriesModel2.prototype.getZLevelKey = function() {
return this.getData().count() > this.getProgressiveThreshold() ? this.id : "";
};
ScatterSeriesModel2.type = "series.scatter";
ScatterSeriesModel2.dependencies = ["grid", "polar", "geo", "singleAxis", "calendar"];
ScatterSeriesModel2.defaultOption = {
coordinateSystem: "cartesian2d",
// zlevel: 0,
z: 2,
legendHoverLink: true,
symbolSize: 10,
// symbolRotate: null, // 图形旋转控制
large: false,
// Available when large is true
largeThreshold: 2e3,
// cursor: null,
itemStyle: {
opacity: 0.8
// color: 各异
},
emphasis: {
scale: true
},
// If clip the overflow graphics
// Works on cartesian / polar series
clip: true,
select: {
itemStyle: {
borderColor: "#212121"
}
},
universalTransition: {
divideShape: "clone"
}
// progressive: null
};
return ScatterSeriesModel2;
}(SeriesModel)
);
var BOOST_SIZE_THRESHOLD = 4;
var LargeSymbolPathShape = (
/** @class */
/* @__PURE__ */ function() {
function LargeSymbolPathShape2() {
}
return LargeSymbolPathShape2;
}()
);
var LargeSymbolPath = (
/** @class */
function(_super) {
__extends(LargeSymbolPath2, _super);
function LargeSymbolPath2(opts) {
var _this = _super.call(this, opts) || this;
_this._off = 0;
_this.hoverDataIdx = -1;
return _this;
}
LargeSymbolPath2.prototype.getDefaultShape = function() {
return new LargeSymbolPathShape();
};
LargeSymbolPath2.prototype.reset = function() {
this.notClear = false;
this._off = 0;
};
LargeSymbolPath2.prototype.buildPath = function(path, shape) {
var points2 = shape.points;
var size = shape.size;
var symbolProxy = this.symbolProxy;
var symbolProxyShape = symbolProxy.shape;
var ctx = path.getContext ? path.getContext() : path;
var canBoost = ctx && size[0] < BOOST_SIZE_THRESHOLD;
var softClipShape = this.softClipShape;
var i;
if (canBoost) {
this._ctx = ctx;
return;
}
this._ctx = null;
for (i = this._off; i < points2.length; ) {
var x2 = points2[i++];
var y2 = points2[i++];
if (isNaN(x2) || isNaN(y2)) {
continue;
}
if (softClipShape && !softClipShape.contain(x2, y2)) {
continue;
}
symbolProxyShape.x = x2 - size[0] / 2;
symbolProxyShape.y = y2 - size[1] / 2;
symbolProxyShape.width = size[0];
symbolProxyShape.height = size[1];
symbolProxy.buildPath(path, symbolProxyShape, true);
}
if (this.incremental) {
this._off = i;
this.notClear = true;
}
};
LargeSymbolPath2.prototype.afterBrush = function() {
var shape = this.shape;
var points2 = shape.points;
var size = shape.size;
var ctx = this._ctx;
var softClipShape = this.softClipShape;
var i;
if (!ctx) {
return;
}
for (i = this._off; i < points2.length; ) {
var x2 = points2[i++];
var y2 = points2[i++];
if (isNaN(x2) || isNaN(y2)) {
continue;
}
if (softClipShape && !softClipShape.contain(x2, y2)) {
continue;
}
ctx.fillRect(x2 - size[0] / 2, y2 - size[1] / 2, size[0], size[1]);
}
if (this.incremental) {
this._off = i;
this.notClear = true;
}
};
LargeSymbolPath2.prototype.findDataIndex = function(x2, y2) {
var shape = this.shape;
var points2 = shape.points;
var size = shape.size;
var w2 = Math.max(size[0], 4);
var h2 = Math.max(size[1], 4);
for (var idx = points2.length / 2 - 1; idx >= 0; idx--) {
var i = idx * 2;
var x0 = points2[i] - w2 / 2;
var y0 = points2[i + 1] - h2 / 2;
if (x2 >= x0 && y2 >= y0 && x2 <= x0 + w2 && y2 <= y0 + h2) {
return idx;
}
}
return -1;
};
LargeSymbolPath2.prototype.contain = function(x2, y2) {
var localPos = this.transformCoordToLocal(x2, y2);
var rect = this.getBoundingRect();
x2 = localPos[0];
y2 = localPos[1];
if (rect.contain(x2, y2)) {
var dataIdx = this.hoverDataIdx = this.findDataIndex(x2, y2);
return dataIdx >= 0;
}
this.hoverDataIdx = -1;
return false;
};
LargeSymbolPath2.prototype.getBoundingRect = function() {
var rect = this._rect;
if (!rect) {
var shape = this.shape;
var points2 = shape.points;
var size = shape.size;
var w2 = size[0];
var h2 = size[1];
var minX = Infinity;
var minY = Infinity;
var maxX = -Infinity;
var maxY = -Infinity;
for (var i = 0; i < points2.length; ) {
var x2 = points2[i++];
var y2 = points2[i++];
minX = Math.min(x2, minX);
maxX = Math.max(x2, maxX);
minY = Math.min(y2, minY);
maxY = Math.max(y2, maxY);
}
rect = this._rect = new BoundingRect(minX - w2 / 2, minY - h2 / 2, maxX - minX + w2, maxY - minY + h2);
}
return rect;
};
return LargeSymbolPath2;
}(Path)
);
var LargeSymbolDraw = (
/** @class */
function() {
function LargeSymbolDraw2() {
this.group = new Group$3();
}
LargeSymbolDraw2.prototype.updateData = function(data, opt) {
this._clear();
var symbolEl = this._create();
symbolEl.setShape({
points: data.getLayout("points")
});
this._setCommon(symbolEl, data, opt);
};
LargeSymbolDraw2.prototype.updateLayout = function(data) {
var points2 = data.getLayout("points");
this.group.eachChild(function(child) {
if (child.startIndex != null) {
var len2 = (child.endIndex - child.startIndex) * 2;
var byteOffset = child.startIndex * 4 * 2;
points2 = new Float32Array(points2.buffer, byteOffset, len2);
}
child.setShape("points", points2);
child.reset();
});
};
LargeSymbolDraw2.prototype.incrementalPrepareUpdate = function(data) {
this._clear();
};
LargeSymbolDraw2.prototype.incrementalUpdate = function(taskParams, data, opt) {
var lastAdded = this._newAdded[0];
var points2 = data.getLayout("points");
var oldPoints = lastAdded && lastAdded.shape.points;
if (oldPoints && oldPoints.length < 2e4) {
var oldLen = oldPoints.length;
var newPoints = new Float32Array(oldLen + points2.length);
newPoints.set(oldPoints);
newPoints.set(points2, oldLen);
lastAdded.endIndex = taskParams.end;
lastAdded.setShape({
points: newPoints
});
} else {
this._newAdded = [];
var symbolEl = this._create();
symbolEl.startIndex = taskParams.start;
symbolEl.endIndex = taskParams.end;
symbolEl.incremental = true;
symbolEl.setShape({
points: points2
});
this._setCommon(symbolEl, data, opt);
}
};
LargeSymbolDraw2.prototype.eachRendered = function(cb2) {
this._newAdded[0] && cb2(this._newAdded[0]);
};
LargeSymbolDraw2.prototype._create = function() {
var symbolEl = new LargeSymbolPath({
cursor: "default"
});
symbolEl.ignoreCoarsePointer = true;
this.group.add(symbolEl);
this._newAdded.push(symbolEl);
return symbolEl;
};
LargeSymbolDraw2.prototype._setCommon = function(symbolEl, data, opt) {
var hostModel = data.hostModel;
opt = opt || {};
var size = data.getVisual("symbolSize");
symbolEl.setShape("size", size instanceof Array ? size : [size, size]);
symbolEl.softClipShape = opt.clipShape || null;
symbolEl.symbolProxy = createSymbol$1(data.getVisual("symbol"), 0, 0, 0, 0);
symbolEl.setColor = symbolEl.symbolProxy.setColor;
var extrudeShadow = symbolEl.shape.size[0] < BOOST_SIZE_THRESHOLD;
symbolEl.useStyle(
// Draw shadow when doing fillRect is extremely slow.
hostModel.getModel("itemStyle").getItemStyle(extrudeShadow ? ["color", "shadowBlur", "shadowColor"] : ["color"])
);
var globalStyle = data.getVisual("style");
var visualColor = globalStyle && globalStyle.fill;
if (visualColor) {
symbolEl.setColor(visualColor);
}
var ecData = getECData(symbolEl);
ecData.seriesIndex = hostModel.seriesIndex;
symbolEl.on("mousemove", function(e2) {
ecData.dataIndex = null;
var dataIndex = symbolEl.hoverDataIdx;
if (dataIndex >= 0) {
ecData.dataIndex = dataIndex + (symbolEl.startIndex || 0);
}
});
};
LargeSymbolDraw2.prototype.remove = function() {
this._clear();
};
LargeSymbolDraw2.prototype._clear = function() {
this._newAdded = [];
this.group.removeAll();
};
return LargeSymbolDraw2;
}()
);
var ScatterView = (
/** @class */
function(_super) {
__extends(ScatterView2, _super);
function ScatterView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = ScatterView2.type;
return _this;
}
ScatterView2.prototype.render = function(seriesModel, ecModel, api) {
var data = seriesModel.getData();
var symbolDraw = this._updateSymbolDraw(data, seriesModel);
symbolDraw.updateData(data, {
// TODO
// If this parameter should be a shape or a bounding volume
// shape will be more general.
// But bounding volume like bounding rect will be much faster in the contain calculation
clipShape: this._getClipShape(seriesModel)
});
this._finished = true;
};
ScatterView2.prototype.incrementalPrepareRender = function(seriesModel, ecModel, api) {
var data = seriesModel.getData();
var symbolDraw = this._updateSymbolDraw(data, seriesModel);
symbolDraw.incrementalPrepareUpdate(data);
this._finished = false;
};
ScatterView2.prototype.incrementalRender = function(taskParams, seriesModel, ecModel) {
this._symbolDraw.incrementalUpdate(taskParams, seriesModel.getData(), {
clipShape: this._getClipShape(seriesModel)
});
this._finished = taskParams.end === seriesModel.getData().count();
};
ScatterView2.prototype.updateTransform = function(seriesModel, ecModel, api) {
var data = seriesModel.getData();
this.group.dirty();
if (!this._finished || data.count() > 1e4) {
return {
update: true
};
} else {
var res = pointsLayout("").reset(seriesModel, ecModel, api);
if (res.progress) {
res.progress({
start: 0,
end: data.count(),
count: data.count()
}, data);
}
this._symbolDraw.updateLayout(data);
}
};
ScatterView2.prototype.eachRendered = function(cb2) {
this._symbolDraw && this._symbolDraw.eachRendered(cb2);
};
ScatterView2.prototype._getClipShape = function(seriesModel) {
if (!seriesModel.get("clip", true)) {
return;
}
var coordSys = seriesModel.coordinateSystem;
return coordSys && coordSys.getArea && coordSys.getArea(0.1);
};
ScatterView2.prototype._updateSymbolDraw = function(data, seriesModel) {
var symbolDraw = this._symbolDraw;
var pipelineContext = seriesModel.pipelineContext;
var isLargeDraw = pipelineContext.large;
if (!symbolDraw || isLargeDraw !== this._isLargeDraw) {
symbolDraw && symbolDraw.remove();
symbolDraw = this._symbolDraw = isLargeDraw ? new LargeSymbolDraw() : new SymbolDraw();
this._isLargeDraw = isLargeDraw;
this.group.removeAll();
}
this.group.add(symbolDraw.group);
return symbolDraw;
};
ScatterView2.prototype.remove = function(ecModel, api) {
this._symbolDraw && this._symbolDraw.remove(true);
this._symbolDraw = null;
};
ScatterView2.prototype.dispose = function() {
};
ScatterView2.type = "scatter";
return ScatterView2;
}(ChartView)
);
var GridModel = (
/** @class */
function(_super) {
__extends(GridModel2, _super);
function GridModel2() {
return _super !== null && _super.apply(this, arguments) || this;
}
GridModel2.type = "grid";
GridModel2.dependencies = ["xAxis", "yAxis"];
GridModel2.layoutMode = "box";
GridModel2.defaultOption = {
show: false,
// zlevel: 0,
z: 0,
left: "10%",
top: 60,
right: "10%",
bottom: 70,
// If grid size contain label
containLabel: false,
// width: {totalWidth} - left - right,
// height: {totalHeight} - top - bottom,
backgroundColor: "rgba(0,0,0,0)",
borderWidth: 1,
borderColor: "#ccc"
};
return GridModel2;
}(ComponentModel)
);
var CartesianAxisModel = (
/** @class */
function(_super) {
__extends(CartesianAxisModel2, _super);
function CartesianAxisModel2() {
return _super !== null && _super.apply(this, arguments) || this;
}
CartesianAxisModel2.prototype.getCoordSysModel = function() {
return this.getReferringComponents("grid", SINGLE_REFERRING).models[0];
};
CartesianAxisModel2.type = "cartesian2dAxis";
return CartesianAxisModel2;
}(ComponentModel)
);
mixin(CartesianAxisModel, AxisModelCommonMixin);
var defaultOption$1 = {
show: true,
// zlevel: 0,
z: 0,
// Inverse the axis.
inverse: false,
// Axis name displayed.
name: "",
// 'start' | 'middle' | 'end'
nameLocation: "end",
// By degree. By default auto rotate by nameLocation.
nameRotate: null,
nameTruncate: {
maxWidth: null,
ellipsis: "...",
placeholder: "."
},
// Use global text style by default.
nameTextStyle: {},
// The gap between axisName and axisLine.
nameGap: 15,
// Default `false` to support tooltip.
silent: false,
// Default `false` to avoid legacy user event listener fail.
triggerEvent: false,
tooltip: {
show: false
},
axisPointer: {},
axisLine: {
show: true,
onZero: true,
onZeroAxisIndex: null,
lineStyle: {
color: "#6E7079",
width: 1,
type: "solid"
},
// The arrow at both ends the the axis.
symbol: ["none", "none"],
symbolSize: [10, 15]
},
axisTick: {
show: true,
// Whether axisTick is inside the grid or outside the grid.
inside: false,
// The length of axisTick.
length: 5,
lineStyle: {
width: 1
}
},
axisLabel: {
show: true,
// Whether axisLabel is inside the grid or outside the grid.
inside: false,
rotate: 0,
// true | false | null/undefined (auto)
showMinLabel: null,
// true | false | null/undefined (auto)
showMaxLabel: null,
margin: 8,
// formatter: null,
fontSize: 12
},
splitLine: {
show: true,
lineStyle: {
color: ["#E0E6F1"],
width: 1,
type: "solid"
}
},
splitArea: {
show: false,
areaStyle: {
color: ["rgba(250,250,250,0.2)", "rgba(210,219,238,0.2)"]
}
}
};
var categoryAxis = merge({
// The gap at both ends of the axis. For categoryAxis, boolean.
boundaryGap: true,
// Set false to faster category collection.
deduplication: null,
// splitArea: {
// show: false
// },
splitLine: {
show: false
},
axisTick: {
// If tick is align with label when boundaryGap is true
alignWithLabel: false,
interval: "auto"
},
axisLabel: {
interval: "auto"
}
}, defaultOption$1);
var valueAxis = merge({
boundaryGap: [0, 0],
axisLine: {
// Not shown when other axis is categoryAxis in cartesian
show: "auto"
},
axisTick: {
// Not shown when other axis is categoryAxis in cartesian
show: "auto"
},
// TODO
// min/max: [30, datamin, 60] or [20, datamin] or [datamin, 60]
splitNumber: 5,
minorTick: {
// Minor tick, not available for cateogry axis.
show: false,
// Split number of minor ticks. The value should be in range of (0, 100)
splitNumber: 5,
// Length of minor tick
length: 3,
// Line style
lineStyle: {
// Default to be same with axisTick
}
},
minorSplitLine: {
show: false,
lineStyle: {
color: "#F4F7FD",
width: 1
}
}
}, defaultOption$1);
var timeAxis = merge({
splitNumber: 6,
axisLabel: {
// To eliminate labels that are not nice
showMinLabel: false,
showMaxLabel: false,
rich: {
primary: {
fontWeight: "bold"
}
}
},
splitLine: {
show: false
}
}, valueAxis);
var logAxis = defaults({
logBase: 10
}, valueAxis);
const axisDefault = {
category: categoryAxis,
value: valueAxis,
time: timeAxis,
log: logAxis
};
var AXIS_TYPES = {
value: 1,
category: 1,
time: 1,
log: 1
};
function axisModelCreator(registers, axisName, BaseAxisModelClass, extraDefaultOption) {
each$f(AXIS_TYPES, function(v4, axisType) {
var defaultOption2 = merge(merge({}, axisDefault[axisType], true), extraDefaultOption, true);
var AxisModel = (
/** @class */
function(_super) {
__extends(AxisModel2, _super);
function AxisModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = axisName + "Axis." + axisType;
return _this;
}
AxisModel2.prototype.mergeDefaultAndTheme = function(option, ecModel) {
var layoutMode = fetchLayoutMode(this);
var inputPositionParams = layoutMode ? getLayoutParams(option) : {};
var themeModel = ecModel.getTheme();
merge(option, themeModel.get(axisType + "Axis"));
merge(option, this.getDefaultOption());
option.type = getAxisType(option);
if (layoutMode) {
mergeLayoutParam(option, inputPositionParams, layoutMode);
}
};
AxisModel2.prototype.optionUpdated = function() {
var thisOption = this.option;
if (thisOption.type === "category") {
this.__ordinalMeta = OrdinalMeta.createByAxisModel(this);
}
};
AxisModel2.prototype.getCategories = function(rawData) {
var option = this.option;
if (option.type === "category") {
if (rawData) {
return option.data;
}
return this.__ordinalMeta.categories;
}
};
AxisModel2.prototype.getOrdinalMeta = function() {
return this.__ordinalMeta;
};
AxisModel2.type = axisName + "Axis." + axisType;
AxisModel2.defaultOption = defaultOption2;
return AxisModel2;
}(BaseAxisModelClass)
);
registers.registerComponentModel(AxisModel);
});
registers.registerSubTypeDefaulter(axisName + "Axis", getAxisType);
}
function getAxisType(option) {
return option.type || (option.data ? "category" : "value");
}
var Cartesian = (
/** @class */
function() {
function Cartesian2(name) {
this.type = "cartesian";
this._dimList = [];
this._axes = {};
this.name = name || "";
}
Cartesian2.prototype.getAxis = function(dim) {
return this._axes[dim];
};
Cartesian2.prototype.getAxes = function() {
return map$1(this._dimList, function(dim) {
return this._axes[dim];
}, this);
};
Cartesian2.prototype.getAxesByScale = function(scaleType) {
scaleType = scaleType.toLowerCase();
return filter(this.getAxes(), function(axis) {
return axis.scale.type === scaleType;
});
};
Cartesian2.prototype.addAxis = function(axis) {
var dim = axis.dim;
this._axes[dim] = axis;
this._dimList.push(dim);
};
return Cartesian2;
}()
);
var cartesian2DDimensions = ["x", "y"];
function canCalculateAffineTransform(scale2) {
return scale2.type === "interval" || scale2.type === "time";
}
var Cartesian2D = (
/** @class */
function(_super) {
__extends(Cartesian2D2, _super);
function Cartesian2D2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = "cartesian2d";
_this.dimensions = cartesian2DDimensions;
return _this;
}
Cartesian2D2.prototype.calcAffineTransform = function() {
this._transform = this._invTransform = null;
var xAxisScale = this.getAxis("x").scale;
var yAxisScale = this.getAxis("y").scale;
if (!canCalculateAffineTransform(xAxisScale) || !canCalculateAffineTransform(yAxisScale)) {
return;
}
var xScaleExtent = xAxisScale.getExtent();
var yScaleExtent = yAxisScale.getExtent();
var start2 = this.dataToPoint([xScaleExtent[0], yScaleExtent[0]]);
var end2 = this.dataToPoint([xScaleExtent[1], yScaleExtent[1]]);
var xScaleSpan = xScaleExtent[1] - xScaleExtent[0];
var yScaleSpan = yScaleExtent[1] - yScaleExtent[0];
if (!xScaleSpan || !yScaleSpan) {
return;
}
var scaleX = (end2[0] - start2[0]) / xScaleSpan;
var scaleY = (end2[1] - start2[1]) / yScaleSpan;
var translateX = start2[0] - xScaleExtent[0] * scaleX;
var translateY = start2[1] - yScaleExtent[0] * scaleY;
var m2 = this._transform = [scaleX, 0, 0, scaleY, translateX, translateY];
this._invTransform = invert([], m2);
};
Cartesian2D2.prototype.getBaseAxis = function() {
return this.getAxesByScale("ordinal")[0] || this.getAxesByScale("time")[0] || this.getAxis("x");
};
Cartesian2D2.prototype.containPoint = function(point) {
var axisX = this.getAxis("x");
var axisY = this.getAxis("y");
return axisX.contain(axisX.toLocalCoord(point[0])) && axisY.contain(axisY.toLocalCoord(point[1]));
};
Cartesian2D2.prototype.containData = function(data) {
return this.getAxis("x").containData(data[0]) && this.getAxis("y").containData(data[1]);
};
Cartesian2D2.prototype.containZone = function(data1, data2) {
var zoneDiag1 = this.dataToPoint(data1);
var zoneDiag2 = this.dataToPoint(data2);
var area = this.getArea();
var zone = new BoundingRect(zoneDiag1[0], zoneDiag1[1], zoneDiag2[0] - zoneDiag1[0], zoneDiag2[1] - zoneDiag1[1]);
return area.intersect(zone);
};
Cartesian2D2.prototype.dataToPoint = function(data, clamp2, out2) {
out2 = out2 || [];
var xVal = data[0];
var yVal = data[1];
if (this._transform && xVal != null && isFinite(xVal) && yVal != null && isFinite(yVal)) {
return applyTransform$1(out2, data, this._transform);
}
var xAxis = this.getAxis("x");
var yAxis = this.getAxis("y");
out2[0] = xAxis.toGlobalCoord(xAxis.dataToCoord(xVal, clamp2));
out2[1] = yAxis.toGlobalCoord(yAxis.dataToCoord(yVal, clamp2));
return out2;
};
Cartesian2D2.prototype.clampData = function(data, out2) {
var xScale = this.getAxis("x").scale;
var yScale = this.getAxis("y").scale;
var xAxisExtent = xScale.getExtent();
var yAxisExtent = yScale.getExtent();
var x2 = xScale.parse(data[0]);
var y2 = yScale.parse(data[1]);
out2 = out2 || [];
out2[0] = Math.min(Math.max(Math.min(xAxisExtent[0], xAxisExtent[1]), x2), Math.max(xAxisExtent[0], xAxisExtent[1]));
out2[1] = Math.min(Math.max(Math.min(yAxisExtent[0], yAxisExtent[1]), y2), Math.max(yAxisExtent[0], yAxisExtent[1]));
return out2;
};
Cartesian2D2.prototype.pointToData = function(point, clamp2) {
var out2 = [];
if (this._invTransform) {
return applyTransform$1(out2, point, this._invTransform);
}
var xAxis = this.getAxis("x");
var yAxis = this.getAxis("y");
out2[0] = xAxis.coordToData(xAxis.toLocalCoord(point[0]), clamp2);
out2[1] = yAxis.coordToData(yAxis.toLocalCoord(point[1]), clamp2);
return out2;
};
Cartesian2D2.prototype.getOtherAxis = function(axis) {
return this.getAxis(axis.dim === "x" ? "y" : "x");
};
Cartesian2D2.prototype.getArea = function(tolerance) {
tolerance = tolerance || 0;
var xExtent = this.getAxis("x").getGlobalExtent();
var yExtent = this.getAxis("y").getGlobalExtent();
var x2 = Math.min(xExtent[0], xExtent[1]) - tolerance;
var y2 = Math.min(yExtent[0], yExtent[1]) - tolerance;
var width = Math.max(xExtent[0], xExtent[1]) - x2 + tolerance;
var height = Math.max(yExtent[0], yExtent[1]) - y2 + tolerance;
return new BoundingRect(x2, y2, width, height);
};
return Cartesian2D2;
}(Cartesian)
);
var Axis2D = (
/** @class */
function(_super) {
__extends(Axis2D2, _super);
function Axis2D2(dim, scale2, coordExtent, axisType, position2) {
var _this = _super.call(this, dim, scale2, coordExtent) || this;
_this.index = 0;
_this.type = axisType || "value";
_this.position = position2 || "bottom";
return _this;
}
Axis2D2.prototype.isHorizontal = function() {
var position2 = this.position;
return position2 === "top" || position2 === "bottom";
};
Axis2D2.prototype.getGlobalExtent = function(asc2) {
var ret = this.getExtent();
ret[0] = this.toGlobalCoord(ret[0]);
ret[1] = this.toGlobalCoord(ret[1]);
asc2 && ret[0] > ret[1] && ret.reverse();
return ret;
};
Axis2D2.prototype.pointToData = function(point, clamp2) {
return this.coordToData(this.toLocalCoord(point[this.dim === "x" ? 0 : 1]), clamp2);
};
Axis2D2.prototype.setCategorySortInfo = function(info) {
if (this.type !== "category") {
return false;
}
this.model.option.categorySortInfo = info;
this.scale.setSortInfo(info);
};
return Axis2D2;
}(Axis)
);
function layout$2(gridModel, axisModel, opt) {
opt = opt || {};
var grid = gridModel.coordinateSystem;
var axis = axisModel.axis;
var layout2 = {};
var otherAxisOnZeroOf = axis.getAxesOnZeroOf()[0];
var rawAxisPosition = axis.position;
var axisPosition = otherAxisOnZeroOf ? "onZero" : rawAxisPosition;
var axisDim = axis.dim;
var rect = grid.getRect();
var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height];
var idx = {
left: 0,
right: 1,
top: 0,
bottom: 1,
onZero: 2
};
var axisOffset = axisModel.get("offset") || 0;
var posBound = axisDim === "x" ? [rectBound[2] - axisOffset, rectBound[3] + axisOffset] : [rectBound[0] - axisOffset, rectBound[1] + axisOffset];
if (otherAxisOnZeroOf) {
var onZeroCoord = otherAxisOnZeroOf.toGlobalCoord(otherAxisOnZeroOf.dataToCoord(0));
posBound[idx.onZero] = Math.max(Math.min(onZeroCoord, posBound[1]), posBound[0]);
}
layout2.position = [axisDim === "y" ? posBound[idx[axisPosition]] : rectBound[0], axisDim === "x" ? posBound[idx[axisPosition]] : rectBound[3]];
layout2.rotation = Math.PI / 2 * (axisDim === "x" ? 0 : 1);
var dirMap = {
top: -1,
bottom: 1,
left: -1,
right: 1
};
layout2.labelDirection = layout2.tickDirection = layout2.nameDirection = dirMap[rawAxisPosition];
layout2.labelOffset = otherAxisOnZeroOf ? posBound[idx[rawAxisPosition]] - posBound[idx.onZero] : 0;
if (axisModel.get(["axisTick", "inside"])) {
layout2.tickDirection = -layout2.tickDirection;
}
if (retrieve(opt.labelInside, axisModel.get(["axisLabel", "inside"]))) {
layout2.labelDirection = -layout2.labelDirection;
}
var labelRotate = axisModel.get(["axisLabel", "rotate"]);
layout2.labelRotate = axisPosition === "top" ? -labelRotate : labelRotate;
layout2.z2 = 1;
return layout2;
}
function isCartesian2DSeries(seriesModel) {
return seriesModel.get("coordinateSystem") === "cartesian2d";
}
function findAxisModels(seriesModel) {
var axisModelMap = {
xAxisModel: null,
yAxisModel: null
};
each$f(axisModelMap, function(v4, key) {
var axisType = key.replace(/Model$/, "");
var axisModel = seriesModel.getReferringComponents(axisType, SINGLE_REFERRING).models[0];
axisModelMap[key] = axisModel;
});
return axisModelMap;
}
var mathLog = Math.log;
function alignScaleTicks(scale2, axisModel, alignToScale) {
var intervalScaleProto2 = IntervalScale.prototype;
var alignToTicks = intervalScaleProto2.getTicks.call(alignToScale);
var alignToNicedTicks = intervalScaleProto2.getTicks.call(alignToScale, true);
var alignToSplitNumber = alignToTicks.length - 1;
var alignToInterval = intervalScaleProto2.getInterval.call(alignToScale);
var scaleExtent = getScaleExtent(scale2, axisModel);
var rawExtent = scaleExtent.extent;
var isMinFixed = scaleExtent.fixMin;
var isMaxFixed = scaleExtent.fixMax;
if (scale2.type === "log") {
var logBase = mathLog(scale2.base);
rawExtent = [mathLog(rawExtent[0]) / logBase, mathLog(rawExtent[1]) / logBase];
}
scale2.setExtent(rawExtent[0], rawExtent[1]);
scale2.calcNiceExtent({
splitNumber: alignToSplitNumber,
fixMin: isMinFixed,
fixMax: isMaxFixed
});
var extent3 = intervalScaleProto2.getExtent.call(scale2);
if (isMinFixed) {
rawExtent[0] = extent3[0];
}
if (isMaxFixed) {
rawExtent[1] = extent3[1];
}
var interval = intervalScaleProto2.getInterval.call(scale2);
var min3 = rawExtent[0];
var max3 = rawExtent[1];
if (isMinFixed && isMaxFixed) {
interval = (max3 - min3) / alignToSplitNumber;
} else if (isMinFixed) {
max3 = rawExtent[0] + interval * alignToSplitNumber;
while (max3 < rawExtent[1] && isFinite(max3) && isFinite(rawExtent[1])) {
interval = increaseInterval(interval);
max3 = rawExtent[0] + interval * alignToSplitNumber;
}
} else if (isMaxFixed) {
min3 = rawExtent[1] - interval * alignToSplitNumber;
while (min3 > rawExtent[0] && isFinite(min3) && isFinite(rawExtent[0])) {
interval = increaseInterval(interval);
min3 = rawExtent[1] - interval * alignToSplitNumber;
}
} else {
var nicedSplitNumber = scale2.getTicks().length - 1;
if (nicedSplitNumber > alignToSplitNumber) {
interval = increaseInterval(interval);
}
var range3 = interval * alignToSplitNumber;
max3 = Math.ceil(rawExtent[1] / interval) * interval;
min3 = round$3(max3 - range3);
if (min3 < 0 && rawExtent[0] >= 0) {
min3 = 0;
max3 = round$3(range3);
} else if (max3 > 0 && rawExtent[1] <= 0) {
max3 = 0;
min3 = -round$3(range3);
}
}
var t0 = (alignToTicks[0].value - alignToNicedTicks[0].value) / alignToInterval;
var t1 = (alignToTicks[alignToSplitNumber].value - alignToNicedTicks[alignToSplitNumber].value) / alignToInterval;
intervalScaleProto2.setExtent.call(scale2, min3 + interval * t0, max3 + interval * t1);
intervalScaleProto2.setInterval.call(scale2, interval);
if (t0 || t1) {
intervalScaleProto2.setNiceExtent.call(scale2, min3 + interval, max3 - interval);
}
}
var Grid = (
/** @class */
function() {
function Grid2(gridModel, ecModel, api) {
this.type = "grid";
this._coordsMap = {};
this._coordsList = [];
this._axesMap = {};
this._axesList = [];
this.axisPointerEnabled = true;
this.dimensions = cartesian2DDimensions;
this._initCartesian(gridModel, ecModel, api);
this.model = gridModel;
}
Grid2.prototype.getRect = function() {
return this._rect;
};
Grid2.prototype.update = function(ecModel, api) {
var axesMap = this._axesMap;
this._updateScale(ecModel, this.model);
function updateAxisTicks(axes) {
var alignTo;
var axesIndices = keys(axes);
var len2 = axesIndices.length;
if (!len2) {
return;
}
var axisNeedsAlign = [];
for (var i = len2 - 1; i >= 0; i--) {
var idx = +axesIndices[i];
var axis = axes[idx];
var model = axis.model;
var scale2 = axis.scale;
if (
// Only value and log axis without interval support alignTicks.
isIntervalOrLogScale(scale2) && model.get("alignTicks") && model.get("interval") == null
) {
axisNeedsAlign.push(axis);
} else {
niceScaleExtent(scale2, model);
if (isIntervalOrLogScale(scale2)) {
alignTo = axis;
}
}
}
if (axisNeedsAlign.length) {
if (!alignTo) {
alignTo = axisNeedsAlign.pop();
niceScaleExtent(alignTo.scale, alignTo.model);
}
each$f(axisNeedsAlign, function(axis2) {
alignScaleTicks(axis2.scale, axis2.model, alignTo.scale);
});
}
}
updateAxisTicks(axesMap.x);
updateAxisTicks(axesMap.y);
var onZeroRecords = {};
each$f(axesMap.x, function(xAxis) {
fixAxisOnZero(axesMap, "y", xAxis, onZeroRecords);
});
each$f(axesMap.y, function(yAxis) {
fixAxisOnZero(axesMap, "x", yAxis, onZeroRecords);
});
this.resize(this.model, api);
};
Grid2.prototype.resize = function(gridModel, api, ignoreContainLabel) {
var boxLayoutParams = gridModel.getBoxLayoutParams();
var isContainLabel = !ignoreContainLabel && gridModel.get("containLabel");
var gridRect = getLayoutRect(boxLayoutParams, {
width: api.getWidth(),
height: api.getHeight()
});
this._rect = gridRect;
var axesList = this._axesList;
adjustAxes();
if (isContainLabel) {
each$f(axesList, function(axis) {
if (!axis.model.get(["axisLabel", "inside"])) {
var labelUnionRect = estimateLabelUnionRect(axis);
if (labelUnionRect) {
var dim = axis.isHorizontal() ? "height" : "width";
var margin = axis.model.get(["axisLabel", "margin"]);
gridRect[dim] -= labelUnionRect[dim] + margin;
if (axis.position === "top") {
gridRect.y += labelUnionRect.height + margin;
} else if (axis.position === "left") {
gridRect.x += labelUnionRect.width + margin;
}
}
}
});
adjustAxes();
}
each$f(this._coordsList, function(coord) {
coord.calcAffineTransform();
});
function adjustAxes() {
each$f(axesList, function(axis) {
var isHorizontal = axis.isHorizontal();
var extent3 = isHorizontal ? [0, gridRect.width] : [0, gridRect.height];
var idx = axis.inverse ? 1 : 0;
axis.setExtent(extent3[idx], extent3[1 - idx]);
updateAxisTransform(axis, isHorizontal ? gridRect.x : gridRect.y);
});
}
};
Grid2.prototype.getAxis = function(dim, axisIndex) {
var axesMapOnDim = this._axesMap[dim];
if (axesMapOnDim != null) {
return axesMapOnDim[axisIndex || 0];
}
};
Grid2.prototype.getAxes = function() {
return this._axesList.slice();
};
Grid2.prototype.getCartesian = function(xAxisIndex, yAxisIndex) {
if (xAxisIndex != null && yAxisIndex != null) {
var key = "x" + xAxisIndex + "y" + yAxisIndex;
return this._coordsMap[key];
}
if (isObject$3(xAxisIndex)) {
yAxisIndex = xAxisIndex.yAxisIndex;
xAxisIndex = xAxisIndex.xAxisIndex;
}
for (var i = 0, coordList = this._coordsList; i < coordList.length; i++) {
if (coordList[i].getAxis("x").index === xAxisIndex || coordList[i].getAxis("y").index === yAxisIndex) {
return coordList[i];
}
}
};
Grid2.prototype.getCartesians = function() {
return this._coordsList.slice();
};
Grid2.prototype.convertToPixel = function(ecModel, finder, value) {
var target = this._findConvertTarget(finder);
return target.cartesian ? target.cartesian.dataToPoint(value) : target.axis ? target.axis.toGlobalCoord(target.axis.dataToCoord(value)) : null;
};
Grid2.prototype.convertFromPixel = function(ecModel, finder, value) {
var target = this._findConvertTarget(finder);
return target.cartesian ? target.cartesian.pointToData(value) : target.axis ? target.axis.coordToData(target.axis.toLocalCoord(value)) : null;
};
Grid2.prototype._findConvertTarget = function(finder) {
var seriesModel = finder.seriesModel;
var xAxisModel = finder.xAxisModel || seriesModel && seriesModel.getReferringComponents("xAxis", SINGLE_REFERRING).models[0];
var yAxisModel = finder.yAxisModel || seriesModel && seriesModel.getReferringComponents("yAxis", SINGLE_REFERRING).models[0];
var gridModel = finder.gridModel;
var coordsList = this._coordsList;
var cartesian;
var axis;
if (seriesModel) {
cartesian = seriesModel.coordinateSystem;
indexOf(coordsList, cartesian) < 0 && (cartesian = null);
} else if (xAxisModel && yAxisModel) {
cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);
} else if (xAxisModel) {
axis = this.getAxis("x", xAxisModel.componentIndex);
} else if (yAxisModel) {
axis = this.getAxis("y", yAxisModel.componentIndex);
} else if (gridModel) {
var grid = gridModel.coordinateSystem;
if (grid === this) {
cartesian = this._coordsList[0];
}
}
return {
cartesian,
axis
};
};
Grid2.prototype.containPoint = function(point) {
var coord = this._coordsList[0];
if (coord) {
return coord.containPoint(point);
}
};
Grid2.prototype._initCartesian = function(gridModel, ecModel, api) {
var _this = this;
var grid = this;
var axisPositionUsed = {
left: false,
right: false,
top: false,
bottom: false
};
var axesMap = {
x: {},
y: {}
};
var axesCount = {
x: 0,
y: 0
};
ecModel.eachComponent("xAxis", createAxisCreator("x"), this);
ecModel.eachComponent("yAxis", createAxisCreator("y"), this);
if (!axesCount.x || !axesCount.y) {
this._axesMap = {};
this._axesList = [];
return;
}
this._axesMap = axesMap;
each$f(axesMap.x, function(xAxis, xAxisIndex) {
each$f(axesMap.y, function(yAxis, yAxisIndex) {
var key = "x" + xAxisIndex + "y" + yAxisIndex;
var cartesian = new Cartesian2D(key);
cartesian.master = _this;
cartesian.model = gridModel;
_this._coordsMap[key] = cartesian;
_this._coordsList.push(cartesian);
cartesian.addAxis(xAxis);
cartesian.addAxis(yAxis);
});
});
function createAxisCreator(dimName) {
return function(axisModel, idx) {
if (!isAxisUsedInTheGrid(axisModel, gridModel)) {
return;
}
var axisPosition = axisModel.get("position");
if (dimName === "x") {
if (axisPosition !== "top" && axisPosition !== "bottom") {
axisPosition = axisPositionUsed.bottom ? "top" : "bottom";
}
} else {
if (axisPosition !== "left" && axisPosition !== "right") {
axisPosition = axisPositionUsed.left ? "right" : "left";
}
}
axisPositionUsed[axisPosition] = true;
var axis = new Axis2D(dimName, createScaleByModel$1(axisModel), [0, 0], axisModel.get("type"), axisPosition);
var isCategory2 = axis.type === "category";
axis.onBand = isCategory2 && axisModel.get("boundaryGap");
axis.inverse = axisModel.get("inverse");
axisModel.axis = axis;
axis.model = axisModel;
axis.grid = grid;
axis.index = idx;
grid._axesList.push(axis);
axesMap[dimName][idx] = axis;
axesCount[dimName]++;
};
}
};
Grid2.prototype._updateScale = function(ecModel, gridModel) {
each$f(this._axesList, function(axis) {
axis.scale.setExtent(Infinity, -Infinity);
if (axis.type === "category") {
var categorySortInfo = axis.model.get("categorySortInfo");
axis.scale.setSortInfo(categorySortInfo);
}
});
ecModel.eachSeries(function(seriesModel) {
if (isCartesian2DSeries(seriesModel)) {
var axesModelMap = findAxisModels(seriesModel);
var xAxisModel = axesModelMap.xAxisModel;
var yAxisModel = axesModelMap.yAxisModel;
if (!isAxisUsedInTheGrid(xAxisModel, gridModel) || !isAxisUsedInTheGrid(yAxisModel, gridModel)) {
return;
}
var cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);
var data = seriesModel.getData();
var xAxis = cartesian.getAxis("x");
var yAxis = cartesian.getAxis("y");
unionExtent(data, xAxis);
unionExtent(data, yAxis);
}
}, this);
function unionExtent(data, axis) {
each$f(getDataDimensionsOnAxis(data, axis.dim), function(dim) {
axis.scale.unionExtentFromData(data, dim);
});
}
};
Grid2.prototype.getTooltipAxes = function(dim) {
var baseAxes = [];
var otherAxes = [];
each$f(this.getCartesians(), function(cartesian) {
var baseAxis = dim != null && dim !== "auto" ? cartesian.getAxis(dim) : cartesian.getBaseAxis();
var otherAxis = cartesian.getOtherAxis(baseAxis);
indexOf(baseAxes, baseAxis) < 0 && baseAxes.push(baseAxis);
indexOf(otherAxes, otherAxis) < 0 && otherAxes.push(otherAxis);
});
return {
baseAxes,
otherAxes
};
};
Grid2.create = function(ecModel, api) {
var grids = [];
ecModel.eachComponent("grid", function(gridModel, idx) {
var grid = new Grid2(gridModel, ecModel, api);
grid.name = "grid_" + idx;
grid.resize(gridModel, api, true);
gridModel.coordinateSystem = grid;
grids.push(grid);
});
ecModel.eachSeries(function(seriesModel) {
if (!isCartesian2DSeries(seriesModel)) {
return;
}
var axesModelMap = findAxisModels(seriesModel);
var xAxisModel = axesModelMap.xAxisModel;
var yAxisModel = axesModelMap.yAxisModel;
var gridModel = xAxisModel.getCoordSysModel();
var grid = gridModel.coordinateSystem;
seriesModel.coordinateSystem = grid.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);
});
return grids;
};
Grid2.dimensions = cartesian2DDimensions;
return Grid2;
}()
);
function isAxisUsedInTheGrid(axisModel, gridModel) {
return axisModel.getCoordSysModel() === gridModel;
}
function fixAxisOnZero(axesMap, otherAxisDim, axis, onZeroRecords) {
axis.getAxesOnZeroOf = function() {
return otherAxisOnZeroOf ? [otherAxisOnZeroOf] : [];
};
var otherAxes = axesMap[otherAxisDim];
var otherAxisOnZeroOf;
var axisModel = axis.model;
var onZero = axisModel.get(["axisLine", "onZero"]);
var onZeroAxisIndex = axisModel.get(["axisLine", "onZeroAxisIndex"]);
if (!onZero) {
return;
}
if (onZeroAxisIndex != null) {
if (canOnZeroToAxis(otherAxes[onZeroAxisIndex])) {
otherAxisOnZeroOf = otherAxes[onZeroAxisIndex];
}
} else {
for (var idx in otherAxes) {
if (otherAxes.hasOwnProperty(idx) && canOnZeroToAxis(otherAxes[idx]) && !onZeroRecords[getOnZeroRecordKey(otherAxes[idx])]) {
otherAxisOnZeroOf = otherAxes[idx];
break;
}
}
}
if (otherAxisOnZeroOf) {
onZeroRecords[getOnZeroRecordKey(otherAxisOnZeroOf)] = true;
}
function getOnZeroRecordKey(axis2) {
return axis2.dim + "_" + axis2.index;
}
}
function canOnZeroToAxis(axis) {
return axis && axis.type !== "category" && axis.type !== "time" && ifAxisCrossZero(axis);
}
function updateAxisTransform(axis, coordBase) {
var axisExtent = axis.getExtent();
var axisExtentSum = axisExtent[0] + axisExtent[1];
axis.toGlobalCoord = axis.dim === "x" ? function(coord) {
return coord + coordBase;
} : function(coord) {
return axisExtentSum - coord + coordBase;
};
axis.toLocalCoord = axis.dim === "x" ? function(coord) {
return coord - coordBase;
} : function(coord) {
return axisExtentSum - coord + coordBase;
};
}
var PI$3 = Math.PI;
var AxisBuilder = (
/** @class */
function() {
function AxisBuilder2(axisModel, opt) {
this.group = new Group$3();
this.opt = opt;
this.axisModel = axisModel;
defaults(opt, {
labelOffset: 0,
nameDirection: 1,
tickDirection: 1,
labelDirection: 1,
silent: true,
handleAutoShown: function() {
return true;
}
});
var transformGroup = new Group$3({
x: opt.position[0],
y: opt.position[1],
rotation: opt.rotation
});
transformGroup.updateTransform();
this._transformGroup = transformGroup;
}
AxisBuilder2.prototype.hasBuilder = function(name) {
return !!builders[name];
};
AxisBuilder2.prototype.add = function(name) {
builders[name](this.opt, this.axisModel, this.group, this._transformGroup);
};
AxisBuilder2.prototype.getGroup = function() {
return this.group;
};
AxisBuilder2.innerTextLayout = function(axisRotation, textRotation, direction) {
var rotationDiff = remRadian(textRotation - axisRotation);
var textAlign;
var textVerticalAlign;
if (isRadianAroundZero(rotationDiff)) {
textVerticalAlign = direction > 0 ? "top" : "bottom";
textAlign = "center";
} else if (isRadianAroundZero(rotationDiff - PI$3)) {
textVerticalAlign = direction > 0 ? "bottom" : "top";
textAlign = "center";
} else {
textVerticalAlign = "middle";
if (rotationDiff > 0 && rotationDiff < PI$3) {
textAlign = direction > 0 ? "right" : "left";
} else {
textAlign = direction > 0 ? "left" : "right";
}
}
return {
rotation: rotationDiff,
textAlign,
textVerticalAlign
};
};
AxisBuilder2.makeAxisEventDataBase = function(axisModel) {
var eventData = {
componentType: axisModel.mainType,
componentIndex: axisModel.componentIndex
};
eventData[axisModel.mainType + "Index"] = axisModel.componentIndex;
return eventData;
};
AxisBuilder2.isLabelSilent = function(axisModel) {
var tooltipOpt = axisModel.get("tooltip");
return axisModel.get("silent") || !(axisModel.get("triggerEvent") || tooltipOpt && tooltipOpt.show);
};
return AxisBuilder2;
}()
);
var builders = {
axisLine: function(opt, axisModel, group, transformGroup) {
var shown = axisModel.get(["axisLine", "show"]);
if (shown === "auto" && opt.handleAutoShown) {
shown = opt.handleAutoShown("axisLine");
}
if (!shown) {
return;
}
var extent3 = axisModel.axis.getExtent();
var matrix2 = transformGroup.transform;
var pt12 = [extent3[0], 0];
var pt22 = [extent3[1], 0];
var inverse = pt12[0] > pt22[0];
if (matrix2) {
applyTransform$1(pt12, pt12, matrix2);
applyTransform$1(pt22, pt22, matrix2);
}
var lineStyle = extend({
lineCap: "round"
}, axisModel.getModel(["axisLine", "lineStyle"]).getLineStyle());
var line2 = new Line$1({
shape: {
x1: pt12[0],
y1: pt12[1],
x2: pt22[0],
y2: pt22[1]
},
style: lineStyle,
strokeContainThreshold: opt.strokeContainThreshold || 5,
silent: true,
z2: 1
});
subPixelOptimizeLine(line2.shape, line2.style.lineWidth);
line2.anid = "line";
group.add(line2);
var arrows = axisModel.get(["axisLine", "symbol"]);
if (arrows != null) {
var arrowSize = axisModel.get(["axisLine", "symbolSize"]);
if (isString$1(arrows)) {
arrows = [arrows, arrows];
}
if (isString$1(arrowSize) || isNumber(arrowSize)) {
arrowSize = [arrowSize, arrowSize];
}
var arrowOffset = normalizeSymbolOffset(axisModel.get(["axisLine", "symbolOffset"]) || 0, arrowSize);
var symbolWidth_1 = arrowSize[0];
var symbolHeight_1 = arrowSize[1];
each$f([{
rotate: opt.rotation + Math.PI / 2,
offset: arrowOffset[0],
r: 0
}, {
rotate: opt.rotation - Math.PI / 2,
offset: arrowOffset[1],
r: Math.sqrt((pt12[0] - pt22[0]) * (pt12[0] - pt22[0]) + (pt12[1] - pt22[1]) * (pt12[1] - pt22[1]))
}], function(point, index2) {
if (arrows[index2] !== "none" && arrows[index2] != null) {
var symbol = createSymbol$1(arrows[index2], -symbolWidth_1 / 2, -symbolHeight_1 / 2, symbolWidth_1, symbolHeight_1, lineStyle.stroke, true);
var r2 = point.r + point.offset;
var pt = inverse ? pt22 : pt12;
symbol.attr({
rotation: point.rotate,
x: pt[0] + r2 * Math.cos(opt.rotation),
y: pt[1] - r2 * Math.sin(opt.rotation),
silent: true,
z2: 11
});
group.add(symbol);
}
});
}
},
axisTickLabel: function(opt, axisModel, group, transformGroup) {
var ticksEls = buildAxisMajorTicks(group, transformGroup, axisModel, opt);
var labelEls = buildAxisLabel(group, transformGroup, axisModel, opt);
fixMinMaxLabelShow(axisModel, labelEls, ticksEls);
buildAxisMinorTicks(group, transformGroup, axisModel, opt.tickDirection);
if (axisModel.get(["axisLabel", "hideOverlap"])) {
var labelList = prepareLayoutList(map$1(labelEls, function(label) {
return {
label,
priority: label.z2,
defaultAttr: {
ignore: label.ignore
}
};
}));
hideOverlap(labelList);
}
},
axisName: function(opt, axisModel, group, transformGroup) {
var name = retrieve(opt.axisName, axisModel.get("name"));
if (!name) {
return;
}
var nameLocation = axisModel.get("nameLocation");
var nameDirection = opt.nameDirection;
var textStyleModel = axisModel.getModel("nameTextStyle");
var gap = axisModel.get("nameGap") || 0;
var extent3 = axisModel.axis.getExtent();
var gapSignal = extent3[0] > extent3[1] ? -1 : 1;
var pos = [
nameLocation === "start" ? extent3[0] - gapSignal * gap : nameLocation === "end" ? extent3[1] + gapSignal * gap : (extent3[0] + extent3[1]) / 2,
// Reuse labelOffset.
isNameLocationCenter(nameLocation) ? opt.labelOffset + nameDirection * gap : 0
];
var labelLayout2;
var nameRotation = axisModel.get("nameRotate");
if (nameRotation != null) {
nameRotation = nameRotation * PI$3 / 180;
}
var axisNameAvailableWidth;
if (isNameLocationCenter(nameLocation)) {
labelLayout2 = AxisBuilder.innerTextLayout(
opt.rotation,
nameRotation != null ? nameRotation : opt.rotation,
// Adapt to axis.
nameDirection
);
} else {
labelLayout2 = endTextLayout(opt.rotation, nameLocation, nameRotation || 0, extent3);
axisNameAvailableWidth = opt.axisNameAvailableWidth;
if (axisNameAvailableWidth != null) {
axisNameAvailableWidth = Math.abs(axisNameAvailableWidth / Math.sin(labelLayout2.rotation));
!isFinite(axisNameAvailableWidth) && (axisNameAvailableWidth = null);
}
}
var textFont = textStyleModel.getFont();
var truncateOpt = axisModel.get("nameTruncate", true) || {};
var ellipsis = truncateOpt.ellipsis;
var maxWidth = retrieve(opt.nameTruncateMaxWidth, truncateOpt.maxWidth, axisNameAvailableWidth);
var textEl = new ZRText({
x: pos[0],
y: pos[1],
rotation: labelLayout2.rotation,
silent: AxisBuilder.isLabelSilent(axisModel),
style: createTextStyle$1(textStyleModel, {
text: name,
font: textFont,
overflow: "truncate",
width: maxWidth,
ellipsis,
fill: textStyleModel.getTextColor() || axisModel.get(["axisLine", "lineStyle", "color"]),
align: textStyleModel.get("align") || labelLayout2.textAlign,
verticalAlign: textStyleModel.get("verticalAlign") || labelLayout2.textVerticalAlign
}),
z2: 1
});
setTooltipConfig({
el: textEl,
componentModel: axisModel,
itemName: name
});
textEl.__fullText = name;
textEl.anid = "name";
if (axisModel.get("triggerEvent")) {
var eventData = AxisBuilder.makeAxisEventDataBase(axisModel);
eventData.targetType = "axisName";
eventData.name = name;
getECData(textEl).eventData = eventData;
}
transformGroup.add(textEl);
textEl.updateTransform();
group.add(textEl);
textEl.decomposeTransform();
}
};
function endTextLayout(rotation, textPosition, textRotate, extent3) {
var rotationDiff = remRadian(textRotate - rotation);
var textAlign;
var textVerticalAlign;
var inverse = extent3[0] > extent3[1];
var onLeft = textPosition === "start" && !inverse || textPosition !== "start" && inverse;
if (isRadianAroundZero(rotationDiff - PI$3 / 2)) {
textVerticalAlign = onLeft ? "bottom" : "top";
textAlign = "center";
} else if (isRadianAroundZero(rotationDiff - PI$3 * 1.5)) {
textVerticalAlign = onLeft ? "top" : "bottom";
textAlign = "center";
} else {
textVerticalAlign = "middle";
if (rotationDiff < PI$3 * 1.5 && rotationDiff > PI$3 / 2) {
textAlign = onLeft ? "left" : "right";
} else {
textAlign = onLeft ? "right" : "left";
}
}
return {
rotation: rotationDiff,
textAlign,
textVerticalAlign
};
}
function fixMinMaxLabelShow(axisModel, labelEls, tickEls) {
if (shouldShowAllLabels(axisModel.axis)) {
return;
}
var showMinLabel = axisModel.get(["axisLabel", "showMinLabel"]);
var showMaxLabel = axisModel.get(["axisLabel", "showMaxLabel"]);
labelEls = labelEls || [];
tickEls = tickEls || [];
var firstLabel = labelEls[0];
var nextLabel = labelEls[1];
var lastLabel = labelEls[labelEls.length - 1];
var prevLabel = labelEls[labelEls.length - 2];
var firstTick = tickEls[0];
var nextTick = tickEls[1];
var lastTick = tickEls[tickEls.length - 1];
var prevTick = tickEls[tickEls.length - 2];
if (showMinLabel === false) {
ignoreEl(firstLabel);
ignoreEl(firstTick);
} else if (isTwoLabelOverlapped(firstLabel, nextLabel)) {
if (showMinLabel) {
ignoreEl(nextLabel);
ignoreEl(nextTick);
} else {
ignoreEl(firstLabel);
ignoreEl(firstTick);
}
}
if (showMaxLabel === false) {
ignoreEl(lastLabel);
ignoreEl(lastTick);
} else if (isTwoLabelOverlapped(prevLabel, lastLabel)) {
if (showMaxLabel) {
ignoreEl(prevLabel);
ignoreEl(prevTick);
} else {
ignoreEl(lastLabel);
ignoreEl(lastTick);
}
}
}
function ignoreEl(el2) {
el2 && (el2.ignore = true);
}
function isTwoLabelOverlapped(current, next2) {
var firstRect = current && current.getBoundingRect().clone();
var nextRect = next2 && next2.getBoundingRect().clone();
if (!firstRect || !nextRect) {
return;
}
var mRotationBack = identity([]);
rotate(mRotationBack, mRotationBack, -current.rotation);
firstRect.applyTransform(mul([], mRotationBack, current.getLocalTransform()));
nextRect.applyTransform(mul([], mRotationBack, next2.getLocalTransform()));
return firstRect.intersect(nextRect);
}
function isNameLocationCenter(nameLocation) {
return nameLocation === "middle" || nameLocation === "center";
}
function createTicks(ticksCoords, tickTransform, tickEndCoord, tickLineStyle, anidPrefix) {
var tickEls = [];
var pt12 = [];
var pt22 = [];
for (var i = 0; i < ticksCoords.length; i++) {
var tickCoord = ticksCoords[i].coord;
pt12[0] = tickCoord;
pt12[1] = 0;
pt22[0] = tickCoord;
pt22[1] = tickEndCoord;
if (tickTransform) {
applyTransform$1(pt12, pt12, tickTransform);
applyTransform$1(pt22, pt22, tickTransform);
}
var tickEl = new Line$1({
shape: {
x1: pt12[0],
y1: pt12[1],
x2: pt22[0],
y2: pt22[1]
},
style: tickLineStyle,
z2: 2,
autoBatch: true,
silent: true
});
subPixelOptimizeLine(tickEl.shape, tickEl.style.lineWidth);
tickEl.anid = anidPrefix + "_" + ticksCoords[i].tickValue;
tickEls.push(tickEl);
}
return tickEls;
}
function buildAxisMajorTicks(group, transformGroup, axisModel, opt) {
var axis = axisModel.axis;
var tickModel = axisModel.getModel("axisTick");
var shown = tickModel.get("show");
if (shown === "auto" && opt.handleAutoShown) {
shown = opt.handleAutoShown("axisTick");
}
if (!shown || axis.scale.isBlank()) {
return;
}
var lineStyleModel = tickModel.getModel("lineStyle");
var tickEndCoord = opt.tickDirection * tickModel.get("length");
var ticksCoords = axis.getTicksCoords();
var ticksEls = createTicks(ticksCoords, transformGroup.transform, tickEndCoord, defaults(lineStyleModel.getLineStyle(), {
stroke: axisModel.get(["axisLine", "lineStyle", "color"])
}), "ticks");
for (var i = 0; i < ticksEls.length; i++) {
group.add(ticksEls[i]);
}
return ticksEls;
}
function buildAxisMinorTicks(group, transformGroup, axisModel, tickDirection) {
var axis = axisModel.axis;
var minorTickModel = axisModel.getModel("minorTick");
if (!minorTickModel.get("show") || axis.scale.isBlank()) {
return;
}
var minorTicksCoords = axis.getMinorTicksCoords();
if (!minorTicksCoords.length) {
return;
}
var lineStyleModel = minorTickModel.getModel("lineStyle");
var tickEndCoord = tickDirection * minorTickModel.get("length");
var minorTickLineStyle = defaults(lineStyleModel.getLineStyle(), defaults(axisModel.getModel("axisTick").getLineStyle(), {
stroke: axisModel.get(["axisLine", "lineStyle", "color"])
}));
for (var i = 0; i < minorTicksCoords.length; i++) {
var minorTicksEls = createTicks(minorTicksCoords[i], transformGroup.transform, tickEndCoord, minorTickLineStyle, "minorticks_" + i);
for (var k2 = 0; k2 < minorTicksEls.length; k2++) {
group.add(minorTicksEls[k2]);
}
}
}
function buildAxisLabel(group, transformGroup, axisModel, opt) {
var axis = axisModel.axis;
var show = retrieve(opt.axisLabelShow, axisModel.get(["axisLabel", "show"]));
if (!show || axis.scale.isBlank()) {
return;
}
var labelModel = axisModel.getModel("axisLabel");
var labelMargin = labelModel.get("margin");
var labels = axis.getViewLabels();
var labelRotation = (retrieve(opt.labelRotate, labelModel.get("rotate")) || 0) * PI$3 / 180;
var labelLayout2 = AxisBuilder.innerTextLayout(opt.rotation, labelRotation, opt.labelDirection);
var rawCategoryData = axisModel.getCategories && axisModel.getCategories(true);
var labelEls = [];
var silent = AxisBuilder.isLabelSilent(axisModel);
var triggerEvent = axisModel.get("triggerEvent");
each$f(labels, function(labelItem, index2) {
var tickValue = axis.scale.type === "ordinal" ? axis.scale.getRawOrdinalNumber(labelItem.tickValue) : labelItem.tickValue;
var formattedLabel = labelItem.formattedLabel;
var rawLabel = labelItem.rawLabel;
var itemLabelModel = labelModel;
if (rawCategoryData && rawCategoryData[tickValue]) {
var rawCategoryItem = rawCategoryData[tickValue];
if (isObject$3(rawCategoryItem) && rawCategoryItem.textStyle) {
itemLabelModel = new Model(rawCategoryItem.textStyle, labelModel, axisModel.ecModel);
}
}
var textColor = itemLabelModel.getTextColor() || axisModel.get(["axisLine", "lineStyle", "color"]);
var tickCoord = axis.dataToCoord(tickValue);
var align = itemLabelModel.getShallow("align", true) || labelLayout2.textAlign;
var alignMin = retrieve2(itemLabelModel.getShallow("alignMinLabel", true), align);
var alignMax = retrieve2(itemLabelModel.getShallow("alignMaxLabel", true), align);
var verticalAlign = itemLabelModel.getShallow("verticalAlign", true) || itemLabelModel.getShallow("baseline", true) || labelLayout2.textVerticalAlign;
var verticalAlignMin = retrieve2(itemLabelModel.getShallow("verticalAlignMinLabel", true), verticalAlign);
var verticalAlignMax = retrieve2(itemLabelModel.getShallow("verticalAlignMaxLabel", true), verticalAlign);
var textEl = new ZRText({
x: tickCoord,
y: opt.labelOffset + opt.labelDirection * labelMargin,
rotation: labelLayout2.rotation,
silent,
z2: 10 + (labelItem.level || 0),
style: createTextStyle$1(itemLabelModel, {
text: formattedLabel,
align: index2 === 0 ? alignMin : index2 === labels.length - 1 ? alignMax : align,
verticalAlign: index2 === 0 ? verticalAlignMin : index2 === labels.length - 1 ? verticalAlignMax : verticalAlign,
fill: isFunction$1(textColor) ? textColor(
// (1) In category axis with data zoom, tick is not the original
// index of axis.data. So tick should not be exposed to user
// in category axis.
// (2) Compatible with previous version, which always use formatted label as
// input. But in interval scale the formatted label is like '223,445', which
// maked user replace ','. So we modify it to return original val but remain
// it as 'string' to avoid error in replacing.
axis.type === "category" ? rawLabel : axis.type === "value" ? tickValue + "" : tickValue,
index2
) : textColor
})
});
textEl.anid = "label_" + tickValue;
if (triggerEvent) {
var eventData = AxisBuilder.makeAxisEventDataBase(axisModel);
eventData.targetType = "axisLabel";
eventData.value = rawLabel;
eventData.tickIndex = index2;
if (axis.type === "category") {
eventData.dataIndex = tickValue;
}
getECData(textEl).eventData = eventData;
}
transformGroup.add(textEl);
textEl.updateTransform();
labelEls.push(textEl);
group.add(textEl);
textEl.decomposeTransform();
});
return labelEls;
}
function collect(ecModel, api) {
var result = {
/**
* key: makeKey(axis.model)
* value: {
* axis,
* coordSys,
* axisPointerModel,
* triggerTooltip,
* triggerEmphasis,
* involveSeries,
* snap,
* seriesModels,
* seriesDataCount
* }
*/
axesInfo: {},
seriesInvolved: false,
/**
* key: makeKey(coordSys.model)
* value: Object: key makeKey(axis.model), value: axisInfo
*/
coordSysAxesInfo: {},
coordSysMap: {}
};
collectAxesInfo(result, ecModel, api);
result.seriesInvolved && collectSeriesInfo(result, ecModel);
return result;
}
function collectAxesInfo(result, ecModel, api) {
var globalTooltipModel = ecModel.getComponent("tooltip");
var globalAxisPointerModel = ecModel.getComponent("axisPointer");
var linksOption = globalAxisPointerModel.get("link", true) || [];
var linkGroups = [];
each$f(api.getCoordinateSystems(), function(coordSys) {
if (!coordSys.axisPointerEnabled) {
return;
}
var coordSysKey = makeKey(coordSys.model);
var axesInfoInCoordSys = result.coordSysAxesInfo[coordSysKey] = {};
result.coordSysMap[coordSysKey] = coordSys;
var coordSysModel = coordSys.model;
var baseTooltipModel = coordSysModel.getModel("tooltip", globalTooltipModel);
each$f(coordSys.getAxes(), curry$1(saveTooltipAxisInfo, false, null));
if (coordSys.getTooltipAxes && globalTooltipModel && baseTooltipModel.get("show")) {
var triggerAxis = baseTooltipModel.get("trigger") === "axis";
var cross = baseTooltipModel.get(["axisPointer", "type"]) === "cross";
var tooltipAxes = coordSys.getTooltipAxes(baseTooltipModel.get(["axisPointer", "axis"]));
if (triggerAxis || cross) {
each$f(tooltipAxes.baseAxes, curry$1(saveTooltipAxisInfo, cross ? "cross" : true, triggerAxis));
}
if (cross) {
each$f(tooltipAxes.otherAxes, curry$1(saveTooltipAxisInfo, "cross", false));
}
}
function saveTooltipAxisInfo(fromTooltip, triggerTooltip, axis) {
var axisPointerModel = axis.model.getModel("axisPointer", globalAxisPointerModel);
var axisPointerShow = axisPointerModel.get("show");
if (!axisPointerShow || axisPointerShow === "auto" && !fromTooltip && !isHandleTrigger(axisPointerModel)) {
return;
}
if (triggerTooltip == null) {
triggerTooltip = axisPointerModel.get("triggerTooltip");
}
axisPointerModel = fromTooltip ? makeAxisPointerModel(axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip) : axisPointerModel;
var snap = axisPointerModel.get("snap");
var triggerEmphasis = axisPointerModel.get("triggerEmphasis");
var axisKey = makeKey(axis.model);
var involveSeries = triggerTooltip || snap || axis.type === "category";
var axisInfo = result.axesInfo[axisKey] = {
key: axisKey,
axis,
coordSys,
axisPointerModel,
triggerTooltip,
triggerEmphasis,
involveSeries,
snap,
useHandle: isHandleTrigger(axisPointerModel),
seriesModels: [],
linkGroup: null
};
axesInfoInCoordSys[axisKey] = axisInfo;
result.seriesInvolved = result.seriesInvolved || involveSeries;
var groupIndex = getLinkGroupIndex(linksOption, axis);
if (groupIndex != null) {
var linkGroup = linkGroups[groupIndex] || (linkGroups[groupIndex] = {
axesInfo: {}
});
linkGroup.axesInfo[axisKey] = axisInfo;
linkGroup.mapper = linksOption[groupIndex].mapper;
axisInfo.linkGroup = linkGroup;
}
}
});
}
function makeAxisPointerModel(axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip) {
var tooltipAxisPointerModel = baseTooltipModel.getModel("axisPointer");
var fields = ["type", "snap", "lineStyle", "shadowStyle", "label", "animation", "animationDurationUpdate", "animationEasingUpdate", "z"];
var volatileOption = {};
each$f(fields, function(field) {
volatileOption[field] = clone$4(tooltipAxisPointerModel.get(field));
});
volatileOption.snap = axis.type !== "category" && !!triggerTooltip;
if (tooltipAxisPointerModel.get("type") === "cross") {
volatileOption.type = "line";
}
var labelOption = volatileOption.label || (volatileOption.label = {});
labelOption.show == null && (labelOption.show = false);
if (fromTooltip === "cross") {
var tooltipAxisPointerLabelShow = tooltipAxisPointerModel.get(["label", "show"]);
labelOption.show = tooltipAxisPointerLabelShow != null ? tooltipAxisPointerLabelShow : true;
if (!triggerTooltip) {
var crossStyle = volatileOption.lineStyle = tooltipAxisPointerModel.get("crossStyle");
crossStyle && defaults(labelOption, crossStyle.textStyle);
}
}
return axis.model.getModel("axisPointer", new Model(volatileOption, globalAxisPointerModel, ecModel));
}
function collectSeriesInfo(result, ecModel) {
ecModel.eachSeries(function(seriesModel) {
var coordSys = seriesModel.coordinateSystem;
var seriesTooltipTrigger = seriesModel.get(["tooltip", "trigger"], true);
var seriesTooltipShow = seriesModel.get(["tooltip", "show"], true);
if (!coordSys || seriesTooltipTrigger === "none" || seriesTooltipTrigger === false || seriesTooltipTrigger === "item" || seriesTooltipShow === false || seriesModel.get(["axisPointer", "show"], true) === false) {
return;
}
each$f(result.coordSysAxesInfo[makeKey(coordSys.model)], function(axisInfo) {
var axis = axisInfo.axis;
if (coordSys.getAxis(axis.dim) === axis) {
axisInfo.seriesModels.push(seriesModel);
axisInfo.seriesDataCount == null && (axisInfo.seriesDataCount = 0);
axisInfo.seriesDataCount += seriesModel.getData().count();
}
});
});
}
function getLinkGroupIndex(linksOption, axis) {
var axisModel = axis.model;
var dim = axis.dim;
for (var i = 0; i < linksOption.length; i++) {
var linkOption = linksOption[i] || {};
if (checkPropInLink(linkOption[dim + "AxisId"], axisModel.id) || checkPropInLink(linkOption[dim + "AxisIndex"], axisModel.componentIndex) || checkPropInLink(linkOption[dim + "AxisName"], axisModel.name)) {
return i;
}
}
}
function checkPropInLink(linkPropValue, axisPropValue) {
return linkPropValue === "all" || isArray$1(linkPropValue) && indexOf(linkPropValue, axisPropValue) >= 0 || linkPropValue === axisPropValue;
}
function fixValue(axisModel) {
var axisInfo = getAxisInfo$1(axisModel);
if (!axisInfo) {
return;
}
var axisPointerModel = axisInfo.axisPointerModel;
var scale2 = axisInfo.axis.scale;
var option = axisPointerModel.option;
var status = axisPointerModel.get("status");
var value = axisPointerModel.get("value");
if (value != null) {
value = scale2.parse(value);
}
var useHandle = isHandleTrigger(axisPointerModel);
if (status == null) {
option.status = useHandle ? "show" : "hide";
}
var extent3 = scale2.getExtent().slice();
extent3[0] > extent3[1] && extent3.reverse();
if (
// Pick a value on axis when initializing.
value == null || value > extent3[1]
) {
value = extent3[1];
}
if (value < extent3[0]) {
value = extent3[0];
}
option.value = value;
if (useHandle) {
option.status = axisInfo.axis.scale.isBlank() ? "hide" : "show";
}
}
function getAxisInfo$1(axisModel) {
var coordSysAxesInfo = (axisModel.ecModel.getComponent("axisPointer") || {}).coordSysAxesInfo;
return coordSysAxesInfo && coordSysAxesInfo.axesInfo[makeKey(axisModel)];
}
function getAxisPointerModel(axisModel) {
var axisInfo = getAxisInfo$1(axisModel);
return axisInfo && axisInfo.axisPointerModel;
}
function isHandleTrigger(axisPointerModel) {
return !!axisPointerModel.get(["handle", "show"]);
}
function makeKey(model) {
return model.type + "||" + model.id;
}
var axisPointerClazz = {};
var AxisView = (
/** @class */
function(_super) {
__extends(AxisView2, _super);
function AxisView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = AxisView2.type;
return _this;
}
AxisView2.prototype.render = function(axisModel, ecModel, api, payload) {
this.axisPointerClass && fixValue(axisModel);
_super.prototype.render.apply(this, arguments);
this._doUpdateAxisPointerClass(axisModel, api, true);
};
AxisView2.prototype.updateAxisPointer = function(axisModel, ecModel, api, payload) {
this._doUpdateAxisPointerClass(axisModel, api, false);
};
AxisView2.prototype.remove = function(ecModel, api) {
var axisPointer = this._axisPointer;
axisPointer && axisPointer.remove(api);
};
AxisView2.prototype.dispose = function(ecModel, api) {
this._disposeAxisPointer(api);
_super.prototype.dispose.apply(this, arguments);
};
AxisView2.prototype._doUpdateAxisPointerClass = function(axisModel, api, forceRender) {
var Clazz = AxisView2.getAxisPointerClass(this.axisPointerClass);
if (!Clazz) {
return;
}
var axisPointerModel = getAxisPointerModel(axisModel);
axisPointerModel ? (this._axisPointer || (this._axisPointer = new Clazz())).render(axisModel, axisPointerModel, api, forceRender) : this._disposeAxisPointer(api);
};
AxisView2.prototype._disposeAxisPointer = function(api) {
this._axisPointer && this._axisPointer.dispose(api);
this._axisPointer = null;
};
AxisView2.registerAxisPointerClass = function(type4, clazz) {
axisPointerClazz[type4] = clazz;
};
AxisView2.getAxisPointerClass = function(type4) {
return type4 && axisPointerClazz[type4];
};
AxisView2.type = "axis";
return AxisView2;
}(ComponentView)
);
var inner$f = makeInner();
function rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, gridModel) {
var axis = axisModel.axis;
if (axis.scale.isBlank()) {
return;
}
var splitAreaModel = axisModel.getModel("splitArea");
var areaStyleModel = splitAreaModel.getModel("areaStyle");
var areaColors = areaStyleModel.get("color");
var gridRect = gridModel.coordinateSystem.getRect();
var ticksCoords = axis.getTicksCoords({
tickModel: splitAreaModel,
clamp: true
});
if (!ticksCoords.length) {
return;
}
var areaColorsLen = areaColors.length;
var lastSplitAreaColors = inner$f(axisView).splitAreaColors;
var newSplitAreaColors = createHashMap();
var colorIndex = 0;
if (lastSplitAreaColors) {
for (var i = 0; i < ticksCoords.length; i++) {
var cIndex = lastSplitAreaColors.get(ticksCoords[i].tickValue);
if (cIndex != null) {
colorIndex = (cIndex + (areaColorsLen - 1) * i) % areaColorsLen;
break;
}
}
}
var prev2 = axis.toGlobalCoord(ticksCoords[0].coord);
var areaStyle = areaStyleModel.getAreaStyle();
areaColors = isArray$1(areaColors) ? areaColors : [areaColors];
for (var i = 1; i < ticksCoords.length; i++) {
var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);
var x2 = void 0;
var y2 = void 0;
var width = void 0;
var height = void 0;
if (axis.isHorizontal()) {
x2 = prev2;
y2 = gridRect.y;
width = tickCoord - x2;
height = gridRect.height;
prev2 = x2 + width;
} else {
x2 = gridRect.x;
y2 = prev2;
width = gridRect.width;
height = tickCoord - y2;
prev2 = y2 + height;
}
var tickValue = ticksCoords[i - 1].tickValue;
tickValue != null && newSplitAreaColors.set(tickValue, colorIndex);
axisGroup.add(new Rect$2({
anid: tickValue != null ? "area_" + tickValue : null,
shape: {
x: x2,
y: y2,
width,
height
},
style: defaults({
fill: areaColors[colorIndex]
}, areaStyle),
autoBatch: true,
silent: true
}));
colorIndex = (colorIndex + 1) % areaColorsLen;
}
inner$f(axisView).splitAreaColors = newSplitAreaColors;
}
function rectCoordAxisHandleRemove(axisView) {
inner$f(axisView).splitAreaColors = null;
}
var axisBuilderAttrs$3 = ["axisLine", "axisTickLabel", "axisName"];
var selfBuilderAttrs$2 = ["splitArea", "splitLine", "minorSplitLine"];
var CartesianAxisView = (
/** @class */
function(_super) {
__extends(CartesianAxisView2, _super);
function CartesianAxisView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = CartesianAxisView2.type;
_this.axisPointerClass = "CartesianAxisPointer";
return _this;
}
CartesianAxisView2.prototype.render = function(axisModel, ecModel, api, payload) {
this.group.removeAll();
var oldAxisGroup = this._axisGroup;
this._axisGroup = new Group$3();
this.group.add(this._axisGroup);
if (!axisModel.get("show")) {
return;
}
var gridModel = axisModel.getCoordSysModel();
var layout2 = layout$2(gridModel, axisModel);
var axisBuilder = new AxisBuilder(axisModel, extend({
handleAutoShown: function(elementType) {
var cartesians = gridModel.coordinateSystem.getCartesians();
for (var i = 0; i < cartesians.length; i++) {
if (isIntervalOrLogScale(cartesians[i].getOtherAxis(axisModel.axis).scale)) {
return true;
}
}
return false;
}
}, layout2));
each$f(axisBuilderAttrs$3, axisBuilder.add, axisBuilder);
this._axisGroup.add(axisBuilder.getGroup());
each$f(selfBuilderAttrs$2, function(name) {
if (axisModel.get([name, "show"])) {
axisElementBuilders$2[name](this, this._axisGroup, axisModel, gridModel);
}
}, this);
var isInitialSortFromBarRacing = payload && payload.type === "changeAxisOrder" && payload.isInitSort;
if (!isInitialSortFromBarRacing) {
groupTransition(oldAxisGroup, this._axisGroup, axisModel);
}
_super.prototype.render.call(this, axisModel, ecModel, api, payload);
};
CartesianAxisView2.prototype.remove = function() {
rectCoordAxisHandleRemove(this);
};
CartesianAxisView2.type = "cartesianAxis";
return CartesianAxisView2;
}(AxisView)
);
var axisElementBuilders$2 = {
splitLine: function(axisView, axisGroup, axisModel, gridModel) {
var axis = axisModel.axis;
if (axis.scale.isBlank()) {
return;
}
var splitLineModel = axisModel.getModel("splitLine");
var lineStyleModel = splitLineModel.getModel("lineStyle");
var lineColors = lineStyleModel.get("color");
lineColors = isArray$1(lineColors) ? lineColors : [lineColors];
var gridRect = gridModel.coordinateSystem.getRect();
var isHorizontal = axis.isHorizontal();
var lineCount = 0;
var ticksCoords = axis.getTicksCoords({
tickModel: splitLineModel
});
var p1 = [];
var p2 = [];
var lineStyle = lineStyleModel.getLineStyle();
for (var i = 0; i < ticksCoords.length; i++) {
var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);
if (isHorizontal) {
p1[0] = tickCoord;
p1[1] = gridRect.y;
p2[0] = tickCoord;
p2[1] = gridRect.y + gridRect.height;
} else {
p1[0] = gridRect.x;
p1[1] = tickCoord;
p2[0] = gridRect.x + gridRect.width;
p2[1] = tickCoord;
}
var colorIndex = lineCount++ % lineColors.length;
var tickValue = ticksCoords[i].tickValue;
var line2 = new Line$1({
anid: tickValue != null ? "line_" + ticksCoords[i].tickValue : null,
autoBatch: true,
shape: {
x1: p1[0],
y1: p1[1],
x2: p2[0],
y2: p2[1]
},
style: defaults({
stroke: lineColors[colorIndex]
}, lineStyle),
silent: true
});
subPixelOptimizeLine(line2.shape, lineStyle.lineWidth);
axisGroup.add(line2);
}
},
minorSplitLine: function(axisView, axisGroup, axisModel, gridModel) {
var axis = axisModel.axis;
var minorSplitLineModel = axisModel.getModel("minorSplitLine");
var lineStyleModel = minorSplitLineModel.getModel("lineStyle");
var gridRect = gridModel.coordinateSystem.getRect();
var isHorizontal = axis.isHorizontal();
var minorTicksCoords = axis.getMinorTicksCoords();
if (!minorTicksCoords.length) {
return;
}
var p1 = [];
var p2 = [];
var lineStyle = lineStyleModel.getLineStyle();
for (var i = 0; i < minorTicksCoords.length; i++) {
for (var k2 = 0; k2 < minorTicksCoords[i].length; k2++) {
var tickCoord = axis.toGlobalCoord(minorTicksCoords[i][k2].coord);
if (isHorizontal) {
p1[0] = tickCoord;
p1[1] = gridRect.y;
p2[0] = tickCoord;
p2[1] = gridRect.y + gridRect.height;
} else {
p1[0] = gridRect.x;
p1[1] = tickCoord;
p2[0] = gridRect.x + gridRect.width;
p2[1] = tickCoord;
}
var line2 = new Line$1({
anid: "minor_line_" + minorTicksCoords[i][k2].tickValue,
autoBatch: true,
shape: {
x1: p1[0],
y1: p1[1],
x2: p2[0],
y2: p2[1]
},
style: lineStyle,
silent: true
});
subPixelOptimizeLine(line2.shape, lineStyle.lineWidth);
axisGroup.add(line2);
}
}
},
splitArea: function(axisView, axisGroup, axisModel, gridModel) {
rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, gridModel);
}
};
var CartesianXAxisView = (
/** @class */
function(_super) {
__extends(CartesianXAxisView2, _super);
function CartesianXAxisView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = CartesianXAxisView2.type;
return _this;
}
CartesianXAxisView2.type = "xAxis";
return CartesianXAxisView2;
}(CartesianAxisView)
);
var CartesianYAxisView = (
/** @class */
function(_super) {
__extends(CartesianYAxisView2, _super);
function CartesianYAxisView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = CartesianXAxisView.type;
return _this;
}
CartesianYAxisView2.type = "yAxis";
return CartesianYAxisView2;
}(CartesianAxisView)
);
var GridView = (
/** @class */
function(_super) {
__extends(GridView2, _super);
function GridView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = "grid";
return _this;
}
GridView2.prototype.render = function(gridModel, ecModel) {
this.group.removeAll();
if (gridModel.get("show")) {
this.group.add(new Rect$2({
shape: gridModel.coordinateSystem.getRect(),
style: defaults({
fill: gridModel.get("backgroundColor")
}, gridModel.getItemStyle()),
silent: true,
z2: -1
}));
}
};
GridView2.type = "grid";
return GridView2;
}(ComponentView)
);
var extraOption = {
// gridIndex: 0,
// gridId: '',
offset: 0
};
function install$N(registers) {
registers.registerComponentView(GridView);
registers.registerComponentModel(GridModel);
registers.registerCoordinateSystem("cartesian2d", Grid);
axisModelCreator(registers, "x", CartesianAxisModel, extraOption);
axisModelCreator(registers, "y", CartesianAxisModel, extraOption);
registers.registerComponentView(CartesianXAxisView);
registers.registerComponentView(CartesianYAxisView);
registers.registerPreprocessor(function(option) {
if (option.xAxis && option.yAxis && !option.grid) {
option.grid = {};
}
});
}
function install$M(registers) {
use(install$N);
registers.registerSeriesModel(ScatterSeriesModel);
registers.registerChartView(ScatterView);
registers.registerLayout(pointsLayout("scatter"));
}
function radarLayout(ecModel) {
ecModel.eachSeriesByType("radar", function(seriesModel) {
var data = seriesModel.getData();
var points2 = [];
var coordSys = seriesModel.coordinateSystem;
if (!coordSys) {
return;
}
var axes = coordSys.getIndicatorAxes();
each$f(axes, function(axis, axisIndex) {
data.each(data.mapDimension(axes[axisIndex].dim), function(val, dataIndex) {
points2[dataIndex] = points2[dataIndex] || [];
var point = coordSys.dataToPoint(val, axisIndex);
points2[dataIndex][axisIndex] = isValidPoint(point) ? point : getValueMissingPoint(coordSys);
});
});
data.each(function(idx) {
var firstPoint = find(points2[idx], function(point) {
return isValidPoint(point);
}) || getValueMissingPoint(coordSys);
points2[idx].push(firstPoint.slice());
data.setItemLayout(idx, points2[idx]);
});
});
}
function isValidPoint(point) {
return !isNaN(point[0]) && !isNaN(point[1]);
}
function getValueMissingPoint(coordSys) {
return [coordSys.cx, coordSys.cy];
}
function radarBackwardCompat(option) {
var polarOptArr = option.polar;
if (polarOptArr) {
if (!isArray$1(polarOptArr)) {
polarOptArr = [polarOptArr];
}
var polarNotRadar_1 = [];
each$f(polarOptArr, function(polarOpt, idx) {
if (polarOpt.indicator) {
if (polarOpt.type && !polarOpt.shape) {
polarOpt.shape = polarOpt.type;
}
option.radar = option.radar || [];
if (!isArray$1(option.radar)) {
option.radar = [option.radar];
}
option.radar.push(polarOpt);
} else {
polarNotRadar_1.push(polarOpt);
}
});
option.polar = polarNotRadar_1;
}
each$f(option.series, function(seriesOpt) {
if (seriesOpt && seriesOpt.type === "radar" && seriesOpt.polarIndex) {
seriesOpt.radarIndex = seriesOpt.polarIndex;
}
});
}
var RadarView$1 = (
/** @class */
function(_super) {
__extends(RadarView2, _super);
function RadarView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = RadarView2.type;
return _this;
}
RadarView2.prototype.render = function(seriesModel, ecModel, api) {
var polar = seriesModel.coordinateSystem;
var group = this.group;
var data = seriesModel.getData();
var oldData = this._data;
function createSymbol2(data2, idx) {
var symbolType = data2.getItemVisual(idx, "symbol") || "circle";
if (symbolType === "none") {
return;
}
var symbolSize = normalizeSymbolSize(data2.getItemVisual(idx, "symbolSize"));
var symbolPath = createSymbol$1(symbolType, -1, -1, 2, 2);
var symbolRotate = data2.getItemVisual(idx, "symbolRotate") || 0;
symbolPath.attr({
style: {
strokeNoScale: true
},
z2: 100,
scaleX: symbolSize[0] / 2,
scaleY: symbolSize[1] / 2,
rotation: symbolRotate * Math.PI / 180 || 0
});
return symbolPath;
}
function updateSymbols(oldPoints, newPoints, symbolGroup, data2, idx, isInit) {
symbolGroup.removeAll();
for (var i = 0; i < newPoints.length - 1; i++) {
var symbolPath = createSymbol2(data2, idx);
if (symbolPath) {
symbolPath.__dimIdx = i;
if (oldPoints[i]) {
symbolPath.setPosition(oldPoints[i]);
graphic$1[isInit ? "initProps" : "updateProps"](symbolPath, {
x: newPoints[i][0],
y: newPoints[i][1]
}, seriesModel, idx);
} else {
symbolPath.setPosition(newPoints[i]);
}
symbolGroup.add(symbolPath);
}
}
}
function getInitialPoints(points2) {
return map$1(points2, function(pt) {
return [polar.cx, polar.cy];
});
}
data.diff(oldData).add(function(idx) {
var points2 = data.getItemLayout(idx);
if (!points2) {
return;
}
var polygon = new Polygon();
var polyline = new Polyline$1();
var target = {
shape: {
points: points2
}
};
polygon.shape.points = getInitialPoints(points2);
polyline.shape.points = getInitialPoints(points2);
initProps(polygon, target, seriesModel, idx);
initProps(polyline, target, seriesModel, idx);
var itemGroup = new Group$3();
var symbolGroup = new Group$3();
itemGroup.add(polyline);
itemGroup.add(polygon);
itemGroup.add(symbolGroup);
updateSymbols(polyline.shape.points, points2, symbolGroup, data, idx, true);
data.setItemGraphicEl(idx, itemGroup);
}).update(function(newIdx, oldIdx) {
var itemGroup = oldData.getItemGraphicEl(oldIdx);
var polyline = itemGroup.childAt(0);
var polygon = itemGroup.childAt(1);
var symbolGroup = itemGroup.childAt(2);
var target = {
shape: {
points: data.getItemLayout(newIdx)
}
};
if (!target.shape.points) {
return;
}
updateSymbols(polyline.shape.points, target.shape.points, symbolGroup, data, newIdx, false);
saveOldStyle(polygon);
saveOldStyle(polyline);
updateProps$1(polyline, target, seriesModel);
updateProps$1(polygon, target, seriesModel);
data.setItemGraphicEl(newIdx, itemGroup);
}).remove(function(idx) {
group.remove(oldData.getItemGraphicEl(idx));
}).execute();
data.eachItemGraphicEl(function(itemGroup, idx) {
var itemModel = data.getItemModel(idx);
var polyline = itemGroup.childAt(0);
var polygon = itemGroup.childAt(1);
var symbolGroup = itemGroup.childAt(2);
var itemStyle = data.getItemVisual(idx, "style");
var color2 = itemStyle.fill;
group.add(itemGroup);
polyline.useStyle(defaults(itemModel.getModel("lineStyle").getLineStyle(), {
fill: "none",
stroke: color2
}));
setStatesStylesFromModel(polyline, itemModel, "lineStyle");
setStatesStylesFromModel(polygon, itemModel, "areaStyle");
var areaStyleModel = itemModel.getModel("areaStyle");
var polygonIgnore = areaStyleModel.isEmpty() && areaStyleModel.parentModel.isEmpty();
polygon.ignore = polygonIgnore;
each$f(["emphasis", "select", "blur"], function(stateName) {
var stateModel = itemModel.getModel([stateName, "areaStyle"]);
var stateIgnore = stateModel.isEmpty() && stateModel.parentModel.isEmpty();
polygon.ensureState(stateName).ignore = stateIgnore && polygonIgnore;
});
polygon.useStyle(defaults(areaStyleModel.getAreaStyle(), {
fill: color2,
opacity: 0.7,
decal: itemStyle.decal
}));
var emphasisModel = itemModel.getModel("emphasis");
var itemHoverStyle = emphasisModel.getModel("itemStyle").getItemStyle();
symbolGroup.eachChild(function(symbolPath) {
if (symbolPath instanceof ZRImage) {
var pathStyle = symbolPath.style;
symbolPath.useStyle(extend({
// TODO other properties like x, y ?
image: pathStyle.image,
x: pathStyle.x,
y: pathStyle.y,
width: pathStyle.width,
height: pathStyle.height
}, itemStyle));
} else {
symbolPath.useStyle(itemStyle);
symbolPath.setColor(color2);
symbolPath.style.strokeNoScale = true;
}
var pathEmphasisState = symbolPath.ensureState("emphasis");
pathEmphasisState.style = clone$4(itemHoverStyle);
var defaultText = data.getStore().get(data.getDimensionIndex(symbolPath.__dimIdx), idx);
(defaultText == null || isNaN(defaultText)) && (defaultText = "");
setLabelStyle(symbolPath, getLabelStatesModels(itemModel), {
labelFetcher: data.hostModel,
labelDataIndex: idx,
labelDimIndex: symbolPath.__dimIdx,
defaultText,
inheritColor: color2,
defaultOpacity: itemStyle.opacity
});
});
toggleHoverEmphasis(itemGroup, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
});
this._data = data;
};
RadarView2.prototype.remove = function() {
this.group.removeAll();
this._data = null;
};
RadarView2.type = "radar";
return RadarView2;
}(ChartView)
);
var RadarSeriesModel = (
/** @class */
function(_super) {
__extends(RadarSeriesModel2, _super);
function RadarSeriesModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = RadarSeriesModel2.type;
_this.hasSymbolVisual = true;
return _this;
}
RadarSeriesModel2.prototype.init = function(option) {
_super.prototype.init.apply(this, arguments);
this.legendVisualProvider = new LegendVisualProvider(bind$2(this.getData, this), bind$2(this.getRawData, this));
};
RadarSeriesModel2.prototype.getInitialData = function(option, ecModel) {
return createSeriesDataSimply(this, {
generateCoord: "indicator_",
generateCoordCount: Infinity
});
};
RadarSeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) {
var data = this.getData();
var coordSys = this.coordinateSystem;
var indicatorAxes = coordSys.getIndicatorAxes();
var name = this.getData().getName(dataIndex);
var nameToDisplay = name === "" ? this.name : name;
var markerColor = retrieveVisualColorForTooltipMarker(this, dataIndex);
return createTooltipMarkup("section", {
header: nameToDisplay,
sortBlocks: true,
blocks: map$1(indicatorAxes, function(axis) {
var val = data.get(data.mapDimension(axis.dim), dataIndex);
return createTooltipMarkup("nameValue", {
markerType: "subItem",
markerColor,
name: axis.name,
value: val,
sortParam: val
});
})
});
};
RadarSeriesModel2.prototype.getTooltipPosition = function(dataIndex) {
if (dataIndex != null) {
var data_1 = this.getData();
var coordSys = this.coordinateSystem;
var values = data_1.getValues(map$1(coordSys.dimensions, function(dim) {
return data_1.mapDimension(dim);
}), dataIndex);
for (var i = 0, len2 = values.length; i < len2; i++) {
if (!isNaN(values[i])) {
var indicatorAxes = coordSys.getIndicatorAxes();
return coordSys.coordToPoint(indicatorAxes[i].dataToCoord(values[i]), i);
}
}
}
};
RadarSeriesModel2.type = "series.radar";
RadarSeriesModel2.dependencies = ["radar"];
RadarSeriesModel2.defaultOption = {
// zlevel: 0,
z: 2,
colorBy: "data",
coordinateSystem: "radar",
legendHoverLink: true,
radarIndex: 0,
lineStyle: {
width: 2,
type: "solid",
join: "round"
},
label: {
position: "top"
},
// areaStyle: {
// },
// itemStyle: {}
symbolSize: 8
// symbolRotate: null
};
return RadarSeriesModel2;
}(SeriesModel)
);
var valueAxisDefault = axisDefault.value;
function defaultsShow(opt, show) {
return defaults({
show
}, opt);
}
var RadarModel = (
/** @class */
function(_super) {
__extends(RadarModel2, _super);
function RadarModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = RadarModel2.type;
return _this;
}
RadarModel2.prototype.optionUpdated = function() {
var boundaryGap = this.get("boundaryGap");
var splitNumber = this.get("splitNumber");
var scale2 = this.get("scale");
var axisLine = this.get("axisLine");
var axisTick = this.get("axisTick");
var axisLabel = this.get("axisLabel");
var nameTextStyle = this.get("axisName");
var showName = this.get(["axisName", "show"]);
var nameFormatter = this.get(["axisName", "formatter"]);
var nameGap = this.get("axisNameGap");
var triggerEvent = this.get("triggerEvent");
var indicatorModels = map$1(this.get("indicator") || [], function(indicatorOpt) {
if (indicatorOpt.max != null && indicatorOpt.max > 0 && !indicatorOpt.min) {
indicatorOpt.min = 0;
} else if (indicatorOpt.min != null && indicatorOpt.min < 0 && !indicatorOpt.max) {
indicatorOpt.max = 0;
}
var iNameTextStyle = nameTextStyle;
if (indicatorOpt.color != null) {
iNameTextStyle = defaults({
color: indicatorOpt.color
}, nameTextStyle);
}
var innerIndicatorOpt = merge(clone$4(indicatorOpt), {
boundaryGap,
splitNumber,
scale: scale2,
axisLine,
axisTick,
// axisType: axisType,
axisLabel,
// Compatible with 2 and use text
name: indicatorOpt.text,
showName,
nameLocation: "end",
nameGap,
// min: 0,
nameTextStyle: iNameTextStyle,
triggerEvent
}, false);
if (isString$1(nameFormatter)) {
var indName = innerIndicatorOpt.name;
innerIndicatorOpt.name = nameFormatter.replace("{value}", indName != null ? indName : "");
} else if (isFunction$1(nameFormatter)) {
innerIndicatorOpt.name = nameFormatter(innerIndicatorOpt.name, innerIndicatorOpt);
}
var model = new Model(innerIndicatorOpt, null, this.ecModel);
mixin(model, AxisModelCommonMixin.prototype);
model.mainType = "radar";
model.componentIndex = this.componentIndex;
return model;
}, this);
this._indicatorModels = indicatorModels;
};
RadarModel2.prototype.getIndicatorModels = function() {
return this._indicatorModels;
};
RadarModel2.type = "radar";
RadarModel2.defaultOption = {
// zlevel: 0,
z: 0,
center: ["50%", "50%"],
radius: "75%",
startAngle: 90,
axisName: {
show: true
// formatter: null
// textStyle: {}
},
boundaryGap: [0, 0],
splitNumber: 5,
axisNameGap: 15,
scale: false,
// Polygon or circle
shape: "polygon",
axisLine: merge({
lineStyle: {
color: "#bbb"
}
}, valueAxisDefault.axisLine),
axisLabel: defaultsShow(valueAxisDefault.axisLabel, false),
axisTick: defaultsShow(valueAxisDefault.axisTick, false),
// axisType: 'value',
splitLine: defaultsShow(valueAxisDefault.splitLine, true),
splitArea: defaultsShow(valueAxisDefault.splitArea, true),
// {text, min, max}
indicator: []
};
return RadarModel2;
}(ComponentModel)
);
var axisBuilderAttrs$2 = ["axisLine", "axisTickLabel", "axisName"];
var RadarView = (
/** @class */
function(_super) {
__extends(RadarView2, _super);
function RadarView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = RadarView2.type;
return _this;
}
RadarView2.prototype.render = function(radarModel, ecModel, api) {
var group = this.group;
group.removeAll();
this._buildAxes(radarModel);
this._buildSplitLineAndArea(radarModel);
};
RadarView2.prototype._buildAxes = function(radarModel) {
var radar = radarModel.coordinateSystem;
var indicatorAxes = radar.getIndicatorAxes();
var axisBuilders = map$1(indicatorAxes, function(indicatorAxis) {
var axisName = indicatorAxis.model.get("showName") ? indicatorAxis.name : "";
var axisBuilder = new AxisBuilder(indicatorAxis.model, {
axisName,
position: [radar.cx, radar.cy],
rotation: indicatorAxis.angle,
labelDirection: -1,
tickDirection: -1,
nameDirection: 1
});
return axisBuilder;
});
each$f(axisBuilders, function(axisBuilder) {
each$f(axisBuilderAttrs$2, axisBuilder.add, axisBuilder);
this.group.add(axisBuilder.getGroup());
}, this);
};
RadarView2.prototype._buildSplitLineAndArea = function(radarModel) {
var radar = radarModel.coordinateSystem;
var indicatorAxes = radar.getIndicatorAxes();
if (!indicatorAxes.length) {
return;
}
var shape = radarModel.get("shape");
var splitLineModel = radarModel.getModel("splitLine");
var splitAreaModel = radarModel.getModel("splitArea");
var lineStyleModel = splitLineModel.getModel("lineStyle");
var areaStyleModel = splitAreaModel.getModel("areaStyle");
var showSplitLine = splitLineModel.get("show");
var showSplitArea = splitAreaModel.get("show");
var splitLineColors = lineStyleModel.get("color");
var splitAreaColors = areaStyleModel.get("color");
var splitLineColorsArr = isArray$1(splitLineColors) ? splitLineColors : [splitLineColors];
var splitAreaColorsArr = isArray$1(splitAreaColors) ? splitAreaColors : [splitAreaColors];
var splitLines = [];
var splitAreas = [];
function getColorIndex(areaOrLine, areaOrLineColorList, idx) {
var colorIndex2 = idx % areaOrLineColorList.length;
areaOrLine[colorIndex2] = areaOrLine[colorIndex2] || [];
return colorIndex2;
}
if (shape === "circle") {
var ticksRadius = indicatorAxes[0].getTicksCoords();
var cx = radar.cx;
var cy = radar.cy;
for (var i = 0; i < ticksRadius.length; i++) {
if (showSplitLine) {
var colorIndex = getColorIndex(splitLines, splitLineColorsArr, i);
splitLines[colorIndex].push(new Circle({
shape: {
cx,
cy,
r: ticksRadius[i].coord
}
}));
}
if (showSplitArea && i < ticksRadius.length - 1) {
var colorIndex = getColorIndex(splitAreas, splitAreaColorsArr, i);
splitAreas[colorIndex].push(new Ring({
shape: {
cx,
cy,
r0: ticksRadius[i].coord,
r: ticksRadius[i + 1].coord
}
}));
}
}
} else {
var realSplitNumber_1;
var axesTicksPoints = map$1(indicatorAxes, function(indicatorAxis, idx) {
var ticksCoords = indicatorAxis.getTicksCoords();
realSplitNumber_1 = realSplitNumber_1 == null ? ticksCoords.length - 1 : Math.min(ticksCoords.length - 1, realSplitNumber_1);
return map$1(ticksCoords, function(tickCoord) {
return radar.coordToPoint(tickCoord.coord, idx);
});
});
var prevPoints = [];
for (var i = 0; i <= realSplitNumber_1; i++) {
var points2 = [];
for (var j = 0; j < indicatorAxes.length; j++) {
points2.push(axesTicksPoints[j][i]);
}
if (points2[0]) {
points2.push(points2[0].slice());
}
if (showSplitLine) {
var colorIndex = getColorIndex(splitLines, splitLineColorsArr, i);
splitLines[colorIndex].push(new Polyline$1({
shape: {
points: points2
}
}));
}
if (showSplitArea && prevPoints) {
var colorIndex = getColorIndex(splitAreas, splitAreaColorsArr, i - 1);
splitAreas[colorIndex].push(new Polygon({
shape: {
points: points2.concat(prevPoints)
}
}));
}
prevPoints = points2.slice().reverse();
}
}
var lineStyle = lineStyleModel.getLineStyle();
var areaStyle = areaStyleModel.getAreaStyle();
each$f(splitAreas, function(splitAreas2, idx) {
this.group.add(mergePath(splitAreas2, {
style: defaults({
stroke: "none",
fill: splitAreaColorsArr[idx % splitAreaColorsArr.length]
}, areaStyle),
silent: true
}));
}, this);
each$f(splitLines, function(splitLines2, idx) {
this.group.add(mergePath(splitLines2, {
style: defaults({
fill: "none",
stroke: splitLineColorsArr[idx % splitLineColorsArr.length]
}, lineStyle),
silent: true
}));
}, this);
};
RadarView2.type = "radar";
return RadarView2;
}(ComponentView)
);
var IndicatorAxis = (
/** @class */
function(_super) {
__extends(IndicatorAxis2, _super);
function IndicatorAxis2(dim, scale2, radiusExtent) {
var _this = _super.call(this, dim, scale2, radiusExtent) || this;
_this.type = "value";
_this.angle = 0;
_this.name = "";
return _this;
}
return IndicatorAxis2;
}(Axis)
);
var Radar = (
/** @class */
function() {
function Radar2(radarModel, ecModel, api) {
this.dimensions = [];
this._model = radarModel;
this._indicatorAxes = map$1(radarModel.getIndicatorModels(), function(indicatorModel, idx) {
var dim = "indicator_" + idx;
var indicatorAxis = new IndicatorAxis(
dim,
new IntervalScale()
// (indicatorModel.get('axisType') === 'log') ? new LogScale() : new IntervalScale()
);
indicatorAxis.name = indicatorModel.get("name");
indicatorAxis.model = indicatorModel;
indicatorModel.axis = indicatorAxis;
this.dimensions.push(dim);
return indicatorAxis;
}, this);
this.resize(radarModel, api);
}
Radar2.prototype.getIndicatorAxes = function() {
return this._indicatorAxes;
};
Radar2.prototype.dataToPoint = function(value, indicatorIndex) {
var indicatorAxis = this._indicatorAxes[indicatorIndex];
return this.coordToPoint(indicatorAxis.dataToCoord(value), indicatorIndex);
};
Radar2.prototype.coordToPoint = function(coord, indicatorIndex) {
var indicatorAxis = this._indicatorAxes[indicatorIndex];
var angle = indicatorAxis.angle;
var x2 = this.cx + coord * Math.cos(angle);
var y2 = this.cy - coord * Math.sin(angle);
return [x2, y2];
};
Radar2.prototype.pointToData = function(pt) {
var dx = pt[0] - this.cx;
var dy = pt[1] - this.cy;
var radius2 = Math.sqrt(dx * dx + dy * dy);
dx /= radius2;
dy /= radius2;
var radian = Math.atan2(-dy, dx);
var minRadianDiff = Infinity;
var closestAxis;
var closestAxisIdx = -1;
for (var i = 0; i < this._indicatorAxes.length; i++) {
var indicatorAxis = this._indicatorAxes[i];
var diff = Math.abs(radian - indicatorAxis.angle);
if (diff < minRadianDiff) {
closestAxis = indicatorAxis;
closestAxisIdx = i;
minRadianDiff = diff;
}
}
return [closestAxisIdx, +(closestAxis && closestAxis.coordToData(radius2))];
};
Radar2.prototype.resize = function(radarModel, api) {
var center2 = radarModel.get("center");
var viewWidth = api.getWidth();
var viewHeight = api.getHeight();
var viewSize2 = Math.min(viewWidth, viewHeight) / 2;
this.cx = parsePercent(center2[0], viewWidth);
this.cy = parsePercent(center2[1], viewHeight);
this.startAngle = radarModel.get("startAngle") * Math.PI / 180;
var radius2 = radarModel.get("radius");
if (isString$1(radius2) || isNumber(radius2)) {
radius2 = [0, radius2];
}
this.r0 = parsePercent(radius2[0], viewSize2);
this.r = parsePercent(radius2[1], viewSize2);
each$f(this._indicatorAxes, function(indicatorAxis, idx) {
indicatorAxis.setExtent(this.r0, this.r);
var angle = this.startAngle + idx * Math.PI * 2 / this._indicatorAxes.length;
angle = Math.atan2(Math.sin(angle), Math.cos(angle));
indicatorAxis.angle = angle;
}, this);
};
Radar2.prototype.update = function(ecModel, api) {
var indicatorAxes = this._indicatorAxes;
var radarModel = this._model;
each$f(indicatorAxes, function(indicatorAxis) {
indicatorAxis.scale.setExtent(Infinity, -Infinity);
});
ecModel.eachSeriesByType("radar", function(radarSeries, idx) {
if (radarSeries.get("coordinateSystem") !== "radar" || ecModel.getComponent("radar", radarSeries.get("radarIndex")) !== radarModel) {
return;
}
var data = radarSeries.getData();
each$f(indicatorAxes, function(indicatorAxis) {
indicatorAxis.scale.unionExtentFromData(data, data.mapDimension(indicatorAxis.dim));
});
}, this);
var splitNumber = radarModel.get("splitNumber");
var dummyScale = new IntervalScale();
dummyScale.setExtent(0, splitNumber);
dummyScale.setInterval(1);
each$f(indicatorAxes, function(indicatorAxis, idx) {
alignScaleTicks(indicatorAxis.scale, indicatorAxis.model, dummyScale);
});
};
Radar2.prototype.convertToPixel = function(ecModel, finder, value) {
console.warn("Not implemented.");
return null;
};
Radar2.prototype.convertFromPixel = function(ecModel, finder, pixel) {
console.warn("Not implemented.");
return null;
};
Radar2.prototype.containPoint = function(point) {
console.warn("Not implemented.");
return false;
};
Radar2.create = function(ecModel, api) {
var radarList = [];
ecModel.eachComponent("radar", function(radarModel) {
var radar = new Radar2(radarModel, ecModel, api);
radarList.push(radar);
radarModel.coordinateSystem = radar;
});
ecModel.eachSeriesByType("radar", function(radarSeries) {
if (radarSeries.get("coordinateSystem") === "radar") {
radarSeries.coordinateSystem = radarList[radarSeries.get("radarIndex") || 0];
}
});
return radarList;
};
Radar2.dimensions = [];
return Radar2;
}()
);
function install$L(registers) {
registers.registerCoordinateSystem("radar", Radar);
registers.registerComponentModel(RadarModel);
registers.registerComponentView(RadarView);
registers.registerVisual({
seriesType: "radar",
reset: function(seriesModel) {
var data = seriesModel.getData();
data.each(function(idx) {
data.setItemVisual(idx, "legendIcon", "roundRect");
});
data.setVisual("legendIcon", "roundRect");
}
});
}
function install$K(registers) {
use(install$L);
registers.registerChartView(RadarView$1);
registers.registerSeriesModel(RadarSeriesModel);
registers.registerLayout(radarLayout);
registers.registerProcessor(dataFilter$1("radar"));
registers.registerPreprocessor(radarBackwardCompat);
}
var ATTR = "\0_ec_interaction_mutex";
function take(zr, resourceKey, userKey) {
var store = getStore(zr);
store[resourceKey] = userKey;
}
function release(zr, resourceKey, userKey) {
var store = getStore(zr);
var uKey = store[resourceKey];
if (uKey === userKey) {
store[resourceKey] = null;
}
}
function isTaken(zr, resourceKey) {
return !!getStore(zr)[resourceKey];
}
function getStore(zr) {
return zr[ATTR] || (zr[ATTR] = {});
}
registerAction({
type: "takeGlobalCursor",
event: "globalCursorTaken",
update: "update"
}, noop2);
var RoamController = (
/** @class */
function(_super) {
__extends(RoamController2, _super);
function RoamController2(zr) {
var _this = _super.call(this) || this;
_this._zr = zr;
var mousedownHandler = bind$2(_this._mousedownHandler, _this);
var mousemoveHandler = bind$2(_this._mousemoveHandler, _this);
var mouseupHandler = bind$2(_this._mouseupHandler, _this);
var mousewheelHandler = bind$2(_this._mousewheelHandler, _this);
var pinchHandler = bind$2(_this._pinchHandler, _this);
_this.enable = function(controlType, opt) {
this.disable();
this._opt = defaults(clone$4(opt) || {}, {
zoomOnMouseWheel: true,
moveOnMouseMove: true,
// By default, wheel do not trigger move.
moveOnMouseWheel: false,
preventDefaultMouseMove: true
});
if (controlType == null) {
controlType = true;
}
if (controlType === true || controlType === "move" || controlType === "pan") {
zr.on("mousedown", mousedownHandler);
zr.on("mousemove", mousemoveHandler);
zr.on("mouseup", mouseupHandler);
}
if (controlType === true || controlType === "scale" || controlType === "zoom") {
zr.on("mousewheel", mousewheelHandler);
zr.on("pinch", pinchHandler);
}
};
_this.disable = function() {
zr.off("mousedown", mousedownHandler);
zr.off("mousemove", mousemoveHandler);
zr.off("mouseup", mouseupHandler);
zr.off("mousewheel", mousewheelHandler);
zr.off("pinch", pinchHandler);
};
return _this;
}
RoamController2.prototype.isDragging = function() {
return this._dragging;
};
RoamController2.prototype.isPinching = function() {
return this._pinching;
};
RoamController2.prototype.setPointerChecker = function(pointerChecker) {
this.pointerChecker = pointerChecker;
};
RoamController2.prototype.dispose = function() {
this.disable();
};
RoamController2.prototype._mousedownHandler = function(e2) {
if (isMiddleOrRightButtonOnMouseUpDown(e2)) {
return;
}
var el2 = e2.target;
while (el2) {
if (el2.draggable) {
return;
}
el2 = el2.__hostTarget || el2.parent;
}
var x2 = e2.offsetX;
var y2 = e2.offsetY;
if (this.pointerChecker && this.pointerChecker(e2, x2, y2)) {
this._x = x2;
this._y = y2;
this._dragging = true;
}
};
RoamController2.prototype._mousemoveHandler = function(e2) {
if (!this._dragging || !isAvailableBehavior("moveOnMouseMove", e2, this._opt) || e2.gestureEvent === "pinch" || isTaken(this._zr, "globalPan")) {
return;
}
var x2 = e2.offsetX;
var y2 = e2.offsetY;
var oldX = this._x;
var oldY = this._y;
var dx = x2 - oldX;
var dy = y2 - oldY;
this._x = x2;
this._y = y2;
this._opt.preventDefaultMouseMove && stop(e2.event);
trigger$1(this, "pan", "moveOnMouseMove", e2, {
dx,
dy,
oldX,
oldY,
newX: x2,
newY: y2,
isAvailableBehavior: null
});
};
RoamController2.prototype._mouseupHandler = function(e2) {
if (!isMiddleOrRightButtonOnMouseUpDown(e2)) {
this._dragging = false;
}
};
RoamController2.prototype._mousewheelHandler = function(e2) {
var shouldZoom = isAvailableBehavior("zoomOnMouseWheel", e2, this._opt);
var shouldMove = isAvailableBehavior("moveOnMouseWheel", e2, this._opt);
var wheelDelta = e2.wheelDelta;
var absWheelDeltaDelta = Math.abs(wheelDelta);
var originX = e2.offsetX;
var originY = e2.offsetY;
if (wheelDelta === 0 || !shouldZoom && !shouldMove) {
return;
}
if (shouldZoom) {
var factor = absWheelDeltaDelta > 3 ? 1.4 : absWheelDeltaDelta > 1 ? 1.2 : 1.1;
var scale2 = wheelDelta > 0 ? factor : 1 / factor;
checkPointerAndTrigger(this, "zoom", "zoomOnMouseWheel", e2, {
scale: scale2,
originX,
originY,
isAvailableBehavior: null
});
}
if (shouldMove) {
var absDelta = Math.abs(wheelDelta);
var scrollDelta = (wheelDelta > 0 ? 1 : -1) * (absDelta > 3 ? 0.4 : absDelta > 1 ? 0.15 : 0.05);
checkPointerAndTrigger(this, "scrollMove", "moveOnMouseWheel", e2, {
scrollDelta,
originX,
originY,
isAvailableBehavior: null
});
}
};
RoamController2.prototype._pinchHandler = function(e2) {
if (isTaken(this._zr, "globalPan")) {
return;
}
var scale2 = e2.pinchScale > 1 ? 1.1 : 1 / 1.1;
checkPointerAndTrigger(this, "zoom", null, e2, {
scale: scale2,
originX: e2.pinchX,
originY: e2.pinchY,
isAvailableBehavior: null
});
};
return RoamController2;
}(Eventful)
);
function checkPointerAndTrigger(controller, eventName, behaviorToCheck, e2, contollerEvent) {
if (controller.pointerChecker && controller.pointerChecker(e2, contollerEvent.originX, contollerEvent.originY)) {
stop(e2.event);
trigger$1(controller, eventName, behaviorToCheck, e2, contollerEvent);
}
}
function trigger$1(controller, eventName, behaviorToCheck, e2, contollerEvent) {
contollerEvent.isAvailableBehavior = bind$2(isAvailableBehavior, null, behaviorToCheck, e2);
controller.trigger(eventName, contollerEvent);
}
function isAvailableBehavior(behaviorToCheck, e2, settings) {
var setting = settings[behaviorToCheck];
return !behaviorToCheck || setting && (!isString$1(setting) || e2.event[setting + "Key"]);
}
function updateViewOnPan(controllerHost, dx, dy) {
var target = controllerHost.target;
target.x += dx;
target.y += dy;
target.dirty();
}
function updateViewOnZoom(controllerHost, zoomDelta, zoomX, zoomY) {
var target = controllerHost.target;
var zoomLimit = controllerHost.zoomLimit;
var newZoom = controllerHost.zoom = controllerHost.zoom || 1;
newZoom *= zoomDelta;
if (zoomLimit) {
var zoomMin = zoomLimit.min || 0;
var zoomMax = zoomLimit.max || Infinity;
newZoom = Math.max(Math.min(zoomMax, newZoom), zoomMin);
}
var zoomScale = newZoom / controllerHost.zoom;
controllerHost.zoom = newZoom;
target.x -= (zoomX - target.x) * (zoomScale - 1);
target.y -= (zoomY - target.y) * (zoomScale - 1);
target.scaleX *= zoomScale;
target.scaleY *= zoomScale;
target.dirty();
}
var IRRELEVANT_EXCLUDES = {
"axisPointer": 1,
"tooltip": 1,
"brush": 1
};
function onIrrelevantElement(e2, api, targetCoordSysModel) {
var model = api.getComponentByElement(e2.topTarget);
var coordSys = model && model.coordinateSystem;
return model && model !== targetCoordSysModel && !IRRELEVANT_EXCLUDES.hasOwnProperty(model.mainType) && coordSys && coordSys.model !== targetCoordSysModel;
}
function parseXML(svg) {
if (isString$1(svg)) {
var parser = new DOMParser();
svg = parser.parseFromString(svg, "text/xml");
}
var svgNode = svg;
if (svgNode.nodeType === 9) {
svgNode = svgNode.firstChild;
}
while (svgNode.nodeName.toLowerCase() !== "svg" || svgNode.nodeType !== 1) {
svgNode = svgNode.nextSibling;
}
return svgNode;
}
var nodeParsers;
var INHERITABLE_STYLE_ATTRIBUTES_MAP = {
"fill": "fill",
"stroke": "stroke",
"stroke-width": "lineWidth",
"opacity": "opacity",
"fill-opacity": "fillOpacity",
"stroke-opacity": "strokeOpacity",
"stroke-dasharray": "lineDash",
"stroke-dashoffset": "lineDashOffset",
"stroke-linecap": "lineCap",
"stroke-linejoin": "lineJoin",
"stroke-miterlimit": "miterLimit",
"font-family": "fontFamily",
"font-size": "fontSize",
"font-style": "fontStyle",
"font-weight": "fontWeight",
"text-anchor": "textAlign",
"visibility": "visibility",
"display": "display"
};
var INHERITABLE_STYLE_ATTRIBUTES_MAP_KEYS = keys(INHERITABLE_STYLE_ATTRIBUTES_MAP);
var SELF_STYLE_ATTRIBUTES_MAP = {
"alignment-baseline": "textBaseline",
"stop-color": "stopColor"
};
var SELF_STYLE_ATTRIBUTES_MAP_KEYS = keys(SELF_STYLE_ATTRIBUTES_MAP);
var SVGParser = function() {
function SVGParser2() {
this._defs = {};
this._root = null;
}
SVGParser2.prototype.parse = function(xml, opt) {
opt = opt || {};
var svg = parseXML(xml);
this._defsUsePending = [];
var root = new Group$3();
this._root = root;
var named = [];
var viewBox = svg.getAttribute("viewBox") || "";
var width = parseFloat(svg.getAttribute("width") || opt.width);
var height = parseFloat(svg.getAttribute("height") || opt.height);
isNaN(width) && (width = null);
isNaN(height) && (height = null);
parseAttributes(svg, root, null, true, false);
var child = svg.firstChild;
while (child) {
this._parseNode(child, root, named, null, false, false);
child = child.nextSibling;
}
applyDefs(this._defs, this._defsUsePending);
this._defsUsePending = [];
var viewBoxRect;
var viewBoxTransform;
if (viewBox) {
var viewBoxArr = splitNumberSequence(viewBox);
if (viewBoxArr.length >= 4) {
viewBoxRect = {
x: parseFloat(viewBoxArr[0] || 0),
y: parseFloat(viewBoxArr[1] || 0),
width: parseFloat(viewBoxArr[2]),
height: parseFloat(viewBoxArr[3])
};
}
}
if (viewBoxRect && width != null && height != null) {
viewBoxTransform = makeViewBoxTransform(viewBoxRect, { x: 0, y: 0, width, height });
if (!opt.ignoreViewBox) {
var elRoot = root;
root = new Group$3();
root.add(elRoot);
elRoot.scaleX = elRoot.scaleY = viewBoxTransform.scale;
elRoot.x = viewBoxTransform.x;
elRoot.y = viewBoxTransform.y;
}
}
if (!opt.ignoreRootClip && width != null && height != null) {
root.setClipPath(new Rect$2({
shape: { x: 0, y: 0, width, height }
}));
}
return {
root,
width,
height,
viewBoxRect,
viewBoxTransform,
named
};
};
SVGParser2.prototype._parseNode = function(xmlNode, parentGroup, named, namedFrom, isInDefs, isInText) {
var nodeName = xmlNode.nodeName.toLowerCase();
var el2;
var namedFromForSub = namedFrom;
if (nodeName === "defs") {
isInDefs = true;
}
if (nodeName === "text") {
isInText = true;
}
if (nodeName === "defs" || nodeName === "switch") {
el2 = parentGroup;
} else {
if (!isInDefs) {
var parser_1 = nodeParsers[nodeName];
if (parser_1 && hasOwn(nodeParsers, nodeName)) {
el2 = parser_1.call(this, xmlNode, parentGroup);
var nameAttr = xmlNode.getAttribute("name");
if (nameAttr) {
var newNamed = {
name: nameAttr,
namedFrom: null,
svgNodeTagLower: nodeName,
el: el2
};
named.push(newNamed);
if (nodeName === "g") {
namedFromForSub = newNamed;
}
} else if (namedFrom) {
named.push({
name: namedFrom.name,
namedFrom,
svgNodeTagLower: nodeName,
el: el2
});
}
parentGroup.add(el2);
}
}
var parser = paintServerParsers[nodeName];
if (parser && hasOwn(paintServerParsers, nodeName)) {
var def = parser.call(this, xmlNode);
var id2 = xmlNode.getAttribute("id");
if (id2) {
this._defs[id2] = def;
}
}
}
if (el2 && el2.isGroup) {
var child = xmlNode.firstChild;
while (child) {
if (child.nodeType === 1) {
this._parseNode(child, el2, named, namedFromForSub, isInDefs, isInText);
} else if (child.nodeType === 3 && isInText) {
this._parseText(child, el2);
}
child = child.nextSibling;
}
}
};
SVGParser2.prototype._parseText = function(xmlNode, parentGroup) {
var text = new TSpan({
style: {
text: xmlNode.textContent
},
silent: true,
x: this._textX || 0,
y: this._textY || 0
});
inheritStyle(parentGroup, text);
parseAttributes(xmlNode, text, this._defsUsePending, false, false);
applyTextAlignment(text, parentGroup);
var textStyle = text.style;
var fontSize = textStyle.fontSize;
if (fontSize && fontSize < 9) {
textStyle.fontSize = 9;
text.scaleX *= fontSize / 9;
text.scaleY *= fontSize / 9;
}
var font = (textStyle.fontSize || textStyle.fontFamily) && [
textStyle.fontStyle,
textStyle.fontWeight,
(textStyle.fontSize || 12) + "px",
textStyle.fontFamily || "sans-serif"
].join(" ");
textStyle.font = font;
var rect = text.getBoundingRect();
this._textX += rect.width;
parentGroup.add(text);
return text;
};
SVGParser2.internalField = function() {
nodeParsers = {
"g": function(xmlNode, parentGroup) {
var g2 = new Group$3();
inheritStyle(parentGroup, g2);
parseAttributes(xmlNode, g2, this._defsUsePending, false, false);
return g2;
},
"rect": function(xmlNode, parentGroup) {
var rect = new Rect$2();
inheritStyle(parentGroup, rect);
parseAttributes(xmlNode, rect, this._defsUsePending, false, false);
rect.setShape({
x: parseFloat(xmlNode.getAttribute("x") || "0"),
y: parseFloat(xmlNode.getAttribute("y") || "0"),
width: parseFloat(xmlNode.getAttribute("width") || "0"),
height: parseFloat(xmlNode.getAttribute("height") || "0")
});
rect.silent = true;
return rect;
},
"circle": function(xmlNode, parentGroup) {
var circle = new Circle();
inheritStyle(parentGroup, circle);
parseAttributes(xmlNode, circle, this._defsUsePending, false, false);
circle.setShape({
cx: parseFloat(xmlNode.getAttribute("cx") || "0"),
cy: parseFloat(xmlNode.getAttribute("cy") || "0"),
r: parseFloat(xmlNode.getAttribute("r") || "0")
});
circle.silent = true;
return circle;
},
"line": function(xmlNode, parentGroup) {
var line2 = new Line$1();
inheritStyle(parentGroup, line2);
parseAttributes(xmlNode, line2, this._defsUsePending, false, false);
line2.setShape({
x1: parseFloat(xmlNode.getAttribute("x1") || "0"),
y1: parseFloat(xmlNode.getAttribute("y1") || "0"),
x2: parseFloat(xmlNode.getAttribute("x2") || "0"),
y2: parseFloat(xmlNode.getAttribute("y2") || "0")
});
line2.silent = true;
return line2;
},
"ellipse": function(xmlNode, parentGroup) {
var ellipse = new Ellipse();
inheritStyle(parentGroup, ellipse);
parseAttributes(xmlNode, ellipse, this._defsUsePending, false, false);
ellipse.setShape({
cx: parseFloat(xmlNode.getAttribute("cx") || "0"),
cy: parseFloat(xmlNode.getAttribute("cy") || "0"),
rx: parseFloat(xmlNode.getAttribute("rx") || "0"),
ry: parseFloat(xmlNode.getAttribute("ry") || "0")
});
ellipse.silent = true;
return ellipse;
},
"polygon": function(xmlNode, parentGroup) {
var pointsStr = xmlNode.getAttribute("points");
var pointsArr;
if (pointsStr) {
pointsArr = parsePoints(pointsStr);
}
var polygon = new Polygon({
shape: {
points: pointsArr || []
},
silent: true
});
inheritStyle(parentGroup, polygon);
parseAttributes(xmlNode, polygon, this._defsUsePending, false, false);
return polygon;
},
"polyline": function(xmlNode, parentGroup) {
var pointsStr = xmlNode.getAttribute("points");
var pointsArr;
if (pointsStr) {
pointsArr = parsePoints(pointsStr);
}
var polyline = new Polyline$1({
shape: {
points: pointsArr || []
},
silent: true
});
inheritStyle(parentGroup, polyline);
parseAttributes(xmlNode, polyline, this._defsUsePending, false, false);
return polyline;
},
"image": function(xmlNode, parentGroup) {
var img = new ZRImage();
inheritStyle(parentGroup, img);
parseAttributes(xmlNode, img, this._defsUsePending, false, false);
img.setStyle({
image: xmlNode.getAttribute("xlink:href") || xmlNode.getAttribute("href"),
x: +xmlNode.getAttribute("x"),
y: +xmlNode.getAttribute("y"),
width: +xmlNode.getAttribute("width"),
height: +xmlNode.getAttribute("height")
});
img.silent = true;
return img;
},
"text": function(xmlNode, parentGroup) {
var x2 = xmlNode.getAttribute("x") || "0";
var y2 = xmlNode.getAttribute("y") || "0";
var dx = xmlNode.getAttribute("dx") || "0";
var dy = xmlNode.getAttribute("dy") || "0";
this._textX = parseFloat(x2) + parseFloat(dx);
this._textY = parseFloat(y2) + parseFloat(dy);
var g2 = new Group$3();
inheritStyle(parentGroup, g2);
parseAttributes(xmlNode, g2, this._defsUsePending, false, true);
return g2;
},
"tspan": function(xmlNode, parentGroup) {
var x2 = xmlNode.getAttribute("x");
var y2 = xmlNode.getAttribute("y");
if (x2 != null) {
this._textX = parseFloat(x2);
}
if (y2 != null) {
this._textY = parseFloat(y2);
}
var dx = xmlNode.getAttribute("dx") || "0";
var dy = xmlNode.getAttribute("dy") || "0";
var g2 = new Group$3();
inheritStyle(parentGroup, g2);
parseAttributes(xmlNode, g2, this._defsUsePending, false, true);
this._textX += parseFloat(dx);
this._textY += parseFloat(dy);
return g2;
},
"path": function(xmlNode, parentGroup) {
var d2 = xmlNode.getAttribute("d") || "";
var path = createFromString(d2);
inheritStyle(parentGroup, path);
parseAttributes(xmlNode, path, this._defsUsePending, false, false);
path.silent = true;
return path;
}
};
}();
return SVGParser2;
}();
var paintServerParsers = {
"lineargradient": function(xmlNode) {
var x1 = parseInt(xmlNode.getAttribute("x1") || "0", 10);
var y1 = parseInt(xmlNode.getAttribute("y1") || "0", 10);
var x2 = parseInt(xmlNode.getAttribute("x2") || "10", 10);
var y2 = parseInt(xmlNode.getAttribute("y2") || "0", 10);
var gradient = new LinearGradient(x1, y1, x2, y2);
parsePaintServerUnit(xmlNode, gradient);
parseGradientColorStops(xmlNode, gradient);
return gradient;
},
"radialgradient": function(xmlNode) {
var cx = parseInt(xmlNode.getAttribute("cx") || "0", 10);
var cy = parseInt(xmlNode.getAttribute("cy") || "0", 10);
var r2 = parseInt(xmlNode.getAttribute("r") || "0", 10);
var gradient = new RadialGradient(cx, cy, r2);
parsePaintServerUnit(xmlNode, gradient);
parseGradientColorStops(xmlNode, gradient);
return gradient;
}
};
function parsePaintServerUnit(xmlNode, gradient) {
var gradientUnits = xmlNode.getAttribute("gradientUnits");
if (gradientUnits === "userSpaceOnUse") {
gradient.global = true;
}
}
function parseGradientColorStops(xmlNode, gradient) {
var stop2 = xmlNode.firstChild;
while (stop2) {
if (stop2.nodeType === 1 && stop2.nodeName.toLocaleLowerCase() === "stop") {
var offsetStr = stop2.getAttribute("offset");
var offset2 = void 0;
if (offsetStr && offsetStr.indexOf("%") > 0) {
offset2 = parseInt(offsetStr, 10) / 100;
} else if (offsetStr) {
offset2 = parseFloat(offsetStr);
} else {
offset2 = 0;
}
var styleVals = {};
parseInlineStyle(stop2, styleVals, styleVals);
var stopColor = styleVals.stopColor || stop2.getAttribute("stop-color") || "#000000";
gradient.colorStops.push({
offset: offset2,
color: stopColor
});
}
stop2 = stop2.nextSibling;
}
}
function inheritStyle(parent, child) {
if (parent && parent.__inheritedStyle) {
if (!child.__inheritedStyle) {
child.__inheritedStyle = {};
}
defaults(child.__inheritedStyle, parent.__inheritedStyle);
}
}
function parsePoints(pointsString) {
var list = splitNumberSequence(pointsString);
var points2 = [];
for (var i = 0; i < list.length; i += 2) {
var x2 = parseFloat(list[i]);
var y2 = parseFloat(list[i + 1]);
points2.push([x2, y2]);
}
return points2;
}
function parseAttributes(xmlNode, el2, defsUsePending, onlyInlineStyle, isTextGroup) {
var disp = el2;
var inheritedStyle = disp.__inheritedStyle = disp.__inheritedStyle || {};
var selfStyle = {};
if (xmlNode.nodeType === 1) {
parseTransformAttribute(xmlNode, el2);
parseInlineStyle(xmlNode, inheritedStyle, selfStyle);
if (!onlyInlineStyle) {
parseAttributeStyle(xmlNode, inheritedStyle, selfStyle);
}
}
disp.style = disp.style || {};
if (inheritedStyle.fill != null) {
disp.style.fill = getFillStrokeStyle(disp, "fill", inheritedStyle.fill, defsUsePending);
}
if (inheritedStyle.stroke != null) {
disp.style.stroke = getFillStrokeStyle(disp, "stroke", inheritedStyle.stroke, defsUsePending);
}
each$f([
"lineWidth",
"opacity",
"fillOpacity",
"strokeOpacity",
"miterLimit",
"fontSize"
], function(propName) {
if (inheritedStyle[propName] != null) {
disp.style[propName] = parseFloat(inheritedStyle[propName]);
}
});
each$f([
"lineDashOffset",
"lineCap",
"lineJoin",
"fontWeight",
"fontFamily",
"fontStyle",
"textAlign"
], function(propName) {
if (inheritedStyle[propName] != null) {
disp.style[propName] = inheritedStyle[propName];
}
});
if (isTextGroup) {
disp.__selfStyle = selfStyle;
}
if (inheritedStyle.lineDash) {
disp.style.lineDash = map$1(splitNumberSequence(inheritedStyle.lineDash), function(str) {
return parseFloat(str);
});
}
if (inheritedStyle.visibility === "hidden" || inheritedStyle.visibility === "collapse") {
disp.invisible = true;
}
if (inheritedStyle.display === "none") {
disp.ignore = true;
}
}
function applyTextAlignment(text, parentGroup) {
var parentSelfStyle = parentGroup.__selfStyle;
if (parentSelfStyle) {
var textBaseline = parentSelfStyle.textBaseline;
var zrTextBaseline = textBaseline;
if (!textBaseline || textBaseline === "auto") {
zrTextBaseline = "alphabetic";
} else if (textBaseline === "baseline") {
zrTextBaseline = "alphabetic";
} else if (textBaseline === "before-edge" || textBaseline === "text-before-edge") {
zrTextBaseline = "top";
} else if (textBaseline === "after-edge" || textBaseline === "text-after-edge") {
zrTextBaseline = "bottom";
} else if (textBaseline === "central" || textBaseline === "mathematical") {
zrTextBaseline = "middle";
}
text.style.textBaseline = zrTextBaseline;
}
var parentInheritedStyle = parentGroup.__inheritedStyle;
if (parentInheritedStyle) {
var textAlign = parentInheritedStyle.textAlign;
var zrTextAlign = textAlign;
if (textAlign) {
if (textAlign === "middle") {
zrTextAlign = "center";
}
text.style.textAlign = zrTextAlign;
}
}
}
var urlRegex = /^url\(\s*#(.*?)\)/;
function getFillStrokeStyle(el2, method4, str, defsUsePending) {
var urlMatch = str && str.match(urlRegex);
if (urlMatch) {
var url2 = trim$1(urlMatch[1]);
defsUsePending.push([el2, method4, url2]);
return;
}
if (str === "none") {
str = null;
}
return str;
}
function applyDefs(defs, defsUsePending) {
for (var i = 0; i < defsUsePending.length; i++) {
var item = defsUsePending[i];
item[0].style[item[1]] = defs[item[2]];
}
}
var numberReg = /-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g;
function splitNumberSequence(rawStr) {
return rawStr.match(numberReg) || [];
}
var transformRegex = /(translate|scale|rotate|skewX|skewY|matrix)\(([\-\s0-9\.eE,]*)\)/g;
var DEGREE_TO_ANGLE = Math.PI / 180;
function parseTransformAttribute(xmlNode, node2) {
var transform2 = xmlNode.getAttribute("transform");
if (transform2) {
transform2 = transform2.replace(/,/g, " ");
var transformOps_1 = [];
var mt = null;
transform2.replace(transformRegex, function(str, type22, value2) {
transformOps_1.push(type22, value2);
return "";
});
for (var i = transformOps_1.length - 1; i > 0; i -= 2) {
var value = transformOps_1[i];
var type4 = transformOps_1[i - 1];
var valueArr = splitNumberSequence(value);
mt = mt || create$1();
switch (type4) {
case "translate":
translate(mt, mt, [parseFloat(valueArr[0]), parseFloat(valueArr[1] || "0")]);
break;
case "scale":
scale$1(mt, mt, [parseFloat(valueArr[0]), parseFloat(valueArr[1] || valueArr[0])]);
break;
case "rotate":
rotate(mt, mt, -parseFloat(valueArr[0]) * DEGREE_TO_ANGLE, [
parseFloat(valueArr[1] || "0"),
parseFloat(valueArr[2] || "0")
]);
break;
case "skewX":
var sx = Math.tan(parseFloat(valueArr[0]) * DEGREE_TO_ANGLE);
mul(mt, [1, 0, sx, 1, 0, 0], mt);
break;
case "skewY":
var sy = Math.tan(parseFloat(valueArr[0]) * DEGREE_TO_ANGLE);
mul(mt, [1, sy, 0, 1, 0, 0], mt);
break;
case "matrix":
mt[0] = parseFloat(valueArr[0]);
mt[1] = parseFloat(valueArr[1]);
mt[2] = parseFloat(valueArr[2]);
mt[3] = parseFloat(valueArr[3]);
mt[4] = parseFloat(valueArr[4]);
mt[5] = parseFloat(valueArr[5]);
break;
}
}
node2.setLocalTransform(mt);
}
}
var styleRegex = /([^\s:;]+)\s*:\s*([^:;]+)/g;
function parseInlineStyle(xmlNode, inheritableStyleResult, selfStyleResult) {
var style2 = xmlNode.getAttribute("style");
if (!style2) {
return;
}
styleRegex.lastIndex = 0;
var styleRegResult;
while ((styleRegResult = styleRegex.exec(style2)) != null) {
var svgStlAttr = styleRegResult[1];
var zrInheritableStlAttr = hasOwn(INHERITABLE_STYLE_ATTRIBUTES_MAP, svgStlAttr) ? INHERITABLE_STYLE_ATTRIBUTES_MAP[svgStlAttr] : null;
if (zrInheritableStlAttr) {
inheritableStyleResult[zrInheritableStlAttr] = styleRegResult[2];
}
var zrSelfStlAttr = hasOwn(SELF_STYLE_ATTRIBUTES_MAP, svgStlAttr) ? SELF_STYLE_ATTRIBUTES_MAP[svgStlAttr] : null;
if (zrSelfStlAttr) {
selfStyleResult[zrSelfStlAttr] = styleRegResult[2];
}
}
}
function parseAttributeStyle(xmlNode, inheritableStyleResult, selfStyleResult) {
for (var i = 0; i < INHERITABLE_STYLE_ATTRIBUTES_MAP_KEYS.length; i++) {
var svgAttrName = INHERITABLE_STYLE_ATTRIBUTES_MAP_KEYS[i];
var attrValue = xmlNode.getAttribute(svgAttrName);
if (attrValue != null) {
inheritableStyleResult[INHERITABLE_STYLE_ATTRIBUTES_MAP[svgAttrName]] = attrValue;
}
}
for (var i = 0; i < SELF_STYLE_ATTRIBUTES_MAP_KEYS.length; i++) {
var svgAttrName = SELF_STYLE_ATTRIBUTES_MAP_KEYS[i];
var attrValue = xmlNode.getAttribute(svgAttrName);
if (attrValue != null) {
selfStyleResult[SELF_STYLE_ATTRIBUTES_MAP[svgAttrName]] = attrValue;
}
}
}
function makeViewBoxTransform(viewBoxRect, boundingRect) {
var scaleX = boundingRect.width / viewBoxRect.width;
var scaleY = boundingRect.height / viewBoxRect.height;
var scale2 = Math.min(scaleX, scaleY);
return {
scale: scale2,
x: -(viewBoxRect.x + viewBoxRect.width / 2) * scale2 + (boundingRect.x + boundingRect.width / 2),
y: -(viewBoxRect.y + viewBoxRect.height / 2) * scale2 + (boundingRect.y + boundingRect.height / 2)
};
}
function parseSVG(xml, opt) {
var parser = new SVGParser();
return parser.parse(xml, opt);
}
var REGION_AVAILABLE_SVG_TAG_MAP = createHashMap([
"rect",
"circle",
"line",
"ellipse",
"polygon",
"polyline",
"path",
// <text> <tspan> are also enabled because some SVG might paint text itself,
// but still need to trigger events or tooltip.
"text",
"tspan",
// <g> is also enabled because this case: if multiple tags share one name
// and need label displayed, every tags will display the name, which is not
// expected. So we can put them into a <g name="xxx">. Thereby only one label
// displayed and located based on the bounding rect of the <g>.
"g"
]);
var GeoSVGResource = (
/** @class */
function() {
function GeoSVGResource2(mapName, svg) {
this.type = "geoSVG";
this._usedGraphicMap = createHashMap();
this._freedGraphics = [];
this._mapName = mapName;
this._parsedXML = parseXML(svg);
}
GeoSVGResource2.prototype.load = function() {
var firstGraphic = this._firstGraphic;
if (!firstGraphic) {
firstGraphic = this._firstGraphic = this._buildGraphic(this._parsedXML);
this._freedGraphics.push(firstGraphic);
this._boundingRect = this._firstGraphic.boundingRect.clone();
var _a2 = createRegions(firstGraphic.named), regions = _a2.regions, regionsMap = _a2.regionsMap;
this._regions = regions;
this._regionsMap = regionsMap;
}
return {
boundingRect: this._boundingRect,
regions: this._regions,
regionsMap: this._regionsMap
};
};
GeoSVGResource2.prototype._buildGraphic = function(svgXML) {
var result;
var rootFromParse;
try {
result = svgXML && parseSVG(svgXML, {
ignoreViewBox: true,
ignoreRootClip: true
}) || {};
rootFromParse = result.root;
assert(rootFromParse != null);
} catch (e2) {
throw new Error("Invalid svg format\n" + e2.message);
}
var root = new Group$3();
root.add(rootFromParse);
root.isGeoSVGGraphicRoot = true;
var svgWidth = result.width;
var svgHeight = result.height;
var viewBoxRect = result.viewBoxRect;
var boundingRect = this._boundingRect;
if (!boundingRect) {
var bRectX = void 0;
var bRectY = void 0;
var bRectWidth = void 0;
var bRectHeight = void 0;
if (svgWidth != null) {
bRectX = 0;
bRectWidth = svgWidth;
} else if (viewBoxRect) {
bRectX = viewBoxRect.x;
bRectWidth = viewBoxRect.width;
}
if (svgHeight != null) {
bRectY = 0;
bRectHeight = svgHeight;
} else if (viewBoxRect) {
bRectY = viewBoxRect.y;
bRectHeight = viewBoxRect.height;
}
if (bRectX == null || bRectY == null) {
var calculatedBoundingRect = rootFromParse.getBoundingRect();
if (bRectX == null) {
bRectX = calculatedBoundingRect.x;
bRectWidth = calculatedBoundingRect.width;
}
if (bRectY == null) {
bRectY = calculatedBoundingRect.y;
bRectHeight = calculatedBoundingRect.height;
}
}
boundingRect = this._boundingRect = new BoundingRect(bRectX, bRectY, bRectWidth, bRectHeight);
}
if (viewBoxRect) {
var viewBoxTransform = makeViewBoxTransform(viewBoxRect, boundingRect);
rootFromParse.scaleX = rootFromParse.scaleY = viewBoxTransform.scale;
rootFromParse.x = viewBoxTransform.x;
rootFromParse.y = viewBoxTransform.y;
}
root.setClipPath(new Rect$2({
shape: boundingRect.plain()
}));
var named = [];
each$f(result.named, function(namedItem) {
if (REGION_AVAILABLE_SVG_TAG_MAP.get(namedItem.svgNodeTagLower) != null) {
named.push(namedItem);
setSilent(namedItem.el);
}
});
return {
root,
boundingRect,
named
};
};
GeoSVGResource2.prototype.useGraphic = function(hostKey) {
var usedRootMap = this._usedGraphicMap;
var svgGraphic = usedRootMap.get(hostKey);
if (svgGraphic) {
return svgGraphic;
}
svgGraphic = this._freedGraphics.pop() || this._buildGraphic(this._parsedXML);
usedRootMap.set(hostKey, svgGraphic);
return svgGraphic;
};
GeoSVGResource2.prototype.freeGraphic = function(hostKey) {
var usedRootMap = this._usedGraphicMap;
var svgGraphic = usedRootMap.get(hostKey);
if (svgGraphic) {
usedRootMap.removeKey(hostKey);
this._freedGraphics.push(svgGraphic);
}
};
return GeoSVGResource2;
}()
);
function setSilent(el2) {
el2.silent = false;
if (el2.isGroup) {
el2.traverse(function(child) {
child.silent = false;
});
}
}
function createRegions(named) {
var regions = [];
var regionsMap = createHashMap();
each$f(named, function(namedItem) {
if (namedItem.namedFrom != null) {
return;
}
var region = new GeoSVGRegion(namedItem.name, namedItem.el);
regions.push(region);
regionsMap.set(namedItem.name, region);
});
return {
regions,
regionsMap
};
}
var geoCoord = [126, 25];
var nanhaiName = "南海诸岛";
var points$1 = [[[0, 3.5], [7, 11.2], [15, 11.9], [30, 7], [42, 0.7], [52, 0.7], [56, 7.7], [59, 0.7], [64, 0.7], [64, 0], [5, 0], [0, 3.5]], [[13, 16.1], [19, 14.7], [16, 21.7], [11, 23.1], [13, 16.1]], [[12, 32.2], [14, 38.5], [15, 38.5], [13, 32.2], [12, 32.2]], [[16, 47.6], [12, 53.2], [13, 53.2], [18, 47.6], [16, 47.6]], [[6, 64.4], [8, 70], [9, 70], [8, 64.4], [6, 64.4]], [[23, 82.6], [29, 79.8], [30, 79.8], [25, 82.6], [23, 82.6]], [[37, 70.7], [43, 62.3], [44, 62.3], [39, 70.7], [37, 70.7]], [[48, 51.1], [51, 45.5], [53, 45.5], [50, 51.1], [48, 51.1]], [[51, 35], [51, 28.7], [53, 28.7], [53, 35], [51, 35]], [[52, 22.4], [55, 17.5], [56, 17.5], [53, 22.4], [52, 22.4]], [[58, 12.6], [62, 7], [63, 7], [60, 12.6], [58, 12.6]], [[0, 3.5], [0, 93.1], [64, 93.1], [64, 0], [63, 0], [63, 92.4], [1, 92.4], [1, 3.5], [0, 3.5]]];
for (var i = 0; i < points$1.length; i++) {
for (var k$1 = 0; k$1 < points$1[i].length; k$1++) {
points$1[i][k$1][0] /= 10.5;
points$1[i][k$1][1] /= -10.5 / 0.75;
points$1[i][k$1][0] += geoCoord[0];
points$1[i][k$1][1] += geoCoord[1];
}
}
function fixNanhai(mapType, regions) {
if (mapType === "china") {
for (var i = 0; i < regions.length; i++) {
if (regions[i].name === nanhaiName) {
return;
}
}
regions.push(new GeoJSONRegion(nanhaiName, map$1(points$1, function(exterior) {
return {
type: "polygon",
exterior
};
}), geoCoord));
}
}
var coordsOffsetMap = {
"南海诸岛": [32, 80],
// 全国
"广东": [0, -10],
"香港": [10, 5],
"澳门": [-10, 10],
// '北京': [-10, 0],
"天津": [5, 5]
};
function fixTextCoords(mapType, region) {
if (mapType === "china") {
var coordFix = coordsOffsetMap[region.name];
if (coordFix) {
var cp = region.getCenter();
cp[0] += coordFix[0] / 10.5;
cp[1] += -coordFix[1] / (10.5 / 0.75);
region.setCenter(cp);
}
}
}
var points = [[[123.45165252685547, 25.73527164402261], [123.49731445312499, 25.73527164402261], [123.49731445312499, 25.750734064600884], [123.45165252685547, 25.750734064600884], [123.45165252685547, 25.73527164402261]]];
function fixDiaoyuIsland(mapType, region) {
if (mapType === "china" && region.name === "台湾") {
region.geometries.push({
type: "polygon",
exterior: points[0]
});
}
}
var DEFAULT_NAME_PROPERTY = "name";
var GeoJSONResource = (
/** @class */
function() {
function GeoJSONResource2(mapName, geoJSON, specialAreas) {
this.type = "geoJSON";
this._parsedMap = createHashMap();
this._mapName = mapName;
this._specialAreas = specialAreas;
this._geoJSON = parseInput(geoJSON);
}
GeoJSONResource2.prototype.load = function(nameMap, nameProperty) {
nameProperty = nameProperty || DEFAULT_NAME_PROPERTY;
var parsed = this._parsedMap.get(nameProperty);
if (!parsed) {
var rawRegions = this._parseToRegions(nameProperty);
parsed = this._parsedMap.set(nameProperty, {
regions: rawRegions,
boundingRect: calculateBoundingRect(rawRegions)
});
}
var regionsMap = createHashMap();
var finalRegions = [];
each$f(parsed.regions, function(region) {
var regionName = region.name;
if (nameMap && hasOwn(nameMap, regionName)) {
region = region.cloneShallow(regionName = nameMap[regionName]);
}
finalRegions.push(region);
regionsMap.set(regionName, region);
});
return {
regions: finalRegions,
boundingRect: parsed.boundingRect || new BoundingRect(0, 0, 0, 0),
regionsMap
};
};
GeoJSONResource2.prototype._parseToRegions = function(nameProperty) {
var mapName = this._mapName;
var geoJSON = this._geoJSON;
var rawRegions;
try {
rawRegions = geoJSON ? parseGeoJSON(geoJSON, nameProperty) : [];
} catch (e2) {
throw new Error("Invalid geoJson format\n" + e2.message);
}
fixNanhai(mapName, rawRegions);
each$f(rawRegions, function(region) {
var regionName = region.name;
fixTextCoords(mapName, region);
fixDiaoyuIsland(mapName, region);
var specialArea = this._specialAreas && this._specialAreas[regionName];
if (specialArea) {
region.transformTo(specialArea.left, specialArea.top, specialArea.width, specialArea.height);
}
}, this);
return rawRegions;
};
GeoJSONResource2.prototype.getMapForUser = function() {
return {
// For backward compatibility, use geoJson
// PENDING: it has been returning them without clone.
// do we need to avoid outsite modification?
geoJson: this._geoJSON,
geoJSON: this._geoJSON,
specialAreas: this._specialAreas
};
};
return GeoJSONResource2;
}()
);
function calculateBoundingRect(regions) {
var rect;
for (var i = 0; i < regions.length; i++) {
var regionRect = regions[i].getBoundingRect();
rect = rect || regionRect.clone();
rect.union(regionRect);
}
return rect;
}
function parseInput(source) {
return !isString$1(source) ? source : typeof JSON !== "undefined" && JSON.parse ? JSON.parse(source) : new Function("return (" + source + ");")();
}
var storage = createHashMap();
const geoSourceManager = {
/**
* Compatible with previous `echarts.registerMap`.
*
* @usage
* ```js
*
* echarts.registerMap('USA', geoJson, specialAreas);
*
* echarts.registerMap('USA', {
* geoJson: geoJson,
* specialAreas: {...}
* });
* echarts.registerMap('USA', {
* geoJSON: geoJson,
* specialAreas: {...}
* });
*
* echarts.registerMap('airport', {
* svg: svg
* }
* ```
*
* Note:
* Do not support that register multiple geoJSON or SVG
* one map name. Because different geoJSON and SVG have
* different unit. It's not easy to make sure how those
* units are mapping/normalize.
* If intending to use multiple geoJSON or SVG, we can
* use multiple geo coordinate system.
*/
registerMap: function(mapName, rawDef, rawSpecialAreas) {
if (rawDef.svg) {
var resource = new GeoSVGResource(mapName, rawDef.svg);
storage.set(mapName, resource);
} else {
var geoJSON = rawDef.geoJson || rawDef.geoJSON;
if (geoJSON && !rawDef.features) {
rawSpecialAreas = rawDef.specialAreas;
} else {
geoJSON = rawDef;
}
var resource = new GeoJSONResource(mapName, geoJSON, rawSpecialAreas);
storage.set(mapName, resource);
}
},
getGeoResource: function(mapName) {
return storage.get(mapName);
},
/**
* Only for exporting to users.
* **MUST NOT** used internally.
*/
getMapForUser: function(mapName) {
var resource = storage.get(mapName);
return resource && resource.type === "geoJSON" && resource.getMapForUser();
},
load: function(mapName, nameMap, nameProperty) {
var resource = storage.get(mapName);
if (!resource) {
return;
}
return resource.load(nameMap, nameProperty);
}
};
var OPTION_STYLE_ENABLED_TAGS = ["rect", "circle", "line", "ellipse", "polygon", "polyline", "path"];
var OPTION_STYLE_ENABLED_TAG_MAP = createHashMap(OPTION_STYLE_ENABLED_TAGS);
var STATE_TRIGGER_TAG_MAP = createHashMap(OPTION_STYLE_ENABLED_TAGS.concat(["g"]));
var LABEL_HOST_MAP = createHashMap(OPTION_STYLE_ENABLED_TAGS.concat(["g"]));
var mapLabelRaw = makeInner();
function getFixedItemStyle(model) {
var itemStyle = model.getItemStyle();
var areaColor = model.get("areaColor");
if (areaColor != null) {
itemStyle.fill = areaColor;
}
return itemStyle;
}
function fixLineStyle(styleHost) {
var style2 = styleHost.style;
if (style2) {
style2.stroke = style2.stroke || style2.fill;
style2.fill = null;
}
}
var MapDraw = (
/** @class */
function() {
function MapDraw2(api) {
var group = new Group$3();
this.uid = getUID("ec_map_draw");
this._controller = new RoamController(api.getZr());
this._controllerHost = {
target: group
};
this.group = group;
group.add(this._regionsGroup = new Group$3());
group.add(this._svgGroup = new Group$3());
}
MapDraw2.prototype.draw = function(mapOrGeoModel, ecModel, api, fromView, payload) {
var isGeo = mapOrGeoModel.mainType === "geo";
var data = mapOrGeoModel.getData && mapOrGeoModel.getData();
isGeo && ecModel.eachComponent({
mainType: "series",
subType: "map"
}, function(mapSeries) {
if (!data && mapSeries.getHostGeoModel() === mapOrGeoModel) {
data = mapSeries.getData();
}
});
var geo = mapOrGeoModel.coordinateSystem;
var regionsGroup = this._regionsGroup;
var group = this.group;
var transformInfo = geo.getTransformInfo();
var transformInfoRaw = transformInfo.raw;
var transformInfoRoam = transformInfo.roam;
var isFirstDraw = !regionsGroup.childAt(0) || payload;
if (isFirstDraw) {
group.x = transformInfoRoam.x;
group.y = transformInfoRoam.y;
group.scaleX = transformInfoRoam.scaleX;
group.scaleY = transformInfoRoam.scaleY;
group.dirty();
} else {
updateProps$1(group, transformInfoRoam, mapOrGeoModel);
}
var isVisualEncodedByVisualMap = data && data.getVisual("visualMeta") && data.getVisual("visualMeta").length > 0;
var viewBuildCtx = {
api,
geo,
mapOrGeoModel,
data,
isVisualEncodedByVisualMap,
isGeo,
transformInfoRaw
};
if (geo.resourceType === "geoJSON") {
this._buildGeoJSON(viewBuildCtx);
} else if (geo.resourceType === "geoSVG") {
this._buildSVG(viewBuildCtx);
}
this._updateController(mapOrGeoModel, ecModel, api);
this._updateMapSelectHandler(mapOrGeoModel, regionsGroup, api, fromView);
};
MapDraw2.prototype._buildGeoJSON = function(viewBuildCtx) {
var regionsGroupByName = this._regionsGroupByName = createHashMap();
var regionsInfoByName = createHashMap();
var regionsGroup = this._regionsGroup;
var transformInfoRaw = viewBuildCtx.transformInfoRaw;
var mapOrGeoModel = viewBuildCtx.mapOrGeoModel;
var data = viewBuildCtx.data;
var projection = viewBuildCtx.geo.projection;
var projectionStream = projection && projection.stream;
function transformPoint(point, project) {
if (project) {
point = project(point);
}
return point && [point[0] * transformInfoRaw.scaleX + transformInfoRaw.x, point[1] * transformInfoRaw.scaleY + transformInfoRaw.y];
}
function transformPolygonPoints(inPoints) {
var outPoints = [];
var project = !projectionStream && projection && projection.project;
for (var i = 0; i < inPoints.length; ++i) {
var newPt = transformPoint(inPoints[i], project);
newPt && outPoints.push(newPt);
}
return outPoints;
}
function getPolyShape(points2) {
return {
shape: {
points: transformPolygonPoints(points2)
}
};
}
regionsGroup.removeAll();
each$f(viewBuildCtx.geo.regions, function(region) {
var regionName = region.name;
var regionGroup = regionsGroupByName.get(regionName);
var _a2 = regionsInfoByName.get(regionName) || {}, dataIdx = _a2.dataIdx, regionModel = _a2.regionModel;
if (!regionGroup) {
regionGroup = regionsGroupByName.set(regionName, new Group$3());
regionsGroup.add(regionGroup);
dataIdx = data ? data.indexOfName(regionName) : null;
regionModel = viewBuildCtx.isGeo ? mapOrGeoModel.getRegionModel(regionName) : data ? data.getItemModel(dataIdx) : null;
regionsInfoByName.set(regionName, {
dataIdx,
regionModel
});
}
var polygonSubpaths = [];
var polylineSubpaths = [];
each$f(region.geometries, function(geometry) {
if (geometry.type === "polygon") {
var polys = [geometry.exterior].concat(geometry.interiors || []);
if (projectionStream) {
polys = projectPolys(polys, projectionStream);
}
each$f(polys, function(poly) {
polygonSubpaths.push(new Polygon(getPolyShape(poly)));
});
} else {
var points2 = geometry.points;
if (projectionStream) {
points2 = projectPolys(points2, projectionStream, true);
}
each$f(points2, function(points3) {
polylineSubpaths.push(new Polyline$1(getPolyShape(points3)));
});
}
});
var centerPt = transformPoint(region.getCenter(), projection && projection.project);
function createCompoundPath(subpaths, isLine) {
if (!subpaths.length) {
return;
}
var compoundPath = new CompoundPath({
culling: true,
segmentIgnoreThreshold: 1,
shape: {
paths: subpaths
}
});
regionGroup.add(compoundPath);
applyOptionStyleForRegion(viewBuildCtx, compoundPath, dataIdx, regionModel);
resetLabelForRegion(viewBuildCtx, compoundPath, regionName, regionModel, mapOrGeoModel, dataIdx, centerPt);
if (isLine) {
fixLineStyle(compoundPath);
each$f(compoundPath.states, fixLineStyle);
}
}
createCompoundPath(polygonSubpaths);
createCompoundPath(polylineSubpaths, true);
});
regionsGroupByName.each(function(regionGroup, regionName) {
var _a2 = regionsInfoByName.get(regionName), dataIdx = _a2.dataIdx, regionModel = _a2.regionModel;
resetEventTriggerForRegion(viewBuildCtx, regionGroup, regionName, regionModel, mapOrGeoModel, dataIdx);
resetTooltipForRegion(viewBuildCtx, regionGroup, regionName, regionModel, mapOrGeoModel);
resetStateTriggerForRegion(viewBuildCtx, regionGroup, regionName, regionModel, mapOrGeoModel);
}, this);
};
MapDraw2.prototype._buildSVG = function(viewBuildCtx) {
var mapName = viewBuildCtx.geo.map;
var transformInfoRaw = viewBuildCtx.transformInfoRaw;
this._svgGroup.x = transformInfoRaw.x;
this._svgGroup.y = transformInfoRaw.y;
this._svgGroup.scaleX = transformInfoRaw.scaleX;
this._svgGroup.scaleY = transformInfoRaw.scaleY;
if (this._svgResourceChanged(mapName)) {
this._freeSVG();
this._useSVG(mapName);
}
var svgDispatcherMap = this._svgDispatcherMap = createHashMap();
var focusSelf = false;
each$f(this._svgGraphicRecord.named, function(namedItem) {
var regionName = namedItem.name;
var mapOrGeoModel = viewBuildCtx.mapOrGeoModel;
var data = viewBuildCtx.data;
var svgNodeTagLower = namedItem.svgNodeTagLower;
var el2 = namedItem.el;
var dataIdx = data ? data.indexOfName(regionName) : null;
var regionModel = mapOrGeoModel.getRegionModel(regionName);
if (OPTION_STYLE_ENABLED_TAG_MAP.get(svgNodeTagLower) != null && el2 instanceof Displayable) {
applyOptionStyleForRegion(viewBuildCtx, el2, dataIdx, regionModel);
}
if (el2 instanceof Displayable) {
el2.culling = true;
}
el2.z2EmphasisLift = 0;
if (!namedItem.namedFrom) {
if (LABEL_HOST_MAP.get(svgNodeTagLower) != null) {
resetLabelForRegion(viewBuildCtx, el2, regionName, regionModel, mapOrGeoModel, dataIdx, null);
}
resetEventTriggerForRegion(viewBuildCtx, el2, regionName, regionModel, mapOrGeoModel, dataIdx);
resetTooltipForRegion(viewBuildCtx, el2, regionName, regionModel, mapOrGeoModel);
if (STATE_TRIGGER_TAG_MAP.get(svgNodeTagLower) != null) {
var focus_1 = resetStateTriggerForRegion(viewBuildCtx, el2, regionName, regionModel, mapOrGeoModel);
if (focus_1 === "self") {
focusSelf = true;
}
var els = svgDispatcherMap.get(regionName) || svgDispatcherMap.set(regionName, []);
els.push(el2);
}
}
}, this);
this._enableBlurEntireSVG(focusSelf, viewBuildCtx);
};
MapDraw2.prototype._enableBlurEntireSVG = function(focusSelf, viewBuildCtx) {
if (focusSelf && viewBuildCtx.isGeo) {
var blurStyle = viewBuildCtx.mapOrGeoModel.getModel(["blur", "itemStyle"]).getItemStyle();
var opacity_1 = blurStyle.opacity;
this._svgGraphicRecord.root.traverse(function(el2) {
if (!el2.isGroup) {
setDefaultStateProxy(el2);
var style2 = el2.ensureState("blur").style || {};
if (style2.opacity == null && opacity_1 != null) {
style2.opacity = opacity_1;
}
el2.ensureState("emphasis");
}
});
}
};
MapDraw2.prototype.remove = function() {
this._regionsGroup.removeAll();
this._regionsGroupByName = null;
this._svgGroup.removeAll();
this._freeSVG();
this._controller.dispose();
this._controllerHost = null;
};
MapDraw2.prototype.findHighDownDispatchers = function(name, geoModel) {
if (name == null) {
return [];
}
var geo = geoModel.coordinateSystem;
if (geo.resourceType === "geoJSON") {
var regionsGroupByName = this._regionsGroupByName;
if (regionsGroupByName) {
var regionGroup = regionsGroupByName.get(name);
return regionGroup ? [regionGroup] : [];
}
} else if (geo.resourceType === "geoSVG") {
return this._svgDispatcherMap && this._svgDispatcherMap.get(name) || [];
}
};
MapDraw2.prototype._svgResourceChanged = function(mapName) {
return this._svgMapName !== mapName;
};
MapDraw2.prototype._useSVG = function(mapName) {
var resource = geoSourceManager.getGeoResource(mapName);
if (resource && resource.type === "geoSVG") {
var svgGraphic = resource.useGraphic(this.uid);
this._svgGroup.add(svgGraphic.root);
this._svgGraphicRecord = svgGraphic;
this._svgMapName = mapName;
}
};
MapDraw2.prototype._freeSVG = function() {
var mapName = this._svgMapName;
if (mapName == null) {
return;
}
var resource = geoSourceManager.getGeoResource(mapName);
if (resource && resource.type === "geoSVG") {
resource.freeGraphic(this.uid);
}
this._svgGraphicRecord = null;
this._svgDispatcherMap = null;
this._svgGroup.removeAll();
this._svgMapName = null;
};
MapDraw2.prototype._updateController = function(mapOrGeoModel, ecModel, api) {
var geo = mapOrGeoModel.coordinateSystem;
var controller = this._controller;
var controllerHost = this._controllerHost;
controllerHost.zoomLimit = mapOrGeoModel.get("scaleLimit");
controllerHost.zoom = geo.getZoom();
controller.enable(mapOrGeoModel.get("roam") || false);
var mainType = mapOrGeoModel.mainType;
function makeActionBase() {
var action = {
type: "geoRoam",
componentType: mainType
};
action[mainType + "Id"] = mapOrGeoModel.id;
return action;
}
controller.off("pan").on("pan", function(e2) {
this._mouseDownFlag = false;
updateViewOnPan(controllerHost, e2.dx, e2.dy);
api.dispatchAction(extend(makeActionBase(), {
dx: e2.dx,
dy: e2.dy,
animation: {
duration: 0
}
}));
}, this);
controller.off("zoom").on("zoom", function(e2) {
this._mouseDownFlag = false;
updateViewOnZoom(controllerHost, e2.scale, e2.originX, e2.originY);
api.dispatchAction(extend(makeActionBase(), {
totalZoom: controllerHost.zoom,
zoom: e2.scale,
originX: e2.originX,
originY: e2.originY,
animation: {
duration: 0
}
}));
}, this);
controller.setPointerChecker(function(e2, x2, y2) {
return geo.containPoint([x2, y2]) && !onIrrelevantElement(e2, api, mapOrGeoModel);
});
};
MapDraw2.prototype.resetForLabelLayout = function() {
this.group.traverse(function(el2) {
var label = el2.getTextContent();
if (label) {
label.ignore = mapLabelRaw(label).ignore;
}
});
};
MapDraw2.prototype._updateMapSelectHandler = function(mapOrGeoModel, regionsGroup, api, fromView) {
var mapDraw = this;
regionsGroup.off("mousedown");
regionsGroup.off("click");
if (mapOrGeoModel.get("selectedMode")) {
regionsGroup.on("mousedown", function() {
mapDraw._mouseDownFlag = true;
});
regionsGroup.on("click", function(e2) {
if (!mapDraw._mouseDownFlag) {
return;
}
mapDraw._mouseDownFlag = false;
});
}
};
return MapDraw2;
}()
);
function applyOptionStyleForRegion(viewBuildCtx, el2, dataIndex, regionModel) {
var normalStyleModel = regionModel.getModel("itemStyle");
var emphasisStyleModel = regionModel.getModel(["emphasis", "itemStyle"]);
var blurStyleModel = regionModel.getModel(["blur", "itemStyle"]);
var selectStyleModel = regionModel.getModel(["select", "itemStyle"]);
var normalStyle = getFixedItemStyle(normalStyleModel);
var emphasisStyle = getFixedItemStyle(emphasisStyleModel);
var selectStyle = getFixedItemStyle(selectStyleModel);
var blurStyle = getFixedItemStyle(blurStyleModel);
var data = viewBuildCtx.data;
if (data) {
var style2 = data.getItemVisual(dataIndex, "style");
var decal = data.getItemVisual(dataIndex, "decal");
if (viewBuildCtx.isVisualEncodedByVisualMap && style2.fill) {
normalStyle.fill = style2.fill;
}
if (decal) {
normalStyle.decal = createOrUpdatePatternFromDecal(decal, viewBuildCtx.api);
}
}
el2.setStyle(normalStyle);
el2.style.strokeNoScale = true;
el2.ensureState("emphasis").style = emphasisStyle;
el2.ensureState("select").style = selectStyle;
el2.ensureState("blur").style = blurStyle;
setDefaultStateProxy(el2);
}
function resetLabelForRegion(viewBuildCtx, el2, regionName, regionModel, mapOrGeoModel, dataIdx, labelXY) {
var data = viewBuildCtx.data;
var isGeo = viewBuildCtx.isGeo;
var isDataNaN = data && isNaN(data.get(data.mapDimension("value"), dataIdx));
var itemLayout = data && data.getItemLayout(dataIdx);
if (isGeo || isDataNaN || itemLayout && itemLayout.showLabel) {
var query = !isGeo ? dataIdx : regionName;
var labelFetcher = void 0;
if (!data || dataIdx >= 0) {
labelFetcher = mapOrGeoModel;
}
var specifiedTextOpt = labelXY ? {
normal: {
align: "center",
verticalAlign: "middle"
}
} : null;
setLabelStyle(el2, getLabelStatesModels(regionModel), {
labelFetcher,
labelDataIndex: query,
defaultText: regionName
}, specifiedTextOpt);
var textEl = el2.getTextContent();
if (textEl) {
mapLabelRaw(textEl).ignore = textEl.ignore;
if (el2.textConfig && labelXY) {
var rect = el2.getBoundingRect().clone();
el2.textConfig.layoutRect = rect;
el2.textConfig.position = [(labelXY[0] - rect.x) / rect.width * 100 + "%", (labelXY[1] - rect.y) / rect.height * 100 + "%"];
}
}
el2.disableLabelAnimation = true;
} else {
el2.removeTextContent();
el2.removeTextConfig();
el2.disableLabelAnimation = null;
}
}
function resetEventTriggerForRegion(viewBuildCtx, eventTrigger, regionName, regionModel, mapOrGeoModel, dataIdx) {
if (viewBuildCtx.data) {
viewBuildCtx.data.setItemGraphicEl(dataIdx, eventTrigger);
} else {
getECData(eventTrigger).eventData = {
componentType: "geo",
componentIndex: mapOrGeoModel.componentIndex,
geoIndex: mapOrGeoModel.componentIndex,
name: regionName,
region: regionModel && regionModel.option || {}
};
}
}
function resetTooltipForRegion(viewBuildCtx, el2, regionName, regionModel, mapOrGeoModel) {
if (!viewBuildCtx.data) {
setTooltipConfig({
el: el2,
componentModel: mapOrGeoModel,
itemName: regionName,
// @ts-ignore FIXME:TS fix the "compatible with each other"?
itemTooltipOption: regionModel.get("tooltip")
});
}
}
function resetStateTriggerForRegion(viewBuildCtx, el2, regionName, regionModel, mapOrGeoModel) {
el2.highDownSilentOnTouch = !!mapOrGeoModel.get("selectedMode");
var emphasisModel = regionModel.getModel("emphasis");
var focus = emphasisModel.get("focus");
toggleHoverEmphasis(el2, focus, emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
if (viewBuildCtx.isGeo) {
enableComponentHighDownFeatures(el2, mapOrGeoModel, regionName);
}
return focus;
}
function projectPolys(rings, createStream, isLine) {
var polygons = [];
var curPoly;
function startPolygon() {
curPoly = [];
}
function endPolygon() {
if (curPoly.length) {
polygons.push(curPoly);
curPoly = [];
}
}
var stream = createStream({
polygonStart: startPolygon,
polygonEnd: endPolygon,
lineStart: startPolygon,
lineEnd: endPolygon,
point: function(x2, y2) {
if (isFinite(x2) && isFinite(y2)) {
curPoly.push([x2, y2]);
}
},
sphere: function() {
}
});
!isLine && stream.polygonStart();
each$f(rings, function(ring) {
stream.lineStart();
for (var i = 0; i < ring.length; i++) {
stream.point(ring[i][0], ring[i][1]);
}
stream.lineEnd();
});
!isLine && stream.polygonEnd();
return polygons;
}
var MapView = (
/** @class */
function(_super) {
__extends(MapView2, _super);
function MapView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = MapView2.type;
return _this;
}
MapView2.prototype.render = function(mapModel, ecModel, api, payload) {
if (payload && payload.type === "mapToggleSelect" && payload.from === this.uid) {
return;
}
var group = this.group;
group.removeAll();
if (mapModel.getHostGeoModel()) {
return;
}
if (this._mapDraw && payload && payload.type === "geoRoam") {
this._mapDraw.resetForLabelLayout();
}
if (!(payload && payload.type === "geoRoam" && payload.componentType === "series" && payload.seriesId === mapModel.id)) {
if (mapModel.needsDrawMap) {
var mapDraw = this._mapDraw || new MapDraw(api);
group.add(mapDraw.group);
mapDraw.draw(mapModel, ecModel, api, this, payload);
this._mapDraw = mapDraw;
} else {
this._mapDraw && this._mapDraw.remove();
this._mapDraw = null;
}
} else {
var mapDraw = this._mapDraw;
mapDraw && group.add(mapDraw.group);
}
mapModel.get("showLegendSymbol") && ecModel.getComponent("legend") && this._renderSymbols(mapModel, ecModel, api);
};
MapView2.prototype.remove = function() {
this._mapDraw && this._mapDraw.remove();
this._mapDraw = null;
this.group.removeAll();
};
MapView2.prototype.dispose = function() {
this._mapDraw && this._mapDraw.remove();
this._mapDraw = null;
};
MapView2.prototype._renderSymbols = function(mapModel, ecModel, api) {
var originalData = mapModel.originalData;
var group = this.group;
originalData.each(originalData.mapDimension("value"), function(value, originalDataIndex) {
if (isNaN(value)) {
return;
}
var layout2 = originalData.getItemLayout(originalDataIndex);
if (!layout2 || !layout2.point) {
return;
}
var point = layout2.point;
var offset2 = layout2.offset;
var circle = new Circle({
style: {
// Because the special of map draw.
// Which needs statistic of multiple series and draw on one map.
// And each series also need a symbol with legend color
//
// Layout and visual are put one the different data
// TODO
fill: mapModel.getData().getVisual("style").fill
},
shape: {
cx: point[0] + offset2 * 9,
cy: point[1],
r: 3
},
silent: true,
// Do not overlap the first series, on which labels are displayed.
z2: 8 + (!offset2 ? Z2_EMPHASIS_LIFT + 1 : 0)
});
if (!offset2) {
var fullData = mapModel.mainSeries.getData();
var name_1 = originalData.getName(originalDataIndex);
var fullIndex_1 = fullData.indexOfName(name_1);
var itemModel = originalData.getItemModel(originalDataIndex);
var labelModel = itemModel.getModel("label");
var regionGroup = fullData.getItemGraphicEl(fullIndex_1);
setLabelStyle(circle, getLabelStatesModels(itemModel), {
labelFetcher: {
getFormattedLabel: function(idx, state) {
return mapModel.getFormattedLabel(fullIndex_1, state);
}
},
defaultText: name_1
});
circle.disableLabelAnimation = true;
if (!labelModel.get("position")) {
circle.setTextConfig({
position: "bottom"
});
}
regionGroup.onHoverStateChange = function(toState) {
setStatesFlag(circle, toState);
};
}
group.add(circle);
});
};
MapView2.type = "map";
return MapView2;
}(ChartView)
);
var MapSeries = (
/** @class */
function(_super) {
__extends(MapSeries2, _super);
function MapSeries2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = MapSeries2.type;
_this.needsDrawMap = false;
_this.seriesGroup = [];
_this.getTooltipPosition = function(dataIndex) {
if (dataIndex != null) {
var name_1 = this.getData().getName(dataIndex);
var geo = this.coordinateSystem;
var region = geo.getRegion(name_1);
return region && geo.dataToPoint(region.getCenter());
}
};
return _this;
}
MapSeries2.prototype.getInitialData = function(option) {
var data = createSeriesDataSimply(this, {
coordDimensions: ["value"],
encodeDefaulter: curry$1(makeSeriesEncodeForNameBased, this)
});
var dataNameMap = createHashMap();
var toAppendNames = [];
for (var i = 0, len2 = data.count(); i < len2; i++) {
var name_2 = data.getName(i);
dataNameMap.set(name_2, true);
}
var geoSource = geoSourceManager.load(this.getMapType(), this.option.nameMap, this.option.nameProperty);
each$f(geoSource.regions, function(region) {
var name = region.name;
if (!dataNameMap.get(name)) {
toAppendNames.push(name);
}
});
data.appendValues([], toAppendNames);
return data;
};
MapSeries2.prototype.getHostGeoModel = function() {
var geoIndex = this.option.geoIndex;
return geoIndex != null ? this.ecModel.getComponent("geo", geoIndex) : null;
};
MapSeries2.prototype.getMapType = function() {
return (this.getHostGeoModel() || this).option.map;
};
MapSeries2.prototype.getRawValue = function(dataIndex) {
var data = this.getData();
return data.get(data.mapDimension("value"), dataIndex);
};
MapSeries2.prototype.getRegionModel = function(regionName) {
var data = this.getData();
return data.getItemModel(data.indexOfName(regionName));
};
MapSeries2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) {
var data = this.getData();
var value = this.getRawValue(dataIndex);
var name = data.getName(dataIndex);
var seriesGroup = this.seriesGroup;
var seriesNames = [];
for (var i = 0; i < seriesGroup.length; i++) {
var otherIndex = seriesGroup[i].originalData.indexOfName(name);
var valueDim = data.mapDimension("value");
if (!isNaN(seriesGroup[i].originalData.get(valueDim, otherIndex))) {
seriesNames.push(seriesGroup[i].name);
}
}
return createTooltipMarkup("section", {
header: seriesNames.join(", "),
noHeader: !seriesNames.length,
blocks: [createTooltipMarkup("nameValue", {
name,
value
})]
});
};
MapSeries2.prototype.setZoom = function(zoom) {
this.option.zoom = zoom;
};
MapSeries2.prototype.setCenter = function(center2) {
this.option.center = center2;
};
MapSeries2.prototype.getLegendIcon = function(opt) {
var iconType = opt.icon || "roundRect";
var icon = createSymbol$1(iconType, 0, 0, opt.itemWidth, opt.itemHeight, opt.itemStyle.fill);
icon.setStyle(opt.itemStyle);
icon.style.stroke = "none";
if (iconType.indexOf("empty") > -1) {
icon.style.stroke = icon.style.fill;
icon.style.fill = "#fff";
icon.style.lineWidth = 2;
}
return icon;
};
MapSeries2.type = "series.map";
MapSeries2.dependencies = ["geo"];
MapSeries2.layoutMode = "box";
MapSeries2.defaultOption = {
// 一级层叠
// zlevel: 0,
// 二级层叠
z: 2,
coordinateSystem: "geo",
// map should be explicitly specified since ec3.
map: "",
// If `geoIndex` is not specified, a exclusive geo will be
// created. Otherwise use the specified geo component, and
// `map` and `mapType` are ignored.
// geoIndex: 0,
// 'center' | 'left' | 'right' | 'x%' | {number}
left: "center",
// 'center' | 'top' | 'bottom' | 'x%' | {number}
top: "center",
// right
// bottom
// width:
// height
// Aspect is width / height. Inited to be geoJson bbox aspect
// This parameter is used for scale this aspect
// Default value:
// for geoSVG source: 1,
// for geoJSON source: 0.75.
aspectScale: null,
// Layout with center and size
// If you want to put map in a fixed size box with right aspect ratio
// This two properties may be more convenient.
// layoutCenter: [50%, 50%]
// layoutSize: 100
showLegendSymbol: true,
// Define left-top, right-bottom coords to control view
// For example, [ [180, 90], [-180, -90] ],
// higher priority than center and zoom
boundingCoords: null,
// Default on center of map
center: null,
zoom: 1,
scaleLimit: null,
selectedMode: true,
label: {
show: false,
color: "#000"
},
// scaleLimit: null,
itemStyle: {
borderWidth: 0.5,
borderColor: "#444",
areaColor: "#eee"
},
emphasis: {
label: {
show: true,
color: "rgb(100,0,0)"
},
itemStyle: {
areaColor: "rgba(255,215,0,0.8)"
}
},
select: {
label: {
show: true,
color: "rgb(100,0,0)"
},
itemStyle: {
color: "rgba(255,215,0,0.8)"
}
},
nameProperty: "name"
};
return MapSeries2;
}(SeriesModel)
);
function dataStatistics(datas, statisticType) {
var dataNameMap = {};
each$f(datas, function(data) {
data.each(data.mapDimension("value"), function(value, idx) {
var mapKey = "ec-" + data.getName(idx);
dataNameMap[mapKey] = dataNameMap[mapKey] || [];
if (!isNaN(value)) {
dataNameMap[mapKey].push(value);
}
});
});
return datas[0].map(datas[0].mapDimension("value"), function(value, idx) {
var mapKey = "ec-" + datas[0].getName(idx);
var sum2 = 0;
var min3 = Infinity;
var max3 = -Infinity;
var len2 = dataNameMap[mapKey].length;
for (var i = 0; i < len2; i++) {
min3 = Math.min(min3, dataNameMap[mapKey][i]);
max3 = Math.max(max3, dataNameMap[mapKey][i]);
sum2 += dataNameMap[mapKey][i];
}
var result;
if (statisticType === "min") {
result = min3;
} else if (statisticType === "max") {
result = max3;
} else if (statisticType === "average") {
result = sum2 / len2;
} else {
result = sum2;
}
return len2 === 0 ? NaN : result;
});
}
function mapDataStatistic(ecModel) {
var seriesGroups = {};
ecModel.eachSeriesByType("map", function(seriesModel) {
var hostGeoModel = seriesModel.getHostGeoModel();
var key = hostGeoModel ? "o" + hostGeoModel.id : "i" + seriesModel.getMapType();
(seriesGroups[key] = seriesGroups[key] || []).push(seriesModel);
});
each$f(seriesGroups, function(seriesList, key) {
var data = dataStatistics(map$1(seriesList, function(seriesModel) {
return seriesModel.getData();
}), seriesList[0].get("mapValueCalculation"));
for (var i = 0; i < seriesList.length; i++) {
seriesList[i].originalData = seriesList[i].getData();
}
for (var i = 0; i < seriesList.length; i++) {
seriesList[i].seriesGroup = seriesList;
seriesList[i].needsDrawMap = i === 0 && !seriesList[i].getHostGeoModel();
seriesList[i].setData(data.cloneShallow());
seriesList[i].mainSeries = seriesList[0];
}
});
}
function mapSymbolLayout(ecModel) {
var processedMapType = {};
ecModel.eachSeriesByType("map", function(mapSeries) {
var mapType = mapSeries.getMapType();
if (mapSeries.getHostGeoModel() || processedMapType[mapType]) {
return;
}
var mapSymbolOffsets = {};
each$f(mapSeries.seriesGroup, function(subMapSeries) {
var geo = subMapSeries.coordinateSystem;
var data2 = subMapSeries.originalData;
if (subMapSeries.get("showLegendSymbol") && ecModel.getComponent("legend")) {
data2.each(data2.mapDimension("value"), function(value, idx) {
var name = data2.getName(idx);
var region = geo.getRegion(name);
if (!region || isNaN(value)) {
return;
}
var offset2 = mapSymbolOffsets[name] || 0;
var point = geo.dataToPoint(region.getCenter());
mapSymbolOffsets[name] = offset2 + 1;
data2.setItemLayout(idx, {
point,
offset: offset2
});
});
}
});
var data = mapSeries.getData();
data.each(function(idx) {
var name = data.getName(idx);
var layout2 = data.getItemLayout(idx) || {};
layout2.showLabel = !mapSymbolOffsets[name];
data.setItemLayout(idx, layout2);
});
processedMapType[mapType] = true;
});
}
var v2ApplyTransform = applyTransform$1;
var View = (
/** @class */
function(_super) {
__extends(View2, _super);
function View2(name) {
var _this = _super.call(this) || this;
_this.type = "view";
_this.dimensions = ["x", "y"];
_this._roamTransformable = new Transformable();
_this._rawTransformable = new Transformable();
_this.name = name;
return _this;
}
View2.prototype.setBoundingRect = function(x2, y2, width, height) {
this._rect = new BoundingRect(x2, y2, width, height);
return this._rect;
};
View2.prototype.getBoundingRect = function() {
return this._rect;
};
View2.prototype.setViewRect = function(x2, y2, width, height) {
this._transformTo(x2, y2, width, height);
this._viewRect = new BoundingRect(x2, y2, width, height);
};
View2.prototype._transformTo = function(x2, y2, width, height) {
var rect = this.getBoundingRect();
var rawTransform = this._rawTransformable;
rawTransform.transform = rect.calculateTransform(new BoundingRect(x2, y2, width, height));
var rawParent = rawTransform.parent;
rawTransform.parent = null;
rawTransform.decomposeTransform();
rawTransform.parent = rawParent;
this._updateTransform();
};
View2.prototype.setCenter = function(centerCoord, api) {
if (!centerCoord) {
return;
}
this._center = [parsePercent(centerCoord[0], api.getWidth()), parsePercent(centerCoord[1], api.getHeight())];
this._updateCenterAndZoom();
};
View2.prototype.setZoom = function(zoom) {
zoom = zoom || 1;
var zoomLimit = this.zoomLimit;
if (zoomLimit) {
if (zoomLimit.max != null) {
zoom = Math.min(zoomLimit.max, zoom);
}
if (zoomLimit.min != null) {
zoom = Math.max(zoomLimit.min, zoom);
}
}
this._zoom = zoom;
this._updateCenterAndZoom();
};
View2.prototype.getDefaultCenter = function() {
var rawRect = this.getBoundingRect();
var cx = rawRect.x + rawRect.width / 2;
var cy = rawRect.y + rawRect.height / 2;
return [cx, cy];
};
View2.prototype.getCenter = function() {
return this._center || this.getDefaultCenter();
};
View2.prototype.getZoom = function() {
return this._zoom || 1;
};
View2.prototype.getRoamTransform = function() {
return this._roamTransformable.getLocalTransform();
};
View2.prototype._updateCenterAndZoom = function() {
var rawTransformMatrix = this._rawTransformable.getLocalTransform();
var roamTransform = this._roamTransformable;
var defaultCenter = this.getDefaultCenter();
var center2 = this.getCenter();
var zoom = this.getZoom();
center2 = applyTransform$1([], center2, rawTransformMatrix);
defaultCenter = applyTransform$1([], defaultCenter, rawTransformMatrix);
roamTransform.originX = center2[0];
roamTransform.originY = center2[1];
roamTransform.x = defaultCenter[0] - center2[0];
roamTransform.y = defaultCenter[1] - center2[1];
roamTransform.scaleX = roamTransform.scaleY = zoom;
this._updateTransform();
};
View2.prototype._updateTransform = function() {
var roamTransformable = this._roamTransformable;
var rawTransformable = this._rawTransformable;
rawTransformable.parent = roamTransformable;
roamTransformable.updateTransform();
rawTransformable.updateTransform();
copy(this.transform || (this.transform = []), rawTransformable.transform || create$1());
this._rawTransform = rawTransformable.getLocalTransform();
this.invTransform = this.invTransform || [];
invert(this.invTransform, this.transform);
this.decomposeTransform();
};
View2.prototype.getTransformInfo = function() {
var rawTransformable = this._rawTransformable;
var roamTransformable = this._roamTransformable;
var dummyTransformable2 = new Transformable();
dummyTransformable2.transform = roamTransformable.transform;
dummyTransformable2.decomposeTransform();
return {
roam: {
x: dummyTransformable2.x,
y: dummyTransformable2.y,
scaleX: dummyTransformable2.scaleX,
scaleY: dummyTransformable2.scaleY
},
raw: {
x: rawTransformable.x,
y: rawTransformable.y,
scaleX: rawTransformable.scaleX,
scaleY: rawTransformable.scaleY
}
};
};
View2.prototype.getViewRect = function() {
return this._viewRect;
};
View2.prototype.getViewRectAfterRoam = function() {
var rect = this.getBoundingRect().clone();
rect.applyTransform(this.transform);
return rect;
};
View2.prototype.dataToPoint = function(data, noRoam, out2) {
var transform2 = noRoam ? this._rawTransform : this.transform;
out2 = out2 || [];
return transform2 ? v2ApplyTransform(out2, data, transform2) : copy$1(out2, data);
};
View2.prototype.pointToData = function(point) {
var invTransform = this.invTransform;
return invTransform ? v2ApplyTransform([], point, invTransform) : [point[0], point[1]];
};
View2.prototype.convertToPixel = function(ecModel, finder, value) {
var coordSys = getCoordSys$4(finder);
return coordSys === this ? coordSys.dataToPoint(value) : null;
};
View2.prototype.convertFromPixel = function(ecModel, finder, pixel) {
var coordSys = getCoordSys$4(finder);
return coordSys === this ? coordSys.pointToData(pixel) : null;
};
View2.prototype.containPoint = function(point) {
return this.getViewRectAfterRoam().contain(point[0], point[1]);
};
View2.dimensions = ["x", "y"];
return View2;
}(Transformable)
);
function getCoordSys$4(finder) {
var seriesModel = finder.seriesModel;
return seriesModel ? seriesModel.coordinateSystem : null;
}
var GEO_DEFAULT_PARAMS = {
"geoJSON": {
aspectScale: 0.75,
invertLongitute: true
},
"geoSVG": {
aspectScale: 1,
invertLongitute: false
}
};
var geo2DDimensions = ["lng", "lat"];
var Geo = (
/** @class */
function(_super) {
__extends(Geo2, _super);
function Geo2(name, map2, opt) {
var _this = _super.call(this, name) || this;
_this.dimensions = geo2DDimensions;
_this.type = "geo";
_this._nameCoordMap = createHashMap();
_this.map = map2;
var projection = opt.projection;
var source = geoSourceManager.load(map2, opt.nameMap, opt.nameProperty);
var resource = geoSourceManager.getGeoResource(map2);
_this.resourceType = resource ? resource.type : null;
var regions = _this.regions = source.regions;
var defaultParams = GEO_DEFAULT_PARAMS[resource.type];
_this._regionsMap = source.regionsMap;
_this.regions = source.regions;
_this.projection = projection;
var boundingRect;
if (projection) {
for (var i = 0; i < regions.length; i++) {
var regionRect = regions[i].getBoundingRect(projection);
boundingRect = boundingRect || regionRect.clone();
boundingRect.union(regionRect);
}
} else {
boundingRect = source.boundingRect;
}
_this.setBoundingRect(boundingRect.x, boundingRect.y, boundingRect.width, boundingRect.height);
_this.aspectScale = projection ? 1 : retrieve2(opt.aspectScale, defaultParams.aspectScale);
_this._invertLongitute = projection ? false : defaultParams.invertLongitute;
return _this;
}
Geo2.prototype._transformTo = function(x2, y2, width, height) {
var rect = this.getBoundingRect();
var invertLongitute = this._invertLongitute;
rect = rect.clone();
if (invertLongitute) {
rect.y = -rect.y - rect.height;
}
var rawTransformable = this._rawTransformable;
rawTransformable.transform = rect.calculateTransform(new BoundingRect(x2, y2, width, height));
var rawParent = rawTransformable.parent;
rawTransformable.parent = null;
rawTransformable.decomposeTransform();
rawTransformable.parent = rawParent;
if (invertLongitute) {
rawTransformable.scaleY = -rawTransformable.scaleY;
}
this._updateTransform();
};
Geo2.prototype.getRegion = function(name) {
return this._regionsMap.get(name);
};
Geo2.prototype.getRegionByCoord = function(coord) {
var regions = this.regions;
for (var i = 0; i < regions.length; i++) {
var region = regions[i];
if (region.type === "geoJSON" && region.contain(coord)) {
return regions[i];
}
}
};
Geo2.prototype.addGeoCoord = function(name, geoCoord2) {
this._nameCoordMap.set(name, geoCoord2);
};
Geo2.prototype.getGeoCoord = function(name) {
var region = this._regionsMap.get(name);
return this._nameCoordMap.get(name) || region && region.getCenter();
};
Geo2.prototype.dataToPoint = function(data, noRoam, out2) {
if (isString$1(data)) {
data = this.getGeoCoord(data);
}
if (data) {
var projection = this.projection;
if (projection) {
data = projection.project(data);
}
return data && this.projectedToPoint(data, noRoam, out2);
}
};
Geo2.prototype.pointToData = function(point) {
var projection = this.projection;
if (projection) {
point = projection.unproject(point);
}
return point && this.pointToProjected(point);
};
Geo2.prototype.pointToProjected = function(point) {
return _super.prototype.pointToData.call(this, point);
};
Geo2.prototype.projectedToPoint = function(projected, noRoam, out2) {
return _super.prototype.dataToPoint.call(this, projected, noRoam, out2);
};
Geo2.prototype.convertToPixel = function(ecModel, finder, value) {
var coordSys = getCoordSys$3(finder);
return coordSys === this ? coordSys.dataToPoint(value) : null;
};
Geo2.prototype.convertFromPixel = function(ecModel, finder, pixel) {
var coordSys = getCoordSys$3(finder);
return coordSys === this ? coordSys.pointToData(pixel) : null;
};
return Geo2;
}(View)
);
mixin(Geo, View);
function getCoordSys$3(finder) {
var geoModel = finder.geoModel;
var seriesModel = finder.seriesModel;
return geoModel ? geoModel.coordinateSystem : seriesModel ? seriesModel.coordinateSystem || (seriesModel.getReferringComponents("geo", SINGLE_REFERRING).models[0] || {}).coordinateSystem : null;
}
function resizeGeo(geoModel, api) {
var boundingCoords = geoModel.get("boundingCoords");
if (boundingCoords != null) {
var leftTop_1 = boundingCoords[0];
var rightBottom_1 = boundingCoords[1];
if (!(isFinite(leftTop_1[0]) && isFinite(leftTop_1[1]) && isFinite(rightBottom_1[0]) && isFinite(rightBottom_1[1]))) ;
else {
var projection_1 = this.projection;
if (projection_1) {
var xMin = leftTop_1[0];
var yMin = leftTop_1[1];
var xMax = rightBottom_1[0];
var yMax = rightBottom_1[1];
leftTop_1 = [Infinity, Infinity];
rightBottom_1 = [-Infinity, -Infinity];
var sampleLine = function(x0, y0, x1, y1) {
var dx = x1 - x0;
var dy = y1 - y0;
for (var i = 0; i <= 100; i++) {
var p2 = i / 100;
var pt = projection_1.project([x0 + dx * p2, y0 + dy * p2]);
min$1(leftTop_1, leftTop_1, pt);
max$1(rightBottom_1, rightBottom_1, pt);
}
};
sampleLine(xMin, yMin, xMax, yMin);
sampleLine(xMax, yMin, xMax, yMax);
sampleLine(xMax, yMax, xMin, yMax);
sampleLine(xMin, yMax, xMax, yMin);
}
this.setBoundingRect(leftTop_1[0], leftTop_1[1], rightBottom_1[0] - leftTop_1[0], rightBottom_1[1] - leftTop_1[1]);
}
}
var rect = this.getBoundingRect();
var centerOption = geoModel.get("layoutCenter");
var sizeOption = geoModel.get("layoutSize");
var viewWidth = api.getWidth();
var viewHeight = api.getHeight();
var aspect = rect.width / rect.height * this.aspectScale;
var useCenterAndSize = false;
var center2;
var size;
if (centerOption && sizeOption) {
center2 = [parsePercent(centerOption[0], viewWidth), parsePercent(centerOption[1], viewHeight)];
size = parsePercent(sizeOption, Math.min(viewWidth, viewHeight));
if (!isNaN(center2[0]) && !isNaN(center2[1]) && !isNaN(size)) {
useCenterAndSize = true;
}
}
var viewRect2;
if (useCenterAndSize) {
viewRect2 = {};
if (aspect > 1) {
viewRect2.width = size;
viewRect2.height = size / aspect;
} else {
viewRect2.height = size;
viewRect2.width = size * aspect;
}
viewRect2.y = center2[1] - viewRect2.height / 2;
viewRect2.x = center2[0] - viewRect2.width / 2;
} else {
var boxLayoutOption = geoModel.getBoxLayoutParams();
boxLayoutOption.aspect = aspect;
viewRect2 = getLayoutRect(boxLayoutOption, {
width: viewWidth,
height: viewHeight
});
}
this.setViewRect(viewRect2.x, viewRect2.y, viewRect2.width, viewRect2.height);
this.setCenter(geoModel.get("center"), api);
this.setZoom(geoModel.get("zoom"));
}
function setGeoCoords(geo, model) {
each$f(model.get("geoCoord"), function(geoCoord2, name) {
geo.addGeoCoord(name, geoCoord2);
});
}
var GeoCreator = (
/** @class */
function() {
function GeoCreator2() {
this.dimensions = geo2DDimensions;
}
GeoCreator2.prototype.create = function(ecModel, api) {
var geoList = [];
function getCommonGeoProperties(model) {
return {
nameProperty: model.get("nameProperty"),
aspectScale: model.get("aspectScale"),
projection: model.get("projection")
};
}
ecModel.eachComponent("geo", function(geoModel, idx) {
var mapName = geoModel.get("map");
var geo = new Geo(mapName + idx, mapName, extend({
nameMap: geoModel.get("nameMap")
}, getCommonGeoProperties(geoModel)));
geo.zoomLimit = geoModel.get("scaleLimit");
geoList.push(geo);
geoModel.coordinateSystem = geo;
geo.model = geoModel;
geo.resize = resizeGeo;
geo.resize(geoModel, api);
});
ecModel.eachSeries(function(seriesModel) {
var coordSys = seriesModel.get("coordinateSystem");
if (coordSys === "geo") {
var geoIndex = seriesModel.get("geoIndex") || 0;
seriesModel.coordinateSystem = geoList[geoIndex];
}
});
var mapModelGroupBySeries = {};
ecModel.eachSeriesByType("map", function(seriesModel) {
if (!seriesModel.getHostGeoModel()) {
var mapType = seriesModel.getMapType();
mapModelGroupBySeries[mapType] = mapModelGroupBySeries[mapType] || [];
mapModelGroupBySeries[mapType].push(seriesModel);
}
});
each$f(mapModelGroupBySeries, function(mapSeries, mapType) {
var nameMapList = map$1(mapSeries, function(singleMapSeries) {
return singleMapSeries.get("nameMap");
});
var geo = new Geo(mapType, mapType, extend({
nameMap: mergeAll(nameMapList)
}, getCommonGeoProperties(mapSeries[0])));
geo.zoomLimit = retrieve.apply(null, map$1(mapSeries, function(singleMapSeries) {
return singleMapSeries.get("scaleLimit");
}));
geoList.push(geo);
geo.resize = resizeGeo;
geo.resize(mapSeries[0], api);
each$f(mapSeries, function(singleMapSeries) {
singleMapSeries.coordinateSystem = geo;
setGeoCoords(geo, singleMapSeries);
});
});
return geoList;
};
GeoCreator2.prototype.getFilledRegions = function(originRegionArr, mapName, nameMap, nameProperty) {
var regionsArr = (originRegionArr || []).slice();
var dataNameMap = createHashMap();
for (var i = 0; i < regionsArr.length; i++) {
dataNameMap.set(regionsArr[i].name, regionsArr[i]);
}
var source = geoSourceManager.load(mapName, nameMap, nameProperty);
each$f(source.regions, function(region) {
var name = region.name;
!dataNameMap.get(name) && regionsArr.push({
name
});
});
return regionsArr;
};
return GeoCreator2;
}()
);
var geoCreator = new GeoCreator();
var GeoModel = (
/** @class */
function(_super) {
__extends(GeoModel2, _super);
function GeoModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = GeoModel2.type;
return _this;
}
GeoModel2.prototype.init = function(option, parentModel, ecModel) {
var source = geoSourceManager.getGeoResource(option.map);
if (source && source.type === "geoJSON") {
var itemStyle = option.itemStyle = option.itemStyle || {};
if (!("color" in itemStyle)) {
itemStyle.color = "#eee";
}
}
this.mergeDefaultAndTheme(option, ecModel);
defaultEmphasis(option, "label", ["show"]);
};
GeoModel2.prototype.optionUpdated = function() {
var _this = this;
var option = this.option;
option.regions = geoCreator.getFilledRegions(option.regions, option.map, option.nameMap, option.nameProperty);
var selectedMap = {};
this._optionModelMap = reduce(option.regions || [], function(optionModelMap, regionOpt) {
var regionName = regionOpt.name;
if (regionName) {
optionModelMap.set(regionName, new Model(regionOpt, _this, _this.ecModel));
if (regionOpt.selected) {
selectedMap[regionName] = true;
}
}
return optionModelMap;
}, createHashMap());
if (!option.selectedMap) {
option.selectedMap = selectedMap;
}
};
GeoModel2.prototype.getRegionModel = function(name) {
return this._optionModelMap.get(name) || new Model(null, this, this.ecModel);
};
GeoModel2.prototype.getFormattedLabel = function(name, status) {
var regionModel = this.getRegionModel(name);
var formatter = status === "normal" ? regionModel.get(["label", "formatter"]) : regionModel.get(["emphasis", "label", "formatter"]);
var params = {
name
};
if (isFunction$1(formatter)) {
params.status = status;
return formatter(params);
} else if (isString$1(formatter)) {
return formatter.replace("{a}", name != null ? name : "");
}
};
GeoModel2.prototype.setZoom = function(zoom) {
this.option.zoom = zoom;
};
GeoModel2.prototype.setCenter = function(center2) {
this.option.center = center2;
};
GeoModel2.prototype.select = function(name) {
var option = this.option;
var selectedMode = option.selectedMode;
if (!selectedMode) {
return;
}
if (selectedMode !== "multiple") {
option.selectedMap = null;
}
var selectedMap = option.selectedMap || (option.selectedMap = {});
selectedMap[name] = true;
};
GeoModel2.prototype.unSelect = function(name) {
var selectedMap = this.option.selectedMap;
if (selectedMap) {
selectedMap[name] = false;
}
};
GeoModel2.prototype.toggleSelected = function(name) {
this[this.isSelected(name) ? "unSelect" : "select"](name);
};
GeoModel2.prototype.isSelected = function(name) {
var selectedMap = this.option.selectedMap;
return !!(selectedMap && selectedMap[name]);
};
GeoModel2.type = "geo";
GeoModel2.layoutMode = "box";
GeoModel2.defaultOption = {
// zlevel: 0,
z: 0,
show: true,
left: "center",
top: "center",
// Default value:
// for geoSVG source: 1,
// for geoJSON source: 0.75.
aspectScale: null,
// /// Layout with center and size
// If you want to put map in a fixed size box with right aspect ratio
// This two properties may be more convenient
// layoutCenter: [50%, 50%]
// layoutSize: 100
silent: false,
// Map type
map: "",
// Define left-top, right-bottom coords to control view
// For example, [ [180, 90], [-180, -90] ]
boundingCoords: null,
// Default on center of map
center: null,
zoom: 1,
scaleLimit: null,
// selectedMode: false
label: {
show: false,
color: "#000"
},
itemStyle: {
borderWidth: 0.5,
borderColor: "#444"
// Default color:
// + geoJSON: #eee
// + geoSVG: null (use SVG original `fill`)
// color: '#eee'
},
emphasis: {
label: {
show: true,
color: "rgb(100,0,0)"
},
itemStyle: {
color: "rgba(255,215,0,0.8)"
}
},
select: {
label: {
show: true,
color: "rgb(100,0,0)"
},
itemStyle: {
color: "rgba(255,215,0,0.8)"
}
},
regions: []
// tooltip: {
// show: false
// }
};
return GeoModel2;
}(ComponentModel)
);
function getCenterCoord(view, point) {
return view.pointToProjected ? view.pointToProjected(point) : view.pointToData(point);
}
function updateCenterAndZoom(view, payload, zoomLimit, api) {
var previousZoom = view.getZoom();
var center2 = view.getCenter();
var zoom = payload.zoom;
var point = view.projectedToPoint ? view.projectedToPoint(center2) : view.dataToPoint(center2);
if (payload.dx != null && payload.dy != null) {
point[0] -= payload.dx;
point[1] -= payload.dy;
view.setCenter(getCenterCoord(view, point), api);
}
if (zoom != null) {
if (zoomLimit) {
var zoomMin = zoomLimit.min || 0;
var zoomMax = zoomLimit.max || Infinity;
zoom = Math.max(Math.min(previousZoom * zoom, zoomMax), zoomMin) / previousZoom;
}
view.scaleX *= zoom;
view.scaleY *= zoom;
var fixX = (payload.originX - view.x) * (zoom - 1);
var fixY = (payload.originY - view.y) * (zoom - 1);
view.x -= fixX;
view.y -= fixY;
view.updateTransform();
view.setCenter(getCenterCoord(view, point), api);
view.setZoom(zoom * previousZoom);
}
return {
center: view.getCenter(),
zoom: view.getZoom()
};
}
var GeoView = (
/** @class */
function(_super) {
__extends(GeoView2, _super);
function GeoView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = GeoView2.type;
_this.focusBlurEnabled = true;
return _this;
}
GeoView2.prototype.init = function(ecModel, api) {
this._api = api;
};
GeoView2.prototype.render = function(geoModel, ecModel, api, payload) {
this._model = geoModel;
if (!geoModel.get("show")) {
this._mapDraw && this._mapDraw.remove();
this._mapDraw = null;
return;
}
if (!this._mapDraw) {
this._mapDraw = new MapDraw(api);
}
var mapDraw = this._mapDraw;
mapDraw.draw(geoModel, ecModel, api, this, payload);
mapDraw.group.on("click", this._handleRegionClick, this);
mapDraw.group.silent = geoModel.get("silent");
this.group.add(mapDraw.group);
this.updateSelectStatus(geoModel, ecModel, api);
};
GeoView2.prototype._handleRegionClick = function(e2) {
var eventData;
findEventDispatcher(e2.target, function(current) {
return (eventData = getECData(current).eventData) != null;
}, true);
if (eventData) {
this._api.dispatchAction({
type: "geoToggleSelect",
geoId: this._model.id,
name: eventData.name
});
}
};
GeoView2.prototype.updateSelectStatus = function(model, ecModel, api) {
var _this = this;
this._mapDraw.group.traverse(function(node2) {
var eventData = getECData(node2).eventData;
if (eventData) {
_this._model.isSelected(eventData.name) ? api.enterSelect(node2) : api.leaveSelect(node2);
return true;
}
});
};
GeoView2.prototype.findHighDownDispatchers = function(name) {
return this._mapDraw && this._mapDraw.findHighDownDispatchers(name, this._model);
};
GeoView2.prototype.dispose = function() {
this._mapDraw && this._mapDraw.remove();
};
GeoView2.type = "geo";
return GeoView2;
}(ComponentView)
);
function registerMap(mapName, geoJson, specialAreas) {
geoSourceManager.registerMap(mapName, geoJson, specialAreas);
}
function install$J(registers) {
registers.registerCoordinateSystem("geo", geoCreator);
registers.registerComponentModel(GeoModel);
registers.registerComponentView(GeoView);
registers.registerImpl("registerMap", registerMap);
registers.registerImpl("getMap", function(mapName) {
return geoSourceManager.getMapForUser(mapName);
});
function makeAction(method4, actionInfo2) {
actionInfo2.update = "geo:updateSelectStatus";
registers.registerAction(actionInfo2, function(payload, ecModel) {
var selected = {};
var allSelected = [];
ecModel.eachComponent({
mainType: "geo",
query: payload
}, function(geoModel) {
geoModel[method4](payload.name);
var geo = geoModel.coordinateSystem;
each$f(geo.regions, function(region) {
selected[region.name] = geoModel.isSelected(region.name) || false;
});
var names2 = [];
each$f(selected, function(v4, name) {
selected[name] && names2.push(name);
});
allSelected.push({
geoIndex: geoModel.componentIndex,
// Use singular, the same naming convention as the event `selectchanged`.
name: names2
});
});
return {
selected,
allSelected,
name: payload.name
};
});
}
makeAction("toggleSelected", {
type: "geoToggleSelect",
event: "geoselectchanged"
});
makeAction("select", {
type: "geoSelect",
event: "geoselected"
});
makeAction("unSelect", {
type: "geoUnSelect",
event: "geounselected"
});
registers.registerAction({
type: "geoRoam",
event: "geoRoam",
update: "updateTransform"
}, function(payload, ecModel, api) {
var componentType = payload.componentType || "series";
ecModel.eachComponent({
mainType: componentType,
query: payload
}, function(componentModel) {
var geo = componentModel.coordinateSystem;
if (geo.type !== "geo") {
return;
}
var res = updateCenterAndZoom(geo, payload, componentModel.get("scaleLimit"), api);
componentModel.setCenter && componentModel.setCenter(res.center);
componentModel.setZoom && componentModel.setZoom(res.zoom);
if (componentType === "series") {
each$f(componentModel.seriesGroup, function(seriesModel) {
seriesModel.setCenter(res.center);
seriesModel.setZoom(res.zoom);
});
}
});
});
}
function install$I(registers) {
use(install$J);
registers.registerChartView(MapView);
registers.registerSeriesModel(MapSeries);
registers.registerLayout(mapSymbolLayout);
registers.registerProcessor(registers.PRIORITY.PROCESSOR.STATISTIC, mapDataStatistic);
createLegacyDataSelectAction("map", registers.registerAction);
}
function init(inRoot) {
var root = inRoot;
root.hierNode = {
defaultAncestor: null,
ancestor: root,
prelim: 0,
modifier: 0,
change: 0,
shift: 0,
i: 0,
thread: null
};
var nodes = [root];
var node2;
var children;
while (node2 = nodes.pop()) {
children = node2.children;
if (node2.isExpand && children.length) {
var n2 = children.length;
for (var i = n2 - 1; i >= 0; i--) {
var child = children[i];
child.hierNode = {
defaultAncestor: null,
ancestor: child,
prelim: 0,
modifier: 0,
change: 0,
shift: 0,
i,
thread: null
};
nodes.push(child);
}
}
}
}
function firstWalk(node2, separation2) {
var children = node2.isExpand ? node2.children : [];
var siblings = node2.parentNode.children;
var subtreeW = node2.hierNode.i ? siblings[node2.hierNode.i - 1] : null;
if (children.length) {
executeShifts(node2);
var midPoint = (children[0].hierNode.prelim + children[children.length - 1].hierNode.prelim) / 2;
if (subtreeW) {
node2.hierNode.prelim = subtreeW.hierNode.prelim + separation2(node2, subtreeW);
node2.hierNode.modifier = node2.hierNode.prelim - midPoint;
} else {
node2.hierNode.prelim = midPoint;
}
} else if (subtreeW) {
node2.hierNode.prelim = subtreeW.hierNode.prelim + separation2(node2, subtreeW);
}
node2.parentNode.hierNode.defaultAncestor = apportion(node2, subtreeW, node2.parentNode.hierNode.defaultAncestor || siblings[0], separation2);
}
function secondWalk(node2) {
var nodeX = node2.hierNode.prelim + node2.parentNode.hierNode.modifier;
node2.setLayout({
x: nodeX
}, true);
node2.hierNode.modifier += node2.parentNode.hierNode.modifier;
}
function separation(cb2) {
return arguments.length ? cb2 : defaultSeparation;
}
function radialCoordinate(rad, r2) {
rad -= Math.PI / 2;
return {
x: r2 * Math.cos(rad),
y: r2 * Math.sin(rad)
};
}
function getViewRect$4(seriesModel, api) {
return getLayoutRect(seriesModel.getBoxLayoutParams(), {
width: api.getWidth(),
height: api.getHeight()
});
}
function executeShifts(node2) {
var children = node2.children;
var n2 = children.length;
var shift = 0;
var change = 0;
while (--n2 >= 0) {
var child = children[n2];
child.hierNode.prelim += shift;
child.hierNode.modifier += shift;
change += child.hierNode.change;
shift += child.hierNode.shift + change;
}
}
function apportion(subtreeV, subtreeW, ancestor, separation2) {
if (subtreeW) {
var nodeOutRight = subtreeV;
var nodeInRight = subtreeV;
var nodeOutLeft = nodeInRight.parentNode.children[0];
var nodeInLeft = subtreeW;
var sumOutRight = nodeOutRight.hierNode.modifier;
var sumInRight = nodeInRight.hierNode.modifier;
var sumOutLeft = nodeOutLeft.hierNode.modifier;
var sumInLeft = nodeInLeft.hierNode.modifier;
while (nodeInLeft = nextRight(nodeInLeft), nodeInRight = nextLeft(nodeInRight), nodeInLeft && nodeInRight) {
nodeOutRight = nextRight(nodeOutRight);
nodeOutLeft = nextLeft(nodeOutLeft);
nodeOutRight.hierNode.ancestor = subtreeV;
var shift = nodeInLeft.hierNode.prelim + sumInLeft - nodeInRight.hierNode.prelim - sumInRight + separation2(nodeInLeft, nodeInRight);
if (shift > 0) {
moveSubtree(nextAncestor(nodeInLeft, subtreeV, ancestor), subtreeV, shift);
sumInRight += shift;
sumOutRight += shift;
}
sumInLeft += nodeInLeft.hierNode.modifier;
sumInRight += nodeInRight.hierNode.modifier;
sumOutRight += nodeOutRight.hierNode.modifier;
sumOutLeft += nodeOutLeft.hierNode.modifier;
}
if (nodeInLeft && !nextRight(nodeOutRight)) {
nodeOutRight.hierNode.thread = nodeInLeft;
nodeOutRight.hierNode.modifier += sumInLeft - sumOutRight;
}
if (nodeInRight && !nextLeft(nodeOutLeft)) {
nodeOutLeft.hierNode.thread = nodeInRight;
nodeOutLeft.hierNode.modifier += sumInRight - sumOutLeft;
ancestor = subtreeV;
}
}
return ancestor;
}
function nextRight(node2) {
var children = node2.children;
return children.length && node2.isExpand ? children[children.length - 1] : node2.hierNode.thread;
}
function nextLeft(node2) {
var children = node2.children;
return children.length && node2.isExpand ? children[0] : node2.hierNode.thread;
}
function nextAncestor(nodeInLeft, node2, ancestor) {
return nodeInLeft.hierNode.ancestor.parentNode === node2.parentNode ? nodeInLeft.hierNode.ancestor : ancestor;
}
function moveSubtree(wl, wr, shift) {
var change = shift / (wr.hierNode.i - wl.hierNode.i);
wr.hierNode.change -= change;
wr.hierNode.shift += shift;
wr.hierNode.modifier += shift;
wr.hierNode.prelim += shift;
wl.hierNode.change += change;
}
function defaultSeparation(node1, node2) {
return node1.parentNode === node2.parentNode ? 1 : 2;
}
var TreeEdgeShape = (
/** @class */
/* @__PURE__ */ function() {
function TreeEdgeShape2() {
this.parentPoint = [];
this.childPoints = [];
}
return TreeEdgeShape2;
}()
);
var TreePath = (
/** @class */
function(_super) {
__extends(TreePath2, _super);
function TreePath2(opts) {
return _super.call(this, opts) || this;
}
TreePath2.prototype.getDefaultStyle = function() {
return {
stroke: "#000",
fill: null
};
};
TreePath2.prototype.getDefaultShape = function() {
return new TreeEdgeShape();
};
TreePath2.prototype.buildPath = function(ctx, shape) {
var childPoints = shape.childPoints;
var childLen = childPoints.length;
var parentPoint = shape.parentPoint;
var firstChildPos = childPoints[0];
var lastChildPos = childPoints[childLen - 1];
if (childLen === 1) {
ctx.moveTo(parentPoint[0], parentPoint[1]);
ctx.lineTo(firstChildPos[0], firstChildPos[1]);
return;
}
var orient = shape.orient;
var forkDim = orient === "TB" || orient === "BT" ? 0 : 1;
var otherDim = 1 - forkDim;
var forkPosition = parsePercent(shape.forkPosition, 1);
var tmpPoint = [];
tmpPoint[forkDim] = parentPoint[forkDim];
tmpPoint[otherDim] = parentPoint[otherDim] + (lastChildPos[otherDim] - parentPoint[otherDim]) * forkPosition;
ctx.moveTo(parentPoint[0], parentPoint[1]);
ctx.lineTo(tmpPoint[0], tmpPoint[1]);
ctx.moveTo(firstChildPos[0], firstChildPos[1]);
tmpPoint[forkDim] = firstChildPos[forkDim];
ctx.lineTo(tmpPoint[0], tmpPoint[1]);
tmpPoint[forkDim] = lastChildPos[forkDim];
ctx.lineTo(tmpPoint[0], tmpPoint[1]);
ctx.lineTo(lastChildPos[0], lastChildPos[1]);
for (var i = 1; i < childLen - 1; i++) {
var point = childPoints[i];
ctx.moveTo(point[0], point[1]);
tmpPoint[forkDim] = point[forkDim];
ctx.lineTo(tmpPoint[0], tmpPoint[1]);
}
};
return TreePath2;
}(Path)
);
var TreeView = (
/** @class */
function(_super) {
__extends(TreeView2, _super);
function TreeView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = TreeView2.type;
_this._mainGroup = new Group$3();
return _this;
}
TreeView2.prototype.init = function(ecModel, api) {
this._controller = new RoamController(api.getZr());
this._controllerHost = {
target: this.group
};
this.group.add(this._mainGroup);
};
TreeView2.prototype.render = function(seriesModel, ecModel, api) {
var data = seriesModel.getData();
var layoutInfo = seriesModel.layoutInfo;
var group = this._mainGroup;
var layout2 = seriesModel.get("layout");
if (layout2 === "radial") {
group.x = layoutInfo.x + layoutInfo.width / 2;
group.y = layoutInfo.y + layoutInfo.height / 2;
} else {
group.x = layoutInfo.x;
group.y = layoutInfo.y;
}
this._updateViewCoordSys(seriesModel, api);
this._updateController(seriesModel, ecModel, api);
var oldData = this._data;
data.diff(oldData).add(function(newIdx) {
if (symbolNeedsDraw(data, newIdx)) {
updateNode(data, newIdx, null, group, seriesModel);
}
}).update(function(newIdx, oldIdx) {
var symbolEl = oldData.getItemGraphicEl(oldIdx);
if (!symbolNeedsDraw(data, newIdx)) {
symbolEl && removeNode(oldData, oldIdx, symbolEl, group, seriesModel);
return;
}
updateNode(data, newIdx, symbolEl, group, seriesModel);
}).remove(function(oldIdx) {
var symbolEl = oldData.getItemGraphicEl(oldIdx);
if (symbolEl) {
removeNode(oldData, oldIdx, symbolEl, group, seriesModel);
}
}).execute();
this._nodeScaleRatio = seriesModel.get("nodeScaleRatio");
this._updateNodeAndLinkScale(seriesModel);
if (seriesModel.get("expandAndCollapse") === true) {
data.eachItemGraphicEl(function(el2, dataIndex) {
el2.off("click").on("click", function() {
api.dispatchAction({
type: "treeExpandAndCollapse",
seriesId: seriesModel.id,
dataIndex
});
});
});
}
this._data = data;
};
TreeView2.prototype._updateViewCoordSys = function(seriesModel, api) {
var data = seriesModel.getData();
var points2 = [];
data.each(function(idx) {
var layout2 = data.getItemLayout(idx);
if (layout2 && !isNaN(layout2.x) && !isNaN(layout2.y)) {
points2.push([+layout2.x, +layout2.y]);
}
});
var min3 = [];
var max3 = [];
fromPoints(points2, min3, max3);
var oldMin = this._min;
var oldMax = this._max;
if (max3[0] - min3[0] === 0) {
min3[0] = oldMin ? oldMin[0] : min3[0] - 1;
max3[0] = oldMax ? oldMax[0] : max3[0] + 1;
}
if (max3[1] - min3[1] === 0) {
min3[1] = oldMin ? oldMin[1] : min3[1] - 1;
max3[1] = oldMax ? oldMax[1] : max3[1] + 1;
}
var viewCoordSys = seriesModel.coordinateSystem = new View();
viewCoordSys.zoomLimit = seriesModel.get("scaleLimit");
viewCoordSys.setBoundingRect(min3[0], min3[1], max3[0] - min3[0], max3[1] - min3[1]);
viewCoordSys.setCenter(seriesModel.get("center"), api);
viewCoordSys.setZoom(seriesModel.get("zoom"));
this.group.attr({
x: viewCoordSys.x,
y: viewCoordSys.y,
scaleX: viewCoordSys.scaleX,
scaleY: viewCoordSys.scaleY
});
this._min = min3;
this._max = max3;
};
TreeView2.prototype._updateController = function(seriesModel, ecModel, api) {
var _this = this;
var controller = this._controller;
var controllerHost = this._controllerHost;
var group = this.group;
controller.setPointerChecker(function(e2, x2, y2) {
var rect = group.getBoundingRect();
rect.applyTransform(group.transform);
return rect.contain(x2, y2) && !onIrrelevantElement(e2, api, seriesModel);
});
controller.enable(seriesModel.get("roam"));
controllerHost.zoomLimit = seriesModel.get("scaleLimit");
controllerHost.zoom = seriesModel.coordinateSystem.getZoom();
controller.off("pan").off("zoom").on("pan", function(e2) {
updateViewOnPan(controllerHost, e2.dx, e2.dy);
api.dispatchAction({
seriesId: seriesModel.id,
type: "treeRoam",
dx: e2.dx,
dy: e2.dy
});
}).on("zoom", function(e2) {
updateViewOnZoom(controllerHost, e2.scale, e2.originX, e2.originY);
api.dispatchAction({
seriesId: seriesModel.id,
type: "treeRoam",
zoom: e2.scale,
originX: e2.originX,
originY: e2.originY
});
_this._updateNodeAndLinkScale(seriesModel);
api.updateLabelLayout();
});
};
TreeView2.prototype._updateNodeAndLinkScale = function(seriesModel) {
var data = seriesModel.getData();
var nodeScale = this._getNodeGlobalScale(seriesModel);
data.eachItemGraphicEl(function(el2, idx) {
el2.setSymbolScale(nodeScale);
});
};
TreeView2.prototype._getNodeGlobalScale = function(seriesModel) {
var coordSys = seriesModel.coordinateSystem;
if (coordSys.type !== "view") {
return 1;
}
var nodeScaleRatio = this._nodeScaleRatio;
var groupZoom = coordSys.scaleX || 1;
var roamZoom = coordSys.getZoom();
var nodeScale = (roamZoom - 1) * nodeScaleRatio + 1;
return nodeScale / groupZoom;
};
TreeView2.prototype.dispose = function() {
this._controller && this._controller.dispose();
this._controllerHost = null;
};
TreeView2.prototype.remove = function() {
this._mainGroup.removeAll();
this._data = null;
};
TreeView2.type = "tree";
return TreeView2;
}(ChartView)
);
function symbolNeedsDraw(data, dataIndex) {
var layout2 = data.getItemLayout(dataIndex);
return layout2 && !isNaN(layout2.x) && !isNaN(layout2.y);
}
function updateNode(data, dataIndex, symbolEl, group, seriesModel) {
var isInit = !symbolEl;
var node2 = data.tree.getNodeByDataIndex(dataIndex);
var itemModel = node2.getModel();
var visualColor = node2.getVisual("style").fill;
var symbolInnerColor = node2.isExpand === false && node2.children.length !== 0 ? visualColor : "#fff";
var virtualRoot = data.tree.root;
var source = node2.parentNode === virtualRoot ? node2 : node2.parentNode || node2;
var sourceSymbolEl = data.getItemGraphicEl(source.dataIndex);
var sourceLayout = source.getLayout();
var sourceOldLayout = sourceSymbolEl ? {
x: sourceSymbolEl.__oldX,
y: sourceSymbolEl.__oldY,
rawX: sourceSymbolEl.__radialOldRawX,
rawY: sourceSymbolEl.__radialOldRawY
} : sourceLayout;
var targetLayout = node2.getLayout();
if (isInit) {
symbolEl = new Symbol$1(data, dataIndex, null, {
symbolInnerColor,
useNameLabel: true
});
symbolEl.x = sourceOldLayout.x;
symbolEl.y = sourceOldLayout.y;
} else {
symbolEl.updateData(data, dataIndex, null, {
symbolInnerColor,
useNameLabel: true
});
}
symbolEl.__radialOldRawX = symbolEl.__radialRawX;
symbolEl.__radialOldRawY = symbolEl.__radialRawY;
symbolEl.__radialRawX = targetLayout.rawX;
symbolEl.__radialRawY = targetLayout.rawY;
group.add(symbolEl);
data.setItemGraphicEl(dataIndex, symbolEl);
symbolEl.__oldX = symbolEl.x;
symbolEl.__oldY = symbolEl.y;
updateProps$1(symbolEl, {
x: targetLayout.x,
y: targetLayout.y
}, seriesModel);
var symbolPath = symbolEl.getSymbolPath();
if (seriesModel.get("layout") === "radial") {
var realRoot = virtualRoot.children[0];
var rootLayout = realRoot.getLayout();
var length_1 = realRoot.children.length;
var rad = void 0;
var isLeft = void 0;
if (targetLayout.x === rootLayout.x && node2.isExpand === true && realRoot.children.length) {
var center2 = {
x: (realRoot.children[0].getLayout().x + realRoot.children[length_1 - 1].getLayout().x) / 2,
y: (realRoot.children[0].getLayout().y + realRoot.children[length_1 - 1].getLayout().y) / 2
};
rad = Math.atan2(center2.y - rootLayout.y, center2.x - rootLayout.x);
if (rad < 0) {
rad = Math.PI * 2 + rad;
}
isLeft = center2.x < rootLayout.x;
if (isLeft) {
rad = rad - Math.PI;
}
} else {
rad = Math.atan2(targetLayout.y - rootLayout.y, targetLayout.x - rootLayout.x);
if (rad < 0) {
rad = Math.PI * 2 + rad;
}
if (node2.children.length === 0 || node2.children.length !== 0 && node2.isExpand === false) {
isLeft = targetLayout.x < rootLayout.x;
if (isLeft) {
rad = rad - Math.PI;
}
} else {
isLeft = targetLayout.x > rootLayout.x;
if (!isLeft) {
rad = rad - Math.PI;
}
}
}
var textPosition = isLeft ? "left" : "right";
var normalLabelModel = itemModel.getModel("label");
var rotate2 = normalLabelModel.get("rotate");
var labelRotateRadian = rotate2 * (Math.PI / 180);
var textContent = symbolPath.getTextContent();
if (textContent) {
symbolPath.setTextConfig({
position: normalLabelModel.get("position") || textPosition,
rotation: rotate2 == null ? -rad : labelRotateRadian,
origin: "center"
});
textContent.setStyle("verticalAlign", "middle");
}
}
var focus = itemModel.get(["emphasis", "focus"]);
var focusDataIndices = focus === "relative" ? concatArray(node2.getAncestorsIndices(), node2.getDescendantIndices()) : focus === "ancestor" ? node2.getAncestorsIndices() : focus === "descendant" ? node2.getDescendantIndices() : null;
if (focusDataIndices) {
getECData(symbolEl).focus = focusDataIndices;
}
drawEdge(seriesModel, node2, virtualRoot, symbolEl, sourceOldLayout, sourceLayout, targetLayout, group);
if (symbolEl.__edge) {
symbolEl.onHoverStateChange = function(toState) {
if (toState !== "blur") {
var parentEl = node2.parentNode && data.getItemGraphicEl(node2.parentNode.dataIndex);
if (!(parentEl && parentEl.hoverState === HOVER_STATE_BLUR)) {
setStatesFlag(symbolEl.__edge, toState);
}
}
};
}
}
function drawEdge(seriesModel, node2, virtualRoot, symbolEl, sourceOldLayout, sourceLayout, targetLayout, group) {
var itemModel = node2.getModel();
var edgeShape = seriesModel.get("edgeShape");
var layout2 = seriesModel.get("layout");
var orient = seriesModel.getOrient();
var curvature = seriesModel.get(["lineStyle", "curveness"]);
var edgeForkPosition = seriesModel.get("edgeForkPosition");
var lineStyle = itemModel.getModel("lineStyle").getLineStyle();
var edge = symbolEl.__edge;
if (edgeShape === "curve") {
if (node2.parentNode && node2.parentNode !== virtualRoot) {
if (!edge) {
edge = symbolEl.__edge = new BezierCurve({
shape: getEdgeShape(layout2, orient, curvature, sourceOldLayout, sourceOldLayout)
});
}
updateProps$1(edge, {
shape: getEdgeShape(layout2, orient, curvature, sourceLayout, targetLayout)
}, seriesModel);
}
} else if (edgeShape === "polyline") {
if (layout2 === "orthogonal") {
if (node2 !== virtualRoot && node2.children && node2.children.length !== 0 && node2.isExpand === true) {
var children = node2.children;
var childPoints = [];
for (var i = 0; i < children.length; i++) {
var childLayout = children[i].getLayout();
childPoints.push([childLayout.x, childLayout.y]);
}
if (!edge) {
edge = symbolEl.__edge = new TreePath({
shape: {
parentPoint: [targetLayout.x, targetLayout.y],
childPoints: [[targetLayout.x, targetLayout.y]],
orient,
forkPosition: edgeForkPosition
}
});
}
updateProps$1(edge, {
shape: {
parentPoint: [targetLayout.x, targetLayout.y],
childPoints
}
}, seriesModel);
}
}
}
if (edge && !(edgeShape === "polyline" && !node2.isExpand)) {
edge.useStyle(defaults({
strokeNoScale: true,
fill: null
}, lineStyle));
setStatesStylesFromModel(edge, itemModel, "lineStyle");
setDefaultStateProxy(edge);
group.add(edge);
}
}
function removeNodeEdge(node2, data, group, seriesModel, removeAnimationOpt) {
var virtualRoot = data.tree.root;
var _a2 = getSourceNode(virtualRoot, node2), source = _a2.source, sourceLayout = _a2.sourceLayout;
var symbolEl = data.getItemGraphicEl(node2.dataIndex);
if (!symbolEl) {
return;
}
var sourceSymbolEl = data.getItemGraphicEl(source.dataIndex);
var sourceEdge = sourceSymbolEl.__edge;
var edge = symbolEl.__edge || (source.isExpand === false || source.children.length === 1 ? sourceEdge : void 0);
var edgeShape = seriesModel.get("edgeShape");
var layoutOpt = seriesModel.get("layout");
var orient = seriesModel.get("orient");
var curvature = seriesModel.get(["lineStyle", "curveness"]);
if (edge) {
if (edgeShape === "curve") {
removeElement(edge, {
shape: getEdgeShape(layoutOpt, orient, curvature, sourceLayout, sourceLayout),
style: {
opacity: 0
}
}, seriesModel, {
cb: function() {
group.remove(edge);
},
removeOpt: removeAnimationOpt
});
} else if (edgeShape === "polyline" && seriesModel.get("layout") === "orthogonal") {
removeElement(edge, {
shape: {
parentPoint: [sourceLayout.x, sourceLayout.y],
childPoints: [[sourceLayout.x, sourceLayout.y]]
},
style: {
opacity: 0
}
}, seriesModel, {
cb: function() {
group.remove(edge);
},
removeOpt: removeAnimationOpt
});
}
}
}
function getSourceNode(virtualRoot, node2) {
var source = node2.parentNode === virtualRoot ? node2 : node2.parentNode || node2;
var sourceLayout;
while (sourceLayout = source.getLayout(), sourceLayout == null) {
source = source.parentNode === virtualRoot ? source : source.parentNode || source;
}
return {
source,
sourceLayout
};
}
function removeNode(data, dataIndex, symbolEl, group, seriesModel) {
var node2 = data.tree.getNodeByDataIndex(dataIndex);
var virtualRoot = data.tree.root;
var sourceLayout = getSourceNode(virtualRoot, node2).sourceLayout;
var removeAnimationOpt = {
duration: seriesModel.get("animationDurationUpdate"),
easing: seriesModel.get("animationEasingUpdate")
};
removeElement(symbolEl, {
x: sourceLayout.x + 1,
y: sourceLayout.y + 1
}, seriesModel, {
cb: function() {
group.remove(symbolEl);
data.setItemGraphicEl(dataIndex, null);
},
removeOpt: removeAnimationOpt
});
symbolEl.fadeOut(null, data.hostModel, {
fadeLabel: true,
animation: removeAnimationOpt
});
node2.children.forEach(function(childNode) {
removeNodeEdge(childNode, data, group, seriesModel, removeAnimationOpt);
});
removeNodeEdge(node2, data, group, seriesModel, removeAnimationOpt);
}
function getEdgeShape(layoutOpt, orient, curvature, sourceLayout, targetLayout) {
var cpx1;
var cpy1;
var cpx2;
var cpy2;
var x1;
var x2;
var y1;
var y2;
if (layoutOpt === "radial") {
x1 = sourceLayout.rawX;
y1 = sourceLayout.rawY;
x2 = targetLayout.rawX;
y2 = targetLayout.rawY;
var radialCoor1 = radialCoordinate(x1, y1);
var radialCoor2 = radialCoordinate(x1, y1 + (y2 - y1) * curvature);
var radialCoor3 = radialCoordinate(x2, y2 + (y1 - y2) * curvature);
var radialCoor4 = radialCoordinate(x2, y2);
return {
x1: radialCoor1.x || 0,
y1: radialCoor1.y || 0,
x2: radialCoor4.x || 0,
y2: radialCoor4.y || 0,
cpx1: radialCoor2.x || 0,
cpy1: radialCoor2.y || 0,
cpx2: radialCoor3.x || 0,
cpy2: radialCoor3.y || 0
};
} else {
x1 = sourceLayout.x;
y1 = sourceLayout.y;
x2 = targetLayout.x;
y2 = targetLayout.y;
if (orient === "LR" || orient === "RL") {
cpx1 = x1 + (x2 - x1) * curvature;
cpy1 = y1;
cpx2 = x2 + (x1 - x2) * curvature;
cpy2 = y2;
}
if (orient === "TB" || orient === "BT") {
cpx1 = x1;
cpy1 = y1 + (y2 - y1) * curvature;
cpx2 = x2;
cpy2 = y2 + (y1 - y2) * curvature;
}
}
return {
x1,
y1,
x2,
y2,
cpx1,
cpy1,
cpx2,
cpy2
};
}
var inner$e = makeInner();
function linkSeriesData(opt) {
var mainData = opt.mainData;
var datas = opt.datas;
if (!datas) {
datas = {
main: mainData
};
opt.datasAttr = {
main: "data"
};
}
opt.datas = opt.mainData = null;
linkAll(mainData, datas, opt);
each$f(datas, function(data) {
each$f(mainData.TRANSFERABLE_METHODS, function(methodName) {
data.wrapMethod(methodName, curry$1(transferInjection, opt));
});
});
mainData.wrapMethod("cloneShallow", curry$1(cloneShallowInjection, opt));
each$f(mainData.CHANGABLE_METHODS, function(methodName) {
mainData.wrapMethod(methodName, curry$1(changeInjection, opt));
});
assert(datas[mainData.dataType] === mainData);
}
function transferInjection(opt, res) {
if (isMainData(this)) {
var datas = extend({}, inner$e(this).datas);
datas[this.dataType] = res;
linkAll(res, datas, opt);
} else {
linkSingle(res, this.dataType, inner$e(this).mainData, opt);
}
return res;
}
function changeInjection(opt, res) {
opt.struct && opt.struct.update();
return res;
}
function cloneShallowInjection(opt, res) {
each$f(inner$e(res).datas, function(data, dataType) {
data !== res && linkSingle(data.cloneShallow(), dataType, res, opt);
});
return res;
}
function getLinkedData(dataType) {
var mainData = inner$e(this).mainData;
return dataType == null || mainData == null ? mainData : inner$e(mainData).datas[dataType];
}
function getLinkedDataAll() {
var mainData = inner$e(this).mainData;
return mainData == null ? [{
data: mainData
}] : map$1(keys(inner$e(mainData).datas), function(type4) {
return {
type: type4,
data: inner$e(mainData).datas[type4]
};
});
}
function isMainData(data) {
return inner$e(data).mainData === data;
}
function linkAll(mainData, datas, opt) {
inner$e(mainData).datas = {};
each$f(datas, function(data, dataType) {
linkSingle(data, dataType, mainData, opt);
});
}
function linkSingle(data, dataType, mainData, opt) {
inner$e(mainData).datas[dataType] = data;
inner$e(data).mainData = mainData;
data.dataType = dataType;
if (opt.struct) {
data[opt.structAttr] = opt.struct;
opt.struct[opt.datasAttr[dataType]] = data;
}
data.getLinkedData = getLinkedData;
data.getLinkedDataAll = getLinkedDataAll;
}
var TreeNode = (
/** @class */
function() {
function TreeNode2(name, hostTree) {
this.depth = 0;
this.height = 0;
this.dataIndex = -1;
this.children = [];
this.viewChildren = [];
this.isExpand = false;
this.name = name || "";
this.hostTree = hostTree;
}
TreeNode2.prototype.isRemoved = function() {
return this.dataIndex < 0;
};
TreeNode2.prototype.eachNode = function(options, cb2, context) {
if (isFunction$1(options)) {
context = cb2;
cb2 = options;
options = null;
}
options = options || {};
if (isString$1(options)) {
options = {
order: options
};
}
var order = options.order || "preorder";
var children = this[options.attr || "children"];
var suppressVisitSub;
order === "preorder" && (suppressVisitSub = cb2.call(context, this));
for (var i = 0; !suppressVisitSub && i < children.length; i++) {
children[i].eachNode(options, cb2, context);
}
order === "postorder" && cb2.call(context, this);
};
TreeNode2.prototype.updateDepthAndHeight = function(depth) {
var height = 0;
this.depth = depth;
for (var i = 0; i < this.children.length; i++) {
var child = this.children[i];
child.updateDepthAndHeight(depth + 1);
if (child.height > height) {
height = child.height;
}
}
this.height = height + 1;
};
TreeNode2.prototype.getNodeById = function(id2) {
if (this.getId() === id2) {
return this;
}
for (var i = 0, children = this.children, len2 = children.length; i < len2; i++) {
var res = children[i].getNodeById(id2);
if (res) {
return res;
}
}
};
TreeNode2.prototype.contains = function(node2) {
if (node2 === this) {
return true;
}
for (var i = 0, children = this.children, len2 = children.length; i < len2; i++) {
var res = children[i].contains(node2);
if (res) {
return res;
}
}
};
TreeNode2.prototype.getAncestors = function(includeSelf) {
var ancestors = [];
var node2 = includeSelf ? this : this.parentNode;
while (node2) {
ancestors.push(node2);
node2 = node2.parentNode;
}
ancestors.reverse();
return ancestors;
};
TreeNode2.prototype.getAncestorsIndices = function() {
var indices = [];
var currNode = this;
while (currNode) {
indices.push(currNode.dataIndex);
currNode = currNode.parentNode;
}
indices.reverse();
return indices;
};
TreeNode2.prototype.getDescendantIndices = function() {
var indices = [];
this.eachNode(function(childNode) {
indices.push(childNode.dataIndex);
});
return indices;
};
TreeNode2.prototype.getValue = function(dimension) {
var data = this.hostTree.data;
return data.getStore().get(data.getDimensionIndex(dimension || "value"), this.dataIndex);
};
TreeNode2.prototype.setLayout = function(layout2, merge2) {
this.dataIndex >= 0 && this.hostTree.data.setItemLayout(this.dataIndex, layout2, merge2);
};
TreeNode2.prototype.getLayout = function() {
return this.hostTree.data.getItemLayout(this.dataIndex);
};
TreeNode2.prototype.getModel = function(path) {
if (this.dataIndex < 0) {
return;
}
var hostTree = this.hostTree;
var itemModel = hostTree.data.getItemModel(this.dataIndex);
return itemModel.getModel(path);
};
TreeNode2.prototype.getLevelModel = function() {
return (this.hostTree.levelModels || [])[this.depth];
};
TreeNode2.prototype.setVisual = function(key, value) {
this.dataIndex >= 0 && this.hostTree.data.setItemVisual(this.dataIndex, key, value);
};
TreeNode2.prototype.getVisual = function(key) {
return this.hostTree.data.getItemVisual(this.dataIndex, key);
};
TreeNode2.prototype.getRawIndex = function() {
return this.hostTree.data.getRawIndex(this.dataIndex);
};
TreeNode2.prototype.getId = function() {
return this.hostTree.data.getId(this.dataIndex);
};
TreeNode2.prototype.getChildIndex = function() {
if (this.parentNode) {
var children = this.parentNode.children;
for (var i = 0; i < children.length; ++i) {
if (children[i] === this) {
return i;
}
}
return -1;
}
return -1;
};
TreeNode2.prototype.isAncestorOf = function(node2) {
var parent = node2.parentNode;
while (parent) {
if (parent === this) {
return true;
}
parent = parent.parentNode;
}
return false;
};
TreeNode2.prototype.isDescendantOf = function(node2) {
return node2 !== this && node2.isAncestorOf(this);
};
return TreeNode2;
}()
);
var Tree = (
/** @class */
function() {
function Tree2(hostModel) {
this.type = "tree";
this._nodes = [];
this.hostModel = hostModel;
}
Tree2.prototype.eachNode = function(options, cb2, context) {
this.root.eachNode(options, cb2, context);
};
Tree2.prototype.getNodeByDataIndex = function(dataIndex) {
var rawIndex = this.data.getRawIndex(dataIndex);
return this._nodes[rawIndex];
};
Tree2.prototype.getNodeById = function(name) {
return this.root.getNodeById(name);
};
Tree2.prototype.update = function() {
var data = this.data;
var nodes = this._nodes;
for (var i = 0, len2 = nodes.length; i < len2; i++) {
nodes[i].dataIndex = -1;
}
for (var i = 0, len2 = data.count(); i < len2; i++) {
nodes[data.getRawIndex(i)].dataIndex = i;
}
};
Tree2.prototype.clearLayouts = function() {
this.data.clearItemLayouts();
};
Tree2.createTree = function(dataRoot, hostModel, beforeLink) {
var tree = new Tree2(hostModel);
var listData = [];
var dimMax = 1;
buildHierarchy(dataRoot);
function buildHierarchy(dataNode, parentNode2) {
var value = dataNode.value;
dimMax = Math.max(dimMax, isArray$1(value) ? value.length : 1);
listData.push(dataNode);
var node2 = new TreeNode(convertOptionIdName(dataNode.name, ""), tree);
parentNode2 ? addChild(node2, parentNode2) : tree.root = node2;
tree._nodes.push(node2);
var children = dataNode.children;
if (children) {
for (var i = 0; i < children.length; i++) {
buildHierarchy(children[i], node2);
}
}
}
tree.root.updateDepthAndHeight(0);
var dimensions = prepareSeriesDataSchema(listData, {
coordDimensions: ["value"],
dimensionsCount: dimMax
}).dimensions;
var list = new SeriesData(dimensions, hostModel);
list.initData(listData);
beforeLink && beforeLink(list);
linkSeriesData({
mainData: list,
struct: tree,
structAttr: "tree"
});
tree.update();
return tree;
};
return Tree2;
}()
);
function addChild(child, node2) {
var children = node2.children;
if (child.parentNode === node2) {
return;
}
children.push(child);
child.parentNode = node2;
}
function retrieveTargetInfo(payload, validPayloadTypes, seriesModel) {
if (payload && indexOf(validPayloadTypes, payload.type) >= 0) {
var root = seriesModel.getData().tree.root;
var targetNode = payload.targetNode;
if (isString$1(targetNode)) {
targetNode = root.getNodeById(targetNode);
}
if (targetNode && root.contains(targetNode)) {
return {
node: targetNode
};
}
var targetNodeId = payload.targetNodeId;
if (targetNodeId != null && (targetNode = root.getNodeById(targetNodeId))) {
return {
node: targetNode
};
}
}
}
function getPathToRoot(node2) {
var path = [];
while (node2) {
node2 = node2.parentNode;
node2 && path.push(node2);
}
return path.reverse();
}
function aboveViewRoot(viewRoot, node2) {
var viewPath = getPathToRoot(viewRoot);
return indexOf(viewPath, node2) >= 0;
}
function wrapTreePathInfo(node2, seriesModel) {
var treePathInfo = [];
while (node2) {
var nodeDataIndex = node2.dataIndex;
treePathInfo.push({
name: node2.name,
dataIndex: nodeDataIndex,
value: seriesModel.getRawValue(nodeDataIndex)
});
node2 = node2.parentNode;
}
treePathInfo.reverse();
return treePathInfo;
}
var TreeSeriesModel = (
/** @class */
function(_super) {
__extends(TreeSeriesModel2, _super);
function TreeSeriesModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.hasSymbolVisual = true;
_this.ignoreStyleOnData = true;
return _this;
}
TreeSeriesModel2.prototype.getInitialData = function(option) {
var root = {
name: option.name,
children: option.data
};
var leaves = option.leaves || {};
var leavesModel = new Model(leaves, this, this.ecModel);
var tree = Tree.createTree(root, this, beforeLink);
function beforeLink(nodeData) {
nodeData.wrapMethod("getItemModel", function(model, idx) {
var node2 = tree.getNodeByDataIndex(idx);
if (!(node2 && node2.children.length && node2.isExpand)) {
model.parentModel = leavesModel;
}
return model;
});
}
var treeDepth = 0;
tree.eachNode("preorder", function(node2) {
if (node2.depth > treeDepth) {
treeDepth = node2.depth;
}
});
var expandAndCollapse = option.expandAndCollapse;
var expandTreeDepth = expandAndCollapse && option.initialTreeDepth >= 0 ? option.initialTreeDepth : treeDepth;
tree.root.eachNode("preorder", function(node2) {
var item = node2.hostTree.data.getRawDataItem(node2.dataIndex);
node2.isExpand = item && item.collapsed != null ? !item.collapsed : node2.depth <= expandTreeDepth;
});
return tree.data;
};
TreeSeriesModel2.prototype.getOrient = function() {
var orient = this.get("orient");
if (orient === "horizontal") {
orient = "LR";
} else if (orient === "vertical") {
orient = "TB";
}
return orient;
};
TreeSeriesModel2.prototype.setZoom = function(zoom) {
this.option.zoom = zoom;
};
TreeSeriesModel2.prototype.setCenter = function(center2) {
this.option.center = center2;
};
TreeSeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) {
var tree = this.getData().tree;
var realRoot = tree.root.children[0];
var node2 = tree.getNodeByDataIndex(dataIndex);
var value = node2.getValue();
var name = node2.name;
while (node2 && node2 !== realRoot) {
name = node2.parentNode.name + "." + name;
node2 = node2.parentNode;
}
return createTooltipMarkup("nameValue", {
name,
value,
noValue: isNaN(value) || value == null
});
};
TreeSeriesModel2.prototype.getDataParams = function(dataIndex) {
var params = _super.prototype.getDataParams.apply(this, arguments);
var node2 = this.getData().tree.getNodeByDataIndex(dataIndex);
params.treeAncestors = wrapTreePathInfo(node2, this);
params.collapsed = !node2.isExpand;
return params;
};
TreeSeriesModel2.type = "series.tree";
TreeSeriesModel2.layoutMode = "box";
TreeSeriesModel2.defaultOption = {
// zlevel: 0,
z: 2,
coordinateSystem: "view",
// the position of the whole view
left: "12%",
top: "12%",
right: "12%",
bottom: "12%",
// the layout of the tree, two value can be selected, 'orthogonal' or 'radial'
layout: "orthogonal",
// value can be 'polyline'
edgeShape: "curve",
edgeForkPosition: "50%",
// true | false | 'move' | 'scale', see module:component/helper/RoamController.
roam: false,
// Symbol size scale ratio in roam
nodeScaleRatio: 0.4,
// Default on center of graph
center: null,
zoom: 1,
orient: "LR",
symbol: "emptyCircle",
symbolSize: 7,
expandAndCollapse: true,
initialTreeDepth: 2,
lineStyle: {
color: "#ccc",
width: 1.5,
curveness: 0.5
},
itemStyle: {
color: "lightsteelblue",
// borderColor: '#c23531',
borderWidth: 1.5
},
label: {
show: true
},
animationEasing: "linear",
animationDuration: 700,
animationDurationUpdate: 500
};
return TreeSeriesModel2;
}(SeriesModel)
);
function eachAfter(root, callback, separation2) {
var nodes = [root];
var next2 = [];
var node2;
while (node2 = nodes.pop()) {
next2.push(node2);
if (node2.isExpand) {
var children = node2.children;
if (children.length) {
for (var i = 0; i < children.length; i++) {
nodes.push(children[i]);
}
}
}
}
while (node2 = next2.pop()) {
callback(node2, separation2);
}
}
function eachBefore(root, callback) {
var nodes = [root];
var node2;
while (node2 = nodes.pop()) {
callback(node2);
if (node2.isExpand) {
var children = node2.children;
if (children.length) {
for (var i = children.length - 1; i >= 0; i--) {
nodes.push(children[i]);
}
}
}
}
}
function treeLayout(ecModel, api) {
ecModel.eachSeriesByType("tree", function(seriesModel) {
commonLayout(seriesModel, api);
});
}
function commonLayout(seriesModel, api) {
var layoutInfo = getViewRect$4(seriesModel, api);
seriesModel.layoutInfo = layoutInfo;
var layout2 = seriesModel.get("layout");
var width = 0;
var height = 0;
var separation$1 = null;
if (layout2 === "radial") {
width = 2 * Math.PI;
height = Math.min(layoutInfo.height, layoutInfo.width) / 2;
separation$1 = separation(function(node1, node2) {
return (node1.parentNode === node2.parentNode ? 1 : 2) / node1.depth;
});
} else {
width = layoutInfo.width;
height = layoutInfo.height;
separation$1 = separation();
}
var virtualRoot = seriesModel.getData().tree.root;
var realRoot = virtualRoot.children[0];
if (realRoot) {
init(virtualRoot);
eachAfter(realRoot, firstWalk, separation$1);
virtualRoot.hierNode.modifier = -realRoot.hierNode.prelim;
eachBefore(realRoot, secondWalk);
var left_1 = realRoot;
var right_1 = realRoot;
var bottom_1 = realRoot;
eachBefore(realRoot, function(node2) {
var x2 = node2.getLayout().x;
if (x2 < left_1.getLayout().x) {
left_1 = node2;
}
if (x2 > right_1.getLayout().x) {
right_1 = node2;
}
if (node2.depth > bottom_1.depth) {
bottom_1 = node2;
}
});
var delta = left_1 === right_1 ? 1 : separation$1(left_1, right_1) / 2;
var tx_1 = delta - left_1.getLayout().x;
var kx_1 = 0;
var ky_1 = 0;
var coorX_1 = 0;
var coorY_1 = 0;
if (layout2 === "radial") {
kx_1 = width / (right_1.getLayout().x + delta + tx_1);
ky_1 = height / (bottom_1.depth - 1 || 1);
eachBefore(realRoot, function(node2) {
coorX_1 = (node2.getLayout().x + tx_1) * kx_1;
coorY_1 = (node2.depth - 1) * ky_1;
var finalCoor = radialCoordinate(coorX_1, coorY_1);
node2.setLayout({
x: finalCoor.x,
y: finalCoor.y,
rawX: coorX_1,
rawY: coorY_1
}, true);
});
} else {
var orient_1 = seriesModel.getOrient();
if (orient_1 === "RL" || orient_1 === "LR") {
ky_1 = height / (right_1.getLayout().x + delta + tx_1);
kx_1 = width / (bottom_1.depth - 1 || 1);
eachBefore(realRoot, function(node2) {
coorY_1 = (node2.getLayout().x + tx_1) * ky_1;
coorX_1 = orient_1 === "LR" ? (node2.depth - 1) * kx_1 : width - (node2.depth - 1) * kx_1;
node2.setLayout({
x: coorX_1,
y: coorY_1
}, true);
});
} else if (orient_1 === "TB" || orient_1 === "BT") {
kx_1 = width / (right_1.getLayout().x + delta + tx_1);
ky_1 = height / (bottom_1.depth - 1 || 1);
eachBefore(realRoot, function(node2) {
coorX_1 = (node2.getLayout().x + tx_1) * kx_1;
coorY_1 = orient_1 === "TB" ? (node2.depth - 1) * ky_1 : height - (node2.depth - 1) * ky_1;
node2.setLayout({
x: coorX_1,
y: coorY_1
}, true);
});
}
}
}
}
function treeVisual(ecModel) {
ecModel.eachSeriesByType("tree", function(seriesModel) {
var data = seriesModel.getData();
var tree = data.tree;
tree.eachNode(function(node2) {
var model = node2.getModel();
var style2 = model.getModel("itemStyle").getItemStyle();
var existsStyle = data.ensureUniqueItemVisual(node2.dataIndex, "style");
extend(existsStyle, style2);
});
});
}
function installTreeAction(registers) {
registers.registerAction({
type: "treeExpandAndCollapse",
event: "treeExpandAndCollapse",
update: "update"
}, function(payload, ecModel) {
ecModel.eachComponent({
mainType: "series",
subType: "tree",
query: payload
}, function(seriesModel) {
var dataIndex = payload.dataIndex;
var tree = seriesModel.getData().tree;
var node2 = tree.getNodeByDataIndex(dataIndex);
node2.isExpand = !node2.isExpand;
});
});
registers.registerAction({
type: "treeRoam",
event: "treeRoam",
// Here we set 'none' instead of 'update', because roam action
// just need to update the transform matrix without having to recalculate
// the layout. So don't need to go through the whole update process, such
// as 'dataPrcocess', 'coordSystemUpdate', 'layout' and so on.
update: "none"
}, function(payload, ecModel, api) {
ecModel.eachComponent({
mainType: "series",
subType: "tree",
query: payload
}, function(seriesModel) {
var coordSys = seriesModel.coordinateSystem;
var res = updateCenterAndZoom(coordSys, payload, void 0, api);
seriesModel.setCenter && seriesModel.setCenter(res.center);
seriesModel.setZoom && seriesModel.setZoom(res.zoom);
});
});
}
function install$H(registers) {
registers.registerChartView(TreeView);
registers.registerSeriesModel(TreeSeriesModel);
registers.registerLayout(treeLayout);
registers.registerVisual(treeVisual);
installTreeAction(registers);
}
var actionTypes = ["treemapZoomToNode", "treemapRender", "treemapMove"];
function installTreemapAction(registers) {
for (var i = 0; i < actionTypes.length; i++) {
registers.registerAction({
type: actionTypes[i],
update: "updateView"
}, noop2);
}
registers.registerAction({
type: "treemapRootToNode",
update: "updateView"
}, function(payload, ecModel) {
ecModel.eachComponent({
mainType: "series",
subType: "treemap",
query: payload
}, handleRootToNode);
function handleRootToNode(model, index2) {
var types2 = ["treemapZoomToNode", "treemapRootToNode"];
var targetInfo = retrieveTargetInfo(payload, types2, model);
if (targetInfo) {
var originViewRoot = model.getViewRoot();
if (originViewRoot) {
payload.direction = aboveViewRoot(originViewRoot, targetInfo.node) ? "rollUp" : "drillDown";
}
model.resetViewRoot(targetInfo.node);
}
}
});
}
function enableAriaDecalForTree(seriesModel) {
var data = seriesModel.getData();
var tree = data.tree;
var decalPaletteScope2 = {};
tree.eachNode(function(node2) {
var current = node2;
while (current && current.depth > 1) {
current = current.parentNode;
}
var decal = getDecalFromPalette(seriesModel.ecModel, current.name || current.dataIndex + "", decalPaletteScope2);
node2.setVisual("decal", decal);
});
}
var TreemapSeriesModel = (
/** @class */
function(_super) {
__extends(TreemapSeriesModel2, _super);
function TreemapSeriesModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = TreemapSeriesModel2.type;
_this.preventUsingHoverLayer = true;
return _this;
}
TreemapSeriesModel2.prototype.getInitialData = function(option, ecModel) {
var root = {
name: option.name,
children: option.data
};
completeTreeValue$1(root);
var levels = option.levels || [];
var designatedVisualItemStyle = this.designatedVisualItemStyle = {};
var designatedVisualModel = new Model({
itemStyle: designatedVisualItemStyle
}, this, ecModel);
levels = option.levels = setDefault(levels, ecModel);
var levelModels = map$1(levels || [], function(levelDefine) {
return new Model(levelDefine, designatedVisualModel, ecModel);
}, this);
var tree = Tree.createTree(root, this, beforeLink);
function beforeLink(nodeData) {
nodeData.wrapMethod("getItemModel", function(model, idx) {
var node2 = tree.getNodeByDataIndex(idx);
var levelModel = node2 ? levelModels[node2.depth] : null;
model.parentModel = levelModel || designatedVisualModel;
return model;
});
}
return tree.data;
};
TreemapSeriesModel2.prototype.optionUpdated = function() {
this.resetViewRoot();
};
TreemapSeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) {
var data = this.getData();
var value = this.getRawValue(dataIndex);
var name = data.getName(dataIndex);
return createTooltipMarkup("nameValue", {
name,
value
});
};
TreemapSeriesModel2.prototype.getDataParams = function(dataIndex) {
var params = _super.prototype.getDataParams.apply(this, arguments);
var node2 = this.getData().tree.getNodeByDataIndex(dataIndex);
params.treeAncestors = wrapTreePathInfo(node2, this);
params.treePathInfo = params.treeAncestors;
return params;
};
TreemapSeriesModel2.prototype.setLayoutInfo = function(layoutInfo) {
this.layoutInfo = this.layoutInfo || {};
extend(this.layoutInfo, layoutInfo);
};
TreemapSeriesModel2.prototype.mapIdToIndex = function(id2) {
var idIndexMap = this._idIndexMap;
if (!idIndexMap) {
idIndexMap = this._idIndexMap = createHashMap();
this._idIndexMapCount = 0;
}
var index2 = idIndexMap.get(id2);
if (index2 == null) {
idIndexMap.set(id2, index2 = this._idIndexMapCount++);
}
return index2;
};
TreemapSeriesModel2.prototype.getViewRoot = function() {
return this._viewRoot;
};
TreemapSeriesModel2.prototype.resetViewRoot = function(viewRoot) {
viewRoot ? this._viewRoot = viewRoot : viewRoot = this._viewRoot;
var root = this.getRawData().tree.root;
if (!viewRoot || viewRoot !== root && !root.contains(viewRoot)) {
this._viewRoot = root;
}
};
TreemapSeriesModel2.prototype.enableAriaDecal = function() {
enableAriaDecalForTree(this);
};
TreemapSeriesModel2.type = "series.treemap";
TreemapSeriesModel2.layoutMode = "box";
TreemapSeriesModel2.defaultOption = {
// Disable progressive rendering
progressive: 0,
// size: ['80%', '80%'], // deprecated, compatible with ec2.
left: "center",
top: "middle",
width: "80%",
height: "80%",
sort: true,
clipWindow: "origin",
squareRatio: 0.5 * (1 + Math.sqrt(5)),
leafDepth: null,
drillDownIcon: "▶",
// to align specialized icon. ▷▶❒❐▼✚
zoomToNodeRatio: 0.32 * 0.32,
scaleLimit: null,
roam: true,
nodeClick: "zoomToNode",
animation: true,
animationDurationUpdate: 900,
animationEasing: "quinticInOut",
breadcrumb: {
show: true,
height: 22,
left: "center",
top: "bottom",
// right
// bottom
emptyItemWidth: 25,
itemStyle: {
color: "rgba(0,0,0,0.7)",
textStyle: {
color: "#fff"
}
},
emphasis: {
itemStyle: {
color: "rgba(0,0,0,0.9)"
// '#5793f3',
}
}
},
label: {
show: true,
// Do not use textDistance, for ellipsis rect just the same as treemap node rect.
distance: 0,
padding: 5,
position: "inside",
// formatter: null,
color: "#fff",
overflow: "truncate"
// align
// verticalAlign
},
upperLabel: {
show: false,
position: [0, "50%"],
height: 20,
// formatter: null,
// color: '#fff',
overflow: "truncate",
// align: null,
verticalAlign: "middle"
},
itemStyle: {
color: null,
colorAlpha: null,
colorSaturation: null,
borderWidth: 0,
gapWidth: 0,
borderColor: "#fff",
borderColorSaturation: null
// If specified, borderColor will be ineffective, and the
// border color is evaluated by color of current node and
// borderColorSaturation.
},
emphasis: {
upperLabel: {
show: true,
position: [0, "50%"],
overflow: "truncate",
verticalAlign: "middle"
}
},
visualDimension: 0,
visualMin: null,
visualMax: null,
color: [],
// level[n].color (if necessary).
// + Specify color list of each level. level[0].color would be global
// color list if not specified. (see method `setDefault`).
// + But set as a empty array to forbid fetch color from global palette
// when using nodeModel.get('color'), otherwise nodes on deep level
// will always has color palette set and are not able to inherit color
// from parent node.
// + TreemapSeries.color can not be set as 'none', otherwise effect
// legend color fetching (see seriesColor.js).
colorAlpha: null,
colorSaturation: null,
colorMappingBy: "index",
visibleMin: 10,
// be rendered. Only works when sort is 'asc' or 'desc'.
childrenVisibleMin: null,
// grandchildren will not show.
// Why grandchildren? If not grandchildren but children,
// some siblings show children and some not,
// the appearance may be mess and not consistent,
levels: []
// Each item: {
// visibleMin, itemStyle, visualDimension, label
// }
};
return TreemapSeriesModel2;
}(SeriesModel)
);
function completeTreeValue$1(dataNode) {
var sum2 = 0;
each$f(dataNode.children, function(child) {
completeTreeValue$1(child);
var childValue = child.value;
isArray$1(childValue) && (childValue = childValue[0]);
sum2 += childValue;
});
var thisValue = dataNode.value;
if (isArray$1(thisValue)) {
thisValue = thisValue[0];
}
if (thisValue == null || isNaN(thisValue)) {
thisValue = sum2;
}
if (thisValue < 0) {
thisValue = 0;
}
isArray$1(dataNode.value) ? dataNode.value[0] = thisValue : dataNode.value = thisValue;
}
function setDefault(levels, ecModel) {
var globalColorList = normalizeToArray(ecModel.get("color"));
var globalDecalList = normalizeToArray(ecModel.get(["aria", "decal", "decals"]));
if (!globalColorList) {
return;
}
levels = levels || [];
var hasColorDefine;
var hasDecalDefine;
each$f(levels, function(levelDefine) {
var model = new Model(levelDefine);
var modelColor = model.get("color");
var modelDecal = model.get("decal");
if (model.get(["itemStyle", "color"]) || modelColor && modelColor !== "none") {
hasColorDefine = true;
}
if (model.get(["itemStyle", "decal"]) || modelDecal && modelDecal !== "none") {
hasDecalDefine = true;
}
});
var level0 = levels[0] || (levels[0] = {});
if (!hasColorDefine) {
level0.color = globalColorList.slice();
}
if (!hasDecalDefine && globalDecalList) {
level0.decal = globalDecalList.slice();
}
return levels;
}
var TEXT_PADDING = 8;
var ITEM_GAP = 8;
var ARRAY_LENGTH = 5;
var Breadcrumb = (
/** @class */
function() {
function Breadcrumb2(containerGroup) {
this.group = new Group$3();
containerGroup.add(this.group);
}
Breadcrumb2.prototype.render = function(seriesModel, api, targetNode, onSelect) {
var model = seriesModel.getModel("breadcrumb");
var thisGroup = this.group;
thisGroup.removeAll();
if (!model.get("show") || !targetNode) {
return;
}
var normalStyleModel = model.getModel("itemStyle");
var emphasisModel = model.getModel("emphasis");
var textStyleModel = normalStyleModel.getModel("textStyle");
var emphasisTextStyleModel = emphasisModel.getModel(["itemStyle", "textStyle"]);
var layoutParam = {
pos: {
left: model.get("left"),
right: model.get("right"),
top: model.get("top"),
bottom: model.get("bottom")
},
box: {
width: api.getWidth(),
height: api.getHeight()
},
emptyItemWidth: model.get("emptyItemWidth"),
totalWidth: 0,
renderList: []
};
this._prepare(targetNode, layoutParam, textStyleModel);
this._renderContent(seriesModel, layoutParam, normalStyleModel, emphasisModel, textStyleModel, emphasisTextStyleModel, onSelect);
positionElement(thisGroup, layoutParam.pos, layoutParam.box);
};
Breadcrumb2.prototype._prepare = function(targetNode, layoutParam, textStyleModel) {
for (var node2 = targetNode; node2; node2 = node2.parentNode) {
var text = convertOptionIdName(node2.getModel().get("name"), "");
var textRect = textStyleModel.getTextRect(text);
var itemWidth = Math.max(textRect.width + TEXT_PADDING * 2, layoutParam.emptyItemWidth);
layoutParam.totalWidth += itemWidth + ITEM_GAP;
layoutParam.renderList.push({
node: node2,
text,
width: itemWidth
});
}
};
Breadcrumb2.prototype._renderContent = function(seriesModel, layoutParam, normalStyleModel, emphasisModel, textStyleModel, emphasisTextStyleModel, onSelect) {
var lastX = 0;
var emptyItemWidth = layoutParam.emptyItemWidth;
var height = seriesModel.get(["breadcrumb", "height"]);
var availableSize = getAvailableSize(layoutParam.pos, layoutParam.box);
var totalWidth = layoutParam.totalWidth;
var renderList = layoutParam.renderList;
var emphasisItemStyle = emphasisModel.getModel("itemStyle").getItemStyle();
for (var i = renderList.length - 1; i >= 0; i--) {
var item = renderList[i];
var itemNode = item.node;
var itemWidth = item.width;
var text = item.text;
if (totalWidth > availableSize.width) {
totalWidth -= itemWidth - emptyItemWidth;
itemWidth = emptyItemWidth;
text = null;
}
var el2 = new Polygon({
shape: {
points: makeItemPoints(lastX, 0, itemWidth, height, i === renderList.length - 1, i === 0)
},
style: defaults(normalStyleModel.getItemStyle(), {
lineJoin: "bevel"
}),
textContent: new ZRText({
style: createTextStyle$1(textStyleModel, {
text
})
}),
textConfig: {
position: "inside"
},
z2: Z2_EMPHASIS_LIFT * 1e4,
onclick: curry$1(onSelect, itemNode)
});
el2.disableLabelAnimation = true;
el2.getTextContent().ensureState("emphasis").style = createTextStyle$1(emphasisTextStyleModel, {
text
});
el2.ensureState("emphasis").style = emphasisItemStyle;
toggleHoverEmphasis(el2, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
this.group.add(el2);
packEventData(el2, seriesModel, itemNode);
lastX += itemWidth + ITEM_GAP;
}
};
Breadcrumb2.prototype.remove = function() {
this.group.removeAll();
};
return Breadcrumb2;
}()
);
function makeItemPoints(x2, y2, itemWidth, itemHeight, head, tail) {
var points2 = [[head ? x2 : x2 - ARRAY_LENGTH, y2], [x2 + itemWidth, y2], [x2 + itemWidth, y2 + itemHeight], [head ? x2 : x2 - ARRAY_LENGTH, y2 + itemHeight]];
!tail && points2.splice(2, 0, [x2 + itemWidth + ARRAY_LENGTH, y2 + itemHeight / 2]);
!head && points2.push([x2, y2 + itemHeight / 2]);
return points2;
}
function packEventData(el2, seriesModel, itemNode) {
getECData(el2).eventData = {
componentType: "series",
componentSubType: "treemap",
componentIndex: seriesModel.componentIndex,
seriesIndex: seriesModel.seriesIndex,
seriesName: seriesModel.name,
seriesType: "treemap",
selfType: "breadcrumb",
nodeData: {
dataIndex: itemNode && itemNode.dataIndex,
name: itemNode && itemNode.name
},
treePathInfo: itemNode && wrapTreePathInfo(itemNode, seriesModel)
};
}
var AnimationWrap = (
/** @class */
function() {
function AnimationWrap2() {
this._storage = [];
this._elExistsMap = {};
}
AnimationWrap2.prototype.add = function(el2, target, duration, delay, easing) {
if (this._elExistsMap[el2.id]) {
return false;
}
this._elExistsMap[el2.id] = true;
this._storage.push({
el: el2,
target,
duration,
delay,
easing
});
return true;
};
AnimationWrap2.prototype.finished = function(callback) {
this._finishedCallback = callback;
return this;
};
AnimationWrap2.prototype.start = function() {
var _this = this;
var count2 = this._storage.length;
var checkTerminate = function() {
count2--;
if (count2 <= 0) {
_this._storage.length = 0;
_this._elExistsMap = {};
_this._finishedCallback && _this._finishedCallback();
}
};
for (var i = 0, len2 = this._storage.length; i < len2; i++) {
var item = this._storage[i];
item.el.animateTo(item.target, {
duration: item.duration,
delay: item.delay,
easing: item.easing,
setToFinal: true,
done: checkTerminate,
aborted: checkTerminate
});
}
return this;
};
return AnimationWrap2;
}()
);
function createWrap() {
return new AnimationWrap();
}
var Group$2 = Group$3;
var Rect$1 = Rect$2;
var DRAG_THRESHOLD = 3;
var PATH_LABEL_NOAMAL = "label";
var PATH_UPPERLABEL_NORMAL = "upperLabel";
var Z2_BASE = Z2_EMPHASIS_LIFT * 10;
var Z2_BG = Z2_EMPHASIS_LIFT * 2;
var Z2_CONTENT = Z2_EMPHASIS_LIFT * 3;
var getStateItemStyle = makeStyleMapper([
["fill", "color"],
// `borderColor` and `borderWidth` has been occupied,
// so use `stroke` to indicate the stroke of the rect.
["stroke", "strokeColor"],
["lineWidth", "strokeWidth"],
["shadowBlur"],
["shadowOffsetX"],
["shadowOffsetY"],
["shadowColor"]
// Option decal is in `DecalObject` but style.decal is in `PatternObject`.
// So do not transfer decal directly.
]);
var getItemStyleNormal = function(model) {
var itemStyle = getStateItemStyle(model);
itemStyle.stroke = itemStyle.fill = itemStyle.lineWidth = null;
return itemStyle;
};
var inner$d = makeInner();
var TreemapView = (
/** @class */
function(_super) {
__extends(TreemapView2, _super);
function TreemapView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = TreemapView2.type;
_this._state = "ready";
_this._storage = createStorage();
return _this;
}
TreemapView2.prototype.render = function(seriesModel, ecModel, api, payload) {
var models = ecModel.findComponents({
mainType: "series",
subType: "treemap",
query: payload
});
if (indexOf(models, seriesModel) < 0) {
return;
}
this.seriesModel = seriesModel;
this.api = api;
this.ecModel = ecModel;
var types2 = ["treemapZoomToNode", "treemapRootToNode"];
var targetInfo = retrieveTargetInfo(payload, types2, seriesModel);
var payloadType = payload && payload.type;
var layoutInfo = seriesModel.layoutInfo;
var isInit = !this._oldTree;
var thisStorage = this._storage;
var reRoot = payloadType === "treemapRootToNode" && targetInfo && thisStorage ? {
rootNodeGroup: thisStorage.nodeGroup[targetInfo.node.getRawIndex()],
direction: payload.direction
} : null;
var containerGroup = this._giveContainerGroup(layoutInfo);
var hasAnimation = seriesModel.get("animation");
var renderResult = this._doRender(containerGroup, seriesModel, reRoot);
hasAnimation && !isInit && (!payloadType || payloadType === "treemapZoomToNode" || payloadType === "treemapRootToNode") ? this._doAnimation(containerGroup, renderResult, seriesModel, reRoot) : renderResult.renderFinally();
this._resetController(api);
this._renderBreadcrumb(seriesModel, api, targetInfo);
};
TreemapView2.prototype._giveContainerGroup = function(layoutInfo) {
var containerGroup = this._containerGroup;
if (!containerGroup) {
containerGroup = this._containerGroup = new Group$2();
this._initEvents(containerGroup);
this.group.add(containerGroup);
}
containerGroup.x = layoutInfo.x;
containerGroup.y = layoutInfo.y;
return containerGroup;
};
TreemapView2.prototype._doRender = function(containerGroup, seriesModel, reRoot) {
var thisTree = seriesModel.getData().tree;
var oldTree = this._oldTree;
var lastsForAnimation = createStorage();
var thisStorage = createStorage();
var oldStorage = this._storage;
var willInvisibleEls = [];
function doRenderNode(thisNode, oldNode, parentGroup, depth) {
return renderNode(seriesModel, thisStorage, oldStorage, reRoot, lastsForAnimation, willInvisibleEls, thisNode, oldNode, parentGroup, depth);
}
dualTravel(thisTree.root ? [thisTree.root] : [], oldTree && oldTree.root ? [oldTree.root] : [], containerGroup, thisTree === oldTree || !oldTree, 0);
var willDeleteEls = clearStorage(oldStorage);
this._oldTree = thisTree;
this._storage = thisStorage;
if (this._controllerHost) {
var _oldRootLayout = this.seriesModel.layoutInfo;
var rootLayout = thisTree.root.getLayout();
if (rootLayout.width === _oldRootLayout.width && rootLayout.height === _oldRootLayout.height) {
this._controllerHost.zoom = 1;
}
}
return {
lastsForAnimation,
willDeleteEls,
renderFinally
};
function dualTravel(thisViewChildren, oldViewChildren, parentGroup, sameTree, depth) {
if (sameTree) {
oldViewChildren = thisViewChildren;
each$f(thisViewChildren, function(child, index2) {
!child.isRemoved() && processNode(index2, index2);
});
} else {
new DataDiffer(oldViewChildren, thisViewChildren, getKey2, getKey2).add(processNode).update(processNode).remove(curry$1(processNode, null)).execute();
}
function getKey2(node2) {
return node2.getId();
}
function processNode(newIndex, oldIndex) {
var thisNode = newIndex != null ? thisViewChildren[newIndex] : null;
var oldNode = oldIndex != null ? oldViewChildren[oldIndex] : null;
var group = doRenderNode(thisNode, oldNode, parentGroup, depth);
group && dualTravel(thisNode && thisNode.viewChildren || [], oldNode && oldNode.viewChildren || [], group, sameTree, depth + 1);
}
}
function clearStorage(storage2) {
var willDeleteEls2 = createStorage();
storage2 && each$f(storage2, function(store, storageName) {
var delEls = willDeleteEls2[storageName];
each$f(store, function(el2) {
el2 && (delEls.push(el2), inner$d(el2).willDelete = true);
});
});
return willDeleteEls2;
}
function renderFinally() {
each$f(willDeleteEls, function(els) {
each$f(els, function(el2) {
el2.parent && el2.parent.remove(el2);
});
});
each$f(willInvisibleEls, function(el2) {
el2.invisible = true;
el2.dirty();
});
}
};
TreemapView2.prototype._doAnimation = function(containerGroup, renderResult, seriesModel, reRoot) {
var durationOption = seriesModel.get("animationDurationUpdate");
var easingOption = seriesModel.get("animationEasing");
var duration = (isFunction$1(durationOption) ? 0 : durationOption) || 0;
var easing = (isFunction$1(easingOption) ? null : easingOption) || "cubicOut";
var animationWrap = createWrap();
each$f(renderResult.willDeleteEls, function(store, storageName) {
each$f(store, function(el2, rawIndex) {
if (el2.invisible) {
return;
}
var parent = el2.parent;
var target;
var innerStore = inner$d(parent);
if (reRoot && reRoot.direction === "drillDown") {
target = parent === reRoot.rootNodeGroup ? {
shape: {
x: 0,
y: 0,
width: innerStore.nodeWidth,
height: innerStore.nodeHeight
},
style: {
opacity: 0
}
} : {
style: {
opacity: 0
}
};
} else {
var targetX = 0;
var targetY = 0;
if (!innerStore.willDelete) {
targetX = innerStore.nodeWidth / 2;
targetY = innerStore.nodeHeight / 2;
}
target = storageName === "nodeGroup" ? {
x: targetX,
y: targetY,
style: {
opacity: 0
}
} : {
shape: {
x: targetX,
y: targetY,
width: 0,
height: 0
},
style: {
opacity: 0
}
};
}
target && animationWrap.add(el2, target, duration, 0, easing);
});
});
each$f(this._storage, function(store, storageName) {
each$f(store, function(el2, rawIndex) {
var last = renderResult.lastsForAnimation[storageName][rawIndex];
var target = {};
if (!last) {
return;
}
if (el2 instanceof Group$3) {
if (last.oldX != null) {
target.x = el2.x;
target.y = el2.y;
el2.x = last.oldX;
el2.y = last.oldY;
}
} else {
if (last.oldShape) {
target.shape = extend({}, el2.shape);
el2.setShape(last.oldShape);
}
if (last.fadein) {
el2.setStyle("opacity", 0);
target.style = {
opacity: 1
};
} else if (el2.style.opacity !== 1) {
target.style = {
opacity: 1
};
}
}
animationWrap.add(el2, target, duration, 0, easing);
});
}, this);
this._state = "animating";
animationWrap.finished(bind$2(function() {
this._state = "ready";
renderResult.renderFinally();
}, this)).start();
};
TreemapView2.prototype._resetController = function(api) {
var controller = this._controller;
var controllerHost = this._controllerHost;
if (!controllerHost) {
this._controllerHost = {
target: this.group
};
controllerHost = this._controllerHost;
}
if (!controller) {
controller = this._controller = new RoamController(api.getZr());
controller.enable(this.seriesModel.get("roam"));
controllerHost.zoomLimit = this.seriesModel.get("scaleLimit");
controllerHost.zoom = this.seriesModel.get("zoom");
controller.on("pan", bind$2(this._onPan, this));
controller.on("zoom", bind$2(this._onZoom, this));
}
var rect = new BoundingRect(0, 0, api.getWidth(), api.getHeight());
controller.setPointerChecker(function(e2, x2, y2) {
return rect.contain(x2, y2);
});
};
TreemapView2.prototype._clearController = function() {
var controller = this._controller;
this._controllerHost = null;
if (controller) {
controller.dispose();
controller = null;
}
};
TreemapView2.prototype._onPan = function(e2) {
if (this._state !== "animating" && (Math.abs(e2.dx) > DRAG_THRESHOLD || Math.abs(e2.dy) > DRAG_THRESHOLD)) {
var root = this.seriesModel.getData().tree.root;
if (!root) {
return;
}
var rootLayout = root.getLayout();
if (!rootLayout) {
return;
}
this.api.dispatchAction({
type: "treemapMove",
from: this.uid,
seriesId: this.seriesModel.id,
rootRect: {
x: rootLayout.x + e2.dx,
y: rootLayout.y + e2.dy,
width: rootLayout.width,
height: rootLayout.height
}
});
}
};
TreemapView2.prototype._onZoom = function(e2) {
var mouseX = e2.originX;
var mouseY = e2.originY;
var zoomDelta = e2.scale;
if (this._state !== "animating") {
var root = this.seriesModel.getData().tree.root;
if (!root) {
return;
}
var rootLayout = root.getLayout();
if (!rootLayout) {
return;
}
var rect = new BoundingRect(rootLayout.x, rootLayout.y, rootLayout.width, rootLayout.height);
var zoomLimit = null;
var _controllerHost = this._controllerHost;
zoomLimit = _controllerHost.zoomLimit;
var newZoom = _controllerHost.zoom = _controllerHost.zoom || 1;
newZoom *= zoomDelta;
if (zoomLimit) {
var zoomMin = zoomLimit.min || 0;
var zoomMax = zoomLimit.max || Infinity;
newZoom = Math.max(Math.min(zoomMax, newZoom), zoomMin);
}
var zoomScale = newZoom / _controllerHost.zoom;
_controllerHost.zoom = newZoom;
var layoutInfo = this.seriesModel.layoutInfo;
mouseX -= layoutInfo.x;
mouseY -= layoutInfo.y;
var m2 = create$1();
translate(m2, m2, [-mouseX, -mouseY]);
scale$1(m2, m2, [zoomScale, zoomScale]);
translate(m2, m2, [mouseX, mouseY]);
rect.applyTransform(m2);
this.api.dispatchAction({
type: "treemapRender",
from: this.uid,
seriesId: this.seriesModel.id,
rootRect: {
x: rect.x,
y: rect.y,
width: rect.width,
height: rect.height
}
});
}
};
TreemapView2.prototype._initEvents = function(containerGroup) {
var _this = this;
containerGroup.on("click", function(e2) {
if (_this._state !== "ready") {
return;
}
var nodeClick = _this.seriesModel.get("nodeClick", true);
if (!nodeClick) {
return;
}
var targetInfo = _this.findTarget(e2.offsetX, e2.offsetY);
if (!targetInfo) {
return;
}
var node2 = targetInfo.node;
if (node2.getLayout().isLeafRoot) {
_this._rootToNode(targetInfo);
} else {
if (nodeClick === "zoomToNode") {
_this._zoomToNode(targetInfo);
} else if (nodeClick === "link") {
var itemModel = node2.hostTree.data.getItemModel(node2.dataIndex);
var link = itemModel.get("link", true);
var linkTarget = itemModel.get("target", true) || "blank";
link && windowOpen(link, linkTarget);
}
}
}, this);
};
TreemapView2.prototype._renderBreadcrumb = function(seriesModel, api, targetInfo) {
var _this = this;
if (!targetInfo) {
targetInfo = seriesModel.get("leafDepth", true) != null ? {
node: seriesModel.getViewRoot()
} : this.findTarget(api.getWidth() / 2, api.getHeight() / 2);
if (!targetInfo) {
targetInfo = {
node: seriesModel.getData().tree.root
};
}
}
(this._breadcrumb || (this._breadcrumb = new Breadcrumb(this.group))).render(seriesModel, api, targetInfo.node, function(node2) {
if (_this._state !== "animating") {
aboveViewRoot(seriesModel.getViewRoot(), node2) ? _this._rootToNode({
node: node2
}) : _this._zoomToNode({
node: node2
});
}
});
};
TreemapView2.prototype.remove = function() {
this._clearController();
this._containerGroup && this._containerGroup.removeAll();
this._storage = createStorage();
this._state = "ready";
this._breadcrumb && this._breadcrumb.remove();
};
TreemapView2.prototype.dispose = function() {
this._clearController();
};
TreemapView2.prototype._zoomToNode = function(targetInfo) {
this.api.dispatchAction({
type: "treemapZoomToNode",
from: this.uid,
seriesId: this.seriesModel.id,
targetNode: targetInfo.node
});
};
TreemapView2.prototype._rootToNode = function(targetInfo) {
this.api.dispatchAction({
type: "treemapRootToNode",
from: this.uid,
seriesId: this.seriesModel.id,
targetNode: targetInfo.node
});
};
TreemapView2.prototype.findTarget = function(x2, y2) {
var targetInfo;
var viewRoot = this.seriesModel.getViewRoot();
viewRoot.eachNode({
attr: "viewChildren",
order: "preorder"
}, function(node2) {
var bgEl = this._storage.background[node2.getRawIndex()];
if (bgEl) {
var point = bgEl.transformCoordToLocal(x2, y2);
var shape = bgEl.shape;
if (shape.x <= point[0] && point[0] <= shape.x + shape.width && shape.y <= point[1] && point[1] <= shape.y + shape.height) {
targetInfo = {
node: node2,
offsetX: point[0],
offsetY: point[1]
};
} else {
return false;
}
}
}, this);
return targetInfo;
};
TreemapView2.type = "treemap";
return TreemapView2;
}(ChartView)
);
function createStorage() {
return {
nodeGroup: [],
background: [],
content: []
};
}
function renderNode(seriesModel, thisStorage, oldStorage, reRoot, lastsForAnimation, willInvisibleEls, thisNode, oldNode, parentGroup, depth) {
if (!thisNode) {
return;
}
var thisLayout = thisNode.getLayout();
var data = seriesModel.getData();
var nodeModel = thisNode.getModel();
data.setItemGraphicEl(thisNode.dataIndex, null);
if (!thisLayout || !thisLayout.isInView) {
return;
}
var thisWidth = thisLayout.width;
var thisHeight = thisLayout.height;
var borderWidth2 = thisLayout.borderWidth;
var thisInvisible = thisLayout.invisible;
var thisRawIndex = thisNode.getRawIndex();
var oldRawIndex = oldNode && oldNode.getRawIndex();
var thisViewChildren = thisNode.viewChildren;
var upperHeight = thisLayout.upperHeight;
var isParent = thisViewChildren && thisViewChildren.length;
var itemStyleNormalModel = nodeModel.getModel("itemStyle");
var itemStyleEmphasisModel = nodeModel.getModel(["emphasis", "itemStyle"]);
var itemStyleBlurModel = nodeModel.getModel(["blur", "itemStyle"]);
var itemStyleSelectModel = nodeModel.getModel(["select", "itemStyle"]);
var borderRadius = itemStyleNormalModel.get("borderRadius") || 0;
var group = giveGraphic("nodeGroup", Group$2);
if (!group) {
return;
}
parentGroup.add(group);
group.x = thisLayout.x || 0;
group.y = thisLayout.y || 0;
group.markRedraw();
inner$d(group).nodeWidth = thisWidth;
inner$d(group).nodeHeight = thisHeight;
if (thisLayout.isAboveViewRoot) {
return group;
}
var bg2 = giveGraphic("background", Rect$1, depth, Z2_BG);
bg2 && renderBackground(group, bg2, isParent && thisLayout.upperLabelHeight);
var emphasisModel = nodeModel.getModel("emphasis");
var focus = emphasisModel.get("focus");
var blurScope = emphasisModel.get("blurScope");
var isDisabled = emphasisModel.get("disabled");
var focusOrIndices = focus === "ancestor" ? thisNode.getAncestorsIndices() : focus === "descendant" ? thisNode.getDescendantIndices() : focus;
if (isParent) {
if (isHighDownDispatcher(group)) {
setAsHighDownDispatcher(group, false);
}
if (bg2) {
setAsHighDownDispatcher(bg2, !isDisabled);
data.setItemGraphicEl(thisNode.dataIndex, bg2);
enableHoverFocus(bg2, focusOrIndices, blurScope);
}
} else {
var content = giveGraphic("content", Rect$1, depth, Z2_CONTENT);
content && renderContent(group, content);
bg2.disableMorphing = true;
if (bg2 && isHighDownDispatcher(bg2)) {
setAsHighDownDispatcher(bg2, false);
}
setAsHighDownDispatcher(group, !isDisabled);
data.setItemGraphicEl(thisNode.dataIndex, group);
enableHoverFocus(group, focusOrIndices, blurScope);
}
return group;
function renderBackground(group2, bg3, useUpperLabel) {
var ecData = getECData(bg3);
ecData.dataIndex = thisNode.dataIndex;
ecData.seriesIndex = seriesModel.seriesIndex;
bg3.setShape({
x: 0,
y: 0,
width: thisWidth,
height: thisHeight,
r: borderRadius
});
if (thisInvisible) {
processInvisible(bg3);
} else {
bg3.invisible = false;
var style2 = thisNode.getVisual("style");
var visualBorderColor = style2.stroke;
var normalStyle = getItemStyleNormal(itemStyleNormalModel);
normalStyle.fill = visualBorderColor;
var emphasisStyle = getStateItemStyle(itemStyleEmphasisModel);
emphasisStyle.fill = itemStyleEmphasisModel.get("borderColor");
var blurStyle = getStateItemStyle(itemStyleBlurModel);
blurStyle.fill = itemStyleBlurModel.get("borderColor");
var selectStyle = getStateItemStyle(itemStyleSelectModel);
selectStyle.fill = itemStyleSelectModel.get("borderColor");
if (useUpperLabel) {
var upperLabelWidth = thisWidth - 2 * borderWidth2;
prepareText(
// PENDING: convert ZRColor to ColorString for text.
bg3,
visualBorderColor,
style2.opacity,
{
x: borderWidth2,
y: 0,
width: upperLabelWidth,
height: upperHeight
}
);
} else {
bg3.removeTextContent();
}
bg3.setStyle(normalStyle);
bg3.ensureState("emphasis").style = emphasisStyle;
bg3.ensureState("blur").style = blurStyle;
bg3.ensureState("select").style = selectStyle;
setDefaultStateProxy(bg3);
}
group2.add(bg3);
}
function renderContent(group2, content2) {
var ecData = getECData(content2);
ecData.dataIndex = thisNode.dataIndex;
ecData.seriesIndex = seriesModel.seriesIndex;
var contentWidth = Math.max(thisWidth - 2 * borderWidth2, 0);
var contentHeight = Math.max(thisHeight - 2 * borderWidth2, 0);
content2.culling = true;
content2.setShape({
x: borderWidth2,
y: borderWidth2,
width: contentWidth,
height: contentHeight,
r: borderRadius
});
if (thisInvisible) {
processInvisible(content2);
} else {
content2.invisible = false;
var nodeStyle = thisNode.getVisual("style");
var visualColor = nodeStyle.fill;
var normalStyle = getItemStyleNormal(itemStyleNormalModel);
normalStyle.fill = visualColor;
normalStyle.decal = nodeStyle.decal;
var emphasisStyle = getStateItemStyle(itemStyleEmphasisModel);
var blurStyle = getStateItemStyle(itemStyleBlurModel);
var selectStyle = getStateItemStyle(itemStyleSelectModel);
prepareText(content2, visualColor, nodeStyle.opacity, null);
content2.setStyle(normalStyle);
content2.ensureState("emphasis").style = emphasisStyle;
content2.ensureState("blur").style = blurStyle;
content2.ensureState("select").style = selectStyle;
setDefaultStateProxy(content2);
}
group2.add(content2);
}
function processInvisible(element) {
!element.invisible && willInvisibleEls.push(element);
}
function prepareText(rectEl, visualColor, visualOpacity, upperLabelRect) {
var normalLabelModel = nodeModel.getModel(upperLabelRect ? PATH_UPPERLABEL_NORMAL : PATH_LABEL_NOAMAL);
var defaultText = convertOptionIdName(nodeModel.get("name"), null);
var isShow = normalLabelModel.getShallow("show");
setLabelStyle(rectEl, getLabelStatesModels(nodeModel, upperLabelRect ? PATH_UPPERLABEL_NORMAL : PATH_LABEL_NOAMAL), {
defaultText: isShow ? defaultText : null,
inheritColor: visualColor,
defaultOpacity: visualOpacity,
labelFetcher: seriesModel,
labelDataIndex: thisNode.dataIndex
});
var textEl = rectEl.getTextContent();
if (!textEl) {
return;
}
var textStyle = textEl.style;
var textPadding = normalizeCssArray$1(textStyle.padding || 0);
if (upperLabelRect) {
rectEl.setTextConfig({
layoutRect: upperLabelRect
});
textEl.disableLabelLayout = true;
}
textEl.beforeUpdate = function() {
var width = Math.max((upperLabelRect ? upperLabelRect.width : rectEl.shape.width) - textPadding[1] - textPadding[3], 0);
var height = Math.max((upperLabelRect ? upperLabelRect.height : rectEl.shape.height) - textPadding[0] - textPadding[2], 0);
if (textStyle.width !== width || textStyle.height !== height) {
textEl.setStyle({
width,
height
});
}
};
textStyle.truncateMinChar = 2;
textStyle.lineOverflow = "truncate";
addDrillDownIcon(textStyle, upperLabelRect, thisLayout);
var textEmphasisState = textEl.getState("emphasis");
addDrillDownIcon(textEmphasisState ? textEmphasisState.style : null, upperLabelRect, thisLayout);
}
function addDrillDownIcon(style2, upperLabelRect, thisLayout2) {
var text = style2 ? style2.text : null;
if (!upperLabelRect && thisLayout2.isLeafRoot && text != null) {
var iconChar = seriesModel.get("drillDownIcon", true);
style2.text = iconChar ? iconChar + " " + text : text;
}
}
function giveGraphic(storageName, Ctor, depth2, z2) {
var element = oldRawIndex != null && oldStorage[storageName][oldRawIndex];
var lasts = lastsForAnimation[storageName];
if (element) {
oldStorage[storageName][oldRawIndex] = null;
prepareAnimationWhenHasOld(lasts, element);
} else if (!thisInvisible) {
element = new Ctor();
if (element instanceof Displayable) {
element.z2 = calculateZ2(depth2, z2);
}
prepareAnimationWhenNoOld(lasts, element);
}
return thisStorage[storageName][thisRawIndex] = element;
}
function prepareAnimationWhenHasOld(lasts, element) {
var lastCfg = lasts[thisRawIndex] = {};
if (element instanceof Group$2) {
lastCfg.oldX = element.x;
lastCfg.oldY = element.y;
} else {
lastCfg.oldShape = extend({}, element.shape);
}
}
function prepareAnimationWhenNoOld(lasts, element) {
var lastCfg = lasts[thisRawIndex] = {};
var parentNode2 = thisNode.parentNode;
var isGroup = element instanceof Group$3;
if (parentNode2 && (!reRoot || reRoot.direction === "drillDown")) {
var parentOldX = 0;
var parentOldY = 0;
var parentOldBg = lastsForAnimation.background[parentNode2.getRawIndex()];
if (!reRoot && parentOldBg && parentOldBg.oldShape) {
parentOldX = parentOldBg.oldShape.width;
parentOldY = parentOldBg.oldShape.height;
}
if (isGroup) {
lastCfg.oldX = 0;
lastCfg.oldY = parentOldY;
} else {
lastCfg.oldShape = {
x: parentOldX,
y: parentOldY,
width: 0,
height: 0
};
}
}
lastCfg.fadein = !isGroup;
}
}
function calculateZ2(depth, z2InLevel) {
return depth * Z2_BASE + z2InLevel;
}
var each$c = each$f;
var isObject = isObject$3;
var CATEGORY_DEFAULT_VISUAL_INDEX = -1;
var VisualMapping = (
/** @class */
function() {
function VisualMapping2(option) {
var mappingMethod = option.mappingMethod;
var visualType = option.type;
var thisOption = this.option = clone$4(option);
this.type = visualType;
this.mappingMethod = mappingMethod;
this._normalizeData = normalizers[mappingMethod];
var visualHandler = VisualMapping2.visualHandlers[visualType];
this.applyVisual = visualHandler.applyVisual;
this.getColorMapper = visualHandler.getColorMapper;
this._normalizedToVisual = visualHandler._normalizedToVisual[mappingMethod];
if (mappingMethod === "piecewise") {
normalizeVisualRange(thisOption);
preprocessForPiecewise(thisOption);
} else if (mappingMethod === "category") {
thisOption.categories ? preprocessForSpecifiedCategory(thisOption) : normalizeVisualRange(thisOption, true);
} else {
assert(mappingMethod !== "linear" || thisOption.dataExtent);
normalizeVisualRange(thisOption);
}
}
VisualMapping2.prototype.mapValueToVisual = function(value) {
var normalized = this._normalizeData(value);
return this._normalizedToVisual(normalized, value);
};
VisualMapping2.prototype.getNormalizer = function() {
return bind$2(this._normalizeData, this);
};
VisualMapping2.listVisualTypes = function() {
return keys(VisualMapping2.visualHandlers);
};
VisualMapping2.isValidType = function(visualType) {
return VisualMapping2.visualHandlers.hasOwnProperty(visualType);
};
VisualMapping2.eachVisual = function(visual, callback, context) {
if (isObject$3(visual)) {
each$f(visual, callback, context);
} else {
callback.call(context, visual);
}
};
VisualMapping2.mapVisual = function(visual, callback, context) {
var isPrimary;
var newVisual = isArray$1(visual) ? [] : isObject$3(visual) ? {} : (isPrimary = true, null);
VisualMapping2.eachVisual(visual, function(v4, key) {
var newVal = callback.call(context, v4, key);
isPrimary ? newVisual = newVal : newVisual[key] = newVal;
});
return newVisual;
};
VisualMapping2.retrieveVisuals = function(obj) {
var ret = {};
var hasVisual;
obj && each$c(VisualMapping2.visualHandlers, function(h2, visualType) {
if (obj.hasOwnProperty(visualType)) {
ret[visualType] = obj[visualType];
hasVisual = true;
}
});
return hasVisual ? ret : null;
};
VisualMapping2.prepareVisualTypes = function(visualTypes) {
if (isArray$1(visualTypes)) {
visualTypes = visualTypes.slice();
} else if (isObject(visualTypes)) {
var types_1 = [];
each$c(visualTypes, function(item, type4) {
types_1.push(type4);
});
visualTypes = types_1;
} else {
return [];
}
visualTypes.sort(function(type1, type22) {
return type22 === "color" && type1 !== "color" && type1.indexOf("color") === 0 ? 1 : -1;
});
return visualTypes;
};
VisualMapping2.dependsOn = function(visualType1, visualType2) {
return visualType2 === "color" ? !!(visualType1 && visualType1.indexOf(visualType2) === 0) : visualType1 === visualType2;
};
VisualMapping2.findPieceIndex = function(value, pieceList, findClosestWhenOutside) {
var possibleI;
var abs2 = Infinity;
for (var i = 0, len2 = pieceList.length; i < len2; i++) {
var pieceValue = pieceList[i].value;
if (pieceValue != null) {
if (pieceValue === value || isString$1(pieceValue) && pieceValue === value + "") {
return i;
}
findClosestWhenOutside && updatePossible(pieceValue, i);
}
}
for (var i = 0, len2 = pieceList.length; i < len2; i++) {
var piece = pieceList[i];
var interval = piece.interval;
var close_1 = piece.close;
if (interval) {
if (interval[0] === -Infinity) {
if (littleThan(close_1[1], value, interval[1])) {
return i;
}
} else if (interval[1] === Infinity) {
if (littleThan(close_1[0], interval[0], value)) {
return i;
}
} else if (littleThan(close_1[0], interval[0], value) && littleThan(close_1[1], value, interval[1])) {
return i;
}
findClosestWhenOutside && updatePossible(interval[0], i);
findClosestWhenOutside && updatePossible(interval[1], i);
}
}
if (findClosestWhenOutside) {
return value === Infinity ? pieceList.length - 1 : value === -Infinity ? 0 : possibleI;
}
function updatePossible(val, index2) {
var newAbs = Math.abs(val - value);
if (newAbs < abs2) {
abs2 = newAbs;
possibleI = index2;
}
}
};
VisualMapping2.visualHandlers = {
color: {
applyVisual: makeApplyVisual("color"),
getColorMapper: function() {
var thisOption = this.option;
return bind$2(thisOption.mappingMethod === "category" ? function(value, isNormalized) {
!isNormalized && (value = this._normalizeData(value));
return doMapCategory.call(this, value);
} : function(value, isNormalized, out2) {
var returnRGBArray = !!out2;
!isNormalized && (value = this._normalizeData(value));
out2 = fastLerp(value, thisOption.parsedVisual, out2);
return returnRGBArray ? out2 : stringify(out2, "rgba");
}, this);
},
_normalizedToVisual: {
linear: function(normalized) {
return stringify(fastLerp(normalized, this.option.parsedVisual), "rgba");
},
category: doMapCategory,
piecewise: function(normalized, value) {
var result = getSpecifiedVisual.call(this, value);
if (result == null) {
result = stringify(fastLerp(normalized, this.option.parsedVisual), "rgba");
}
return result;
},
fixed: doMapFixed
}
},
colorHue: makePartialColorVisualHandler(function(color$1, value) {
return modifyHSL(color$1, value);
}),
colorSaturation: makePartialColorVisualHandler(function(color$1, value) {
return modifyHSL(color$1, null, value);
}),
colorLightness: makePartialColorVisualHandler(function(color$1, value) {
return modifyHSL(color$1, null, null, value);
}),
colorAlpha: makePartialColorVisualHandler(function(color$1, value) {
return modifyAlpha(color$1, value);
}),
decal: {
applyVisual: makeApplyVisual("decal"),
_normalizedToVisual: {
linear: null,
category: doMapCategory,
piecewise: null,
fixed: null
}
},
opacity: {
applyVisual: makeApplyVisual("opacity"),
_normalizedToVisual: createNormalizedToNumericVisual([0, 1])
},
liftZ: {
applyVisual: makeApplyVisual("liftZ"),
_normalizedToVisual: {
linear: doMapFixed,
category: doMapFixed,
piecewise: doMapFixed,
fixed: doMapFixed
}
},
symbol: {
applyVisual: function(value, getter, setter) {
var symbolCfg = this.mapValueToVisual(value);
setter("symbol", symbolCfg);
},
_normalizedToVisual: {
linear: doMapToArray,
category: doMapCategory,
piecewise: function(normalized, value) {
var result = getSpecifiedVisual.call(this, value);
if (result == null) {
result = doMapToArray.call(this, normalized);
}
return result;
},
fixed: doMapFixed
}
},
symbolSize: {
applyVisual: makeApplyVisual("symbolSize"),
_normalizedToVisual: createNormalizedToNumericVisual([0, 1])
}
};
return VisualMapping2;
}()
);
function preprocessForPiecewise(thisOption) {
var pieceList = thisOption.pieceList;
thisOption.hasSpecialVisual = false;
each$f(pieceList, function(piece, index2) {
piece.originIndex = index2;
if (piece.visual != null) {
thisOption.hasSpecialVisual = true;
}
});
}
function preprocessForSpecifiedCategory(thisOption) {
var categories = thisOption.categories;
var categoryMap = thisOption.categoryMap = {};
var visual = thisOption.visual;
each$c(categories, function(cate, index2) {
categoryMap[cate] = index2;
});
if (!isArray$1(visual)) {
var visualArr_1 = [];
if (isObject$3(visual)) {
each$c(visual, function(v4, cate) {
var index2 = categoryMap[cate];
visualArr_1[index2 != null ? index2 : CATEGORY_DEFAULT_VISUAL_INDEX] = v4;
});
} else {
visualArr_1[CATEGORY_DEFAULT_VISUAL_INDEX] = visual;
}
visual = setVisualToOption(thisOption, visualArr_1);
}
for (var i = categories.length - 1; i >= 0; i--) {
if (visual[i] == null) {
delete categoryMap[categories[i]];
categories.pop();
}
}
}
function normalizeVisualRange(thisOption, isCategory2) {
var visual = thisOption.visual;
var visualArr = [];
if (isObject$3(visual)) {
each$c(visual, function(v4) {
visualArr.push(v4);
});
} else if (visual != null) {
visualArr.push(visual);
}
var doNotNeedPair = {
color: 1,
symbol: 1
};
if (!isCategory2 && visualArr.length === 1 && !doNotNeedPair.hasOwnProperty(thisOption.type)) {
visualArr[1] = visualArr[0];
}
setVisualToOption(thisOption, visualArr);
}
function makePartialColorVisualHandler(applyValue) {
return {
applyVisual: function(value, getter, setter) {
var colorChannel = this.mapValueToVisual(value);
setter("color", applyValue(getter("color"), colorChannel));
},
_normalizedToVisual: createNormalizedToNumericVisual([0, 1])
};
}
function doMapToArray(normalized) {
var visual = this.option.visual;
return visual[Math.round(linearMap$2(normalized, [0, 1], [0, visual.length - 1], true))] || {};
}
function makeApplyVisual(visualType) {
return function(value, getter, setter) {
setter(visualType, this.mapValueToVisual(value));
};
}
function doMapCategory(normalized) {
var visual = this.option.visual;
return visual[this.option.loop && normalized !== CATEGORY_DEFAULT_VISUAL_INDEX ? normalized % visual.length : normalized];
}
function doMapFixed() {
return this.option.visual[0];
}
function createNormalizedToNumericVisual(sourceExtent) {
return {
linear: function(normalized) {
return linearMap$2(normalized, sourceExtent, this.option.visual, true);
},
category: doMapCategory,
piecewise: function(normalized, value) {
var result = getSpecifiedVisual.call(this, value);
if (result == null) {
result = linearMap$2(normalized, sourceExtent, this.option.visual, true);
}
return result;
},
fixed: doMapFixed
};
}
function getSpecifiedVisual(value) {
var thisOption = this.option;
var pieceList = thisOption.pieceList;
if (thisOption.hasSpecialVisual) {
var pieceIndex = VisualMapping.findPieceIndex(value, pieceList);
var piece = pieceList[pieceIndex];
if (piece && piece.visual) {
return piece.visual[this.type];
}
}
}
function setVisualToOption(thisOption, visualArr) {
thisOption.visual = visualArr;
if (thisOption.type === "color") {
thisOption.parsedVisual = map$1(visualArr, function(item) {
var color$1 = parse$1(item);
if (!color$1 && false) {
warn("'" + item + "' is an illegal color, fallback to '#000000'");
}
return color$1 || [0, 0, 0, 1];
});
}
return visualArr;
}
var normalizers = {
linear: function(value) {
return linearMap$2(value, this.option.dataExtent, [0, 1], true);
},
piecewise: function(value) {
var pieceList = this.option.pieceList;
var pieceIndex = VisualMapping.findPieceIndex(value, pieceList, true);
if (pieceIndex != null) {
return linearMap$2(pieceIndex, [0, pieceList.length - 1], [0, 1], true);
}
},
category: function(value) {
var index2 = this.option.categories ? this.option.categoryMap[value] : value;
return index2 == null ? CATEGORY_DEFAULT_VISUAL_INDEX : index2;
},
fixed: noop2
};
function littleThan(close, a, b2) {
return close ? a <= b2 : a < b2;
}
var ITEM_STYLE_NORMAL = "itemStyle";
var inner$c = makeInner();
const treemapVisual = {
seriesType: "treemap",
reset: function(seriesModel) {
var tree = seriesModel.getData().tree;
var root = tree.root;
if (root.isRemoved()) {
return;
}
travelTree(
root,
// Visual should calculate from tree root but not view root.
{},
seriesModel.getViewRoot().getAncestors(),
seriesModel
);
}
};
function travelTree(node2, designatedVisual, viewRootAncestors, seriesModel) {
var nodeModel = node2.getModel();
var nodeLayout = node2.getLayout();
var data = node2.hostTree.data;
if (!nodeLayout || nodeLayout.invisible || !nodeLayout.isInView) {
return;
}
var nodeItemStyleModel = nodeModel.getModel(ITEM_STYLE_NORMAL);
var visuals = buildVisuals(nodeItemStyleModel, designatedVisual, seriesModel);
var existsStyle = data.ensureUniqueItemVisual(node2.dataIndex, "style");
var borderColor = nodeItemStyleModel.get("borderColor");
var borderColorSaturation = nodeItemStyleModel.get("borderColorSaturation");
var thisNodeColor;
if (borderColorSaturation != null) {
thisNodeColor = calculateColor(visuals);
borderColor = calculateBorderColor(borderColorSaturation, thisNodeColor);
}
existsStyle.stroke = borderColor;
var viewChildren = node2.viewChildren;
if (!viewChildren || !viewChildren.length) {
thisNodeColor = calculateColor(visuals);
existsStyle.fill = thisNodeColor;
} else {
var mapping_1 = buildVisualMapping(node2, nodeModel, nodeLayout, nodeItemStyleModel, visuals, viewChildren);
each$f(viewChildren, function(child, index2) {
if (child.depth >= viewRootAncestors.length || child === viewRootAncestors[child.depth]) {
var childVisual = mapVisual$1(nodeModel, visuals, child, index2, mapping_1, seriesModel);
travelTree(child, childVisual, viewRootAncestors, seriesModel);
}
});
}
}
function buildVisuals(nodeItemStyleModel, designatedVisual, seriesModel) {
var visuals = extend({}, designatedVisual);
var designatedVisualItemStyle = seriesModel.designatedVisualItemStyle;
each$f(["color", "colorAlpha", "colorSaturation"], function(visualName) {
designatedVisualItemStyle[visualName] = designatedVisual[visualName];
var val = nodeItemStyleModel.get(visualName);
designatedVisualItemStyle[visualName] = null;
val != null && (visuals[visualName] = val);
});
return visuals;
}
function calculateColor(visuals) {
var color2 = getValueVisualDefine(visuals, "color");
if (color2) {
var colorAlpha = getValueVisualDefine(visuals, "colorAlpha");
var colorSaturation = getValueVisualDefine(visuals, "colorSaturation");
if (colorSaturation) {
color2 = modifyHSL(color2, null, null, colorSaturation);
}
if (colorAlpha) {
color2 = modifyAlpha(color2, colorAlpha);
}
return color2;
}
}
function calculateBorderColor(borderColorSaturation, thisNodeColor) {
return thisNodeColor != null ? modifyHSL(thisNodeColor, null, null, borderColorSaturation) : null;
}
function getValueVisualDefine(visuals, name) {
var value = visuals[name];
if (value != null && value !== "none") {
return value;
}
}
function buildVisualMapping(node2, nodeModel, nodeLayout, nodeItemStyleModel, visuals, viewChildren) {
if (!viewChildren || !viewChildren.length) {
return;
}
var rangeVisual = getRangeVisual(nodeModel, "color") || visuals.color != null && visuals.color !== "none" && (getRangeVisual(nodeModel, "colorAlpha") || getRangeVisual(nodeModel, "colorSaturation"));
if (!rangeVisual) {
return;
}
var visualMin = nodeModel.get("visualMin");
var visualMax = nodeModel.get("visualMax");
var dataExtent = nodeLayout.dataExtent.slice();
visualMin != null && visualMin < dataExtent[0] && (dataExtent[0] = visualMin);
visualMax != null && visualMax > dataExtent[1] && (dataExtent[1] = visualMax);
var colorMappingBy = nodeModel.get("colorMappingBy");
var opt = {
type: rangeVisual.name,
dataExtent,
visual: rangeVisual.range
};
if (opt.type === "color" && (colorMappingBy === "index" || colorMappingBy === "id")) {
opt.mappingMethod = "category";
opt.loop = true;
} else {
opt.mappingMethod = "linear";
}
var mapping = new VisualMapping(opt);
inner$c(mapping).drColorMappingBy = colorMappingBy;
return mapping;
}
function getRangeVisual(nodeModel, name) {
var range3 = nodeModel.get(name);
return isArray$1(range3) && range3.length ? {
name,
range: range3
} : null;
}
function mapVisual$1(nodeModel, visuals, child, index2, mapping, seriesModel) {
var childVisuals = extend({}, visuals);
if (mapping) {
var mappingType = mapping.type;
var colorMappingBy = mappingType === "color" && inner$c(mapping).drColorMappingBy;
var value = colorMappingBy === "index" ? index2 : colorMappingBy === "id" ? seriesModel.mapIdToIndex(child.getId()) : child.getValue(nodeModel.get("visualDimension"));
childVisuals[mappingType] = mapping.mapValueToVisual(value);
}
return childVisuals;
}
var mathMax$3 = Math.max;
var mathMin$3 = Math.min;
var retrieveValue = retrieve;
var each$b = each$f;
var PATH_BORDER_WIDTH = ["itemStyle", "borderWidth"];
var PATH_GAP_WIDTH = ["itemStyle", "gapWidth"];
var PATH_UPPER_LABEL_SHOW = ["upperLabel", "show"];
var PATH_UPPER_LABEL_HEIGHT = ["upperLabel", "height"];
const treemapLayout = {
seriesType: "treemap",
reset: function(seriesModel, ecModel, api, payload) {
var ecWidth = api.getWidth();
var ecHeight = api.getHeight();
var seriesOption = seriesModel.option;
var layoutInfo = getLayoutRect(seriesModel.getBoxLayoutParams(), {
width: api.getWidth(),
height: api.getHeight()
});
var size = seriesOption.size || [];
var containerWidth = parsePercent(retrieveValue(layoutInfo.width, size[0]), ecWidth);
var containerHeight = parsePercent(retrieveValue(layoutInfo.height, size[1]), ecHeight);
var payloadType = payload && payload.type;
var types2 = ["treemapZoomToNode", "treemapRootToNode"];
var targetInfo = retrieveTargetInfo(payload, types2, seriesModel);
var rootRect = payloadType === "treemapRender" || payloadType === "treemapMove" ? payload.rootRect : null;
var viewRoot = seriesModel.getViewRoot();
var viewAbovePath = getPathToRoot(viewRoot);
if (payloadType !== "treemapMove") {
var rootSize = payloadType === "treemapZoomToNode" ? estimateRootSize(seriesModel, targetInfo, viewRoot, containerWidth, containerHeight) : rootRect ? [rootRect.width, rootRect.height] : [containerWidth, containerHeight];
var sort_1 = seriesOption.sort;
if (sort_1 && sort_1 !== "asc" && sort_1 !== "desc") {
sort_1 = "desc";
}
var options = {
squareRatio: seriesOption.squareRatio,
sort: sort_1,
leafDepth: seriesOption.leafDepth
};
viewRoot.hostTree.clearLayouts();
var viewRootLayout_1 = {
x: 0,
y: 0,
width: rootSize[0],
height: rootSize[1],
area: rootSize[0] * rootSize[1]
};
viewRoot.setLayout(viewRootLayout_1);
squarify(viewRoot, options, false, 0);
viewRootLayout_1 = viewRoot.getLayout();
each$b(viewAbovePath, function(node2, index2) {
var childValue = (viewAbovePath[index2 + 1] || viewRoot).getValue();
node2.setLayout(extend({
dataExtent: [childValue, childValue],
borderWidth: 0,
upperHeight: 0
}, viewRootLayout_1));
});
}
var treeRoot = seriesModel.getData().tree.root;
treeRoot.setLayout(calculateRootPosition(layoutInfo, rootRect, targetInfo), true);
seriesModel.setLayoutInfo(layoutInfo);
prunning(
treeRoot,
// Transform to base element coordinate system.
new BoundingRect(-layoutInfo.x, -layoutInfo.y, ecWidth, ecHeight),
viewAbovePath,
viewRoot,
0
);
}
};
function squarify(node2, options, hideChildren, depth) {
var width;
var height;
if (node2.isRemoved()) {
return;
}
var thisLayout = node2.getLayout();
width = thisLayout.width;
height = thisLayout.height;
var nodeModel = node2.getModel();
var borderWidth2 = nodeModel.get(PATH_BORDER_WIDTH);
var halfGapWidth = nodeModel.get(PATH_GAP_WIDTH) / 2;
var upperLabelHeight = getUpperLabelHeight(nodeModel);
var upperHeight = Math.max(borderWidth2, upperLabelHeight);
var layoutOffset = borderWidth2 - halfGapWidth;
var layoutOffsetUpper = upperHeight - halfGapWidth;
node2.setLayout({
borderWidth: borderWidth2,
upperHeight,
upperLabelHeight
}, true);
width = mathMax$3(width - 2 * layoutOffset, 0);
height = mathMax$3(height - layoutOffset - layoutOffsetUpper, 0);
var totalArea = width * height;
var viewChildren = initChildren$1(node2, nodeModel, totalArea, options, hideChildren, depth);
if (!viewChildren.length) {
return;
}
var rect = {
x: layoutOffset,
y: layoutOffsetUpper,
width,
height
};
var rowFixedLength = mathMin$3(width, height);
var best = Infinity;
var row = [];
row.area = 0;
for (var i = 0, len2 = viewChildren.length; i < len2; ) {
var child = viewChildren[i];
row.push(child);
row.area += child.getLayout().area;
var score = worst(row, rowFixedLength, options.squareRatio);
if (score <= best) {
i++;
best = score;
} else {
row.area -= row.pop().getLayout().area;
position(row, rowFixedLength, rect, halfGapWidth, false);
rowFixedLength = mathMin$3(rect.width, rect.height);
row.length = row.area = 0;
best = Infinity;
}
}
if (row.length) {
position(row, rowFixedLength, rect, halfGapWidth, true);
}
if (!hideChildren) {
var childrenVisibleMin = nodeModel.get("childrenVisibleMin");
if (childrenVisibleMin != null && totalArea < childrenVisibleMin) {
hideChildren = true;
}
}
for (var i = 0, len2 = viewChildren.length; i < len2; i++) {
squarify(viewChildren[i], options, hideChildren, depth + 1);
}
}
function initChildren$1(node2, nodeModel, totalArea, options, hideChildren, depth) {
var viewChildren = node2.children || [];
var orderBy = options.sort;
orderBy !== "asc" && orderBy !== "desc" && (orderBy = null);
var overLeafDepth = options.leafDepth != null && options.leafDepth <= depth;
if (hideChildren && !overLeafDepth) {
return node2.viewChildren = [];
}
viewChildren = filter(viewChildren, function(child) {
return !child.isRemoved();
});
sort$1(viewChildren, orderBy);
var info = statistic(nodeModel, viewChildren, orderBy);
if (info.sum === 0) {
return node2.viewChildren = [];
}
info.sum = filterByThreshold(nodeModel, totalArea, info.sum, orderBy, viewChildren);
if (info.sum === 0) {
return node2.viewChildren = [];
}
for (var i = 0, len2 = viewChildren.length; i < len2; i++) {
var area = viewChildren[i].getValue() / info.sum * totalArea;
viewChildren[i].setLayout({
area
});
}
if (overLeafDepth) {
viewChildren.length && node2.setLayout({
isLeafRoot: true
}, true);
viewChildren.length = 0;
}
node2.viewChildren = viewChildren;
node2.setLayout({
dataExtent: info.dataExtent
}, true);
return viewChildren;
}
function filterByThreshold(nodeModel, totalArea, sum2, orderBy, orderedChildren) {
if (!orderBy) {
return sum2;
}
var visibleMin = nodeModel.get("visibleMin");
var len2 = orderedChildren.length;
var deletePoint = len2;
for (var i = len2 - 1; i >= 0; i--) {
var value = orderedChildren[orderBy === "asc" ? len2 - i - 1 : i].getValue();
if (value / sum2 * totalArea < visibleMin) {
deletePoint = i;
sum2 -= value;
}
}
orderBy === "asc" ? orderedChildren.splice(0, len2 - deletePoint) : orderedChildren.splice(deletePoint, len2 - deletePoint);
return sum2;
}
function sort$1(viewChildren, orderBy) {
if (orderBy) {
viewChildren.sort(function(a, b2) {
var diff = orderBy === "asc" ? a.getValue() - b2.getValue() : b2.getValue() - a.getValue();
return diff === 0 ? orderBy === "asc" ? a.dataIndex - b2.dataIndex : b2.dataIndex - a.dataIndex : diff;
});
}
return viewChildren;
}
function statistic(nodeModel, children, orderBy) {
var sum2 = 0;
for (var i = 0, len2 = children.length; i < len2; i++) {
sum2 += children[i].getValue();
}
var dimension = nodeModel.get("visualDimension");
var dataExtent;
if (!children || !children.length) {
dataExtent = [NaN, NaN];
} else if (dimension === "value" && orderBy) {
dataExtent = [children[children.length - 1].getValue(), children[0].getValue()];
orderBy === "asc" && dataExtent.reverse();
} else {
dataExtent = [Infinity, -Infinity];
each$b(children, function(child) {
var value = child.getValue(dimension);
value < dataExtent[0] && (dataExtent[0] = value);
value > dataExtent[1] && (dataExtent[1] = value);
});
}
return {
sum: sum2,
dataExtent
};
}
function worst(row, rowFixedLength, ratio) {
var areaMax = 0;
var areaMin = Infinity;
for (var i = 0, area = void 0, len2 = row.length; i < len2; i++) {
area = row[i].getLayout().area;
if (area) {
area < areaMin && (areaMin = area);
area > areaMax && (areaMax = area);
}
}
var squareArea = row.area * row.area;
var f2 = rowFixedLength * rowFixedLength * ratio;
return squareArea ? mathMax$3(f2 * areaMax / squareArea, squareArea / (f2 * areaMin)) : Infinity;
}
function position(row, rowFixedLength, rect, halfGapWidth, flush) {
var idx0WhenH = rowFixedLength === rect.width ? 0 : 1;
var idx1WhenH = 1 - idx0WhenH;
var xy = ["x", "y"];
var wh2 = ["width", "height"];
var last = rect[xy[idx0WhenH]];
var rowOtherLength = rowFixedLength ? row.area / rowFixedLength : 0;
if (flush || rowOtherLength > rect[wh2[idx1WhenH]]) {
rowOtherLength = rect[wh2[idx1WhenH]];
}
for (var i = 0, rowLen = row.length; i < rowLen; i++) {
var node2 = row[i];
var nodeLayout = {};
var step = rowOtherLength ? node2.getLayout().area / rowOtherLength : 0;
var wh1 = nodeLayout[wh2[idx1WhenH]] = mathMax$3(rowOtherLength - 2 * halfGapWidth, 0);
var remain = rect[xy[idx0WhenH]] + rect[wh2[idx0WhenH]] - last;
var modWH = i === rowLen - 1 || remain < step ? remain : step;
var wh0 = nodeLayout[wh2[idx0WhenH]] = mathMax$3(modWH - 2 * halfGapWidth, 0);
nodeLayout[xy[idx1WhenH]] = rect[xy[idx1WhenH]] + mathMin$3(halfGapWidth, wh1 / 2);
nodeLayout[xy[idx0WhenH]] = last + mathMin$3(halfGapWidth, wh0 / 2);
last += modWH;
node2.setLayout(nodeLayout, true);
}
rect[xy[idx1WhenH]] += rowOtherLength;
rect[wh2[idx1WhenH]] -= rowOtherLength;
}
function estimateRootSize(seriesModel, targetInfo, viewRoot, containerWidth, containerHeight) {
var currNode = (targetInfo || {}).node;
var defaultSize = [containerWidth, containerHeight];
if (!currNode || currNode === viewRoot) {
return defaultSize;
}
var parent;
var viewArea = containerWidth * containerHeight;
var area = viewArea * seriesModel.option.zoomToNodeRatio;
while (parent = currNode.parentNode) {
var sum2 = 0;
var siblings = parent.children;
for (var i = 0, len2 = siblings.length; i < len2; i++) {
sum2 += siblings[i].getValue();
}
var currNodeValue = currNode.getValue();
if (currNodeValue === 0) {
return defaultSize;
}
area *= sum2 / currNodeValue;
var parentModel = parent.getModel();
var borderWidth2 = parentModel.get(PATH_BORDER_WIDTH);
var upperHeight = Math.max(borderWidth2, getUpperLabelHeight(parentModel));
area += 4 * borderWidth2 * borderWidth2 + (3 * borderWidth2 + upperHeight) * Math.pow(area, 0.5);
area > MAX_SAFE_INTEGER && (area = MAX_SAFE_INTEGER);
currNode = parent;
}
area < viewArea && (area = viewArea);
var scale2 = Math.pow(area / viewArea, 0.5);
return [containerWidth * scale2, containerHeight * scale2];
}
function calculateRootPosition(layoutInfo, rootRect, targetInfo) {
if (rootRect) {
return {
x: rootRect.x,
y: rootRect.y
};
}
var defaultPosition = {
x: 0,
y: 0
};
if (!targetInfo) {
return defaultPosition;
}
var targetNode = targetInfo.node;
var layout2 = targetNode.getLayout();
if (!layout2) {
return defaultPosition;
}
var targetCenter = [layout2.width / 2, layout2.height / 2];
var node2 = targetNode;
while (node2) {
var nodeLayout = node2.getLayout();
targetCenter[0] += nodeLayout.x;
targetCenter[1] += nodeLayout.y;
node2 = node2.parentNode;
}
return {
x: layoutInfo.width / 2 - targetCenter[0],
y: layoutInfo.height / 2 - targetCenter[1]
};
}
function prunning(node2, clipRect, viewAbovePath, viewRoot, depth) {
var nodeLayout = node2.getLayout();
var nodeInViewAbovePath = viewAbovePath[depth];
var isAboveViewRoot = nodeInViewAbovePath && nodeInViewAbovePath === node2;
if (nodeInViewAbovePath && !isAboveViewRoot || depth === viewAbovePath.length && node2 !== viewRoot) {
return;
}
node2.setLayout({
// isInView means: viewRoot sub tree + viewAbovePath
isInView: true,
// invisible only means: outside view clip so that the node can not
// see but still layout for animation preparation but not render.
invisible: !isAboveViewRoot && !clipRect.intersect(nodeLayout),
isAboveViewRoot
}, true);
var childClipRect = new BoundingRect(clipRect.x - nodeLayout.x, clipRect.y - nodeLayout.y, clipRect.width, clipRect.height);
each$b(node2.viewChildren || [], function(child) {
prunning(child, childClipRect, viewAbovePath, viewRoot, depth + 1);
});
}
function getUpperLabelHeight(model) {
return model.get(PATH_UPPER_LABEL_SHOW) ? model.get(PATH_UPPER_LABEL_HEIGHT) : 0;
}
function install$G(registers) {
registers.registerSeriesModel(TreemapSeriesModel);
registers.registerChartView(TreemapView);
registers.registerVisual(treemapVisual);
registers.registerLayout(treemapLayout);
installTreemapAction(registers);
}
function categoryFilter(ecModel) {
var legendModels = ecModel.findComponents({
mainType: "legend"
});
if (!legendModels || !legendModels.length) {
return;
}
ecModel.eachSeriesByType("graph", function(graphSeries) {
var categoriesData = graphSeries.getCategoriesData();
var graph = graphSeries.getGraph();
var data = graph.data;
var categoryNames = categoriesData.mapArray(categoriesData.getName);
data.filterSelf(function(idx) {
var model = data.getItemModel(idx);
var category = model.getShallow("category");
if (category != null) {
if (isNumber(category)) {
category = categoryNames[category];
}
for (var i = 0; i < legendModels.length; i++) {
if (!legendModels[i].isSelected(category)) {
return false;
}
}
}
return true;
});
});
}
function categoryVisual(ecModel) {
var paletteScope = {};
ecModel.eachSeriesByType("graph", function(seriesModel) {
var categoriesData = seriesModel.getCategoriesData();
var data = seriesModel.getData();
var categoryNameIdxMap = {};
categoriesData.each(function(idx) {
var name = categoriesData.getName(idx);
categoryNameIdxMap["ec-" + name] = idx;
var itemModel = categoriesData.getItemModel(idx);
var style2 = itemModel.getModel("itemStyle").getItemStyle();
if (!style2.fill) {
style2.fill = seriesModel.getColorFromPalette(name, paletteScope);
}
categoriesData.setItemVisual(idx, "style", style2);
var symbolVisualList = ["symbol", "symbolSize", "symbolKeepAspect"];
for (var i = 0; i < symbolVisualList.length; i++) {
var symbolVisual = itemModel.getShallow(symbolVisualList[i], true);
if (symbolVisual != null) {
categoriesData.setItemVisual(idx, symbolVisualList[i], symbolVisual);
}
}
});
if (categoriesData.count()) {
data.each(function(idx) {
var model = data.getItemModel(idx);
var categoryIdx = model.getShallow("category");
if (categoryIdx != null) {
if (isString$1(categoryIdx)) {
categoryIdx = categoryNameIdxMap["ec-" + categoryIdx];
}
var categoryStyle = categoriesData.getItemVisual(categoryIdx, "style");
var style2 = data.ensureUniqueItemVisual(idx, "style");
extend(style2, categoryStyle);
var visualList = ["symbol", "symbolSize", "symbolKeepAspect"];
for (var i = 0; i < visualList.length; i++) {
data.setItemVisual(idx, visualList[i], categoriesData.getItemVisual(categoryIdx, visualList[i]));
}
}
});
}
});
}
function normalize$1(a) {
if (!(a instanceof Array)) {
a = [a, a];
}
return a;
}
function graphEdgeVisual(ecModel) {
ecModel.eachSeriesByType("graph", function(seriesModel) {
var graph = seriesModel.getGraph();
var edgeData = seriesModel.getEdgeData();
var symbolType = normalize$1(seriesModel.get("edgeSymbol"));
var symbolSize = normalize$1(seriesModel.get("edgeSymbolSize"));
edgeData.setVisual("fromSymbol", symbolType && symbolType[0]);
edgeData.setVisual("toSymbol", symbolType && symbolType[1]);
edgeData.setVisual("fromSymbolSize", symbolSize && symbolSize[0]);
edgeData.setVisual("toSymbolSize", symbolSize && symbolSize[1]);
edgeData.setVisual("style", seriesModel.getModel("lineStyle").getLineStyle());
edgeData.each(function(idx) {
var itemModel = edgeData.getItemModel(idx);
var edge = graph.getEdgeByIndex(idx);
var symbolType2 = normalize$1(itemModel.getShallow("symbol", true));
var symbolSize2 = normalize$1(itemModel.getShallow("symbolSize", true));
var style2 = itemModel.getModel("lineStyle").getLineStyle();
var existsStyle = edgeData.ensureUniqueItemVisual(idx, "style");
extend(existsStyle, style2);
switch (existsStyle.stroke) {
case "source": {
var nodeStyle = edge.node1.getVisual("style");
existsStyle.stroke = nodeStyle && nodeStyle.fill;
break;
}
case "target": {
var nodeStyle = edge.node2.getVisual("style");
existsStyle.stroke = nodeStyle && nodeStyle.fill;
break;
}
}
symbolType2[0] && edge.setVisual("fromSymbol", symbolType2[0]);
symbolType2[1] && edge.setVisual("toSymbol", symbolType2[1]);
symbolSize2[0] && edge.setVisual("fromSymbolSize", symbolSize2[0]);
symbolSize2[1] && edge.setVisual("toSymbolSize", symbolSize2[1]);
});
});
}
var KEY_DELIMITER = "-->";
var getAutoCurvenessParams = function(seriesModel) {
return seriesModel.get("autoCurveness") || null;
};
var createCurveness = function(seriesModel, appendLength) {
var autoCurvenessParmas = getAutoCurvenessParams(seriesModel);
var length2 = 20;
var curvenessList = [];
if (isNumber(autoCurvenessParmas)) {
length2 = autoCurvenessParmas;
} else if (isArray$1(autoCurvenessParmas)) {
seriesModel.__curvenessList = autoCurvenessParmas;
return;
}
if (appendLength > length2) {
length2 = appendLength;
}
var len2 = length2 % 2 ? length2 + 2 : length2 + 3;
curvenessList = [];
for (var i = 0; i < len2; i++) {
curvenessList.push((i % 2 ? i + 1 : i) / 10 * (i % 2 ? -1 : 1));
}
seriesModel.__curvenessList = curvenessList;
};
var getKeyOfEdges = function(n1, n2, seriesModel) {
var source = [n1.id, n1.dataIndex].join(".");
var target = [n2.id, n2.dataIndex].join(".");
return [seriesModel.uid, source, target].join(KEY_DELIMITER);
};
var getOppositeKey = function(key) {
var keys2 = key.split(KEY_DELIMITER);
return [keys2[0], keys2[2], keys2[1]].join(KEY_DELIMITER);
};
var getEdgeFromMap = function(edge, seriesModel) {
var key = getKeyOfEdges(edge.node1, edge.node2, seriesModel);
return seriesModel.__edgeMap[key];
};
var getTotalLengthBetweenNodes = function(edge, seriesModel) {
var len2 = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node1, edge.node2, seriesModel), seriesModel);
var lenV = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node2, edge.node1, seriesModel), seriesModel);
return len2 + lenV;
};
var getEdgeMapLengthWithKey = function(key, seriesModel) {
var edgeMap = seriesModel.__edgeMap;
return edgeMap[key] ? edgeMap[key].length : 0;
};
function initCurvenessList(seriesModel) {
if (!getAutoCurvenessParams(seriesModel)) {
return;
}
seriesModel.__curvenessList = [];
seriesModel.__edgeMap = {};
createCurveness(seriesModel);
}
function createEdgeMapForCurveness(n1, n2, seriesModel, index2) {
if (!getAutoCurvenessParams(seriesModel)) {
return;
}
var key = getKeyOfEdges(n1, n2, seriesModel);
var edgeMap = seriesModel.__edgeMap;
var oppositeEdges = edgeMap[getOppositeKey(key)];
if (edgeMap[key] && !oppositeEdges) {
edgeMap[key].isForward = true;
} else if (oppositeEdges && edgeMap[key]) {
oppositeEdges.isForward = true;
edgeMap[key].isForward = false;
}
edgeMap[key] = edgeMap[key] || [];
edgeMap[key].push(index2);
}
function getCurvenessForEdge(edge, seriesModel, index2, needReverse) {
var autoCurvenessParams = getAutoCurvenessParams(seriesModel);
var isArrayParam = isArray$1(autoCurvenessParams);
if (!autoCurvenessParams) {
return null;
}
var edgeArray = getEdgeFromMap(edge, seriesModel);
if (!edgeArray) {
return null;
}
var edgeIndex = -1;
for (var i = 0; i < edgeArray.length; i++) {
if (edgeArray[i] === index2) {
edgeIndex = i;
break;
}
}
var totalLen = getTotalLengthBetweenNodes(edge, seriesModel);
createCurveness(seriesModel, totalLen);
edge.lineStyle = edge.lineStyle || {};
var curKey = getKeyOfEdges(edge.node1, edge.node2, seriesModel);
var curvenessList = seriesModel.__curvenessList;
var parityCorrection = isArrayParam ? 0 : totalLen % 2 ? 0 : 1;
if (!edgeArray.isForward) {
var oppositeKey = getOppositeKey(curKey);
var len2 = getEdgeMapLengthWithKey(oppositeKey, seriesModel);
var resValue = curvenessList[edgeIndex + len2 + parityCorrection];
if (needReverse) {
if (isArrayParam) {
if (autoCurvenessParams && autoCurvenessParams[0] === 0) {
return (len2 + parityCorrection) % 2 ? resValue : -resValue;
} else {
return ((len2 % 2 ? 0 : 1) + parityCorrection) % 2 ? resValue : -resValue;
}
} else {
return (len2 + parityCorrection) % 2 ? resValue : -resValue;
}
} else {
return curvenessList[edgeIndex + len2 + parityCorrection];
}
} else {
return curvenessList[parityCorrection + edgeIndex];
}
}
function simpleLayout(seriesModel) {
var coordSys = seriesModel.coordinateSystem;
if (coordSys && coordSys.type !== "view") {
return;
}
var graph = seriesModel.getGraph();
graph.eachNode(function(node2) {
var model = node2.getModel();
node2.setLayout([+model.get("x"), +model.get("y")]);
});
simpleLayoutEdge(graph, seriesModel);
}
function simpleLayoutEdge(graph, seriesModel) {
graph.eachEdge(function(edge, index2) {
var curveness = retrieve3(edge.getModel().get(["lineStyle", "curveness"]), -getCurvenessForEdge(edge, seriesModel, index2, true), 0);
var p1 = clone$3(edge.node1.getLayout());
var p2 = clone$3(edge.node2.getLayout());
var points2 = [p1, p2];
if (+curveness) {
points2.push([(p1[0] + p2[0]) / 2 - (p1[1] - p2[1]) * curveness, (p1[1] + p2[1]) / 2 - (p2[0] - p1[0]) * curveness]);
}
edge.setLayout(points2);
});
}
function graphSimpleLayout(ecModel, api) {
ecModel.eachSeriesByType("graph", function(seriesModel) {
var layout2 = seriesModel.get("layout");
var coordSys = seriesModel.coordinateSystem;
if (coordSys && coordSys.type !== "view") {
var data_1 = seriesModel.getData();
var dimensions_1 = [];
each$f(coordSys.dimensions, function(coordDim) {
dimensions_1 = dimensions_1.concat(data_1.mapDimensionsAll(coordDim));
});
for (var dataIndex = 0; dataIndex < data_1.count(); dataIndex++) {
var value = [];
var hasValue2 = false;
for (var i = 0; i < dimensions_1.length; i++) {
var val = data_1.get(dimensions_1[i], dataIndex);
if (!isNaN(val)) {
hasValue2 = true;
}
value.push(val);
}
if (hasValue2) {
data_1.setItemLayout(dataIndex, coordSys.dataToPoint(value));
} else {
data_1.setItemLayout(dataIndex, [NaN, NaN]);
}
}
simpleLayoutEdge(data_1.graph, seriesModel);
} else if (!layout2 || layout2 === "none") {
simpleLayout(seriesModel);
}
});
}
function getNodeGlobalScale(seriesModel) {
var coordSys = seriesModel.coordinateSystem;
if (coordSys.type !== "view") {
return 1;
}
var nodeScaleRatio = seriesModel.option.nodeScaleRatio;
var groupZoom = coordSys.scaleX;
var roamZoom = coordSys.getZoom();
var nodeScale = (roamZoom - 1) * nodeScaleRatio + 1;
return nodeScale / groupZoom;
}
function getSymbolSize(node2) {
var symbolSize = node2.getVisual("symbolSize");
if (symbolSize instanceof Array) {
symbolSize = (symbolSize[0] + symbolSize[1]) / 2;
}
return +symbolSize;
}
var PI$2 = Math.PI;
var _symbolRadiansHalf = [];
function circularLayout(seriesModel, basedOn, draggingNode, pointer) {
var coordSys = seriesModel.coordinateSystem;
if (coordSys && coordSys.type !== "view") {
return;
}
var rect = coordSys.getBoundingRect();
var nodeData = seriesModel.getData();
var graph = nodeData.graph;
var cx = rect.width / 2 + rect.x;
var cy = rect.height / 2 + rect.y;
var r2 = Math.min(rect.width, rect.height) / 2;
var count2 = nodeData.count();
nodeData.setLayout({
cx,
cy
});
if (!count2) {
return;
}
if (draggingNode) {
var _a2 = coordSys.pointToData(pointer), tempX = _a2[0], tempY = _a2[1];
var v4 = [tempX - cx, tempY - cy];
normalize$3(v4, v4);
scale$2(v4, v4, r2);
draggingNode.setLayout([cx + v4[0], cy + v4[1]], true);
var circularRotateLabel = seriesModel.get(["circular", "rotateLabel"]);
rotateNodeLabel(draggingNode, circularRotateLabel, cx, cy);
}
_layoutNodesBasedOn[basedOn](seriesModel, graph, nodeData, r2, cx, cy, count2);
graph.eachEdge(function(edge, index2) {
var curveness = retrieve3(edge.getModel().get(["lineStyle", "curveness"]), getCurvenessForEdge(edge, seriesModel, index2), 0);
var p1 = clone$3(edge.node1.getLayout());
var p2 = clone$3(edge.node2.getLayout());
var cp1;
var x12 = (p1[0] + p2[0]) / 2;
var y12 = (p1[1] + p2[1]) / 2;
if (+curveness) {
curveness *= 3;
cp1 = [cx * curveness + x12 * (1 - curveness), cy * curveness + y12 * (1 - curveness)];
}
edge.setLayout([p1, p2, cp1]);
});
}
var _layoutNodesBasedOn = {
value: function(seriesModel, graph, nodeData, r2, cx, cy, count2) {
var angle = 0;
var sum2 = nodeData.getSum("value");
var unitAngle = Math.PI * 2 / (sum2 || count2);
graph.eachNode(function(node2) {
var value = node2.getValue("value");
var radianHalf = unitAngle * (sum2 ? value : 1) / 2;
angle += radianHalf;
node2.setLayout([r2 * Math.cos(angle) + cx, r2 * Math.sin(angle) + cy]);
angle += radianHalf;
});
},
symbolSize: function(seriesModel, graph, nodeData, r2, cx, cy, count2) {
var sumRadian = 0;
_symbolRadiansHalf.length = count2;
var nodeScale = getNodeGlobalScale(seriesModel);
graph.eachNode(function(node2) {
var symbolSize = getSymbolSize(node2);
isNaN(symbolSize) && (symbolSize = 2);
symbolSize < 0 && (symbolSize = 0);
symbolSize *= nodeScale;
var symbolRadianHalf = Math.asin(symbolSize / 2 / r2);
isNaN(symbolRadianHalf) && (symbolRadianHalf = PI$2 / 2);
_symbolRadiansHalf[node2.dataIndex] = symbolRadianHalf;
sumRadian += symbolRadianHalf * 2;
});
var halfRemainRadian = (2 * PI$2 - sumRadian) / count2 / 2;
var angle = 0;
graph.eachNode(function(node2) {
var radianHalf = halfRemainRadian + _symbolRadiansHalf[node2.dataIndex];
angle += radianHalf;
(!node2.getLayout() || !node2.getLayout().fixed) && node2.setLayout([r2 * Math.cos(angle) + cx, r2 * Math.sin(angle) + cy]);
angle += radianHalf;
});
}
};
function rotateNodeLabel(node2, circularRotateLabel, cx, cy) {
var el2 = node2.getGraphicEl();
if (!el2) {
return;
}
var nodeModel = node2.getModel();
var labelRotate = nodeModel.get(["label", "rotate"]) || 0;
var symbolPath = el2.getSymbolPath();
if (circularRotateLabel) {
var pos = node2.getLayout();
var rad = Math.atan2(pos[1] - cy, pos[0] - cx);
if (rad < 0) {
rad = Math.PI * 2 + rad;
}
var isLeft = pos[0] < cx;
if (isLeft) {
rad = rad - Math.PI;
}
var textPosition = isLeft ? "left" : "right";
symbolPath.setTextConfig({
rotation: -rad,
position: textPosition,
origin: "center"
});
var emphasisState = symbolPath.ensureState("emphasis");
extend(emphasisState.textConfig || (emphasisState.textConfig = {}), {
position: textPosition
});
} else {
symbolPath.setTextConfig({
rotation: labelRotate *= Math.PI / 180
});
}
}
function graphCircularLayout(ecModel) {
ecModel.eachSeriesByType("graph", function(seriesModel) {
if (seriesModel.get("layout") === "circular") {
circularLayout(seriesModel, "symbolSize");
}
});
}
var scaleAndAdd = scaleAndAdd$1;
function forceLayout(inNodes, inEdges, opts) {
var nodes = inNodes;
var edges = inEdges;
var rect = opts.rect;
var width = rect.width;
var height = rect.height;
var center2 = [rect.x + width / 2, rect.y + height / 2];
var gravity = opts.gravity == null ? 0.1 : opts.gravity;
for (var i = 0; i < nodes.length; i++) {
var n2 = nodes[i];
if (!n2.p) {
n2.p = create$2(width * (Math.random() - 0.5) + center2[0], height * (Math.random() - 0.5) + center2[1]);
}
n2.pp = clone$3(n2.p);
n2.edges = null;
}
var initialFriction = opts.friction == null ? 0.6 : opts.friction;
var friction = initialFriction;
var beforeStepCallback;
var afterStepCallback;
return {
warmUp: function() {
friction = initialFriction * 0.8;
},
setFixed: function(idx) {
nodes[idx].fixed = true;
},
setUnfixed: function(idx) {
nodes[idx].fixed = false;
},
/**
* Before step hook
*/
beforeStep: function(cb2) {
beforeStepCallback = cb2;
},
/**
* After step hook
*/
afterStep: function(cb2) {
afterStepCallback = cb2;
},
/**
* Some formulas were originally copied from "d3.js"
* https://github.com/d3/d3/blob/b516d77fb8566b576088e73410437494717ada26/src/layout/force.js
* with some modifications made for this project.
* See the license statement at the head of this file.
*/
step: function(cb2) {
beforeStepCallback && beforeStepCallback(nodes, edges);
var v12 = [];
var nLen = nodes.length;
for (var i2 = 0; i2 < edges.length; i2++) {
var e2 = edges[i2];
if (e2.ignoreForceLayout) {
continue;
}
var n1 = e2.n1;
var n22 = e2.n2;
sub(v12, n22.p, n1.p);
var d2 = len(v12) - e2.d;
var w2 = n22.w / (n1.w + n22.w);
if (isNaN(w2)) {
w2 = 0;
}
normalize$3(v12, v12);
!n1.fixed && scaleAndAdd(n1.p, n1.p, v12, w2 * d2 * friction);
!n22.fixed && scaleAndAdd(n22.p, n22.p, v12, -(1 - w2) * d2 * friction);
}
for (var i2 = 0; i2 < nLen; i2++) {
var n3 = nodes[i2];
if (!n3.fixed) {
sub(v12, center2, n3.p);
scaleAndAdd(n3.p, n3.p, v12, gravity * friction);
}
}
for (var i2 = 0; i2 < nLen; i2++) {
var n1 = nodes[i2];
for (var j = i2 + 1; j < nLen; j++) {
var n22 = nodes[j];
sub(v12, n22.p, n1.p);
var d2 = len(v12);
if (d2 === 0) {
set$1(v12, Math.random() - 0.5, Math.random() - 0.5);
d2 = 1;
}
var repFact = (n1.rep + n22.rep) / d2 / d2;
!n1.fixed && scaleAndAdd(n1.pp, n1.pp, v12, repFact);
!n22.fixed && scaleAndAdd(n22.pp, n22.pp, v12, -repFact);
}
}
var v4 = [];
for (var i2 = 0; i2 < nLen; i2++) {
var n3 = nodes[i2];
if (!n3.fixed) {
sub(v4, n3.p, n3.pp);
scaleAndAdd(n3.p, n3.p, v4, friction);
copy$1(n3.pp, n3.p);
}
}
friction = friction * 0.992;
var finished = friction < 0.01;
afterStepCallback && afterStepCallback(nodes, edges, finished);
cb2 && cb2(finished);
}
};
}
function graphForceLayout(ecModel) {
ecModel.eachSeriesByType("graph", function(graphSeries) {
var coordSys = graphSeries.coordinateSystem;
if (coordSys && coordSys.type !== "view") {
return;
}
if (graphSeries.get("layout") === "force") {
var preservedPoints_1 = graphSeries.preservedPoints || {};
var graph_1 = graphSeries.getGraph();
var nodeData_1 = graph_1.data;
var edgeData = graph_1.edgeData;
var forceModel = graphSeries.getModel("force");
var initLayout = forceModel.get("initLayout");
if (graphSeries.preservedPoints) {
nodeData_1.each(function(idx) {
var id2 = nodeData_1.getId(idx);
nodeData_1.setItemLayout(idx, preservedPoints_1[id2] || [NaN, NaN]);
});
} else if (!initLayout || initLayout === "none") {
simpleLayout(graphSeries);
} else if (initLayout === "circular") {
circularLayout(graphSeries, "value");
}
var nodeDataExtent_1 = nodeData_1.getDataExtent("value");
var edgeDataExtent_1 = edgeData.getDataExtent("value");
var repulsion = forceModel.get("repulsion");
var edgeLength = forceModel.get("edgeLength");
var repulsionArr_1 = isArray$1(repulsion) ? repulsion : [repulsion, repulsion];
var edgeLengthArr_1 = isArray$1(edgeLength) ? edgeLength : [edgeLength, edgeLength];
edgeLengthArr_1 = [edgeLengthArr_1[1], edgeLengthArr_1[0]];
var nodes_1 = nodeData_1.mapArray("value", function(value, idx) {
var point = nodeData_1.getItemLayout(idx);
var rep = linearMap$2(value, nodeDataExtent_1, repulsionArr_1);
if (isNaN(rep)) {
rep = (repulsionArr_1[0] + repulsionArr_1[1]) / 2;
}
return {
w: rep,
rep,
fixed: nodeData_1.getItemModel(idx).get("fixed"),
p: !point || isNaN(point[0]) || isNaN(point[1]) ? null : point
};
});
var edges = edgeData.mapArray("value", function(value, idx) {
var edge = graph_1.getEdgeByIndex(idx);
var d2 = linearMap$2(value, edgeDataExtent_1, edgeLengthArr_1);
if (isNaN(d2)) {
d2 = (edgeLengthArr_1[0] + edgeLengthArr_1[1]) / 2;
}
var edgeModel = edge.getModel();
var curveness = retrieve3(edge.getModel().get(["lineStyle", "curveness"]), -getCurvenessForEdge(edge, graphSeries, idx, true), 0);
return {
n1: nodes_1[edge.node1.dataIndex],
n2: nodes_1[edge.node2.dataIndex],
d: d2,
curveness,
ignoreForceLayout: edgeModel.get("ignoreForceLayout")
};
});
var rect = coordSys.getBoundingRect();
var forceInstance = forceLayout(nodes_1, edges, {
rect,
gravity: forceModel.get("gravity"),
friction: forceModel.get("friction")
});
forceInstance.beforeStep(function(nodes, edges2) {
for (var i = 0, l2 = nodes.length; i < l2; i++) {
if (nodes[i].fixed) {
copy$1(nodes[i].p, graph_1.getNodeByIndex(i).getLayout());
}
}
});
forceInstance.afterStep(function(nodes, edges2, stopped) {
for (var i = 0, l2 = nodes.length; i < l2; i++) {
if (!nodes[i].fixed) {
graph_1.getNodeByIndex(i).setLayout(nodes[i].p);
}
preservedPoints_1[nodeData_1.getId(i)] = nodes[i].p;
}
for (var i = 0, l2 = edges2.length; i < l2; i++) {
var e2 = edges2[i];
var edge = graph_1.getEdgeByIndex(i);
var p1 = e2.n1.p;
var p2 = e2.n2.p;
var points2 = edge.getLayout();
points2 = points2 ? points2.slice() : [];
points2[0] = points2[0] || [];
points2[1] = points2[1] || [];
copy$1(points2[0], p1);
copy$1(points2[1], p2);
if (+e2.curveness) {
points2[2] = [(p1[0] + p2[0]) / 2 - (p1[1] - p2[1]) * e2.curveness, (p1[1] + p2[1]) / 2 - (p2[0] - p1[0]) * e2.curveness];
}
edge.setLayout(points2);
}
});
graphSeries.forceLayout = forceInstance;
graphSeries.preservedPoints = preservedPoints_1;
forceInstance.step();
} else {
graphSeries.forceLayout = null;
}
});
}
function getViewRect$3(seriesModel, api, aspect) {
var option = extend(seriesModel.getBoxLayoutParams(), {
aspect
});
return getLayoutRect(option, {
width: api.getWidth(),
height: api.getHeight()
});
}
function createViewCoordSys(ecModel, api) {
var viewList = [];
ecModel.eachSeriesByType("graph", function(seriesModel) {
var coordSysType = seriesModel.get("coordinateSystem");
if (!coordSysType || coordSysType === "view") {
var data_1 = seriesModel.getData();
var positions = data_1.mapArray(function(idx) {
var itemModel = data_1.getItemModel(idx);
return [+itemModel.get("x"), +itemModel.get("y")];
});
var min3 = [];
var max3 = [];
fromPoints(positions, min3, max3);
if (max3[0] - min3[0] === 0) {
max3[0] += 1;
min3[0] -= 1;
}
if (max3[1] - min3[1] === 0) {
max3[1] += 1;
min3[1] -= 1;
}
var aspect = (max3[0] - min3[0]) / (max3[1] - min3[1]);
var viewRect2 = getViewRect$3(seriesModel, api, aspect);
if (isNaN(aspect)) {
min3 = [viewRect2.x, viewRect2.y];
max3 = [viewRect2.x + viewRect2.width, viewRect2.y + viewRect2.height];
}
var bbWidth = max3[0] - min3[0];
var bbHeight = max3[1] - min3[1];
var viewWidth = viewRect2.width;
var viewHeight = viewRect2.height;
var viewCoordSys = seriesModel.coordinateSystem = new View();
viewCoordSys.zoomLimit = seriesModel.get("scaleLimit");
viewCoordSys.setBoundingRect(min3[0], min3[1], bbWidth, bbHeight);
viewCoordSys.setViewRect(viewRect2.x, viewRect2.y, viewWidth, viewHeight);
viewCoordSys.setCenter(seriesModel.get("center"), api);
viewCoordSys.setZoom(seriesModel.get("zoom"));
viewList.push(viewCoordSys);
}
});
return viewList;
}
var straightLineProto = Line$1.prototype;
var bezierCurveProto = BezierCurve.prototype;
var StraightLineShape = (
/** @class */
/* @__PURE__ */ function() {
function StraightLineShape2() {
this.x1 = 0;
this.y1 = 0;
this.x2 = 0;
this.y2 = 0;
this.percent = 1;
}
return StraightLineShape2;
}()
);
(function(_super) {
__extends(CurveShape, _super);
function CurveShape() {
return _super !== null && _super.apply(this, arguments) || this;
}
return CurveShape;
})(StraightLineShape);
function isStraightLine(shape) {
return isNaN(+shape.cpx1) || isNaN(+shape.cpy1);
}
var ECLinePath = (
/** @class */
function(_super) {
__extends(ECLinePath2, _super);
function ECLinePath2(opts) {
var _this = _super.call(this, opts) || this;
_this.type = "ec-line";
return _this;
}
ECLinePath2.prototype.getDefaultStyle = function() {
return {
stroke: "#000",
fill: null
};
};
ECLinePath2.prototype.getDefaultShape = function() {
return new StraightLineShape();
};
ECLinePath2.prototype.buildPath = function(ctx, shape) {
if (isStraightLine(shape)) {
straightLineProto.buildPath.call(this, ctx, shape);
} else {
bezierCurveProto.buildPath.call(this, ctx, shape);
}
};
ECLinePath2.prototype.pointAt = function(t2) {
if (isStraightLine(this.shape)) {
return straightLineProto.pointAt.call(this, t2);
} else {
return bezierCurveProto.pointAt.call(this, t2);
}
};
ECLinePath2.prototype.tangentAt = function(t2) {
var shape = this.shape;
var p2 = isStraightLine(shape) ? [shape.x2 - shape.x1, shape.y2 - shape.y1] : bezierCurveProto.tangentAt.call(this, t2);
return normalize$3(p2, p2);
};
return ECLinePath2;
}(Path)
);
var SYMBOL_CATEGORIES = ["fromSymbol", "toSymbol"];
function makeSymbolTypeKey(symbolCategory) {
return "_" + symbolCategory + "Type";
}
function makeSymbolTypeValue(name, lineData, idx) {
var symbolType = lineData.getItemVisual(idx, name);
if (!symbolType || symbolType === "none") {
return symbolType;
}
var symbolSize = lineData.getItemVisual(idx, name + "Size");
var symbolRotate = lineData.getItemVisual(idx, name + "Rotate");
var symbolOffset = lineData.getItemVisual(idx, name + "Offset");
var symbolKeepAspect = lineData.getItemVisual(idx, name + "KeepAspect");
var symbolSizeArr = normalizeSymbolSize(symbolSize);
var symbolOffsetArr = normalizeSymbolOffset(symbolOffset || 0, symbolSizeArr);
return symbolType + symbolSizeArr + symbolOffsetArr + (symbolRotate || "") + (symbolKeepAspect || "");
}
function createSymbol(name, lineData, idx) {
var symbolType = lineData.getItemVisual(idx, name);
if (!symbolType || symbolType === "none") {
return;
}
var symbolSize = lineData.getItemVisual(idx, name + "Size");
var symbolRotate = lineData.getItemVisual(idx, name + "Rotate");
var symbolOffset = lineData.getItemVisual(idx, name + "Offset");
var symbolKeepAspect = lineData.getItemVisual(idx, name + "KeepAspect");
var symbolSizeArr = normalizeSymbolSize(symbolSize);
var symbolOffsetArr = normalizeSymbolOffset(symbolOffset || 0, symbolSizeArr);
var symbolPath = createSymbol$1(symbolType, -symbolSizeArr[0] / 2 + symbolOffsetArr[0], -symbolSizeArr[1] / 2 + symbolOffsetArr[1], symbolSizeArr[0], symbolSizeArr[1], null, symbolKeepAspect);
symbolPath.__specifiedRotation = symbolRotate == null || isNaN(symbolRotate) ? void 0 : +symbolRotate * Math.PI / 180 || 0;
symbolPath.name = name;
return symbolPath;
}
function createLine(points2) {
var line2 = new ECLinePath({
name: "line",
subPixelOptimize: true
});
setLinePoints(line2.shape, points2);
return line2;
}
function setLinePoints(targetShape, points2) {
targetShape.x1 = points2[0][0];
targetShape.y1 = points2[0][1];
targetShape.x2 = points2[1][0];
targetShape.y2 = points2[1][1];
targetShape.percent = 1;
var cp1 = points2[2];
if (cp1) {
targetShape.cpx1 = cp1[0];
targetShape.cpy1 = cp1[1];
} else {
targetShape.cpx1 = NaN;
targetShape.cpy1 = NaN;
}
}
var Line = (
/** @class */
function(_super) {
__extends(Line2, _super);
function Line2(lineData, idx, seriesScope) {
var _this = _super.call(this) || this;
_this._createLine(lineData, idx, seriesScope);
return _this;
}
Line2.prototype._createLine = function(lineData, idx, seriesScope) {
var seriesModel = lineData.hostModel;
var linePoints = lineData.getItemLayout(idx);
var line2 = createLine(linePoints);
line2.shape.percent = 0;
initProps(line2, {
shape: {
percent: 1
}
}, seriesModel, idx);
this.add(line2);
each$f(SYMBOL_CATEGORIES, function(symbolCategory) {
var symbol = createSymbol(symbolCategory, lineData, idx);
this.add(symbol);
this[makeSymbolTypeKey(symbolCategory)] = makeSymbolTypeValue(symbolCategory, lineData, idx);
}, this);
this._updateCommonStl(lineData, idx, seriesScope);
};
Line2.prototype.updateData = function(lineData, idx, seriesScope) {
var seriesModel = lineData.hostModel;
var line2 = this.childOfName("line");
var linePoints = lineData.getItemLayout(idx);
var target = {
shape: {}
};
setLinePoints(target.shape, linePoints);
updateProps$1(line2, target, seriesModel, idx);
each$f(SYMBOL_CATEGORIES, function(symbolCategory) {
var symbolType = makeSymbolTypeValue(symbolCategory, lineData, idx);
var key = makeSymbolTypeKey(symbolCategory);
if (this[key] !== symbolType) {
this.remove(this.childOfName(symbolCategory));
var symbol = createSymbol(symbolCategory, lineData, idx);
this.add(symbol);
}
this[key] = symbolType;
}, this);
this._updateCommonStl(lineData, idx, seriesScope);
};
Line2.prototype.getLinePath = function() {
return this.childAt(0);
};
Line2.prototype._updateCommonStl = function(lineData, idx, seriesScope) {
var seriesModel = lineData.hostModel;
var line2 = this.childOfName("line");
var emphasisLineStyle = seriesScope && seriesScope.emphasisLineStyle;
var blurLineStyle = seriesScope && seriesScope.blurLineStyle;
var selectLineStyle = seriesScope && seriesScope.selectLineStyle;
var labelStatesModels = seriesScope && seriesScope.labelStatesModels;
var emphasisDisabled = seriesScope && seriesScope.emphasisDisabled;
var focus = seriesScope && seriesScope.focus;
var blurScope = seriesScope && seriesScope.blurScope;
if (!seriesScope || lineData.hasItemOption) {
var itemModel = lineData.getItemModel(idx);
var emphasisModel = itemModel.getModel("emphasis");
emphasisLineStyle = emphasisModel.getModel("lineStyle").getLineStyle();
blurLineStyle = itemModel.getModel(["blur", "lineStyle"]).getLineStyle();
selectLineStyle = itemModel.getModel(["select", "lineStyle"]).getLineStyle();
emphasisDisabled = emphasisModel.get("disabled");
focus = emphasisModel.get("focus");
blurScope = emphasisModel.get("blurScope");
labelStatesModels = getLabelStatesModels(itemModel);
}
var lineStyle = lineData.getItemVisual(idx, "style");
var visualColor = lineStyle.stroke;
line2.useStyle(lineStyle);
line2.style.fill = null;
line2.style.strokeNoScale = true;
line2.ensureState("emphasis").style = emphasisLineStyle;
line2.ensureState("blur").style = blurLineStyle;
line2.ensureState("select").style = selectLineStyle;
each$f(SYMBOL_CATEGORIES, function(symbolCategory) {
var symbol = this.childOfName(symbolCategory);
if (symbol) {
symbol.setColor(visualColor);
symbol.style.opacity = lineStyle.opacity;
for (var i = 0; i < SPECIAL_STATES.length; i++) {
var stateName = SPECIAL_STATES[i];
var lineState = line2.getState(stateName);
if (lineState) {
var lineStateStyle = lineState.style || {};
var state = symbol.ensureState(stateName);
var stateStyle = state.style || (state.style = {});
if (lineStateStyle.stroke != null) {
stateStyle[symbol.__isEmptyBrush ? "stroke" : "fill"] = lineStateStyle.stroke;
}
if (lineStateStyle.opacity != null) {
stateStyle.opacity = lineStateStyle.opacity;
}
}
}
symbol.markRedraw();
}
}, this);
var rawVal = seriesModel.getRawValue(idx);
setLabelStyle(this, labelStatesModels, {
labelDataIndex: idx,
labelFetcher: {
getFormattedLabel: function(dataIndex, stateName) {
return seriesModel.getFormattedLabel(dataIndex, stateName, lineData.dataType);
}
},
inheritColor: visualColor || "#000",
defaultOpacity: lineStyle.opacity,
defaultText: (rawVal == null ? lineData.getName(idx) : isFinite(rawVal) ? round$3(rawVal) : rawVal) + ""
});
var label = this.getTextContent();
if (label) {
var labelNormalModel = labelStatesModels.normal;
label.__align = label.style.align;
label.__verticalAlign = label.style.verticalAlign;
label.__position = labelNormalModel.get("position") || "middle";
var distance2 = labelNormalModel.get("distance");
if (!isArray$1(distance2)) {
distance2 = [distance2, distance2];
}
label.__labelDistance = distance2;
}
this.setTextConfig({
position: null,
local: true,
inside: false
// Can't be inside for stroke element.
});
toggleHoverEmphasis(this, focus, blurScope, emphasisDisabled);
};
Line2.prototype.highlight = function() {
enterEmphasis(this);
};
Line2.prototype.downplay = function() {
leaveEmphasis(this);
};
Line2.prototype.updateLayout = function(lineData, idx) {
this.setLinePoints(lineData.getItemLayout(idx));
};
Line2.prototype.setLinePoints = function(points2) {
var linePath = this.childOfName("line");
setLinePoints(linePath.shape, points2);
linePath.dirty();
};
Line2.prototype.beforeUpdate = function() {
var lineGroup = this;
var symbolFrom = lineGroup.childOfName("fromSymbol");
var symbolTo = lineGroup.childOfName("toSymbol");
var label = lineGroup.getTextContent();
if (!symbolFrom && !symbolTo && (!label || label.ignore)) {
return;
}
var invScale = 1;
var parentNode2 = this.parent;
while (parentNode2) {
if (parentNode2.scaleX) {
invScale /= parentNode2.scaleX;
}
parentNode2 = parentNode2.parent;
}
var line2 = lineGroup.childOfName("line");
if (!this.__dirty && !line2.__dirty) {
return;
}
var percent = line2.shape.percent;
var fromPos = line2.pointAt(0);
var toPos = line2.pointAt(percent);
var d2 = sub([], toPos, fromPos);
normalize$3(d2, d2);
function setSymbolRotation(symbol, percent2) {
var specifiedRotation = symbol.__specifiedRotation;
if (specifiedRotation == null) {
var tangent2 = line2.tangentAt(percent2);
symbol.attr("rotation", (percent2 === 1 ? -1 : 1) * Math.PI / 2 - Math.atan2(tangent2[1], tangent2[0]));
} else {
symbol.attr("rotation", specifiedRotation);
}
}
if (symbolFrom) {
symbolFrom.setPosition(fromPos);
setSymbolRotation(symbolFrom, 0);
symbolFrom.scaleX = symbolFrom.scaleY = invScale * percent;
symbolFrom.markRedraw();
}
if (symbolTo) {
symbolTo.setPosition(toPos);
setSymbolRotation(symbolTo, 1);
symbolTo.scaleX = symbolTo.scaleY = invScale * percent;
symbolTo.markRedraw();
}
if (label && !label.ignore) {
label.x = label.y = 0;
label.originX = label.originY = 0;
var textAlign = void 0;
var textVerticalAlign = void 0;
var distance2 = label.__labelDistance;
var distanceX = distance2[0] * invScale;
var distanceY = distance2[1] * invScale;
var halfPercent = percent / 2;
var tangent = line2.tangentAt(halfPercent);
var n2 = [tangent[1], -tangent[0]];
var cp = line2.pointAt(halfPercent);
if (n2[1] > 0) {
n2[0] = -n2[0];
n2[1] = -n2[1];
}
var dir3 = tangent[0] < 0 ? -1 : 1;
if (label.__position !== "start" && label.__position !== "end") {
var rotation = -Math.atan2(tangent[1], tangent[0]);
if (toPos[0] < fromPos[0]) {
rotation = Math.PI + rotation;
}
label.rotation = rotation;
}
var dy = void 0;
switch (label.__position) {
case "insideStartTop":
case "insideMiddleTop":
case "insideEndTop":
case "middle":
dy = -distanceY;
textVerticalAlign = "bottom";
break;
case "insideStartBottom":
case "insideMiddleBottom":
case "insideEndBottom":
dy = distanceY;
textVerticalAlign = "top";
break;
default:
dy = 0;
textVerticalAlign = "middle";
}
switch (label.__position) {
case "end":
label.x = d2[0] * distanceX + toPos[0];
label.y = d2[1] * distanceY + toPos[1];
textAlign = d2[0] > 0.8 ? "left" : d2[0] < -0.8 ? "right" : "center";
textVerticalAlign = d2[1] > 0.8 ? "top" : d2[1] < -0.8 ? "bottom" : "middle";
break;
case "start":
label.x = -d2[0] * distanceX + fromPos[0];
label.y = -d2[1] * distanceY + fromPos[1];
textAlign = d2[0] > 0.8 ? "right" : d2[0] < -0.8 ? "left" : "center";
textVerticalAlign = d2[1] > 0.8 ? "bottom" : d2[1] < -0.8 ? "top" : "middle";
break;
case "insideStartTop":
case "insideStart":
case "insideStartBottom":
label.x = distanceX * dir3 + fromPos[0];
label.y = fromPos[1] + dy;
textAlign = tangent[0] < 0 ? "right" : "left";
label.originX = -distanceX * dir3;
label.originY = -dy;
break;
case "insideMiddleTop":
case "insideMiddle":
case "insideMiddleBottom":
case "middle":
label.x = cp[0];
label.y = cp[1] + dy;
textAlign = "center";
label.originY = -dy;
break;
case "insideEndTop":
case "insideEnd":
case "insideEndBottom":
label.x = -distanceX * dir3 + toPos[0];
label.y = toPos[1] + dy;
textAlign = tangent[0] >= 0 ? "right" : "left";
label.originX = distanceX * dir3;
label.originY = -dy;
break;
}
label.scaleX = label.scaleY = invScale;
label.setStyle({
// Use the user specified text align and baseline first
verticalAlign: label.__verticalAlign || textVerticalAlign,
align: label.__align || textAlign
});
}
};
return Line2;
}(Group$3)
);
var LineDraw = (
/** @class */
function() {
function LineDraw2(LineCtor) {
this.group = new Group$3();
this._LineCtor = LineCtor || Line;
}
LineDraw2.prototype.updateData = function(lineData) {
var _this = this;
this._progressiveEls = null;
var lineDraw = this;
var group = lineDraw.group;
var oldLineData = lineDraw._lineData;
lineDraw._lineData = lineData;
if (!oldLineData) {
group.removeAll();
}
var seriesScope = makeSeriesScope$1(lineData);
lineData.diff(oldLineData).add(function(idx) {
_this._doAdd(lineData, idx, seriesScope);
}).update(function(newIdx, oldIdx) {
_this._doUpdate(oldLineData, lineData, oldIdx, newIdx, seriesScope);
}).remove(function(idx) {
group.remove(oldLineData.getItemGraphicEl(idx));
}).execute();
};
LineDraw2.prototype.updateLayout = function() {
var lineData = this._lineData;
if (!lineData) {
return;
}
lineData.eachItemGraphicEl(function(el2, idx) {
el2.updateLayout(lineData, idx);
}, this);
};
LineDraw2.prototype.incrementalPrepareUpdate = function(lineData) {
this._seriesScope = makeSeriesScope$1(lineData);
this._lineData = null;
this.group.removeAll();
};
LineDraw2.prototype.incrementalUpdate = function(taskParams, lineData) {
this._progressiveEls = [];
function updateIncrementalAndHover(el3) {
if (!el3.isGroup && !isEffectObject(el3)) {
el3.incremental = true;
el3.ensureState("emphasis").hoverLayer = true;
}
}
for (var idx = taskParams.start; idx < taskParams.end; idx++) {
var itemLayout = lineData.getItemLayout(idx);
if (lineNeedsDraw(itemLayout)) {
var el2 = new this._LineCtor(lineData, idx, this._seriesScope);
el2.traverse(updateIncrementalAndHover);
this.group.add(el2);
lineData.setItemGraphicEl(idx, el2);
this._progressiveEls.push(el2);
}
}
};
LineDraw2.prototype.remove = function() {
this.group.removeAll();
};
LineDraw2.prototype.eachRendered = function(cb2) {
traverseElements(this._progressiveEls || this.group, cb2);
};
LineDraw2.prototype._doAdd = function(lineData, idx, seriesScope) {
var itemLayout = lineData.getItemLayout(idx);
if (!lineNeedsDraw(itemLayout)) {
return;
}
var el2 = new this._LineCtor(lineData, idx, seriesScope);
lineData.setItemGraphicEl(idx, el2);
this.group.add(el2);
};
LineDraw2.prototype._doUpdate = function(oldLineData, newLineData, oldIdx, newIdx, seriesScope) {
var itemEl = oldLineData.getItemGraphicEl(oldIdx);
if (!lineNeedsDraw(newLineData.getItemLayout(newIdx))) {
this.group.remove(itemEl);
return;
}
if (!itemEl) {
itemEl = new this._LineCtor(newLineData, newIdx, seriesScope);
} else {
itemEl.updateData(newLineData, newIdx, seriesScope);
}
newLineData.setItemGraphicEl(newIdx, itemEl);
this.group.add(itemEl);
};
return LineDraw2;
}()
);
function isEffectObject(el2) {
return el2.animators && el2.animators.length > 0;
}
function makeSeriesScope$1(lineData) {
var hostModel = lineData.hostModel;
var emphasisModel = hostModel.getModel("emphasis");
return {
lineStyle: hostModel.getModel("lineStyle").getLineStyle(),
emphasisLineStyle: emphasisModel.getModel(["lineStyle"]).getLineStyle(),
blurLineStyle: hostModel.getModel(["blur", "lineStyle"]).getLineStyle(),
selectLineStyle: hostModel.getModel(["select", "lineStyle"]).getLineStyle(),
emphasisDisabled: emphasisModel.get("disabled"),
blurScope: emphasisModel.get("blurScope"),
focus: emphasisModel.get("focus"),
labelStatesModels: getLabelStatesModels(hostModel)
};
}
function isPointNaN(pt) {
return isNaN(pt[0]) || isNaN(pt[1]);
}
function lineNeedsDraw(pts) {
return pts && !isPointNaN(pts[0]) && !isPointNaN(pts[1]);
}
var v1 = [];
var v2 = [];
var v3 = [];
var quadraticAt = quadraticAt$1;
var v2DistSquare = distSquare;
var mathAbs = Math.abs;
function intersectCurveCircle(curvePoints, center2, radius2) {
var p0 = curvePoints[0];
var p1 = curvePoints[1];
var p2 = curvePoints[2];
var d2 = Infinity;
var t2;
var radiusSquare = radius2 * radius2;
var interval = 0.1;
for (var _t = 0.1; _t <= 0.9; _t += 0.1) {
v1[0] = quadraticAt(p0[0], p1[0], p2[0], _t);
v1[1] = quadraticAt(p0[1], p1[1], p2[1], _t);
var diff = mathAbs(v2DistSquare(v1, center2) - radiusSquare);
if (diff < d2) {
d2 = diff;
t2 = _t;
}
}
for (var i = 0; i < 32; i++) {
var next2 = t2 + interval;
v2[0] = quadraticAt(p0[0], p1[0], p2[0], t2);
v2[1] = quadraticAt(p0[1], p1[1], p2[1], t2);
v3[0] = quadraticAt(p0[0], p1[0], p2[0], next2);
v3[1] = quadraticAt(p0[1], p1[1], p2[1], next2);
var diff = v2DistSquare(v2, center2) - radiusSquare;
if (mathAbs(diff) < 0.01) {
break;
}
var nextDiff = v2DistSquare(v3, center2) - radiusSquare;
interval /= 2;
if (diff < 0) {
if (nextDiff >= 0) {
t2 = t2 + interval;
} else {
t2 = t2 - interval;
}
} else {
if (nextDiff >= 0) {
t2 = t2 - interval;
} else {
t2 = t2 + interval;
}
}
}
return t2;
}
function adjustEdge(graph, scale2) {
var tmp0 = [];
var quadraticSubdivide$1 = quadraticSubdivide;
var pts = [[], [], []];
var pts2 = [[], []];
var v4 = [];
scale2 /= 2;
graph.eachEdge(function(edge, idx) {
var linePoints = edge.getLayout();
var fromSymbol = edge.getVisual("fromSymbol");
var toSymbol = edge.getVisual("toSymbol");
if (!linePoints.__original) {
linePoints.__original = [clone$3(linePoints[0]), clone$3(linePoints[1])];
if (linePoints[2]) {
linePoints.__original.push(clone$3(linePoints[2]));
}
}
var originalPoints = linePoints.__original;
if (linePoints[2] != null) {
copy$1(pts[0], originalPoints[0]);
copy$1(pts[1], originalPoints[2]);
copy$1(pts[2], originalPoints[1]);
if (fromSymbol && fromSymbol !== "none") {
var symbolSize = getSymbolSize(edge.node1);
var t2 = intersectCurveCircle(pts, originalPoints[0], symbolSize * scale2);
quadraticSubdivide$1(pts[0][0], pts[1][0], pts[2][0], t2, tmp0);
pts[0][0] = tmp0[3];
pts[1][0] = tmp0[4];
quadraticSubdivide$1(pts[0][1], pts[1][1], pts[2][1], t2, tmp0);
pts[0][1] = tmp0[3];
pts[1][1] = tmp0[4];
}
if (toSymbol && toSymbol !== "none") {
var symbolSize = getSymbolSize(edge.node2);
var t2 = intersectCurveCircle(pts, originalPoints[1], symbolSize * scale2);
quadraticSubdivide$1(pts[0][0], pts[1][0], pts[2][0], t2, tmp0);
pts[1][0] = tmp0[1];
pts[2][0] = tmp0[2];
quadraticSubdivide$1(pts[0][1], pts[1][1], pts[2][1], t2, tmp0);
pts[1][1] = tmp0[1];
pts[2][1] = tmp0[2];
}
copy$1(linePoints[0], pts[0]);
copy$1(linePoints[1], pts[2]);
copy$1(linePoints[2], pts[1]);
} else {
copy$1(pts2[0], originalPoints[0]);
copy$1(pts2[1], originalPoints[1]);
sub(v4, pts2[1], pts2[0]);
normalize$3(v4, v4);
if (fromSymbol && fromSymbol !== "none") {
var symbolSize = getSymbolSize(edge.node1);
scaleAndAdd$1(pts2[0], pts2[0], v4, symbolSize * scale2);
}
if (toSymbol && toSymbol !== "none") {
var symbolSize = getSymbolSize(edge.node2);
scaleAndAdd$1(pts2[1], pts2[1], v4, -symbolSize * scale2);
}
copy$1(linePoints[0], pts2[0]);
copy$1(linePoints[1], pts2[1]);
}
});
}
function isViewCoordSys(coordSys) {
return coordSys.type === "view";
}
var GraphView = (
/** @class */
function(_super) {
__extends(GraphView2, _super);
function GraphView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = GraphView2.type;
return _this;
}
GraphView2.prototype.init = function(ecModel, api) {
var symbolDraw = new SymbolDraw();
var lineDraw = new LineDraw();
var group = this.group;
this._controller = new RoamController(api.getZr());
this._controllerHost = {
target: group
};
group.add(symbolDraw.group);
group.add(lineDraw.group);
this._symbolDraw = symbolDraw;
this._lineDraw = lineDraw;
this._firstRender = true;
};
GraphView2.prototype.render = function(seriesModel, ecModel, api) {
var _this = this;
var coordSys = seriesModel.coordinateSystem;
this._model = seriesModel;
var symbolDraw = this._symbolDraw;
var lineDraw = this._lineDraw;
var group = this.group;
if (isViewCoordSys(coordSys)) {
var groupNewProp = {
x: coordSys.x,
y: coordSys.y,
scaleX: coordSys.scaleX,
scaleY: coordSys.scaleY
};
if (this._firstRender) {
group.attr(groupNewProp);
} else {
updateProps$1(group, groupNewProp, seriesModel);
}
}
adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel));
var data = seriesModel.getData();
symbolDraw.updateData(data);
var edgeData = seriesModel.getEdgeData();
lineDraw.updateData(edgeData);
this._updateNodeAndLinkScale();
this._updateController(seriesModel, ecModel, api);
clearTimeout(this._layoutTimeout);
var forceLayout2 = seriesModel.forceLayout;
var layoutAnimation = seriesModel.get(["force", "layoutAnimation"]);
if (forceLayout2) {
this._startForceLayoutIteration(forceLayout2, layoutAnimation);
}
var layout2 = seriesModel.get("layout");
data.graph.eachNode(function(node2) {
var idx = node2.dataIndex;
var el2 = node2.getGraphicEl();
var itemModel = node2.getModel();
if (!el2) {
return;
}
el2.off("drag").off("dragend");
var draggable = itemModel.get("draggable");
if (draggable) {
el2.on("drag", function(e2) {
switch (layout2) {
case "force":
forceLayout2.warmUp();
!_this._layouting && _this._startForceLayoutIteration(forceLayout2, layoutAnimation);
forceLayout2.setFixed(idx);
data.setItemLayout(idx, [el2.x, el2.y]);
break;
case "circular":
data.setItemLayout(idx, [el2.x, el2.y]);
node2.setLayout({
fixed: true
}, true);
circularLayout(seriesModel, "symbolSize", node2, [e2.offsetX, e2.offsetY]);
_this.updateLayout(seriesModel);
break;
case "none":
default:
data.setItemLayout(idx, [el2.x, el2.y]);
simpleLayoutEdge(seriesModel.getGraph(), seriesModel);
_this.updateLayout(seriesModel);
break;
}
}).on("dragend", function() {
if (forceLayout2) {
forceLayout2.setUnfixed(idx);
}
});
}
el2.setDraggable(draggable, !!itemModel.get("cursor"));
var focus = itemModel.get(["emphasis", "focus"]);
if (focus === "adjacency") {
getECData(el2).focus = node2.getAdjacentDataIndices();
}
});
data.graph.eachEdge(function(edge) {
var el2 = edge.getGraphicEl();
var focus = edge.getModel().get(["emphasis", "focus"]);
if (!el2) {
return;
}
if (focus === "adjacency") {
getECData(el2).focus = {
edge: [edge.dataIndex],
node: [edge.node1.dataIndex, edge.node2.dataIndex]
};
}
});
var circularRotateLabel = seriesModel.get("layout") === "circular" && seriesModel.get(["circular", "rotateLabel"]);
var cx = data.getLayout("cx");
var cy = data.getLayout("cy");
data.graph.eachNode(function(node2) {
rotateNodeLabel(node2, circularRotateLabel, cx, cy);
});
this._firstRender = false;
};
GraphView2.prototype.dispose = function() {
this.remove();
this._controller && this._controller.dispose();
this._controllerHost = null;
};
GraphView2.prototype._startForceLayoutIteration = function(forceLayout2, layoutAnimation) {
var self2 = this;
(function step() {
forceLayout2.step(function(stopped) {
self2.updateLayout(self2._model);
(self2._layouting = !stopped) && (layoutAnimation ? self2._layoutTimeout = setTimeout(step, 16) : step());
});
})();
};
GraphView2.prototype._updateController = function(seriesModel, ecModel, api) {
var _this = this;
var controller = this._controller;
var controllerHost = this._controllerHost;
var group = this.group;
controller.setPointerChecker(function(e2, x2, y2) {
var rect = group.getBoundingRect();
rect.applyTransform(group.transform);
return rect.contain(x2, y2) && !onIrrelevantElement(e2, api, seriesModel);
});
if (!isViewCoordSys(seriesModel.coordinateSystem)) {
controller.disable();
return;
}
controller.enable(seriesModel.get("roam"));
controllerHost.zoomLimit = seriesModel.get("scaleLimit");
controllerHost.zoom = seriesModel.coordinateSystem.getZoom();
controller.off("pan").off("zoom").on("pan", function(e2) {
updateViewOnPan(controllerHost, e2.dx, e2.dy);
api.dispatchAction({
seriesId: seriesModel.id,
type: "graphRoam",
dx: e2.dx,
dy: e2.dy
});
}).on("zoom", function(e2) {
updateViewOnZoom(controllerHost, e2.scale, e2.originX, e2.originY);
api.dispatchAction({
seriesId: seriesModel.id,
type: "graphRoam",
zoom: e2.scale,
originX: e2.originX,
originY: e2.originY
});
_this._updateNodeAndLinkScale();
adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel));
_this._lineDraw.updateLayout();
api.updateLabelLayout();
});
};
GraphView2.prototype._updateNodeAndLinkScale = function() {
var seriesModel = this._model;
var data = seriesModel.getData();
var nodeScale = getNodeGlobalScale(seriesModel);
data.eachItemGraphicEl(function(el2, idx) {
el2 && el2.setSymbolScale(nodeScale);
});
};
GraphView2.prototype.updateLayout = function(seriesModel) {
adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel));
this._symbolDraw.updateLayout();
this._lineDraw.updateLayout();
};
GraphView2.prototype.remove = function() {
clearTimeout(this._layoutTimeout);
this._layouting = false;
this._layoutTimeout = null;
this._symbolDraw && this._symbolDraw.remove();
this._lineDraw && this._lineDraw.remove();
};
GraphView2.type = "graph";
return GraphView2;
}(ChartView)
);
function generateNodeKey(id2) {
return "_EC_" + id2;
}
var Graph = (
/** @class */
function() {
function Graph2(directed) {
this.type = "graph";
this.nodes = [];
this.edges = [];
this._nodesMap = {};
this._edgesMap = {};
this._directed = directed || false;
}
Graph2.prototype.isDirected = function() {
return this._directed;
};
Graph2.prototype.addNode = function(id2, dataIndex) {
id2 = id2 == null ? "" + dataIndex : "" + id2;
var nodesMap = this._nodesMap;
if (nodesMap[generateNodeKey(id2)]) {
return;
}
var node2 = new GraphNode(id2, dataIndex);
node2.hostGraph = this;
this.nodes.push(node2);
nodesMap[generateNodeKey(id2)] = node2;
return node2;
};
Graph2.prototype.getNodeByIndex = function(dataIndex) {
var rawIdx = this.data.getRawIndex(dataIndex);
return this.nodes[rawIdx];
};
Graph2.prototype.getNodeById = function(id2) {
return this._nodesMap[generateNodeKey(id2)];
};
Graph2.prototype.addEdge = function(n1, n2, dataIndex) {
var nodesMap = this._nodesMap;
var edgesMap = this._edgesMap;
if (isNumber(n1)) {
n1 = this.nodes[n1];
}
if (isNumber(n2)) {
n2 = this.nodes[n2];
}
if (!(n1 instanceof GraphNode)) {
n1 = nodesMap[generateNodeKey(n1)];
}
if (!(n2 instanceof GraphNode)) {
n2 = nodesMap[generateNodeKey(n2)];
}
if (!n1 || !n2) {
return;
}
var key = n1.id + "-" + n2.id;
var edge = new GraphEdge(n1, n2, dataIndex);
edge.hostGraph = this;
if (this._directed) {
n1.outEdges.push(edge);
n2.inEdges.push(edge);
}
n1.edges.push(edge);
if (n1 !== n2) {
n2.edges.push(edge);
}
this.edges.push(edge);
edgesMap[key] = edge;
return edge;
};
Graph2.prototype.getEdgeByIndex = function(dataIndex) {
var rawIdx = this.edgeData.getRawIndex(dataIndex);
return this.edges[rawIdx];
};
Graph2.prototype.getEdge = function(n1, n2) {
if (n1 instanceof GraphNode) {
n1 = n1.id;
}
if (n2 instanceof GraphNode) {
n2 = n2.id;
}
var edgesMap = this._edgesMap;
if (this._directed) {
return edgesMap[n1 + "-" + n2];
} else {
return edgesMap[n1 + "-" + n2] || edgesMap[n2 + "-" + n1];
}
};
Graph2.prototype.eachNode = function(cb2, context) {
var nodes = this.nodes;
var len2 = nodes.length;
for (var i = 0; i < len2; i++) {
if (nodes[i].dataIndex >= 0) {
cb2.call(context, nodes[i], i);
}
}
};
Graph2.prototype.eachEdge = function(cb2, context) {
var edges = this.edges;
var len2 = edges.length;
for (var i = 0; i < len2; i++) {
if (edges[i].dataIndex >= 0 && edges[i].node1.dataIndex >= 0 && edges[i].node2.dataIndex >= 0) {
cb2.call(context, edges[i], i);
}
}
};
Graph2.prototype.breadthFirstTraverse = function(cb2, startNode, direction, context) {
if (!(startNode instanceof GraphNode)) {
startNode = this._nodesMap[generateNodeKey(startNode)];
}
if (!startNode) {
return;
}
var edgeType = direction === "out" ? "outEdges" : direction === "in" ? "inEdges" : "edges";
for (var i = 0; i < this.nodes.length; i++) {
this.nodes[i].__visited = false;
}
if (cb2.call(context, startNode, null)) {
return;
}
var queue = [startNode];
while (queue.length) {
var currentNode = queue.shift();
var edges = currentNode[edgeType];
for (var i = 0; i < edges.length; i++) {
var e2 = edges[i];
var otherNode = e2.node1 === currentNode ? e2.node2 : e2.node1;
if (!otherNode.__visited) {
if (cb2.call(context, otherNode, currentNode)) {
return;
}
queue.push(otherNode);
otherNode.__visited = true;
}
}
}
};
Graph2.prototype.update = function() {
var data = this.data;
var edgeData = this.edgeData;
var nodes = this.nodes;
var edges = this.edges;
for (var i = 0, len2 = nodes.length; i < len2; i++) {
nodes[i].dataIndex = -1;
}
for (var i = 0, len2 = data.count(); i < len2; i++) {
nodes[data.getRawIndex(i)].dataIndex = i;
}
edgeData.filterSelf(function(idx) {
var edge = edges[edgeData.getRawIndex(idx)];
return edge.node1.dataIndex >= 0 && edge.node2.dataIndex >= 0;
});
for (var i = 0, len2 = edges.length; i < len2; i++) {
edges[i].dataIndex = -1;
}
for (var i = 0, len2 = edgeData.count(); i < len2; i++) {
edges[edgeData.getRawIndex(i)].dataIndex = i;
}
};
Graph2.prototype.clone = function() {
var graph = new Graph2(this._directed);
var nodes = this.nodes;
var edges = this.edges;
for (var i = 0; i < nodes.length; i++) {
graph.addNode(nodes[i].id, nodes[i].dataIndex);
}
for (var i = 0; i < edges.length; i++) {
var e2 = edges[i];
graph.addEdge(e2.node1.id, e2.node2.id, e2.dataIndex);
}
return graph;
};
return Graph2;
}()
);
var GraphNode = (
/** @class */
function() {
function GraphNode2(id2, dataIndex) {
this.inEdges = [];
this.outEdges = [];
this.edges = [];
this.dataIndex = -1;
this.id = id2 == null ? "" : id2;
this.dataIndex = dataIndex == null ? -1 : dataIndex;
}
GraphNode2.prototype.degree = function() {
return this.edges.length;
};
GraphNode2.prototype.inDegree = function() {
return this.inEdges.length;
};
GraphNode2.prototype.outDegree = function() {
return this.outEdges.length;
};
GraphNode2.prototype.getModel = function(path) {
if (this.dataIndex < 0) {
return;
}
var graph = this.hostGraph;
var itemModel = graph.data.getItemModel(this.dataIndex);
return itemModel.getModel(path);
};
GraphNode2.prototype.getAdjacentDataIndices = function() {
var dataIndices = {
edge: [],
node: []
};
for (var i = 0; i < this.edges.length; i++) {
var adjacentEdge = this.edges[i];
if (adjacentEdge.dataIndex < 0) {
continue;
}
dataIndices.edge.push(adjacentEdge.dataIndex);
dataIndices.node.push(adjacentEdge.node1.dataIndex, adjacentEdge.node2.dataIndex);
}
return dataIndices;
};
GraphNode2.prototype.getTrajectoryDataIndices = function() {
var connectedEdgesMap = createHashMap();
var connectedNodesMap = createHashMap();
for (var i = 0; i < this.edges.length; i++) {
var adjacentEdge = this.edges[i];
if (adjacentEdge.dataIndex < 0) {
continue;
}
connectedEdgesMap.set(adjacentEdge.dataIndex, true);
var sourceNodesQueue = [adjacentEdge.node1];
var targetNodesQueue = [adjacentEdge.node2];
var nodeIteratorIndex = 0;
while (nodeIteratorIndex < sourceNodesQueue.length) {
var sourceNode = sourceNodesQueue[nodeIteratorIndex];
nodeIteratorIndex++;
connectedNodesMap.set(sourceNode.dataIndex, true);
for (var j = 0; j < sourceNode.inEdges.length; j++) {
connectedEdgesMap.set(sourceNode.inEdges[j].dataIndex, true);
sourceNodesQueue.push(sourceNode.inEdges[j].node1);
}
}
nodeIteratorIndex = 0;
while (nodeIteratorIndex < targetNodesQueue.length) {
var targetNode = targetNodesQueue[nodeIteratorIndex];
nodeIteratorIndex++;
connectedNodesMap.set(targetNode.dataIndex, true);
for (var j = 0; j < targetNode.outEdges.length; j++) {
connectedEdgesMap.set(targetNode.outEdges[j].dataIndex, true);
targetNodesQueue.push(targetNode.outEdges[j].node2);
}
}
}
return {
edge: connectedEdgesMap.keys(),
node: connectedNodesMap.keys()
};
};
return GraphNode2;
}()
);
var GraphEdge = (
/** @class */
function() {
function GraphEdge2(n1, n2, dataIndex) {
this.dataIndex = -1;
this.node1 = n1;
this.node2 = n2;
this.dataIndex = dataIndex == null ? -1 : dataIndex;
}
GraphEdge2.prototype.getModel = function(path) {
if (this.dataIndex < 0) {
return;
}
var graph = this.hostGraph;
var itemModel = graph.edgeData.getItemModel(this.dataIndex);
return itemModel.getModel(path);
};
GraphEdge2.prototype.getAdjacentDataIndices = function() {
return {
edge: [this.dataIndex],
node: [this.node1.dataIndex, this.node2.dataIndex]
};
};
GraphEdge2.prototype.getTrajectoryDataIndices = function() {
var connectedEdgesMap = createHashMap();
var connectedNodesMap = createHashMap();
connectedEdgesMap.set(this.dataIndex, true);
var sourceNodes = [this.node1];
var targetNodes = [this.node2];
var nodeIteratorIndex = 0;
while (nodeIteratorIndex < sourceNodes.length) {
var sourceNode = sourceNodes[nodeIteratorIndex];
nodeIteratorIndex++;
connectedNodesMap.set(sourceNode.dataIndex, true);
for (var j = 0; j < sourceNode.inEdges.length; j++) {
connectedEdgesMap.set(sourceNode.inEdges[j].dataIndex, true);
sourceNodes.push(sourceNode.inEdges[j].node1);
}
}
nodeIteratorIndex = 0;
while (nodeIteratorIndex < targetNodes.length) {
var targetNode = targetNodes[nodeIteratorIndex];
nodeIteratorIndex++;
connectedNodesMap.set(targetNode.dataIndex, true);
for (var j = 0; j < targetNode.outEdges.length; j++) {
connectedEdgesMap.set(targetNode.outEdges[j].dataIndex, true);
targetNodes.push(targetNode.outEdges[j].node2);
}
}
return {
edge: connectedEdgesMap.keys(),
node: connectedNodesMap.keys()
};
};
return GraphEdge2;
}()
);
function createGraphDataProxyMixin(hostName, dataName) {
return {
/**
* @param Default 'value'. can be 'a', 'b', 'c', 'd', 'e'.
*/
getValue: function(dimension) {
var data = this[hostName][dataName];
return data.getStore().get(data.getDimensionIndex(dimension || "value"), this.dataIndex);
},
// TODO: TYPE stricter type.
setVisual: function(key, value) {
this.dataIndex >= 0 && this[hostName][dataName].setItemVisual(this.dataIndex, key, value);
},
getVisual: function(key) {
return this[hostName][dataName].getItemVisual(this.dataIndex, key);
},
setLayout: function(layout2, merge2) {
this.dataIndex >= 0 && this[hostName][dataName].setItemLayout(this.dataIndex, layout2, merge2);
},
getLayout: function() {
return this[hostName][dataName].getItemLayout(this.dataIndex);
},
getGraphicEl: function() {
return this[hostName][dataName].getItemGraphicEl(this.dataIndex);
},
getRawIndex: function() {
return this[hostName][dataName].getRawIndex(this.dataIndex);
}
};
}
mixin(GraphNode, createGraphDataProxyMixin("hostGraph", "data"));
mixin(GraphEdge, createGraphDataProxyMixin("hostGraph", "edgeData"));
function createGraphFromNodeEdge(nodes, edges, seriesModel, directed, beforeLink) {
var graph = new Graph(directed);
for (var i = 0; i < nodes.length; i++) {
graph.addNode(retrieve(
// Id, name, dataIndex
nodes[i].id,
nodes[i].name,
i
), i);
}
var linkNameList = [];
var validEdges = [];
var linkCount = 0;
for (var i = 0; i < edges.length; i++) {
var link = edges[i];
var source = link.source;
var target = link.target;
if (graph.addEdge(source, target, linkCount)) {
validEdges.push(link);
linkNameList.push(retrieve(convertOptionIdName(link.id, null), source + " > " + target));
linkCount++;
}
}
var coordSys = seriesModel.get("coordinateSystem");
var nodeData;
if (coordSys === "cartesian2d" || coordSys === "polar") {
nodeData = createSeriesData(nodes, seriesModel);
} else {
var coordSysCtor = CoordinateSystemManager.get(coordSys);
var coordDimensions = coordSysCtor ? coordSysCtor.dimensions || [] : [];
if (indexOf(coordDimensions, "value") < 0) {
coordDimensions.concat(["value"]);
}
var dimensions = prepareSeriesDataSchema(nodes, {
coordDimensions,
encodeDefine: seriesModel.getEncode()
}).dimensions;
nodeData = new SeriesData(dimensions, seriesModel);
nodeData.initData(nodes);
}
var edgeData = new SeriesData(["value"], seriesModel);
edgeData.initData(validEdges, linkNameList);
beforeLink && beforeLink(nodeData, edgeData);
linkSeriesData({
mainData: nodeData,
struct: graph,
structAttr: "graph",
datas: {
node: nodeData,
edge: edgeData
},
datasAttr: {
node: "data",
edge: "edgeData"
}
});
graph.update();
return graph;
}
var GraphSeriesModel = (
/** @class */
function(_super) {
__extends(GraphSeriesModel2, _super);
function GraphSeriesModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = GraphSeriesModel2.type;
_this.hasSymbolVisual = true;
return _this;
}
GraphSeriesModel2.prototype.init = function(option) {
_super.prototype.init.apply(this, arguments);
var self2 = this;
function getCategoriesData() {
return self2._categoriesData;
}
this.legendVisualProvider = new LegendVisualProvider(getCategoriesData, getCategoriesData);
this.fillDataTextStyle(option.edges || option.links);
this._updateCategoriesData();
};
GraphSeriesModel2.prototype.mergeOption = function(option) {
_super.prototype.mergeOption.apply(this, arguments);
this.fillDataTextStyle(option.edges || option.links);
this._updateCategoriesData();
};
GraphSeriesModel2.prototype.mergeDefaultAndTheme = function(option) {
_super.prototype.mergeDefaultAndTheme.apply(this, arguments);
defaultEmphasis(option, "edgeLabel", ["show"]);
};
GraphSeriesModel2.prototype.getInitialData = function(option, ecModel) {
var edges = option.edges || option.links || [];
var nodes = option.data || option.nodes || [];
var self2 = this;
if (nodes && edges) {
initCurvenessList(this);
var graph = createGraphFromNodeEdge(nodes, edges, this, true, beforeLink);
each$f(graph.edges, function(edge) {
createEdgeMapForCurveness(edge.node1, edge.node2, this, edge.dataIndex);
}, this);
return graph.data;
}
function beforeLink(nodeData, edgeData) {
nodeData.wrapMethod("getItemModel", function(model) {
var categoriesModels = self2._categoriesModels;
var categoryIdx = model.getShallow("category");
var categoryModel = categoriesModels[categoryIdx];
if (categoryModel) {
categoryModel.parentModel = model.parentModel;
model.parentModel = categoryModel;
}
return model;
});
var oldGetModel = Model.prototype.getModel;
function newGetModel(path, parentModel) {
var model = oldGetModel.call(this, path, parentModel);
model.resolveParentPath = resolveParentPath;
return model;
}
edgeData.wrapMethod("getItemModel", function(model) {
model.resolveParentPath = resolveParentPath;
model.getModel = newGetModel;
return model;
});
function resolveParentPath(pathArr) {
if (pathArr && (pathArr[0] === "label" || pathArr[1] === "label")) {
var newPathArr = pathArr.slice();
if (pathArr[0] === "label") {
newPathArr[0] = "edgeLabel";
} else if (pathArr[1] === "label") {
newPathArr[1] = "edgeLabel";
}
return newPathArr;
}
return pathArr;
}
}
};
GraphSeriesModel2.prototype.getGraph = function() {
return this.getData().graph;
};
GraphSeriesModel2.prototype.getEdgeData = function() {
return this.getGraph().edgeData;
};
GraphSeriesModel2.prototype.getCategoriesData = function() {
return this._categoriesData;
};
GraphSeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) {
if (dataType === "edge") {
var nodeData = this.getData();
var params = this.getDataParams(dataIndex, dataType);
var edge = nodeData.graph.getEdgeByIndex(dataIndex);
var sourceName = nodeData.getName(edge.node1.dataIndex);
var targetName = nodeData.getName(edge.node2.dataIndex);
var nameArr = [];
sourceName != null && nameArr.push(sourceName);
targetName != null && nameArr.push(targetName);
return createTooltipMarkup("nameValue", {
name: nameArr.join(" > "),
value: params.value,
noValue: params.value == null
});
}
var nodeMarkup = defaultSeriesFormatTooltip({
series: this,
dataIndex,
multipleSeries
});
return nodeMarkup;
};
GraphSeriesModel2.prototype._updateCategoriesData = function() {
var categories = map$1(this.option.categories || [], function(category) {
return category.value != null ? category : extend({
value: 0
}, category);
});
var categoriesData = new SeriesData(["value"], this);
categoriesData.initData(categories);
this._categoriesData = categoriesData;
this._categoriesModels = categoriesData.mapArray(function(idx) {
return categoriesData.getItemModel(idx);
});
};
GraphSeriesModel2.prototype.setZoom = function(zoom) {
this.option.zoom = zoom;
};
GraphSeriesModel2.prototype.setCenter = function(center2) {
this.option.center = center2;
};
GraphSeriesModel2.prototype.isAnimationEnabled = function() {
return _super.prototype.isAnimationEnabled.call(this) && !(this.get("layout") === "force" && this.get(["force", "layoutAnimation"]));
};
GraphSeriesModel2.type = "series.graph";
GraphSeriesModel2.dependencies = ["grid", "polar", "geo", "singleAxis", "calendar"];
GraphSeriesModel2.defaultOption = {
// zlevel: 0,
z: 2,
coordinateSystem: "view",
// Default option for all coordinate systems
// xAxisIndex: 0,
// yAxisIndex: 0,
// polarIndex: 0,
// geoIndex: 0,
legendHoverLink: true,
layout: null,
// Configuration of circular layout
circular: {
rotateLabel: false
},
// Configuration of force directed layout
force: {
initLayout: null,
// Node repulsion. Can be an array to represent range.
repulsion: [0, 50],
gravity: 0.1,
// Initial friction
friction: 0.6,
// Edge length. Can be an array to represent range.
edgeLength: 30,
layoutAnimation: true
},
left: "center",
top: "center",
// right: null,
// bottom: null,
// width: '80%',
// height: '80%',
symbol: "circle",
symbolSize: 10,
edgeSymbol: ["none", "none"],
edgeSymbolSize: 10,
edgeLabel: {
position: "middle",
distance: 5
},
draggable: false,
roam: false,
// Default on center of graph
center: null,
zoom: 1,
// Symbol size scale ratio in roam
nodeScaleRatio: 0.6,
// cursor: null,
// categories: [],
// data: []
// Or
// nodes: []
//
// links: []
// Or
// edges: []
label: {
show: false,
formatter: "{b}"
},
itemStyle: {},
lineStyle: {
color: "#aaa",
width: 1,
opacity: 0.5
},
emphasis: {
scale: true,
label: {
show: true
}
},
select: {
itemStyle: {
borderColor: "#212121"
}
}
};
return GraphSeriesModel2;
}(SeriesModel)
);
var actionInfo$1 = {
type: "graphRoam",
event: "graphRoam",
update: "none"
};
function install$F(registers) {
registers.registerChartView(GraphView);
registers.registerSeriesModel(GraphSeriesModel);
registers.registerProcessor(categoryFilter);
registers.registerVisual(categoryVisual);
registers.registerVisual(graphEdgeVisual);
registers.registerLayout(graphSimpleLayout);
registers.registerLayout(registers.PRIORITY.VISUAL.POST_CHART_LAYOUT, graphCircularLayout);
registers.registerLayout(graphForceLayout);
registers.registerCoordinateSystem("graphView", {
dimensions: View.dimensions,
create: createViewCoordSys
});
registers.registerAction({
type: "focusNodeAdjacency",
event: "focusNodeAdjacency",
update: "series:focusNodeAdjacency"
}, noop2);
registers.registerAction({
type: "unfocusNodeAdjacency",
event: "unfocusNodeAdjacency",
update: "series:unfocusNodeAdjacency"
}, noop2);
registers.registerAction(actionInfo$1, function(payload, ecModel, api) {
ecModel.eachComponent({
mainType: "series",
query: payload
}, function(seriesModel) {
var coordSys = seriesModel.coordinateSystem;
var res = updateCenterAndZoom(coordSys, payload, void 0, api);
seriesModel.setCenter && seriesModel.setCenter(res.center);
seriesModel.setZoom && seriesModel.setZoom(res.zoom);
});
});
}
var PointerShape = (
/** @class */
/* @__PURE__ */ function() {
function PointerShape2() {
this.angle = 0;
this.width = 10;
this.r = 10;
this.x = 0;
this.y = 0;
}
return PointerShape2;
}()
);
var PointerPath = (
/** @class */
function(_super) {
__extends(PointerPath2, _super);
function PointerPath2(opts) {
var _this = _super.call(this, opts) || this;
_this.type = "pointer";
return _this;
}
PointerPath2.prototype.getDefaultShape = function() {
return new PointerShape();
};
PointerPath2.prototype.buildPath = function(ctx, shape) {
var mathCos2 = Math.cos;
var mathSin2 = Math.sin;
var r2 = shape.r;
var width = shape.width;
var angle = shape.angle;
var x2 = shape.x - mathCos2(angle) * width * (width >= r2 / 3 ? 1 : 2);
var y2 = shape.y - mathSin2(angle) * width * (width >= r2 / 3 ? 1 : 2);
angle = shape.angle - Math.PI / 2;
ctx.moveTo(x2, y2);
ctx.lineTo(shape.x + mathCos2(angle) * width, shape.y + mathSin2(angle) * width);
ctx.lineTo(shape.x + mathCos2(shape.angle) * r2, shape.y + mathSin2(shape.angle) * r2);
ctx.lineTo(shape.x - mathCos2(angle) * width, shape.y - mathSin2(angle) * width);
ctx.lineTo(x2, y2);
};
return PointerPath2;
}(Path)
);
function parsePosition(seriesModel, api) {
var center2 = seriesModel.get("center");
var width = api.getWidth();
var height = api.getHeight();
var size = Math.min(width, height);
var cx = parsePercent(center2[0], api.getWidth());
var cy = parsePercent(center2[1], api.getHeight());
var r2 = parsePercent(seriesModel.get("radius"), size / 2);
return {
cx,
cy,
r: r2
};
}
function formatLabel(value, labelFormatter) {
var label = value == null ? "" : value + "";
if (labelFormatter) {
if (isString$1(labelFormatter)) {
label = labelFormatter.replace("{value}", label);
} else if (isFunction$1(labelFormatter)) {
label = labelFormatter(value);
}
}
return label;
}
var GaugeView = (
/** @class */
function(_super) {
__extends(GaugeView2, _super);
function GaugeView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = GaugeView2.type;
return _this;
}
GaugeView2.prototype.render = function(seriesModel, ecModel, api) {
this.group.removeAll();
var colorList = seriesModel.get(["axisLine", "lineStyle", "color"]);
var posInfo = parsePosition(seriesModel, api);
this._renderMain(seriesModel, ecModel, api, colorList, posInfo);
this._data = seriesModel.getData();
};
GaugeView2.prototype.dispose = function() {
};
GaugeView2.prototype._renderMain = function(seriesModel, ecModel, api, colorList, posInfo) {
var group = this.group;
var clockwise = seriesModel.get("clockwise");
var startAngle = -seriesModel.get("startAngle") / 180 * Math.PI;
var endAngle = -seriesModel.get("endAngle") / 180 * Math.PI;
var axisLineModel = seriesModel.getModel("axisLine");
var roundCap = axisLineModel.get("roundCap");
var MainPath = roundCap ? SausagePath : Sector;
var showAxis = axisLineModel.get("show");
var lineStyleModel = axisLineModel.getModel("lineStyle");
var axisLineWidth = lineStyleModel.get("width");
var angles = [startAngle, endAngle];
normalizeArcAngles(angles, !clockwise);
startAngle = angles[0];
endAngle = angles[1];
var angleRangeSpan = endAngle - startAngle;
var prevEndAngle = startAngle;
var sectors = [];
for (var i = 0; showAxis && i < colorList.length; i++) {
var percent = Math.min(Math.max(colorList[i][0], 0), 1);
endAngle = startAngle + angleRangeSpan * percent;
var sector = new MainPath({
shape: {
startAngle: prevEndAngle,
endAngle,
cx: posInfo.cx,
cy: posInfo.cy,
clockwise,
r0: posInfo.r - axisLineWidth,
r: posInfo.r
},
silent: true
});
sector.setStyle({
fill: colorList[i][1]
});
sector.setStyle(lineStyleModel.getLineStyle(
// Because we use sector to simulate arc
// so the properties for stroking are useless
["color", "width"]
));
sectors.push(sector);
prevEndAngle = endAngle;
}
sectors.reverse();
each$f(sectors, function(sector2) {
return group.add(sector2);
});
var getColor = function(percent2) {
if (percent2 <= 0) {
return colorList[0][1];
}
var i2;
for (i2 = 0; i2 < colorList.length; i2++) {
if (colorList[i2][0] >= percent2 && (i2 === 0 ? 0 : colorList[i2 - 1][0]) < percent2) {
return colorList[i2][1];
}
}
return colorList[i2 - 1][1];
};
this._renderTicks(seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise, axisLineWidth);
this._renderTitleAndDetail(seriesModel, ecModel, api, getColor, posInfo);
this._renderAnchor(seriesModel, posInfo);
this._renderPointer(seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise, axisLineWidth);
};
GaugeView2.prototype._renderTicks = function(seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise, axisLineWidth) {
var group = this.group;
var cx = posInfo.cx;
var cy = posInfo.cy;
var r2 = posInfo.r;
var minVal = +seriesModel.get("min");
var maxVal = +seriesModel.get("max");
var splitLineModel = seriesModel.getModel("splitLine");
var tickModel = seriesModel.getModel("axisTick");
var labelModel = seriesModel.getModel("axisLabel");
var splitNumber = seriesModel.get("splitNumber");
var subSplitNumber = tickModel.get("splitNumber");
var splitLineLen = parsePercent(splitLineModel.get("length"), r2);
var tickLen = parsePercent(tickModel.get("length"), r2);
var angle = startAngle;
var step = (endAngle - startAngle) / splitNumber;
var subStep = step / subSplitNumber;
var splitLineStyle = splitLineModel.getModel("lineStyle").getLineStyle();
var tickLineStyle = tickModel.getModel("lineStyle").getLineStyle();
var splitLineDistance = splitLineModel.get("distance");
var unitX;
var unitY;
for (var i = 0; i <= splitNumber; i++) {
unitX = Math.cos(angle);
unitY = Math.sin(angle);
if (splitLineModel.get("show")) {
var distance2 = splitLineDistance ? splitLineDistance + axisLineWidth : axisLineWidth;
var splitLine = new Line$1({
shape: {
x1: unitX * (r2 - distance2) + cx,
y1: unitY * (r2 - distance2) + cy,
x2: unitX * (r2 - splitLineLen - distance2) + cx,
y2: unitY * (r2 - splitLineLen - distance2) + cy
},
style: splitLineStyle,
silent: true
});
if (splitLineStyle.stroke === "auto") {
splitLine.setStyle({
stroke: getColor(i / splitNumber)
});
}
group.add(splitLine);
}
if (labelModel.get("show")) {
var distance2 = labelModel.get("distance") + splitLineDistance;
var label = formatLabel(round$3(i / splitNumber * (maxVal - minVal) + minVal), labelModel.get("formatter"));
var autoColor = getColor(i / splitNumber);
var textStyleX = unitX * (r2 - splitLineLen - distance2) + cx;
var textStyleY = unitY * (r2 - splitLineLen - distance2) + cy;
var rotateType = labelModel.get("rotate");
var rotate2 = 0;
if (rotateType === "radial") {
rotate2 = -angle + 2 * Math.PI;
if (rotate2 > Math.PI / 2) {
rotate2 += Math.PI;
}
} else if (rotateType === "tangential") {
rotate2 = -angle - Math.PI / 2;
} else if (isNumber(rotateType)) {
rotate2 = rotateType * Math.PI / 180;
}
if (rotate2 === 0) {
group.add(new ZRText({
style: createTextStyle$1(labelModel, {
text: label,
x: textStyleX,
y: textStyleY,
verticalAlign: unitY < -0.8 ? "top" : unitY > 0.8 ? "bottom" : "middle",
align: unitX < -0.4 ? "left" : unitX > 0.4 ? "right" : "center"
}, {
inheritColor: autoColor
}),
silent: true
}));
} else {
group.add(new ZRText({
style: createTextStyle$1(labelModel, {
text: label,
x: textStyleX,
y: textStyleY,
verticalAlign: "middle",
align: "center"
}, {
inheritColor: autoColor
}),
silent: true,
originX: textStyleX,
originY: textStyleY,
rotation: rotate2
}));
}
}
if (tickModel.get("show") && i !== splitNumber) {
var distance2 = tickModel.get("distance");
distance2 = distance2 ? distance2 + axisLineWidth : axisLineWidth;
for (var j = 0; j <= subSplitNumber; j++) {
unitX = Math.cos(angle);
unitY = Math.sin(angle);
var tickLine = new Line$1({
shape: {
x1: unitX * (r2 - distance2) + cx,
y1: unitY * (r2 - distance2) + cy,
x2: unitX * (r2 - tickLen - distance2) + cx,
y2: unitY * (r2 - tickLen - distance2) + cy
},
silent: true,
style: tickLineStyle
});
if (tickLineStyle.stroke === "auto") {
tickLine.setStyle({
stroke: getColor((i + j / subSplitNumber) / splitNumber)
});
}
group.add(tickLine);
angle += subStep;
}
angle -= subStep;
} else {
angle += step;
}
}
};
GaugeView2.prototype._renderPointer = function(seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise, axisLineWidth) {
var group = this.group;
var oldData = this._data;
var oldProgressData = this._progressEls;
var progressList = [];
var showPointer2 = seriesModel.get(["pointer", "show"]);
var progressModel = seriesModel.getModel("progress");
var showProgress = progressModel.get("show");
var data = seriesModel.getData();
var valueDim = data.mapDimension("value");
var minVal = +seriesModel.get("min");
var maxVal = +seriesModel.get("max");
var valueExtent = [minVal, maxVal];
var angleExtent = [startAngle, endAngle];
function createPointer(idx, angle) {
var itemModel = data.getItemModel(idx);
var pointerModel = itemModel.getModel("pointer");
var pointerWidth = parsePercent(pointerModel.get("width"), posInfo.r);
var pointerLength = parsePercent(pointerModel.get("length"), posInfo.r);
var pointerStr = seriesModel.get(["pointer", "icon"]);
var pointerOffset = pointerModel.get("offsetCenter");
var pointerOffsetX = parsePercent(pointerOffset[0], posInfo.r);
var pointerOffsetY = parsePercent(pointerOffset[1], posInfo.r);
var pointerKeepAspect = pointerModel.get("keepAspect");
var pointer;
if (pointerStr) {
pointer = createSymbol$1(pointerStr, pointerOffsetX - pointerWidth / 2, pointerOffsetY - pointerLength, pointerWidth, pointerLength, null, pointerKeepAspect);
} else {
pointer = new PointerPath({
shape: {
angle: -Math.PI / 2,
width: pointerWidth,
r: pointerLength,
x: pointerOffsetX,
y: pointerOffsetY
}
});
}
pointer.rotation = -(angle + Math.PI / 2);
pointer.x = posInfo.cx;
pointer.y = posInfo.cy;
return pointer;
}
function createProgress(idx, endAngle2) {
var roundCap = progressModel.get("roundCap");
var ProgressPath = roundCap ? SausagePath : Sector;
var isOverlap = progressModel.get("overlap");
var progressWidth = isOverlap ? progressModel.get("width") : axisLineWidth / data.count();
var r0 = isOverlap ? posInfo.r - progressWidth : posInfo.r - (idx + 1) * progressWidth;
var r2 = isOverlap ? posInfo.r : posInfo.r - idx * progressWidth;
var progress = new ProgressPath({
shape: {
startAngle,
endAngle: endAngle2,
cx: posInfo.cx,
cy: posInfo.cy,
clockwise,
r0,
r: r2
}
});
isOverlap && (progress.z2 = maxVal - data.get(valueDim, idx) % maxVal);
return progress;
}
if (showProgress || showPointer2) {
data.diff(oldData).add(function(idx) {
var val = data.get(valueDim, idx);
if (showPointer2) {
var pointer = createPointer(idx, startAngle);
initProps(pointer, {
rotation: -((isNaN(+val) ? angleExtent[0] : linearMap$2(val, valueExtent, angleExtent, true)) + Math.PI / 2)
}, seriesModel);
group.add(pointer);
data.setItemGraphicEl(idx, pointer);
}
if (showProgress) {
var progress = createProgress(idx, startAngle);
var isClip = progressModel.get("clip");
initProps(progress, {
shape: {
endAngle: linearMap$2(val, valueExtent, angleExtent, isClip)
}
}, seriesModel);
group.add(progress);
setCommonECData(seriesModel.seriesIndex, data.dataType, idx, progress);
progressList[idx] = progress;
}
}).update(function(newIdx, oldIdx) {
var val = data.get(valueDim, newIdx);
if (showPointer2) {
var previousPointer = oldData.getItemGraphicEl(oldIdx);
var previousRotate = previousPointer ? previousPointer.rotation : startAngle;
var pointer = createPointer(newIdx, previousRotate);
pointer.rotation = previousRotate;
updateProps$1(pointer, {
rotation: -((isNaN(+val) ? angleExtent[0] : linearMap$2(val, valueExtent, angleExtent, true)) + Math.PI / 2)
}, seriesModel);
group.add(pointer);
data.setItemGraphicEl(newIdx, pointer);
}
if (showProgress) {
var previousProgress = oldProgressData[oldIdx];
var previousEndAngle = previousProgress ? previousProgress.shape.endAngle : startAngle;
var progress = createProgress(newIdx, previousEndAngle);
var isClip = progressModel.get("clip");
updateProps$1(progress, {
shape: {
endAngle: linearMap$2(val, valueExtent, angleExtent, isClip)
}
}, seriesModel);
group.add(progress);
setCommonECData(seriesModel.seriesIndex, data.dataType, newIdx, progress);
progressList[newIdx] = progress;
}
}).execute();
data.each(function(idx) {
var itemModel = data.getItemModel(idx);
var emphasisModel = itemModel.getModel("emphasis");
var focus = emphasisModel.get("focus");
var blurScope = emphasisModel.get("blurScope");
var emphasisDisabled = emphasisModel.get("disabled");
if (showPointer2) {
var pointer = data.getItemGraphicEl(idx);
var symbolStyle = data.getItemVisual(idx, "style");
var visualColor = symbolStyle.fill;
if (pointer instanceof ZRImage) {
var pathStyle = pointer.style;
pointer.useStyle(extend({
image: pathStyle.image,
x: pathStyle.x,
y: pathStyle.y,
width: pathStyle.width,
height: pathStyle.height
}, symbolStyle));
} else {
pointer.useStyle(symbolStyle);
pointer.type !== "pointer" && pointer.setColor(visualColor);
}
pointer.setStyle(itemModel.getModel(["pointer", "itemStyle"]).getItemStyle());
if (pointer.style.fill === "auto") {
pointer.setStyle("fill", getColor(linearMap$2(data.get(valueDim, idx), valueExtent, [0, 1], true)));
}
pointer.z2EmphasisLift = 0;
setStatesStylesFromModel(pointer, itemModel);
toggleHoverEmphasis(pointer, focus, blurScope, emphasisDisabled);
}
if (showProgress) {
var progress = progressList[idx];
progress.useStyle(data.getItemVisual(idx, "style"));
progress.setStyle(itemModel.getModel(["progress", "itemStyle"]).getItemStyle());
progress.z2EmphasisLift = 0;
setStatesStylesFromModel(progress, itemModel);
toggleHoverEmphasis(progress, focus, blurScope, emphasisDisabled);
}
});
this._progressEls = progressList;
}
};
GaugeView2.prototype._renderAnchor = function(seriesModel, posInfo) {
var anchorModel = seriesModel.getModel("anchor");
var showAnchor = anchorModel.get("show");
if (showAnchor) {
var anchorSize = anchorModel.get("size");
var anchorType = anchorModel.get("icon");
var offsetCenter = anchorModel.get("offsetCenter");
var anchorKeepAspect = anchorModel.get("keepAspect");
var anchor = createSymbol$1(anchorType, posInfo.cx - anchorSize / 2 + parsePercent(offsetCenter[0], posInfo.r), posInfo.cy - anchorSize / 2 + parsePercent(offsetCenter[1], posInfo.r), anchorSize, anchorSize, null, anchorKeepAspect);
anchor.z2 = anchorModel.get("showAbove") ? 1 : 0;
anchor.setStyle(anchorModel.getModel("itemStyle").getItemStyle());
this.group.add(anchor);
}
};
GaugeView2.prototype._renderTitleAndDetail = function(seriesModel, ecModel, api, getColor, posInfo) {
var _this = this;
var data = seriesModel.getData();
var valueDim = data.mapDimension("value");
var minVal = +seriesModel.get("min");
var maxVal = +seriesModel.get("max");
var contentGroup = new Group$3();
var newTitleEls = [];
var newDetailEls = [];
var hasAnimation = seriesModel.isAnimationEnabled();
var showPointerAbove = seriesModel.get(["pointer", "showAbove"]);
data.diff(this._data).add(function(idx) {
newTitleEls[idx] = new ZRText({
silent: true
});
newDetailEls[idx] = new ZRText({
silent: true
});
}).update(function(idx, oldIdx) {
newTitleEls[idx] = _this._titleEls[oldIdx];
newDetailEls[idx] = _this._detailEls[oldIdx];
}).execute();
data.each(function(idx) {
var itemModel = data.getItemModel(idx);
var value = data.get(valueDim, idx);
var itemGroup = new Group$3();
var autoColor = getColor(linearMap$2(value, [minVal, maxVal], [0, 1], true));
var itemTitleModel = itemModel.getModel("title");
if (itemTitleModel.get("show")) {
var titleOffsetCenter = itemTitleModel.get("offsetCenter");
var titleX = posInfo.cx + parsePercent(titleOffsetCenter[0], posInfo.r);
var titleY = posInfo.cy + parsePercent(titleOffsetCenter[1], posInfo.r);
var labelEl = newTitleEls[idx];
labelEl.attr({
z2: showPointerAbove ? 0 : 2,
style: createTextStyle$1(itemTitleModel, {
x: titleX,
y: titleY,
text: data.getName(idx),
align: "center",
verticalAlign: "middle"
}, {
inheritColor: autoColor
})
});
itemGroup.add(labelEl);
}
var itemDetailModel = itemModel.getModel("detail");
if (itemDetailModel.get("show")) {
var detailOffsetCenter = itemDetailModel.get("offsetCenter");
var detailX = posInfo.cx + parsePercent(detailOffsetCenter[0], posInfo.r);
var detailY = posInfo.cy + parsePercent(detailOffsetCenter[1], posInfo.r);
var width = parsePercent(itemDetailModel.get("width"), posInfo.r);
var height = parsePercent(itemDetailModel.get("height"), posInfo.r);
var detailColor = seriesModel.get(["progress", "show"]) ? data.getItemVisual(idx, "style").fill : autoColor;
var labelEl = newDetailEls[idx];
var formatter_1 = itemDetailModel.get("formatter");
labelEl.attr({
z2: showPointerAbove ? 0 : 2,
style: createTextStyle$1(itemDetailModel, {
x: detailX,
y: detailY,
text: formatLabel(value, formatter_1),
width: isNaN(width) ? null : width,
height: isNaN(height) ? null : height,
align: "center",
verticalAlign: "middle"
}, {
inheritColor: detailColor
})
});
setLabelValueAnimation(labelEl, {
normal: itemDetailModel
}, value, function(value2) {
return formatLabel(value2, formatter_1);
});
hasAnimation && animateLabelValue(labelEl, idx, data, seriesModel, {
getFormattedLabel: function(labelDataIndex, status, dataType, labelDimIndex, fmt, extendParams) {
return formatLabel(extendParams ? extendParams.interpolatedValue : value, formatter_1);
}
});
itemGroup.add(labelEl);
}
contentGroup.add(itemGroup);
});
this.group.add(contentGroup);
this._titleEls = newTitleEls;
this._detailEls = newDetailEls;
};
GaugeView2.type = "gauge";
return GaugeView2;
}(ChartView)
);
var GaugeSeriesModel = (
/** @class */
function(_super) {
__extends(GaugeSeriesModel2, _super);
function GaugeSeriesModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = GaugeSeriesModel2.type;
_this.visualStyleAccessPath = "itemStyle";
return _this;
}
GaugeSeriesModel2.prototype.getInitialData = function(option, ecModel) {
return createSeriesDataSimply(this, ["value"]);
};
GaugeSeriesModel2.type = "series.gauge";
GaugeSeriesModel2.defaultOption = {
// zlevel: 0,
z: 2,
colorBy: "data",
// 默认全局居中
center: ["50%", "50%"],
legendHoverLink: true,
radius: "75%",
startAngle: 225,
endAngle: -45,
clockwise: true,
// 最小值
min: 0,
// 最大值
max: 100,
// 分割段数,默认为10
splitNumber: 10,
// 坐标轴线
axisLine: {
// 默认显示,属性show控制显示与否
show: true,
roundCap: false,
lineStyle: {
color: [[1, "#E6EBF8"]],
width: 10
}
},
// 坐标轴线
progress: {
// 默认显示,属性show控制显示与否
show: false,
overlap: true,
width: 10,
roundCap: false,
clip: true
},
// 分隔线
splitLine: {
// 默认显示,属性show控制显示与否
show: true,
// 属性length控制线长
length: 10,
distance: 10,
// 属性lineStyle(详见lineStyle)控制线条样式
lineStyle: {
color: "#63677A",
width: 3,
type: "solid"
}
},
// 坐标轴小标记
axisTick: {
// 属性show控制显示与否,默认不显示
show: true,
// 每份split细分多少段
splitNumber: 5,
// 属性length控制线长
length: 6,
distance: 10,
// 属性lineStyle控制线条样式
lineStyle: {
color: "#63677A",
width: 1,
type: "solid"
}
},
axisLabel: {
show: true,
distance: 15,
// formatter: null,
color: "#464646",
fontSize: 12,
rotate: 0
},
pointer: {
icon: null,
offsetCenter: [0, 0],
show: true,
showAbove: true,
length: "60%",
width: 6,
keepAspect: false
},
anchor: {
show: false,
showAbove: false,
size: 6,
icon: "circle",
offsetCenter: [0, 0],
keepAspect: false,
itemStyle: {
color: "#fff",
borderWidth: 0,
borderColor: "#5470c6"
}
},
title: {
show: true,
// x, y,单位px
offsetCenter: [0, "20%"],
// 其余属性默认使用全局文本样式,详见TEXTSTYLE
color: "#464646",
fontSize: 16,
valueAnimation: false
},
detail: {
show: true,
backgroundColor: "rgba(0,0,0,0)",
borderWidth: 0,
borderColor: "#ccc",
width: 100,
height: null,
padding: [5, 10],
// x, y,单位px
offsetCenter: [0, "40%"],
// formatter: null,
// 其余属性默认使用全局文本样式,详见TEXTSTYLE
color: "#464646",
fontSize: 30,
fontWeight: "bold",
lineHeight: 30,
valueAnimation: false
}
};
return GaugeSeriesModel2;
}(SeriesModel)
);
function install$E(registers) {
registers.registerChartView(GaugeView);
registers.registerSeriesModel(GaugeSeriesModel);
}
var opacityAccessPath$1 = ["itemStyle", "opacity"];
var FunnelPiece = (
/** @class */
function(_super) {
__extends(FunnelPiece2, _super);
function FunnelPiece2(data, idx) {
var _this = _super.call(this) || this;
var polygon = _this;
var labelLine = new Polyline$1();
var text = new ZRText();
polygon.setTextContent(text);
_this.setTextGuideLine(labelLine);
_this.updateData(data, idx, true);
return _this;
}
FunnelPiece2.prototype.updateData = function(data, idx, firstCreate) {
var polygon = this;
var seriesModel = data.hostModel;
var itemModel = data.getItemModel(idx);
var layout2 = data.getItemLayout(idx);
var emphasisModel = itemModel.getModel("emphasis");
var opacity = itemModel.get(opacityAccessPath$1);
opacity = opacity == null ? 1 : opacity;
if (!firstCreate) {
saveOldStyle(polygon);
}
polygon.useStyle(data.getItemVisual(idx, "style"));
polygon.style.lineJoin = "round";
if (firstCreate) {
polygon.setShape({
points: layout2.points
});
polygon.style.opacity = 0;
initProps(polygon, {
style: {
opacity
}
}, seriesModel, idx);
} else {
updateProps$1(polygon, {
style: {
opacity
},
shape: {
points: layout2.points
}
}, seriesModel, idx);
}
setStatesStylesFromModel(polygon, itemModel);
this._updateLabel(data, idx);
toggleHoverEmphasis(this, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
};
FunnelPiece2.prototype._updateLabel = function(data, idx) {
var polygon = this;
var labelLine = this.getTextGuideLine();
var labelText = polygon.getTextContent();
var seriesModel = data.hostModel;
var itemModel = data.getItemModel(idx);
var layout2 = data.getItemLayout(idx);
var labelLayout2 = layout2.label;
var style2 = data.getItemVisual(idx, "style");
var visualColor = style2.fill;
setLabelStyle(
// position will not be used in setLabelStyle
labelText,
getLabelStatesModels(itemModel),
{
labelFetcher: data.hostModel,
labelDataIndex: idx,
defaultOpacity: style2.opacity,
defaultText: data.getName(idx)
},
{
normal: {
align: labelLayout2.textAlign,
verticalAlign: labelLayout2.verticalAlign
}
}
);
polygon.setTextConfig({
local: true,
inside: !!labelLayout2.inside,
insideStroke: visualColor,
// insideFill: 'auto',
outsideFill: visualColor
});
var linePoints = labelLayout2.linePoints;
labelLine.setShape({
points: linePoints
});
polygon.textGuideLineConfig = {
anchor: linePoints ? new Point(linePoints[0][0], linePoints[0][1]) : null
};
updateProps$1(labelText, {
style: {
x: labelLayout2.x,
y: labelLayout2.y
}
}, seriesModel, idx);
labelText.attr({
rotation: labelLayout2.rotation,
originX: labelLayout2.x,
originY: labelLayout2.y,
z2: 10
});
setLabelLineStyle(polygon, getLabelLineStatesModels(itemModel), {
// Default use item visual color
stroke: visualColor
});
};
return FunnelPiece2;
}(Polygon)
);
var FunnelView = (
/** @class */
function(_super) {
__extends(FunnelView2, _super);
function FunnelView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = FunnelView2.type;
_this.ignoreLabelLineUpdate = true;
return _this;
}
FunnelView2.prototype.render = function(seriesModel, ecModel, api) {
var data = seriesModel.getData();
var oldData = this._data;
var group = this.group;
data.diff(oldData).add(function(idx) {
var funnelPiece = new FunnelPiece(data, idx);
data.setItemGraphicEl(idx, funnelPiece);
group.add(funnelPiece);
}).update(function(newIdx, oldIdx) {
var piece = oldData.getItemGraphicEl(oldIdx);
piece.updateData(data, newIdx);
group.add(piece);
data.setItemGraphicEl(newIdx, piece);
}).remove(function(idx) {
var piece = oldData.getItemGraphicEl(idx);
removeElementWithFadeOut(piece, seriesModel, idx);
}).execute();
this._data = data;
};
FunnelView2.prototype.remove = function() {
this.group.removeAll();
this._data = null;
};
FunnelView2.prototype.dispose = function() {
};
FunnelView2.type = "funnel";
return FunnelView2;
}(ChartView)
);
var FunnelSeriesModel = (
/** @class */
function(_super) {
__extends(FunnelSeriesModel2, _super);
function FunnelSeriesModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = FunnelSeriesModel2.type;
return _this;
}
FunnelSeriesModel2.prototype.init = function(option) {
_super.prototype.init.apply(this, arguments);
this.legendVisualProvider = new LegendVisualProvider(bind$2(this.getData, this), bind$2(this.getRawData, this));
this._defaultLabelLine(option);
};
FunnelSeriesModel2.prototype.getInitialData = function(option, ecModel) {
return createSeriesDataSimply(this, {
coordDimensions: ["value"],
encodeDefaulter: curry$1(makeSeriesEncodeForNameBased, this)
});
};
FunnelSeriesModel2.prototype._defaultLabelLine = function(option) {
defaultEmphasis(option, "labelLine", ["show"]);
var labelLineNormalOpt = option.labelLine;
var labelLineEmphasisOpt = option.emphasis.labelLine;
labelLineNormalOpt.show = labelLineNormalOpt.show && option.label.show;
labelLineEmphasisOpt.show = labelLineEmphasisOpt.show && option.emphasis.label.show;
};
FunnelSeriesModel2.prototype.getDataParams = function(dataIndex) {
var data = this.getData();
var params = _super.prototype.getDataParams.call(this, dataIndex);
var valueDim = data.mapDimension("value");
var sum2 = data.getSum(valueDim);
params.percent = !sum2 ? 0 : +(data.get(valueDim, dataIndex) / sum2 * 100).toFixed(2);
params.$vars.push("percent");
return params;
};
FunnelSeriesModel2.type = "series.funnel";
FunnelSeriesModel2.defaultOption = {
// zlevel: 0, // 一级层叠
z: 2,
legendHoverLink: true,
colorBy: "data",
left: 80,
top: 60,
right: 80,
bottom: 60,
// width: {totalWidth} - left - right,
// height: {totalHeight} - top - bottom,
// 默认取数据最小最大值
// min: 0,
// max: 100,
minSize: "0%",
maxSize: "100%",
sort: "descending",
orient: "vertical",
gap: 0,
funnelAlign: "center",
label: {
show: true,
position: "outer"
// formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调
},
labelLine: {
show: true,
length: 20,
lineStyle: {
// color: 各异,
width: 1
}
},
itemStyle: {
// color: 各异,
borderColor: "#fff",
borderWidth: 1
},
emphasis: {
label: {
show: true
}
},
select: {
itemStyle: {
borderColor: "#212121"
}
}
};
return FunnelSeriesModel2;
}(SeriesModel)
);
function getViewRect$2(seriesModel, api) {
return getLayoutRect(seriesModel.getBoxLayoutParams(), {
width: api.getWidth(),
height: api.getHeight()
});
}
function getSortedIndices(data, sort2) {
var valueDim = data.mapDimension("value");
var valueArr = data.mapArray(valueDim, function(val) {
return val;
});
var indices = [];
var isAscending = sort2 === "ascending";
for (var i = 0, len2 = data.count(); i < len2; i++) {
indices[i] = i;
}
if (isFunction$1(sort2)) {
indices.sort(sort2);
} else if (sort2 !== "none") {
indices.sort(function(a, b2) {
return isAscending ? valueArr[a] - valueArr[b2] : valueArr[b2] - valueArr[a];
});
}
return indices;
}
function labelLayout(data) {
var seriesModel = data.hostModel;
var orient = seriesModel.get("orient");
data.each(function(idx) {
var itemModel = data.getItemModel(idx);
var labelModel = itemModel.getModel("label");
var labelPosition = labelModel.get("position");
var labelLineModel = itemModel.getModel("labelLine");
var layout2 = data.getItemLayout(idx);
var points2 = layout2.points;
var isLabelInside = labelPosition === "inner" || labelPosition === "inside" || labelPosition === "center" || labelPosition === "insideLeft" || labelPosition === "insideRight";
var textAlign;
var textX;
var textY;
var linePoints;
if (isLabelInside) {
if (labelPosition === "insideLeft") {
textX = (points2[0][0] + points2[3][0]) / 2 + 5;
textY = (points2[0][1] + points2[3][1]) / 2;
textAlign = "left";
} else if (labelPosition === "insideRight") {
textX = (points2[1][0] + points2[2][0]) / 2 - 5;
textY = (points2[1][1] + points2[2][1]) / 2;
textAlign = "right";
} else {
textX = (points2[0][0] + points2[1][0] + points2[2][0] + points2[3][0]) / 4;
textY = (points2[0][1] + points2[1][1] + points2[2][1] + points2[3][1]) / 4;
textAlign = "center";
}
linePoints = [[textX, textY], [textX, textY]];
} else {
var x1 = void 0;
var y1 = void 0;
var x2 = void 0;
var y2 = void 0;
var labelLineLen = labelLineModel.get("length");
if (labelPosition === "left") {
x1 = (points2[3][0] + points2[0][0]) / 2;
y1 = (points2[3][1] + points2[0][1]) / 2;
x2 = x1 - labelLineLen;
textX = x2 - 5;
textAlign = "right";
} else if (labelPosition === "right") {
x1 = (points2[1][0] + points2[2][0]) / 2;
y1 = (points2[1][1] + points2[2][1]) / 2;
x2 = x1 + labelLineLen;
textX = x2 + 5;
textAlign = "left";
} else if (labelPosition === "top") {
x1 = (points2[3][0] + points2[0][0]) / 2;
y1 = (points2[3][1] + points2[0][1]) / 2;
y2 = y1 - labelLineLen;
textY = y2 - 5;
textAlign = "center";
} else if (labelPosition === "bottom") {
x1 = (points2[1][0] + points2[2][0]) / 2;
y1 = (points2[1][1] + points2[2][1]) / 2;
y2 = y1 + labelLineLen;
textY = y2 + 5;
textAlign = "center";
} else if (labelPosition === "rightTop") {
x1 = orient === "horizontal" ? points2[3][0] : points2[1][0];
y1 = orient === "horizontal" ? points2[3][1] : points2[1][1];
if (orient === "horizontal") {
y2 = y1 - labelLineLen;
textY = y2 - 5;
textAlign = "center";
} else {
x2 = x1 + labelLineLen;
textX = x2 + 5;
textAlign = "top";
}
} else if (labelPosition === "rightBottom") {
x1 = points2[2][0];
y1 = points2[2][1];
if (orient === "horizontal") {
y2 = y1 + labelLineLen;
textY = y2 + 5;
textAlign = "center";
} else {
x2 = x1 + labelLineLen;
textX = x2 + 5;
textAlign = "bottom";
}
} else if (labelPosition === "leftTop") {
x1 = points2[0][0];
y1 = orient === "horizontal" ? points2[0][1] : points2[1][1];
if (orient === "horizontal") {
y2 = y1 - labelLineLen;
textY = y2 - 5;
textAlign = "center";
} else {
x2 = x1 - labelLineLen;
textX = x2 - 5;
textAlign = "right";
}
} else if (labelPosition === "leftBottom") {
x1 = orient === "horizontal" ? points2[1][0] : points2[3][0];
y1 = orient === "horizontal" ? points2[1][1] : points2[2][1];
if (orient === "horizontal") {
y2 = y1 + labelLineLen;
textY = y2 + 5;
textAlign = "center";
} else {
x2 = x1 - labelLineLen;
textX = x2 - 5;
textAlign = "right";
}
} else {
x1 = (points2[1][0] + points2[2][0]) / 2;
y1 = (points2[1][1] + points2[2][1]) / 2;
if (orient === "horizontal") {
y2 = y1 + labelLineLen;
textY = y2 + 5;
textAlign = "center";
} else {
x2 = x1 + labelLineLen;
textX = x2 + 5;
textAlign = "left";
}
}
if (orient === "horizontal") {
x2 = x1;
textX = x2;
} else {
y2 = y1;
textY = y2;
}
linePoints = [[x1, y1], [x2, y2]];
}
layout2.label = {
linePoints,
x: textX,
y: textY,
verticalAlign: "middle",
textAlign,
inside: isLabelInside
};
});
}
function funnelLayout(ecModel, api) {
ecModel.eachSeriesByType("funnel", function(seriesModel) {
var data = seriesModel.getData();
var valueDim = data.mapDimension("value");
var sort2 = seriesModel.get("sort");
var viewRect2 = getViewRect$2(seriesModel, api);
var orient = seriesModel.get("orient");
var viewWidth = viewRect2.width;
var viewHeight = viewRect2.height;
var indices = getSortedIndices(data, sort2);
var x2 = viewRect2.x;
var y2 = viewRect2.y;
var sizeExtent = orient === "horizontal" ? [parsePercent(seriesModel.get("minSize"), viewHeight), parsePercent(seriesModel.get("maxSize"), viewHeight)] : [parsePercent(seriesModel.get("minSize"), viewWidth), parsePercent(seriesModel.get("maxSize"), viewWidth)];
var dataExtent = data.getDataExtent(valueDim);
var min3 = seriesModel.get("min");
var max3 = seriesModel.get("max");
if (min3 == null) {
min3 = Math.min(dataExtent[0], 0);
}
if (max3 == null) {
max3 = dataExtent[1];
}
var funnelAlign = seriesModel.get("funnelAlign");
var gap = seriesModel.get("gap");
var viewSize2 = orient === "horizontal" ? viewWidth : viewHeight;
var itemSize = (viewSize2 - gap * (data.count() - 1)) / data.count();
var getLinePoints = function(idx2, offset2) {
if (orient === "horizontal") {
var val_1 = data.get(valueDim, idx2) || 0;
var itemHeight = linearMap$2(val_1, [min3, max3], sizeExtent, true);
var y0 = void 0;
switch (funnelAlign) {
case "top":
y0 = y2;
break;
case "center":
y0 = y2 + (viewHeight - itemHeight) / 2;
break;
case "bottom":
y0 = y2 + (viewHeight - itemHeight);
break;
}
return [[offset2, y0], [offset2, y0 + itemHeight]];
}
var val = data.get(valueDim, idx2) || 0;
var itemWidth = linearMap$2(val, [min3, max3], sizeExtent, true);
var x0;
switch (funnelAlign) {
case "left":
x0 = x2;
break;
case "center":
x0 = x2 + (viewWidth - itemWidth) / 2;
break;
case "right":
x0 = x2 + viewWidth - itemWidth;
break;
}
return [[x0, offset2], [x0 + itemWidth, offset2]];
};
if (sort2 === "ascending") {
itemSize = -itemSize;
gap = -gap;
if (orient === "horizontal") {
x2 += viewWidth;
} else {
y2 += viewHeight;
}
indices = indices.reverse();
}
for (var i = 0; i < indices.length; i++) {
var idx = indices[i];
var nextIdx = indices[i + 1];
var itemModel = data.getItemModel(idx);
if (orient === "horizontal") {
var width = itemModel.get(["itemStyle", "width"]);
if (width == null) {
width = itemSize;
} else {
width = parsePercent(width, viewWidth);
if (sort2 === "ascending") {
width = -width;
}
}
var start2 = getLinePoints(idx, x2);
var end2 = getLinePoints(nextIdx, x2 + width);
x2 += width + gap;
data.setItemLayout(idx, {
points: start2.concat(end2.slice().reverse())
});
} else {
var height = itemModel.get(["itemStyle", "height"]);
if (height == null) {
height = itemSize;
} else {
height = parsePercent(height, viewHeight);
if (sort2 === "ascending") {
height = -height;
}
}
var start2 = getLinePoints(idx, y2);
var end2 = getLinePoints(nextIdx, y2 + height);
y2 += height + gap;
data.setItemLayout(idx, {
points: start2.concat(end2.slice().reverse())
});
}
}
labelLayout(data);
});
}
function install$D(registers) {
registers.registerChartView(FunnelView);
registers.registerSeriesModel(FunnelSeriesModel);
registers.registerLayout(funnelLayout);
registers.registerProcessor(dataFilter$1("funnel"));
}
var DEFAULT_SMOOTH = 0.3;
var ParallelView$1 = (
/** @class */
function(_super) {
__extends(ParallelView2, _super);
function ParallelView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = ParallelView2.type;
_this._dataGroup = new Group$3();
_this._initialized = false;
return _this;
}
ParallelView2.prototype.init = function() {
this.group.add(this._dataGroup);
};
ParallelView2.prototype.render = function(seriesModel, ecModel, api, payload) {
this._progressiveEls = null;
var dataGroup = this._dataGroup;
var data = seriesModel.getData();
var oldData = this._data;
var coordSys = seriesModel.coordinateSystem;
var dimensions = coordSys.dimensions;
var seriesScope = makeSeriesScope(seriesModel);
data.diff(oldData).add(add2).update(update).remove(remove).execute();
function add2(newDataIndex) {
var line2 = addEl(data, dataGroup, newDataIndex, dimensions, coordSys);
updateElCommon(line2, data, newDataIndex, seriesScope);
}
function update(newDataIndex, oldDataIndex) {
var line2 = oldData.getItemGraphicEl(oldDataIndex);
var points2 = createLinePoints(data, newDataIndex, dimensions, coordSys);
data.setItemGraphicEl(newDataIndex, line2);
updateProps$1(line2, {
shape: {
points: points2
}
}, seriesModel, newDataIndex);
saveOldStyle(line2);
updateElCommon(line2, data, newDataIndex, seriesScope);
}
function remove(oldDataIndex) {
var line2 = oldData.getItemGraphicEl(oldDataIndex);
dataGroup.remove(line2);
}
if (!this._initialized) {
this._initialized = true;
var clipPath = createGridClipShape$2(coordSys, seriesModel, function() {
setTimeout(function() {
dataGroup.removeClipPath();
});
});
dataGroup.setClipPath(clipPath);
}
this._data = data;
};
ParallelView2.prototype.incrementalPrepareRender = function(seriesModel, ecModel, api) {
this._initialized = true;
this._data = null;
this._dataGroup.removeAll();
};
ParallelView2.prototype.incrementalRender = function(taskParams, seriesModel, ecModel) {
var data = seriesModel.getData();
var coordSys = seriesModel.coordinateSystem;
var dimensions = coordSys.dimensions;
var seriesScope = makeSeriesScope(seriesModel);
var progressiveEls = this._progressiveEls = [];
for (var dataIndex = taskParams.start; dataIndex < taskParams.end; dataIndex++) {
var line2 = addEl(data, this._dataGroup, dataIndex, dimensions, coordSys);
line2.incremental = true;
updateElCommon(line2, data, dataIndex, seriesScope);
progressiveEls.push(line2);
}
};
ParallelView2.prototype.remove = function() {
this._dataGroup && this._dataGroup.removeAll();
this._data = null;
};
ParallelView2.type = "parallel";
return ParallelView2;
}(ChartView)
);
function createGridClipShape$2(coordSys, seriesModel, cb2) {
var parallelModel = coordSys.model;
var rect = coordSys.getRect();
var rectEl = new Rect$2({
shape: {
x: rect.x,
y: rect.y,
width: rect.width,
height: rect.height
}
});
var dim = parallelModel.get("layout") === "horizontal" ? "width" : "height";
rectEl.setShape(dim, 0);
initProps(rectEl, {
shape: {
width: rect.width,
height: rect.height
}
}, seriesModel, cb2);
return rectEl;
}
function createLinePoints(data, dataIndex, dimensions, coordSys) {
var points2 = [];
for (var i = 0; i < dimensions.length; i++) {
var dimName = dimensions[i];
var value = data.get(data.mapDimension(dimName), dataIndex);
if (!isEmptyValue(value, coordSys.getAxis(dimName).type)) {
points2.push(coordSys.dataToPoint(value, dimName));
}
}
return points2;
}
function addEl(data, dataGroup, dataIndex, dimensions, coordSys) {
var points2 = createLinePoints(data, dataIndex, dimensions, coordSys);
var line2 = new Polyline$1({
shape: {
points: points2
},
// silent: true,
z2: 10
});
dataGroup.add(line2);
data.setItemGraphicEl(dataIndex, line2);
return line2;
}
function makeSeriesScope(seriesModel) {
var smooth = seriesModel.get("smooth", true);
smooth === true && (smooth = DEFAULT_SMOOTH);
smooth = numericToNumber(smooth);
eqNaN(smooth) && (smooth = 0);
return {
smooth
};
}
function updateElCommon(el2, data, dataIndex, seriesScope) {
el2.useStyle(data.getItemVisual(dataIndex, "style"));
el2.style.fill = null;
el2.setShape("smooth", seriesScope.smooth);
var itemModel = data.getItemModel(dataIndex);
var emphasisModel = itemModel.getModel("emphasis");
setStatesStylesFromModel(el2, itemModel, "lineStyle");
toggleHoverEmphasis(el2, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
}
function isEmptyValue(val, axisType) {
return axisType === "category" ? val == null : val == null || isNaN(val);
}
var ParallelSeriesModel = (
/** @class */
function(_super) {
__extends(ParallelSeriesModel2, _super);
function ParallelSeriesModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = ParallelSeriesModel2.type;
_this.visualStyleAccessPath = "lineStyle";
_this.visualDrawType = "stroke";
return _this;
}
ParallelSeriesModel2.prototype.getInitialData = function(option, ecModel) {
return createSeriesData(null, this, {
useEncodeDefaulter: bind$2(makeDefaultEncode, null, this)
});
};
ParallelSeriesModel2.prototype.getRawIndicesByActiveState = function(activeState) {
var coordSys = this.coordinateSystem;
var data = this.getData();
var indices = [];
coordSys.eachActiveState(data, function(theActiveState, dataIndex) {
if (activeState === theActiveState) {
indices.push(data.getRawIndex(dataIndex));
}
});
return indices;
};
ParallelSeriesModel2.type = "series.parallel";
ParallelSeriesModel2.dependencies = ["parallel"];
ParallelSeriesModel2.defaultOption = {
// zlevel: 0,
z: 2,
coordinateSystem: "parallel",
parallelIndex: 0,
label: {
show: false
},
inactiveOpacity: 0.05,
activeOpacity: 1,
lineStyle: {
width: 1,
opacity: 0.45,
type: "solid"
},
emphasis: {
label: {
show: false
}
},
progressive: 500,
smooth: false,
animationEasing: "linear"
};
return ParallelSeriesModel2;
}(SeriesModel)
);
function makeDefaultEncode(seriesModel) {
var parallelModel = seriesModel.ecModel.getComponent("parallel", seriesModel.get("parallelIndex"));
if (!parallelModel) {
return;
}
var encodeDefine = {};
each$f(parallelModel.dimensions, function(axisDim) {
var dataDimIndex = convertDimNameToNumber(axisDim);
encodeDefine[axisDim] = dataDimIndex;
});
return encodeDefine;
}
function convertDimNameToNumber(dimName) {
return +dimName.replace("dim", "");
}
var opacityAccessPath = ["lineStyle", "opacity"];
var parallelVisual = {
seriesType: "parallel",
reset: function(seriesModel, ecModel) {
var coordSys = seriesModel.coordinateSystem;
var opacityMap = {
normal: seriesModel.get(["lineStyle", "opacity"]),
active: seriesModel.get("activeOpacity"),
inactive: seriesModel.get("inactiveOpacity")
};
return {
progress: function(params, data) {
coordSys.eachActiveState(data, function(activeState, dataIndex) {
var opacity = opacityMap[activeState];
if (activeState === "normal" && data.hasItemOption) {
var itemOpacity = data.getItemModel(dataIndex).get(opacityAccessPath, true);
itemOpacity != null && (opacity = itemOpacity);
}
var existsStyle = data.ensureUniqueItemVisual(dataIndex, "style");
existsStyle.opacity = opacity;
}, params.start, params.end);
}
};
}
};
function parallelPreprocessor(option) {
createParallelIfNeeded(option);
mergeAxisOptionFromParallel(option);
}
function createParallelIfNeeded(option) {
if (option.parallel) {
return;
}
var hasParallelSeries = false;
each$f(option.series, function(seriesOpt) {
if (seriesOpt && seriesOpt.type === "parallel") {
hasParallelSeries = true;
}
});
if (hasParallelSeries) {
option.parallel = [{}];
}
}
function mergeAxisOptionFromParallel(option) {
var axes = normalizeToArray(option.parallelAxis);
each$f(axes, function(axisOption) {
if (!isObject$3(axisOption)) {
return;
}
var parallelIndex = axisOption.parallelIndex || 0;
var parallelOption = normalizeToArray(option.parallel)[parallelIndex];
if (parallelOption && parallelOption.parallelAxisDefault) {
merge(axisOption, parallelOption.parallelAxisDefault, false);
}
});
}
var CLICK_THRESHOLD = 5;
var ParallelView = (
/** @class */
function(_super) {
__extends(ParallelView2, _super);
function ParallelView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = ParallelView2.type;
return _this;
}
ParallelView2.prototype.render = function(parallelModel, ecModel, api) {
this._model = parallelModel;
this._api = api;
if (!this._handlers) {
this._handlers = {};
each$f(handlers$1, function(handler, eventName) {
api.getZr().on(eventName, this._handlers[eventName] = bind$2(handler, this));
}, this);
}
createOrUpdate(this, "_throttledDispatchExpand", parallelModel.get("axisExpandRate"), "fixRate");
};
ParallelView2.prototype.dispose = function(ecModel, api) {
clear$2(this, "_throttledDispatchExpand");
each$f(this._handlers, function(handler, eventName) {
api.getZr().off(eventName, handler);
});
this._handlers = null;
};
ParallelView2.prototype._throttledDispatchExpand = function(opt) {
this._dispatchExpand(opt);
};
ParallelView2.prototype._dispatchExpand = function(opt) {
opt && this._api.dispatchAction(extend({
type: "parallelAxisExpand"
}, opt));
};
ParallelView2.type = "parallel";
return ParallelView2;
}(ComponentView)
);
var handlers$1 = {
mousedown: function(e2) {
if (checkTrigger(this, "click")) {
this._mouseDownPoint = [e2.offsetX, e2.offsetY];
}
},
mouseup: function(e2) {
var mouseDownPoint = this._mouseDownPoint;
if (checkTrigger(this, "click") && mouseDownPoint) {
var point = [e2.offsetX, e2.offsetY];
var dist2 = Math.pow(mouseDownPoint[0] - point[0], 2) + Math.pow(mouseDownPoint[1] - point[1], 2);
if (dist2 > CLICK_THRESHOLD) {
return;
}
var result = this._model.coordinateSystem.getSlidedAxisExpandWindow([e2.offsetX, e2.offsetY]);
result.behavior !== "none" && this._dispatchExpand({
axisExpandWindow: result.axisExpandWindow
});
}
this._mouseDownPoint = null;
},
mousemove: function(e2) {
if (this._mouseDownPoint || !checkTrigger(this, "mousemove")) {
return;
}
var model = this._model;
var result = model.coordinateSystem.getSlidedAxisExpandWindow([e2.offsetX, e2.offsetY]);
var behavior = result.behavior;
behavior === "jump" && this._throttledDispatchExpand.debounceNextCall(model.get("axisExpandDebounce"));
this._throttledDispatchExpand(behavior === "none" ? null : {
axisExpandWindow: result.axisExpandWindow,
// Jumping uses animation, and sliding suppresses animation.
animation: behavior === "jump" ? null : {
duration: 0
// Disable animation.
}
});
}
};
function checkTrigger(view, triggerOn) {
var model = view._model;
return model.get("axisExpandable") && model.get("axisExpandTriggerOn") === triggerOn;
}
var ParallelModel = (
/** @class */
function(_super) {
__extends(ParallelModel2, _super);
function ParallelModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = ParallelModel2.type;
return _this;
}
ParallelModel2.prototype.init = function() {
_super.prototype.init.apply(this, arguments);
this.mergeOption({});
};
ParallelModel2.prototype.mergeOption = function(newOption) {
var thisOption = this.option;
newOption && merge(thisOption, newOption, true);
this._initDimensions();
};
ParallelModel2.prototype.contains = function(model, ecModel) {
var parallelIndex = model.get("parallelIndex");
return parallelIndex != null && ecModel.getComponent("parallel", parallelIndex) === this;
};
ParallelModel2.prototype.setAxisExpand = function(opt) {
each$f(["axisExpandable", "axisExpandCenter", "axisExpandCount", "axisExpandWidth", "axisExpandWindow"], function(name) {
if (opt.hasOwnProperty(name)) {
this.option[name] = opt[name];
}
}, this);
};
ParallelModel2.prototype._initDimensions = function() {
var dimensions = this.dimensions = [];
var parallelAxisIndex = this.parallelAxisIndex = [];
var axisModels = filter(this.ecModel.queryComponents({
mainType: "parallelAxis"
}), function(axisModel) {
return (axisModel.get("parallelIndex") || 0) === this.componentIndex;
}, this);
each$f(axisModels, function(axisModel) {
dimensions.push("dim" + axisModel.get("dim"));
parallelAxisIndex.push(axisModel.componentIndex);
});
};
ParallelModel2.type = "parallel";
ParallelModel2.dependencies = ["parallelAxis"];
ParallelModel2.layoutMode = "box";
ParallelModel2.defaultOption = {
// zlevel: 0,
z: 0,
left: 80,
top: 60,
right: 80,
bottom: 60,
// width: {totalWidth} - left - right,
// height: {totalHeight} - top - bottom,
layout: "horizontal",
// FIXME
// naming?
axisExpandable: false,
axisExpandCenter: null,
axisExpandCount: 0,
axisExpandWidth: 50,
axisExpandRate: 17,
axisExpandDebounce: 50,
// [out, in, jumpTarget]. In percentage. If use [null, 0.05], null means full.
// Do not doc to user until necessary.
axisExpandSlideTriggerArea: [-0.15, 0.05, 0.4],
axisExpandTriggerOn: "click",
parallelAxisDefault: null
};
return ParallelModel2;
}(ComponentModel)
);
var ParallelAxis = (
/** @class */
function(_super) {
__extends(ParallelAxis2, _super);
function ParallelAxis2(dim, scale2, coordExtent, axisType, axisIndex) {
var _this = _super.call(this, dim, scale2, coordExtent) || this;
_this.type = axisType || "value";
_this.axisIndex = axisIndex;
return _this;
}
ParallelAxis2.prototype.isHorizontal = function() {
return this.coordinateSystem.getModel().get("layout") !== "horizontal";
};
return ParallelAxis2;
}(Axis)
);
function sliderMove(delta, handleEnds, extent3, handleIndex, minSpan, maxSpan) {
delta = delta || 0;
var extentSpan = extent3[1] - extent3[0];
if (minSpan != null) {
minSpan = restrict$1(minSpan, [0, extentSpan]);
}
if (maxSpan != null) {
maxSpan = Math.max(maxSpan, minSpan != null ? minSpan : 0);
}
if (handleIndex === "all") {
var handleSpan = Math.abs(handleEnds[1] - handleEnds[0]);
handleSpan = restrict$1(handleSpan, [0, extentSpan]);
minSpan = maxSpan = restrict$1(handleSpan, [minSpan, maxSpan]);
handleIndex = 0;
}
handleEnds[0] = restrict$1(handleEnds[0], extent3);
handleEnds[1] = restrict$1(handleEnds[1], extent3);
var originalDistSign = getSpanSign(handleEnds, handleIndex);
handleEnds[handleIndex] += delta;
var extentMinSpan = minSpan || 0;
var realExtent = extent3.slice();
originalDistSign.sign < 0 ? realExtent[0] += extentMinSpan : realExtent[1] -= extentMinSpan;
handleEnds[handleIndex] = restrict$1(handleEnds[handleIndex], realExtent);
var currDistSign;
currDistSign = getSpanSign(handleEnds, handleIndex);
if (minSpan != null && (currDistSign.sign !== originalDistSign.sign || currDistSign.span < minSpan)) {
handleEnds[1 - handleIndex] = handleEnds[handleIndex] + originalDistSign.sign * minSpan;
}
currDistSign = getSpanSign(handleEnds, handleIndex);
if (maxSpan != null && currDistSign.span > maxSpan) {
handleEnds[1 - handleIndex] = handleEnds[handleIndex] + currDistSign.sign * maxSpan;
}
return handleEnds;
}
function getSpanSign(handleEnds, handleIndex) {
var dist2 = handleEnds[handleIndex] - handleEnds[1 - handleIndex];
return {
span: Math.abs(dist2),
sign: dist2 > 0 ? -1 : dist2 < 0 ? 1 : handleIndex ? -1 : 1
};
}
function restrict$1(value, extend2) {
return Math.min(extend2[1] != null ? extend2[1] : Infinity, Math.max(extend2[0] != null ? extend2[0] : -Infinity, value));
}
var each$a = each$f;
var mathMin$2 = Math.min;
var mathMax$2 = Math.max;
var mathFloor = Math.floor;
var mathCeil = Math.ceil;
var round = round$3;
var PI$1 = Math.PI;
var Parallel = (
/** @class */
function() {
function Parallel2(parallelModel, ecModel, api) {
this.type = "parallel";
this._axesMap = createHashMap();
this._axesLayout = {};
this.dimensions = parallelModel.dimensions;
this._model = parallelModel;
this._init(parallelModel, ecModel, api);
}
Parallel2.prototype._init = function(parallelModel, ecModel, api) {
var dimensions = parallelModel.dimensions;
var parallelAxisIndex = parallelModel.parallelAxisIndex;
each$a(dimensions, function(dim, idx) {
var axisIndex = parallelAxisIndex[idx];
var axisModel = ecModel.getComponent("parallelAxis", axisIndex);
var axis = this._axesMap.set(dim, new ParallelAxis(dim, createScaleByModel$1(axisModel), [0, 0], axisModel.get("type"), axisIndex));
var isCategory2 = axis.type === "category";
axis.onBand = isCategory2 && axisModel.get("boundaryGap");
axis.inverse = axisModel.get("inverse");
axisModel.axis = axis;
axis.model = axisModel;
axis.coordinateSystem = axisModel.coordinateSystem = this;
}, this);
};
Parallel2.prototype.update = function(ecModel, api) {
this._updateAxesFromSeries(this._model, ecModel);
};
Parallel2.prototype.containPoint = function(point) {
var layoutInfo = this._makeLayoutInfo();
var axisBase = layoutInfo.axisBase;
var layoutBase = layoutInfo.layoutBase;
var pixelDimIndex = layoutInfo.pixelDimIndex;
var pAxis = point[1 - pixelDimIndex];
var pLayout = point[pixelDimIndex];
return pAxis >= axisBase && pAxis <= axisBase + layoutInfo.axisLength && pLayout >= layoutBase && pLayout <= layoutBase + layoutInfo.layoutLength;
};
Parallel2.prototype.getModel = function() {
return this._model;
};
Parallel2.prototype._updateAxesFromSeries = function(parallelModel, ecModel) {
ecModel.eachSeries(function(seriesModel) {
if (!parallelModel.contains(seriesModel, ecModel)) {
return;
}
var data = seriesModel.getData();
each$a(this.dimensions, function(dim) {
var axis = this._axesMap.get(dim);
axis.scale.unionExtentFromData(data, data.mapDimension(dim));
niceScaleExtent(axis.scale, axis.model);
}, this);
}, this);
};
Parallel2.prototype.resize = function(parallelModel, api) {
this._rect = getLayoutRect(parallelModel.getBoxLayoutParams(), {
width: api.getWidth(),
height: api.getHeight()
});
this._layoutAxes();
};
Parallel2.prototype.getRect = function() {
return this._rect;
};
Parallel2.prototype._makeLayoutInfo = function() {
var parallelModel = this._model;
var rect = this._rect;
var xy = ["x", "y"];
var wh2 = ["width", "height"];
var layout2 = parallelModel.get("layout");
var pixelDimIndex = layout2 === "horizontal" ? 0 : 1;
var layoutLength = rect[wh2[pixelDimIndex]];
var layoutExtent = [0, layoutLength];
var axisCount = this.dimensions.length;
var axisExpandWidth = restrict(parallelModel.get("axisExpandWidth"), layoutExtent);
var axisExpandCount = restrict(parallelModel.get("axisExpandCount") || 0, [0, axisCount]);
var axisExpandable = parallelModel.get("axisExpandable") && axisCount > 3 && axisCount > axisExpandCount && axisExpandCount > 1 && axisExpandWidth > 0 && layoutLength > 0;
var axisExpandWindow = parallelModel.get("axisExpandWindow");
var winSize;
if (!axisExpandWindow) {
winSize = restrict(axisExpandWidth * (axisExpandCount - 1), layoutExtent);
var axisExpandCenter = parallelModel.get("axisExpandCenter") || mathFloor(axisCount / 2);
axisExpandWindow = [axisExpandWidth * axisExpandCenter - winSize / 2];
axisExpandWindow[1] = axisExpandWindow[0] + winSize;
} else {
winSize = restrict(axisExpandWindow[1] - axisExpandWindow[0], layoutExtent);
axisExpandWindow[1] = axisExpandWindow[0] + winSize;
}
var axisCollapseWidth = (layoutLength - winSize) / (axisCount - axisExpandCount);
axisCollapseWidth < 3 && (axisCollapseWidth = 0);
var winInnerIndices = [mathFloor(round(axisExpandWindow[0] / axisExpandWidth, 1)) + 1, mathCeil(round(axisExpandWindow[1] / axisExpandWidth, 1)) - 1];
var axisExpandWindow0Pos = axisCollapseWidth / axisExpandWidth * axisExpandWindow[0];
return {
layout: layout2,
pixelDimIndex,
layoutBase: rect[xy[pixelDimIndex]],
layoutLength,
axisBase: rect[xy[1 - pixelDimIndex]],
axisLength: rect[wh2[1 - pixelDimIndex]],
axisExpandable,
axisExpandWidth,
axisCollapseWidth,
axisExpandWindow,
axisCount,
winInnerIndices,
axisExpandWindow0Pos
};
};
Parallel2.prototype._layoutAxes = function() {
var rect = this._rect;
var axes = this._axesMap;
var dimensions = this.dimensions;
var layoutInfo = this._makeLayoutInfo();
var layout2 = layoutInfo.layout;
axes.each(function(axis) {
var axisExtent = [0, layoutInfo.axisLength];
var idx = axis.inverse ? 1 : 0;
axis.setExtent(axisExtent[idx], axisExtent[1 - idx]);
});
each$a(dimensions, function(dim, idx) {
var posInfo = (layoutInfo.axisExpandable ? layoutAxisWithExpand : layoutAxisWithoutExpand)(idx, layoutInfo);
var positionTable = {
horizontal: {
x: posInfo.position,
y: layoutInfo.axisLength
},
vertical: {
x: 0,
y: posInfo.position
}
};
var rotationTable = {
horizontal: PI$1 / 2,
vertical: 0
};
var position2 = [positionTable[layout2].x + rect.x, positionTable[layout2].y + rect.y];
var rotation = rotationTable[layout2];
var transform2 = create$1();
rotate(transform2, transform2, rotation);
translate(transform2, transform2, position2);
this._axesLayout[dim] = {
position: position2,
rotation,
transform: transform2,
axisNameAvailableWidth: posInfo.axisNameAvailableWidth,
axisLabelShow: posInfo.axisLabelShow,
nameTruncateMaxWidth: posInfo.nameTruncateMaxWidth,
tickDirection: 1,
labelDirection: 1
};
}, this);
};
Parallel2.prototype.getAxis = function(dim) {
return this._axesMap.get(dim);
};
Parallel2.prototype.dataToPoint = function(value, dim) {
return this.axisCoordToPoint(this._axesMap.get(dim).dataToCoord(value), dim);
};
Parallel2.prototype.eachActiveState = function(data, callback, start2, end2) {
start2 == null && (start2 = 0);
end2 == null && (end2 = data.count());
var axesMap = this._axesMap;
var dimensions = this.dimensions;
var dataDimensions = [];
var axisModels = [];
each$f(dimensions, function(axisDim) {
dataDimensions.push(data.mapDimension(axisDim));
axisModels.push(axesMap.get(axisDim).model);
});
var hasActiveSet = this.hasAxisBrushed();
for (var dataIndex = start2; dataIndex < end2; dataIndex++) {
var activeState = void 0;
if (!hasActiveSet) {
activeState = "normal";
} else {
activeState = "active";
var values = data.getValues(dataDimensions, dataIndex);
for (var j = 0, lenj = dimensions.length; j < lenj; j++) {
var state = axisModels[j].getActiveState(values[j]);
if (state === "inactive") {
activeState = "inactive";
break;
}
}
}
callback(activeState, dataIndex);
}
};
Parallel2.prototype.hasAxisBrushed = function() {
var dimensions = this.dimensions;
var axesMap = this._axesMap;
var hasActiveSet = false;
for (var j = 0, lenj = dimensions.length; j < lenj; j++) {
if (axesMap.get(dimensions[j]).model.getActiveState() !== "normal") {
hasActiveSet = true;
}
}
return hasActiveSet;
};
Parallel2.prototype.axisCoordToPoint = function(coord, dim) {
var axisLayout = this._axesLayout[dim];
return applyTransform([coord, 0], axisLayout.transform);
};
Parallel2.prototype.getAxisLayout = function(dim) {
return clone$4(this._axesLayout[dim]);
};
Parallel2.prototype.getSlidedAxisExpandWindow = function(point) {
var layoutInfo = this._makeLayoutInfo();
var pixelDimIndex = layoutInfo.pixelDimIndex;
var axisExpandWindow = layoutInfo.axisExpandWindow.slice();
var winSize = axisExpandWindow[1] - axisExpandWindow[0];
var extent3 = [0, layoutInfo.axisExpandWidth * (layoutInfo.axisCount - 1)];
if (!this.containPoint(point)) {
return {
behavior: "none",
axisExpandWindow
};
}
var pointCoord = point[pixelDimIndex] - layoutInfo.layoutBase - layoutInfo.axisExpandWindow0Pos;
var delta;
var behavior = "slide";
var axisCollapseWidth = layoutInfo.axisCollapseWidth;
var triggerArea = this._model.get("axisExpandSlideTriggerArea");
var useJump = triggerArea[0] != null;
if (axisCollapseWidth) {
if (useJump && axisCollapseWidth && pointCoord < winSize * triggerArea[0]) {
behavior = "jump";
delta = pointCoord - winSize * triggerArea[2];
} else if (useJump && axisCollapseWidth && pointCoord > winSize * (1 - triggerArea[0])) {
behavior = "jump";
delta = pointCoord - winSize * (1 - triggerArea[2]);
} else {
(delta = pointCoord - winSize * triggerArea[1]) >= 0 && (delta = pointCoord - winSize * (1 - triggerArea[1])) <= 0 && (delta = 0);
}
delta *= layoutInfo.axisExpandWidth / axisCollapseWidth;
delta ? sliderMove(delta, axisExpandWindow, extent3, "all") : behavior = "none";
} else {
var winSize2 = axisExpandWindow[1] - axisExpandWindow[0];
var pos = extent3[1] * pointCoord / winSize2;
axisExpandWindow = [mathMax$2(0, pos - winSize2 / 2)];
axisExpandWindow[1] = mathMin$2(extent3[1], axisExpandWindow[0] + winSize2);
axisExpandWindow[0] = axisExpandWindow[1] - winSize2;
}
return {
axisExpandWindow,
behavior
};
};
return Parallel2;
}()
);
function restrict(len2, extent3) {
return mathMin$2(mathMax$2(len2, extent3[0]), extent3[1]);
}
function layoutAxisWithoutExpand(axisIndex, layoutInfo) {
var step = layoutInfo.layoutLength / (layoutInfo.axisCount - 1);
return {
position: step * axisIndex,
axisNameAvailableWidth: step,
axisLabelShow: true
};
}
function layoutAxisWithExpand(axisIndex, layoutInfo) {
var layoutLength = layoutInfo.layoutLength;
var axisExpandWidth = layoutInfo.axisExpandWidth;
var axisCount = layoutInfo.axisCount;
var axisCollapseWidth = layoutInfo.axisCollapseWidth;
var winInnerIndices = layoutInfo.winInnerIndices;
var position2;
var axisNameAvailableWidth = axisCollapseWidth;
var axisLabelShow = false;
var nameTruncateMaxWidth;
if (axisIndex < winInnerIndices[0]) {
position2 = axisIndex * axisCollapseWidth;
nameTruncateMaxWidth = axisCollapseWidth;
} else if (axisIndex <= winInnerIndices[1]) {
position2 = layoutInfo.axisExpandWindow0Pos + axisIndex * axisExpandWidth - layoutInfo.axisExpandWindow[0];
axisNameAvailableWidth = axisExpandWidth;
axisLabelShow = true;
} else {
position2 = layoutLength - (axisCount - 1 - axisIndex) * axisCollapseWidth;
nameTruncateMaxWidth = axisCollapseWidth;
}
return {
position: position2,
axisNameAvailableWidth,
axisLabelShow,
nameTruncateMaxWidth
};
}
function createParallelCoordSys(ecModel, api) {
var coordSysList = [];
ecModel.eachComponent("parallel", function(parallelModel, idx) {
var coordSys = new Parallel(parallelModel, ecModel, api);
coordSys.name = "parallel_" + idx;
coordSys.resize(parallelModel, api);
parallelModel.coordinateSystem = coordSys;
coordSys.model = parallelModel;
coordSysList.push(coordSys);
});
ecModel.eachSeries(function(seriesModel) {
if (seriesModel.get("coordinateSystem") === "parallel") {
var parallelModel = seriesModel.getReferringComponents("parallel", SINGLE_REFERRING).models[0];
seriesModel.coordinateSystem = parallelModel.coordinateSystem;
}
});
return coordSysList;
}
var parallelCoordSysCreator = {
create: createParallelCoordSys
};
var ParallelAxisModel = (
/** @class */
function(_super) {
__extends(ParallelAxisModel2, _super);
function ParallelAxisModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = ParallelAxisModel2.type;
_this.activeIntervals = [];
return _this;
}
ParallelAxisModel2.prototype.getAreaSelectStyle = function() {
return makeStyleMapper([
["fill", "color"],
["lineWidth", "borderWidth"],
["stroke", "borderColor"],
["width", "width"],
["opacity", "opacity"]
// Option decal is in `DecalObject` but style.decal is in `PatternObject`.
// So do not transfer decal directly.
])(this.getModel("areaSelectStyle"));
};
ParallelAxisModel2.prototype.setActiveIntervals = function(intervals) {
var activeIntervals = this.activeIntervals = clone$4(intervals);
if (activeIntervals) {
for (var i = activeIntervals.length - 1; i >= 0; i--) {
asc$2(activeIntervals[i]);
}
}
};
ParallelAxisModel2.prototype.getActiveState = function(value) {
var activeIntervals = this.activeIntervals;
if (!activeIntervals.length) {
return "normal";
}
if (value == null || isNaN(+value)) {
return "inactive";
}
if (activeIntervals.length === 1) {
var interval = activeIntervals[0];
if (interval[0] <= value && value <= interval[1]) {
return "active";
}
} else {
for (var i = 0, len2 = activeIntervals.length; i < len2; i++) {
if (activeIntervals[i][0] <= value && value <= activeIntervals[i][1]) {
return "active";
}
}
}
return "inactive";
};
return ParallelAxisModel2;
}(ComponentModel)
);
mixin(ParallelAxisModel, AxisModelCommonMixin);
var BRUSH_PANEL_GLOBAL = true;
var mathMin$1 = Math.min;
var mathMax$1 = Math.max;
var mathPow = Math.pow;
var COVER_Z = 1e4;
var UNSELECT_THRESHOLD = 6;
var MIN_RESIZE_LINE_WIDTH = 6;
var MUTEX_RESOURCE_KEY = "globalPan";
var DIRECTION_MAP = {
w: [0, 0],
e: [0, 1],
n: [1, 0],
s: [1, 1]
};
var CURSOR_MAP = {
w: "ew",
e: "ew",
n: "ns",
s: "ns",
ne: "nesw",
sw: "nesw",
nw: "nwse",
se: "nwse"
};
var DEFAULT_BRUSH_OPT = {
brushStyle: {
lineWidth: 2,
stroke: "rgba(210,219,238,0.3)",
fill: "#D2DBEE"
},
transformable: true,
brushMode: "single",
removeOnClick: false
};
var baseUID = 0;
var BrushController = (
/** @class */
function(_super) {
__extends(BrushController2, _super);
function BrushController2(zr) {
var _this = _super.call(this) || this;
_this._track = [];
_this._covers = [];
_this._handlers = {};
_this._zr = zr;
_this.group = new Group$3();
_this._uid = "brushController_" + baseUID++;
each$f(pointerHandlers, function(handler, eventName) {
this._handlers[eventName] = bind$2(handler, this);
}, _this);
return _this;
}
BrushController2.prototype.enableBrush = function(brushOption) {
this._brushType && this._doDisableBrush();
brushOption.brushType && this._doEnableBrush(brushOption);
return this;
};
BrushController2.prototype._doEnableBrush = function(brushOption) {
var zr = this._zr;
if (!this._enableGlobalPan) {
take(zr, MUTEX_RESOURCE_KEY, this._uid);
}
each$f(this._handlers, function(handler, eventName) {
zr.on(eventName, handler);
});
this._brushType = brushOption.brushType;
this._brushOption = merge(clone$4(DEFAULT_BRUSH_OPT), brushOption, true);
};
BrushController2.prototype._doDisableBrush = function() {
var zr = this._zr;
release(zr, MUTEX_RESOURCE_KEY, this._uid);
each$f(this._handlers, function(handler, eventName) {
zr.off(eventName, handler);
});
this._brushType = this._brushOption = null;
};
BrushController2.prototype.setPanels = function(panelOpts) {
if (panelOpts && panelOpts.length) {
var panels_1 = this._panels = {};
each$f(panelOpts, function(panelOpts2) {
panels_1[panelOpts2.panelId] = clone$4(panelOpts2);
});
} else {
this._panels = null;
}
return this;
};
BrushController2.prototype.mount = function(opt) {
opt = opt || {};
this._enableGlobalPan = opt.enableGlobalPan;
var thisGroup = this.group;
this._zr.add(thisGroup);
thisGroup.attr({
x: opt.x || 0,
y: opt.y || 0,
rotation: opt.rotation || 0,
scaleX: opt.scaleX || 1,
scaleY: opt.scaleY || 1
});
this._transform = thisGroup.getLocalTransform();
return this;
};
BrushController2.prototype.updateCovers = function(coverConfigList) {
coverConfigList = map$1(coverConfigList, function(coverConfig) {
return merge(clone$4(DEFAULT_BRUSH_OPT), coverConfig, true);
});
var tmpIdPrefix = "\0-brush-index-";
var oldCovers = this._covers;
var newCovers = this._covers = [];
var controller = this;
var creatingCover = this._creatingCover;
new DataDiffer(oldCovers, coverConfigList, oldGetKey, getKey2).add(addOrUpdate).update(addOrUpdate).remove(remove).execute();
return this;
function getKey2(brushOption, index2) {
return (brushOption.id != null ? brushOption.id : tmpIdPrefix + index2) + "-" + brushOption.brushType;
}
function oldGetKey(cover, index2) {
return getKey2(cover.__brushOption, index2);
}
function addOrUpdate(newIndex, oldIndex) {
var newBrushInternal = coverConfigList[newIndex];
if (oldIndex != null && oldCovers[oldIndex] === creatingCover) {
newCovers[newIndex] = oldCovers[oldIndex];
} else {
var cover = newCovers[newIndex] = oldIndex != null ? (oldCovers[oldIndex].__brushOption = newBrushInternal, oldCovers[oldIndex]) : endCreating(controller, createCover(controller, newBrushInternal));
updateCoverAfterCreation(controller, cover);
}
}
function remove(oldIndex) {
if (oldCovers[oldIndex] !== creatingCover) {
controller.group.remove(oldCovers[oldIndex]);
}
}
};
BrushController2.prototype.unmount = function() {
this.enableBrush(false);
clearCovers(this);
this._zr.remove(this.group);
return this;
};
BrushController2.prototype.dispose = function() {
this.unmount();
this.off();
};
return BrushController2;
}(Eventful)
);
function createCover(controller, brushOption) {
var cover = coverRenderers[brushOption.brushType].createCover(controller, brushOption);
cover.__brushOption = brushOption;
updateZ$1(cover, brushOption);
controller.group.add(cover);
return cover;
}
function endCreating(controller, creatingCover) {
var coverRenderer = getCoverRenderer(creatingCover);
if (coverRenderer.endCreating) {
coverRenderer.endCreating(controller, creatingCover);
updateZ$1(creatingCover, creatingCover.__brushOption);
}
return creatingCover;
}
function updateCoverShape(controller, cover) {
var brushOption = cover.__brushOption;
getCoverRenderer(cover).updateCoverShape(controller, cover, brushOption.range, brushOption);
}
function updateZ$1(cover, brushOption) {
var z2 = brushOption.z;
z2 == null && (z2 = COVER_Z);
cover.traverse(function(el2) {
el2.z = z2;
el2.z2 = z2;
});
}
function updateCoverAfterCreation(controller, cover) {
getCoverRenderer(cover).updateCommon(controller, cover);
updateCoverShape(controller, cover);
}
function getCoverRenderer(cover) {
return coverRenderers[cover.__brushOption.brushType];
}
function getPanelByPoint(controller, e2, localCursorPoint) {
var panels = controller._panels;
if (!panels) {
return BRUSH_PANEL_GLOBAL;
}
var panel;
var transform2 = controller._transform;
each$f(panels, function(pn) {
pn.isTargetByCursor(e2, localCursorPoint, transform2) && (panel = pn);
});
return panel;
}
function getPanelByCover(controller, cover) {
var panels = controller._panels;
if (!panels) {
return BRUSH_PANEL_GLOBAL;
}
var panelId = cover.__brushOption.panelId;
return panelId != null ? panels[panelId] : BRUSH_PANEL_GLOBAL;
}
function clearCovers(controller) {
var covers = controller._covers;
var originalLength = covers.length;
each$f(covers, function(cover) {
controller.group.remove(cover);
}, controller);
covers.length = 0;
return !!originalLength;
}
function trigger(controller, opt) {
var areas = map$1(controller._covers, function(cover) {
var brushOption = cover.__brushOption;
var range3 = clone$4(brushOption.range);
return {
brushType: brushOption.brushType,
panelId: brushOption.panelId,
range: range3
};
});
controller.trigger("brush", {
areas,
isEnd: !!opt.isEnd,
removeOnClick: !!opt.removeOnClick
});
}
function shouldShowCover(controller) {
var track = controller._track;
if (!track.length) {
return false;
}
var p2 = track[track.length - 1];
var p1 = track[0];
var dx = p2[0] - p1[0];
var dy = p2[1] - p1[1];
var dist2 = mathPow(dx * dx + dy * dy, 0.5);
return dist2 > UNSELECT_THRESHOLD;
}
function getTrackEnds(track) {
var tail = track.length - 1;
tail < 0 && (tail = 0);
return [track[0], track[tail]];
}
function createBaseRectCover(rectRangeConverter, controller, brushOption, edgeNameSequences) {
var cover = new Group$3();
cover.add(new Rect$2({
name: "main",
style: makeStyle(brushOption),
silent: true,
draggable: true,
cursor: "move",
drift: curry$1(driftRect, rectRangeConverter, controller, cover, ["n", "s", "w", "e"]),
ondragend: curry$1(trigger, controller, {
isEnd: true
})
}));
each$f(edgeNameSequences, function(nameSequence) {
cover.add(new Rect$2({
name: nameSequence.join(""),
style: {
opacity: 0
},
draggable: true,
silent: true,
invisible: true,
drift: curry$1(driftRect, rectRangeConverter, controller, cover, nameSequence),
ondragend: curry$1(trigger, controller, {
isEnd: true
})
}));
});
return cover;
}
function updateBaseRect(controller, cover, localRange, brushOption) {
var lineWidth = brushOption.brushStyle.lineWidth || 0;
var handleSize = mathMax$1(lineWidth, MIN_RESIZE_LINE_WIDTH);
var x2 = localRange[0][0];
var y2 = localRange[1][0];
var xa = x2 - lineWidth / 2;
var ya2 = y2 - lineWidth / 2;
var x22 = localRange[0][1];
var y22 = localRange[1][1];
var x2a = x22 - handleSize + lineWidth / 2;
var y2a = y22 - handleSize + lineWidth / 2;
var width = x22 - x2;
var height = y22 - y2;
var widtha = width + lineWidth;
var heighta = height + lineWidth;
updateRectShape(controller, cover, "main", x2, y2, width, height);
if (brushOption.transformable) {
updateRectShape(controller, cover, "w", xa, ya2, handleSize, heighta);
updateRectShape(controller, cover, "e", x2a, ya2, handleSize, heighta);
updateRectShape(controller, cover, "n", xa, ya2, widtha, handleSize);
updateRectShape(controller, cover, "s", xa, y2a, widtha, handleSize);
updateRectShape(controller, cover, "nw", xa, ya2, handleSize, handleSize);
updateRectShape(controller, cover, "ne", x2a, ya2, handleSize, handleSize);
updateRectShape(controller, cover, "sw", xa, y2a, handleSize, handleSize);
updateRectShape(controller, cover, "se", x2a, y2a, handleSize, handleSize);
}
}
function updateCommon$1(controller, cover) {
var brushOption = cover.__brushOption;
var transformable = brushOption.transformable;
var mainEl = cover.childAt(0);
mainEl.useStyle(makeStyle(brushOption));
mainEl.attr({
silent: !transformable,
cursor: transformable ? "move" : "default"
});
each$f([["w"], ["e"], ["n"], ["s"], ["s", "e"], ["s", "w"], ["n", "e"], ["n", "w"]], function(nameSequence) {
var el2 = cover.childOfName(nameSequence.join(""));
var globalDir = nameSequence.length === 1 ? getGlobalDirection1(controller, nameSequence[0]) : getGlobalDirection2(controller, nameSequence);
el2 && el2.attr({
silent: !transformable,
invisible: !transformable,
cursor: transformable ? CURSOR_MAP[globalDir] + "-resize" : null
});
});
}
function updateRectShape(controller, cover, name, x2, y2, w2, h2) {
var el2 = cover.childOfName(name);
el2 && el2.setShape(pointsToRect(clipByPanel(controller, cover, [[x2, y2], [x2 + w2, y2 + h2]])));
}
function makeStyle(brushOption) {
return defaults({
strokeNoScale: true
}, brushOption.brushStyle);
}
function formatRectRange(x2, y2, x22, y22) {
var min3 = [mathMin$1(x2, x22), mathMin$1(y2, y22)];
var max3 = [mathMax$1(x2, x22), mathMax$1(y2, y22)];
return [
[min3[0], max3[0]],
[min3[1], max3[1]]
// y range
];
}
function getTransform(controller) {
return getTransform$1(controller.group);
}
function getGlobalDirection1(controller, localDirName) {
var map2 = {
w: "left",
e: "right",
n: "top",
s: "bottom"
};
var inverseMap = {
left: "w",
right: "e",
top: "n",
bottom: "s"
};
var dir3 = transformDirection(map2[localDirName], getTransform(controller));
return inverseMap[dir3];
}
function getGlobalDirection2(controller, localDirNameSeq) {
var globalDir = [getGlobalDirection1(controller, localDirNameSeq[0]), getGlobalDirection1(controller, localDirNameSeq[1])];
(globalDir[0] === "e" || globalDir[0] === "w") && globalDir.reverse();
return globalDir.join("");
}
function driftRect(rectRangeConverter, controller, cover, dirNameSequence, dx, dy) {
var brushOption = cover.__brushOption;
var rectRange = rectRangeConverter.toRectRange(brushOption.range);
var localDelta = toLocalDelta(controller, dx, dy);
each$f(dirNameSequence, function(dirName) {
var ind = DIRECTION_MAP[dirName];
rectRange[ind[0]][ind[1]] += localDelta[ind[0]];
});
brushOption.range = rectRangeConverter.fromRectRange(formatRectRange(rectRange[0][0], rectRange[1][0], rectRange[0][1], rectRange[1][1]));
updateCoverAfterCreation(controller, cover);
trigger(controller, {
isEnd: false
});
}
function driftPolygon(controller, cover, dx, dy) {
var range3 = cover.__brushOption.range;
var localDelta = toLocalDelta(controller, dx, dy);
each$f(range3, function(point) {
point[0] += localDelta[0];
point[1] += localDelta[1];
});
updateCoverAfterCreation(controller, cover);
trigger(controller, {
isEnd: false
});
}
function toLocalDelta(controller, dx, dy) {
var thisGroup = controller.group;
var localD = thisGroup.transformCoordToLocal(dx, dy);
var localZero = thisGroup.transformCoordToLocal(0, 0);
return [localD[0] - localZero[0], localD[1] - localZero[1]];
}
function clipByPanel(controller, cover, data) {
var panel = getPanelByCover(controller, cover);
return panel && panel !== BRUSH_PANEL_GLOBAL ? panel.clipPath(data, controller._transform) : clone$4(data);
}
function pointsToRect(points2) {
var xmin = mathMin$1(points2[0][0], points2[1][0]);
var ymin = mathMin$1(points2[0][1], points2[1][1]);
var xmax = mathMax$1(points2[0][0], points2[1][0]);
var ymax = mathMax$1(points2[0][1], points2[1][1]);
return {
x: xmin,
y: ymin,
width: xmax - xmin,
height: ymax - ymin
};
}
function resetCursor(controller, e2, localCursorPoint) {
if (
// Check active
!controller._brushType || isOutsideZrArea(controller, e2.offsetX, e2.offsetY)
) {
return;
}
var zr = controller._zr;
var covers = controller._covers;
var currPanel = getPanelByPoint(controller, e2, localCursorPoint);
if (!controller._dragging) {
for (var i = 0; i < covers.length; i++) {
var brushOption = covers[i].__brushOption;
if (currPanel && (currPanel === BRUSH_PANEL_GLOBAL || brushOption.panelId === currPanel.panelId) && coverRenderers[brushOption.brushType].contain(covers[i], localCursorPoint[0], localCursorPoint[1])) {
return;
}
}
}
currPanel && zr.setCursorStyle("crosshair");
}
function preventDefault(e2) {
var rawE = e2.event;
rawE.preventDefault && rawE.preventDefault();
}
function mainShapeContain(cover, x2, y2) {
return cover.childOfName("main").contain(x2, y2);
}
function updateCoverByMouse(controller, e2, localCursorPoint, isEnd) {
var creatingCover = controller._creatingCover;
var panel = controller._creatingPanel;
var thisBrushOption = controller._brushOption;
var eventParams;
controller._track.push(localCursorPoint.slice());
if (shouldShowCover(controller) || creatingCover) {
if (panel && !creatingCover) {
thisBrushOption.brushMode === "single" && clearCovers(controller);
var brushOption = clone$4(thisBrushOption);
brushOption.brushType = determineBrushType(brushOption.brushType, panel);
brushOption.panelId = panel === BRUSH_PANEL_GLOBAL ? null : panel.panelId;
creatingCover = controller._creatingCover = createCover(controller, brushOption);
controller._covers.push(creatingCover);
}
if (creatingCover) {
var coverRenderer = coverRenderers[determineBrushType(controller._brushType, panel)];
var coverBrushOption = creatingCover.__brushOption;
coverBrushOption.range = coverRenderer.getCreatingRange(clipByPanel(controller, creatingCover, controller._track));
if (isEnd) {
endCreating(controller, creatingCover);
coverRenderer.updateCommon(controller, creatingCover);
}
updateCoverShape(controller, creatingCover);
eventParams = {
isEnd
};
}
} else if (isEnd && thisBrushOption.brushMode === "single" && thisBrushOption.removeOnClick) {
if (getPanelByPoint(controller, e2, localCursorPoint) && clearCovers(controller)) {
eventParams = {
isEnd,
removeOnClick: true
};
}
}
return eventParams;
}
function determineBrushType(brushType, panel) {
if (brushType === "auto") {
return panel.defaultBrushType;
}
return brushType;
}
var pointerHandlers = {
mousedown: function(e2) {
if (this._dragging) {
handleDragEnd(this, e2);
} else if (!e2.target || !e2.target.draggable) {
preventDefault(e2);
var localCursorPoint = this.group.transformCoordToLocal(e2.offsetX, e2.offsetY);
this._creatingCover = null;
var panel = this._creatingPanel = getPanelByPoint(this, e2, localCursorPoint);
if (panel) {
this._dragging = true;
this._track = [localCursorPoint.slice()];
}
}
},
mousemove: function(e2) {
var x2 = e2.offsetX;
var y2 = e2.offsetY;
var localCursorPoint = this.group.transformCoordToLocal(x2, y2);
resetCursor(this, e2, localCursorPoint);
if (this._dragging) {
preventDefault(e2);
var eventParams = updateCoverByMouse(this, e2, localCursorPoint, false);
eventParams && trigger(this, eventParams);
}
},
mouseup: function(e2) {
handleDragEnd(this, e2);
}
};
function handleDragEnd(controller, e2) {
if (controller._dragging) {
preventDefault(e2);
var x2 = e2.offsetX;
var y2 = e2.offsetY;
var localCursorPoint = controller.group.transformCoordToLocal(x2, y2);
var eventParams = updateCoverByMouse(controller, e2, localCursorPoint, true);
controller._dragging = false;
controller._track = [];
controller._creatingCover = null;
eventParams && trigger(controller, eventParams);
}
}
function isOutsideZrArea(controller, x2, y2) {
var zr = controller._zr;
return x2 < 0 || x2 > zr.getWidth() || y2 < 0 || y2 > zr.getHeight();
}
var coverRenderers = {
lineX: getLineRenderer(0),
lineY: getLineRenderer(1),
rect: {
createCover: function(controller, brushOption) {
function returnInput(range3) {
return range3;
}
return createBaseRectCover({
toRectRange: returnInput,
fromRectRange: returnInput
}, controller, brushOption, [["w"], ["e"], ["n"], ["s"], ["s", "e"], ["s", "w"], ["n", "e"], ["n", "w"]]);
},
getCreatingRange: function(localTrack) {
var ends = getTrackEnds(localTrack);
return formatRectRange(ends[1][0], ends[1][1], ends[0][0], ends[0][1]);
},
updateCoverShape: function(controller, cover, localRange, brushOption) {
updateBaseRect(controller, cover, localRange, brushOption);
},
updateCommon: updateCommon$1,
contain: mainShapeContain
},
polygon: {
createCover: function(controller, brushOption) {
var cover = new Group$3();
cover.add(new Polyline$1({
name: "main",
style: makeStyle(brushOption),
silent: true
}));
return cover;
},
getCreatingRange: function(localTrack) {
return localTrack;
},
endCreating: function(controller, cover) {
cover.remove(cover.childAt(0));
cover.add(new Polygon({
name: "main",
draggable: true,
drift: curry$1(driftPolygon, controller, cover),
ondragend: curry$1(trigger, controller, {
isEnd: true
})
}));
},
updateCoverShape: function(controller, cover, localRange, brushOption) {
cover.childAt(0).setShape({
points: clipByPanel(controller, cover, localRange)
});
},
updateCommon: updateCommon$1,
contain: mainShapeContain
}
};
function getLineRenderer(xyIndex) {
return {
createCover: function(controller, brushOption) {
return createBaseRectCover({
toRectRange: function(range3) {
var rectRange = [range3, [0, 100]];
xyIndex && rectRange.reverse();
return rectRange;
},
fromRectRange: function(rectRange) {
return rectRange[xyIndex];
}
}, controller, brushOption, [[["w"], ["e"]], [["n"], ["s"]]][xyIndex]);
},
getCreatingRange: function(localTrack) {
var ends = getTrackEnds(localTrack);
var min3 = mathMin$1(ends[0][xyIndex], ends[1][xyIndex]);
var max3 = mathMax$1(ends[0][xyIndex], ends[1][xyIndex]);
return [min3, max3];
},
updateCoverShape: function(controller, cover, localRange, brushOption) {
var otherExtent;
var panel = getPanelByCover(controller, cover);
if (panel !== BRUSH_PANEL_GLOBAL && panel.getLinearBrushOtherExtent) {
otherExtent = panel.getLinearBrushOtherExtent(xyIndex);
} else {
var zr = controller._zr;
otherExtent = [0, [zr.getWidth(), zr.getHeight()][1 - xyIndex]];
}
var rectRange = [localRange, otherExtent];
xyIndex && rectRange.reverse();
updateBaseRect(controller, cover, rectRange, brushOption);
},
updateCommon: updateCommon$1,
contain: mainShapeContain
};
}
function makeRectPanelClipPath(rect) {
rect = normalizeRect(rect);
return function(localPoints) {
return clipPointsByRect(localPoints, rect);
};
}
function makeLinearBrushOtherExtent(rect, specifiedXYIndex) {
rect = normalizeRect(rect);
return function(xyIndex) {
var idx = specifiedXYIndex != null ? specifiedXYIndex : xyIndex;
var brushWidth = idx ? rect.width : rect.height;
var base2 = idx ? rect.x : rect.y;
return [base2, base2 + (brushWidth || 0)];
};
}
function makeRectIsTargetByCursor(rect, api, targetModel) {
var boundingRect = normalizeRect(rect);
return function(e2, localCursorPoint) {
return boundingRect.contain(localCursorPoint[0], localCursorPoint[1]) && !onIrrelevantElement(e2, api, targetModel);
};
}
function normalizeRect(rect) {
return BoundingRect.create(rect);
}
var elementList$1 = ["axisLine", "axisTickLabel", "axisName"];
var ParallelAxisView = (
/** @class */
function(_super) {
__extends(ParallelAxisView2, _super);
function ParallelAxisView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = ParallelAxisView2.type;
return _this;
}
ParallelAxisView2.prototype.init = function(ecModel, api) {
_super.prototype.init.apply(this, arguments);
(this._brushController = new BrushController(api.getZr())).on("brush", bind$2(this._onBrush, this));
};
ParallelAxisView2.prototype.render = function(axisModel, ecModel, api, payload) {
if (fromAxisAreaSelect(axisModel, ecModel, payload)) {
return;
}
this.axisModel = axisModel;
this.api = api;
this.group.removeAll();
var oldAxisGroup = this._axisGroup;
this._axisGroup = new Group$3();
this.group.add(this._axisGroup);
if (!axisModel.get("show")) {
return;
}
var coordSysModel = getCoordSysModel(axisModel, ecModel);
var coordSys = coordSysModel.coordinateSystem;
var areaSelectStyle = axisModel.getAreaSelectStyle();
var areaWidth = areaSelectStyle.width;
var dim = axisModel.axis.dim;
var axisLayout = coordSys.getAxisLayout(dim);
var builderOpt = extend({
strokeContainThreshold: areaWidth
}, axisLayout);
var axisBuilder = new AxisBuilder(axisModel, builderOpt);
each$f(elementList$1, axisBuilder.add, axisBuilder);
this._axisGroup.add(axisBuilder.getGroup());
this._refreshBrushController(builderOpt, areaSelectStyle, axisModel, coordSysModel, areaWidth, api);
groupTransition(oldAxisGroup, this._axisGroup, axisModel);
};
ParallelAxisView2.prototype._refreshBrushController = function(builderOpt, areaSelectStyle, axisModel, coordSysModel, areaWidth, api) {
var extent3 = axisModel.axis.getExtent();
var extentLen = extent3[1] - extent3[0];
var extra = Math.min(30, Math.abs(extentLen) * 0.1);
var rect = BoundingRect.create({
x: extent3[0],
y: -areaWidth / 2,
width: extentLen,
height: areaWidth
});
rect.x -= extra;
rect.width += 2 * extra;
this._brushController.mount({
enableGlobalPan: true,
rotation: builderOpt.rotation,
x: builderOpt.position[0],
y: builderOpt.position[1]
}).setPanels([{
panelId: "pl",
clipPath: makeRectPanelClipPath(rect),
isTargetByCursor: makeRectIsTargetByCursor(rect, api, coordSysModel),
getLinearBrushOtherExtent: makeLinearBrushOtherExtent(rect, 0)
}]).enableBrush({
brushType: "lineX",
brushStyle: areaSelectStyle,
removeOnClick: true
}).updateCovers(getCoverInfoList(axisModel));
};
ParallelAxisView2.prototype._onBrush = function(eventParam) {
var coverInfoList = eventParam.areas;
var axisModel = this.axisModel;
var axis = axisModel.axis;
var intervals = map$1(coverInfoList, function(coverInfo) {
return [axis.coordToData(coverInfo.range[0], true), axis.coordToData(coverInfo.range[1], true)];
});
if (!axisModel.option.realtime === eventParam.isEnd || eventParam.removeOnClick) {
this.api.dispatchAction({
type: "axisAreaSelect",
parallelAxisId: axisModel.id,
intervals
});
}
};
ParallelAxisView2.prototype.dispose = function() {
this._brushController.dispose();
};
ParallelAxisView2.type = "parallelAxis";
return ParallelAxisView2;
}(ComponentView)
);
function fromAxisAreaSelect(axisModel, ecModel, payload) {
return payload && payload.type === "axisAreaSelect" && ecModel.findComponents({
mainType: "parallelAxis",
query: payload
})[0] === axisModel;
}
function getCoverInfoList(axisModel) {
var axis = axisModel.axis;
return map$1(axisModel.activeIntervals, function(interval) {
return {
brushType: "lineX",
panelId: "pl",
range: [axis.dataToCoord(interval[0], true), axis.dataToCoord(interval[1], true)]
};
});
}
function getCoordSysModel(axisModel, ecModel) {
return ecModel.getComponent("parallel", axisModel.get("parallelIndex"));
}
var actionInfo = {
type: "axisAreaSelect",
event: "axisAreaSelected"
// update: 'updateVisual'
};
function installParallelActions(registers) {
registers.registerAction(actionInfo, function(payload, ecModel) {
ecModel.eachComponent({
mainType: "parallelAxis",
query: payload
}, function(parallelAxisModel) {
parallelAxisModel.axis.model.setActiveIntervals(payload.intervals);
});
});
registers.registerAction("parallelAxisExpand", function(payload, ecModel) {
ecModel.eachComponent({
mainType: "parallel",
query: payload
}, function(parallelModel) {
parallelModel.setAxisExpand(payload);
});
});
}
var defaultAxisOption = {
type: "value",
areaSelectStyle: {
width: 20,
borderWidth: 1,
borderColor: "rgba(160,197,232)",
color: "rgba(160,197,232)",
opacity: 0.3
},
realtime: true,
z: 10
};
function install$C(registers) {
registers.registerComponentView(ParallelView);
registers.registerComponentModel(ParallelModel);
registers.registerCoordinateSystem("parallel", parallelCoordSysCreator);
registers.registerPreprocessor(parallelPreprocessor);
registers.registerComponentModel(ParallelAxisModel);
registers.registerComponentView(ParallelAxisView);
axisModelCreator(registers, "parallel", ParallelAxisModel, defaultAxisOption);
installParallelActions(registers);
}
function install$B(registers) {
use(install$C);
registers.registerChartView(ParallelView$1);
registers.registerSeriesModel(ParallelSeriesModel);
registers.registerVisual(registers.PRIORITY.VISUAL.BRUSH, parallelVisual);
}
var SankeyPathShape = (
/** @class */
/* @__PURE__ */ function() {
function SankeyPathShape2() {
this.x1 = 0;
this.y1 = 0;
this.x2 = 0;
this.y2 = 0;
this.cpx1 = 0;
this.cpy1 = 0;
this.cpx2 = 0;
this.cpy2 = 0;
this.extent = 0;
}
return SankeyPathShape2;
}()
);
var SankeyPath = (
/** @class */
function(_super) {
__extends(SankeyPath2, _super);
function SankeyPath2(opts) {
return _super.call(this, opts) || this;
}
SankeyPath2.prototype.getDefaultShape = function() {
return new SankeyPathShape();
};
SankeyPath2.prototype.buildPath = function(ctx, shape) {
var extent3 = shape.extent;
ctx.moveTo(shape.x1, shape.y1);
ctx.bezierCurveTo(shape.cpx1, shape.cpy1, shape.cpx2, shape.cpy2, shape.x2, shape.y2);
if (shape.orient === "vertical") {
ctx.lineTo(shape.x2 + extent3, shape.y2);
ctx.bezierCurveTo(shape.cpx2 + extent3, shape.cpy2, shape.cpx1 + extent3, shape.cpy1, shape.x1 + extent3, shape.y1);
} else {
ctx.lineTo(shape.x2, shape.y2 + extent3);
ctx.bezierCurveTo(shape.cpx2, shape.cpy2 + extent3, shape.cpx1, shape.cpy1 + extent3, shape.x1, shape.y1 + extent3);
}
ctx.closePath();
};
SankeyPath2.prototype.highlight = function() {
enterEmphasis(this);
};
SankeyPath2.prototype.downplay = function() {
leaveEmphasis(this);
};
return SankeyPath2;
}(Path)
);
var SankeyView = (
/** @class */
function(_super) {
__extends(SankeyView2, _super);
function SankeyView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = SankeyView2.type;
_this._focusAdjacencyDisabled = false;
return _this;
}
SankeyView2.prototype.render = function(seriesModel, ecModel, api) {
var sankeyView = this;
var graph = seriesModel.getGraph();
var group = this.group;
var layoutInfo = seriesModel.layoutInfo;
var width = layoutInfo.width;
var height = layoutInfo.height;
var nodeData = seriesModel.getData();
var edgeData = seriesModel.getData("edge");
var orient = seriesModel.get("orient");
this._model = seriesModel;
group.removeAll();
group.x = layoutInfo.x;
group.y = layoutInfo.y;
graph.eachEdge(function(edge) {
var curve = new SankeyPath();
var ecData = getECData(curve);
ecData.dataIndex = edge.dataIndex;
ecData.seriesIndex = seriesModel.seriesIndex;
ecData.dataType = "edge";
var edgeModel = edge.getModel();
var lineStyleModel = edgeModel.getModel("lineStyle");
var curvature = lineStyleModel.get("curveness");
var n1Layout = edge.node1.getLayout();
var node1Model = edge.node1.getModel();
var dragX1 = node1Model.get("localX");
var dragY1 = node1Model.get("localY");
var n2Layout = edge.node2.getLayout();
var node2Model = edge.node2.getModel();
var dragX2 = node2Model.get("localX");
var dragY2 = node2Model.get("localY");
var edgeLayout = edge.getLayout();
var x1;
var y1;
var x2;
var y2;
var cpx1;
var cpy1;
var cpx2;
var cpy2;
curve.shape.extent = Math.max(1, edgeLayout.dy);
curve.shape.orient = orient;
if (orient === "vertical") {
x1 = (dragX1 != null ? dragX1 * width : n1Layout.x) + edgeLayout.sy;
y1 = (dragY1 != null ? dragY1 * height : n1Layout.y) + n1Layout.dy;
x2 = (dragX2 != null ? dragX2 * width : n2Layout.x) + edgeLayout.ty;
y2 = dragY2 != null ? dragY2 * height : n2Layout.y;
cpx1 = x1;
cpy1 = y1 * (1 - curvature) + y2 * curvature;
cpx2 = x2;
cpy2 = y1 * curvature + y2 * (1 - curvature);
} else {
x1 = (dragX1 != null ? dragX1 * width : n1Layout.x) + n1Layout.dx;
y1 = (dragY1 != null ? dragY1 * height : n1Layout.y) + edgeLayout.sy;
x2 = dragX2 != null ? dragX2 * width : n2Layout.x;
y2 = (dragY2 != null ? dragY2 * height : n2Layout.y) + edgeLayout.ty;
cpx1 = x1 * (1 - curvature) + x2 * curvature;
cpy1 = y1;
cpx2 = x1 * curvature + x2 * (1 - curvature);
cpy2 = y2;
}
curve.setShape({
x1,
y1,
x2,
y2,
cpx1,
cpy1,
cpx2,
cpy2
});
curve.useStyle(lineStyleModel.getItemStyle());
applyCurveStyle(curve.style, orient, edge);
var defaultEdgeLabelText = "" + edgeModel.get("value");
var edgeLabelStateModels = getLabelStatesModels(edgeModel, "edgeLabel");
setLabelStyle(curve, edgeLabelStateModels, {
labelFetcher: {
getFormattedLabel: function(dataIndex, stateName, dataType, labelDimIndex, formatter, extendParams) {
return seriesModel.getFormattedLabel(
dataIndex,
stateName,
"edge",
labelDimIndex,
// ensure edgeLabel formatter is provided
// to prevent the inheritance from `label.formatter` of the series
retrieve3(formatter, edgeLabelStateModels.normal && edgeLabelStateModels.normal.get("formatter"), defaultEdgeLabelText),
extendParams
);
}
},
labelDataIndex: edge.dataIndex,
defaultText: defaultEdgeLabelText
});
curve.setTextConfig({
position: "inside"
});
var emphasisModel = edgeModel.getModel("emphasis");
setStatesStylesFromModel(curve, edgeModel, "lineStyle", function(model) {
var style2 = model.getItemStyle();
applyCurveStyle(style2, orient, edge);
return style2;
});
group.add(curve);
edgeData.setItemGraphicEl(edge.dataIndex, curve);
var focus = emphasisModel.get("focus");
toggleHoverEmphasis(curve, focus === "adjacency" ? edge.getAdjacentDataIndices() : focus === "trajectory" ? edge.getTrajectoryDataIndices() : focus, emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
});
graph.eachNode(function(node2) {
var layout2 = node2.getLayout();
var itemModel = node2.getModel();
var dragX = itemModel.get("localX");
var dragY = itemModel.get("localY");
var emphasisModel = itemModel.getModel("emphasis");
var borderRadius = itemModel.get(["itemStyle", "borderRadius"]) || 0;
var rect = new Rect$2({
shape: {
x: dragX != null ? dragX * width : layout2.x,
y: dragY != null ? dragY * height : layout2.y,
width: layout2.dx,
height: layout2.dy,
r: borderRadius
},
style: itemModel.getModel("itemStyle").getItemStyle(),
z2: 10
});
setLabelStyle(rect, getLabelStatesModels(itemModel), {
labelFetcher: {
getFormattedLabel: function(dataIndex, stateName) {
return seriesModel.getFormattedLabel(dataIndex, stateName, "node");
}
},
labelDataIndex: node2.dataIndex,
defaultText: node2.id
});
rect.disableLabelAnimation = true;
rect.setStyle("fill", node2.getVisual("color"));
rect.setStyle("decal", node2.getVisual("style").decal);
setStatesStylesFromModel(rect, itemModel);
group.add(rect);
nodeData.setItemGraphicEl(node2.dataIndex, rect);
getECData(rect).dataType = "node";
var focus = emphasisModel.get("focus");
toggleHoverEmphasis(rect, focus === "adjacency" ? node2.getAdjacentDataIndices() : focus === "trajectory" ? node2.getTrajectoryDataIndices() : focus, emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
});
nodeData.eachItemGraphicEl(function(el2, dataIndex) {
var itemModel = nodeData.getItemModel(dataIndex);
if (itemModel.get("draggable")) {
el2.drift = function(dx, dy) {
sankeyView._focusAdjacencyDisabled = true;
this.shape.x += dx;
this.shape.y += dy;
this.dirty();
api.dispatchAction({
type: "dragNode",
seriesId: seriesModel.id,
dataIndex: nodeData.getRawIndex(dataIndex),
localX: this.shape.x / width,
localY: this.shape.y / height
});
};
el2.ondragend = function() {
sankeyView._focusAdjacencyDisabled = false;
};
el2.draggable = true;
el2.cursor = "move";
}
});
if (!this._data && seriesModel.isAnimationEnabled()) {
group.setClipPath(createGridClipShape$1(group.getBoundingRect(), seriesModel, function() {
group.removeClipPath();
}));
}
this._data = seriesModel.getData();
};
SankeyView2.prototype.dispose = function() {
};
SankeyView2.type = "sankey";
return SankeyView2;
}(ChartView)
);
function applyCurveStyle(curveProps, orient, edge) {
switch (curveProps.fill) {
case "source":
curveProps.fill = edge.node1.getVisual("color");
curveProps.decal = edge.node1.getVisual("style").decal;
break;
case "target":
curveProps.fill = edge.node2.getVisual("color");
curveProps.decal = edge.node2.getVisual("style").decal;
break;
case "gradient":
var sourceColor = edge.node1.getVisual("color");
var targetColor = edge.node2.getVisual("color");
if (isString$1(sourceColor) && isString$1(targetColor)) {
curveProps.fill = new LinearGradient(0, 0, +(orient === "horizontal"), +(orient === "vertical"), [{
color: sourceColor,
offset: 0
}, {
color: targetColor,
offset: 1
}]);
}
}
}
function createGridClipShape$1(rect, seriesModel, cb2) {
var rectEl = new Rect$2({
shape: {
x: rect.x - 10,
y: rect.y - 10,
width: 0,
height: rect.height + 20
}
});
initProps(rectEl, {
shape: {
width: rect.width + 20
}
}, seriesModel, cb2);
return rectEl;
}
var SankeySeriesModel = (
/** @class */
function(_super) {
__extends(SankeySeriesModel2, _super);
function SankeySeriesModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = SankeySeriesModel2.type;
return _this;
}
SankeySeriesModel2.prototype.getInitialData = function(option, ecModel) {
var links = option.edges || option.links;
var nodes = option.data || option.nodes;
var levels = option.levels;
this.levelModels = [];
var levelModels = this.levelModels;
for (var i = 0; i < levels.length; i++) {
if (levels[i].depth != null && levels[i].depth >= 0) {
levelModels[levels[i].depth] = new Model(levels[i], this, ecModel);
}
}
if (nodes && links) {
var graph = createGraphFromNodeEdge(nodes, links, this, true, beforeLink);
return graph.data;
}
function beforeLink(nodeData, edgeData) {
nodeData.wrapMethod("getItemModel", function(model, idx) {
var seriesModel = model.parentModel;
var layout2 = seriesModel.getData().getItemLayout(idx);
if (layout2) {
var nodeDepth = layout2.depth;
var levelModel = seriesModel.levelModels[nodeDepth];
if (levelModel) {
model.parentModel = levelModel;
}
}
return model;
});
edgeData.wrapMethod("getItemModel", function(model, idx) {
var seriesModel = model.parentModel;
var edge = seriesModel.getGraph().getEdgeByIndex(idx);
var layout2 = edge.node1.getLayout();
if (layout2) {
var depth = layout2.depth;
var levelModel = seriesModel.levelModels[depth];
if (levelModel) {
model.parentModel = levelModel;
}
}
return model;
});
}
};
SankeySeriesModel2.prototype.setNodePosition = function(dataIndex, localPosition) {
var nodes = this.option.data || this.option.nodes;
var dataItem = nodes[dataIndex];
dataItem.localX = localPosition[0];
dataItem.localY = localPosition[1];
};
SankeySeriesModel2.prototype.getGraph = function() {
return this.getData().graph;
};
SankeySeriesModel2.prototype.getEdgeData = function() {
return this.getGraph().edgeData;
};
SankeySeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) {
function noValue(val) {
return isNaN(val) || val == null;
}
if (dataType === "edge") {
var params = this.getDataParams(dataIndex, dataType);
var rawDataOpt = params.data;
var edgeValue = params.value;
var edgeName = rawDataOpt.source + " -- " + rawDataOpt.target;
return createTooltipMarkup("nameValue", {
name: edgeName,
value: edgeValue,
noValue: noValue(edgeValue)
});
} else {
var node2 = this.getGraph().getNodeByIndex(dataIndex);
var value = node2.getLayout().value;
var name_1 = this.getDataParams(dataIndex, dataType).data.name;
return createTooltipMarkup("nameValue", {
name: name_1 != null ? name_1 + "" : null,
value,
noValue: noValue(value)
});
}
};
SankeySeriesModel2.prototype.optionUpdated = function() {
};
SankeySeriesModel2.prototype.getDataParams = function(dataIndex, dataType) {
var params = _super.prototype.getDataParams.call(this, dataIndex, dataType);
if (params.value == null && dataType === "node") {
var node2 = this.getGraph().getNodeByIndex(dataIndex);
var nodeValue = node2.getLayout().value;
params.value = nodeValue;
}
return params;
};
SankeySeriesModel2.type = "series.sankey";
SankeySeriesModel2.defaultOption = {
// zlevel: 0,
z: 2,
coordinateSystem: "view",
left: "5%",
top: "5%",
right: "20%",
bottom: "5%",
orient: "horizontal",
nodeWidth: 20,
nodeGap: 8,
draggable: true,
layoutIterations: 32,
label: {
show: true,
position: "right",
fontSize: 12
},
edgeLabel: {
show: false,
fontSize: 12
},
levels: [],
nodeAlign: "justify",
lineStyle: {
color: "#314656",
opacity: 0.2,
curveness: 0.5
},
emphasis: {
label: {
show: true
},
lineStyle: {
opacity: 0.5
}
},
select: {
itemStyle: {
borderColor: "#212121"
}
},
animationEasing: "linear",
animationDuration: 1e3
};
return SankeySeriesModel2;
}(SeriesModel)
);
function sankeyLayout(ecModel, api) {
ecModel.eachSeriesByType("sankey", function(seriesModel) {
var nodeWidth = seriesModel.get("nodeWidth");
var nodeGap = seriesModel.get("nodeGap");
var layoutInfo = getViewRect$1(seriesModel, api);
seriesModel.layoutInfo = layoutInfo;
var width = layoutInfo.width;
var height = layoutInfo.height;
var graph = seriesModel.getGraph();
var nodes = graph.nodes;
var edges = graph.edges;
computeNodeValues(nodes);
var filteredNodes = filter(nodes, function(node2) {
return node2.getLayout().value === 0;
});
var iterations = filteredNodes.length !== 0 ? 0 : seriesModel.get("layoutIterations");
var orient = seriesModel.get("orient");
var nodeAlign = seriesModel.get("nodeAlign");
layoutSankey(nodes, edges, nodeWidth, nodeGap, width, height, iterations, orient, nodeAlign);
});
}
function getViewRect$1(seriesModel, api) {
return getLayoutRect(seriesModel.getBoxLayoutParams(), {
width: api.getWidth(),
height: api.getHeight()
});
}
function layoutSankey(nodes, edges, nodeWidth, nodeGap, width, height, iterations, orient, nodeAlign) {
computeNodeBreadths(nodes, edges, nodeWidth, width, height, orient, nodeAlign);
computeNodeDepths(nodes, edges, height, width, nodeGap, iterations, orient);
computeEdgeDepths(nodes, orient);
}
function computeNodeValues(nodes) {
each$f(nodes, function(node2) {
var value1 = sum(node2.outEdges, getEdgeValue);
var value2 = sum(node2.inEdges, getEdgeValue);
var nodeRawValue = node2.getValue() || 0;
var value = Math.max(value1, value2, nodeRawValue);
node2.setLayout({
value
}, true);
});
}
function computeNodeBreadths(nodes, edges, nodeWidth, width, height, orient, nodeAlign) {
var remainEdges = [];
var indegreeArr = [];
var zeroIndegrees = [];
var nextTargetNode = [];
var x2 = 0;
for (var i = 0; i < edges.length; i++) {
remainEdges[i] = 1;
}
for (var i = 0; i < nodes.length; i++) {
indegreeArr[i] = nodes[i].inEdges.length;
if (indegreeArr[i] === 0) {
zeroIndegrees.push(nodes[i]);
}
}
var maxNodeDepth = -1;
while (zeroIndegrees.length) {
for (var idx = 0; idx < zeroIndegrees.length; idx++) {
var node2 = zeroIndegrees[idx];
var item = node2.hostGraph.data.getRawDataItem(node2.dataIndex);
var isItemDepth = item.depth != null && item.depth >= 0;
if (isItemDepth && item.depth > maxNodeDepth) {
maxNodeDepth = item.depth;
}
node2.setLayout({
depth: isItemDepth ? item.depth : x2
}, true);
orient === "vertical" ? node2.setLayout({
dy: nodeWidth
}, true) : node2.setLayout({
dx: nodeWidth
}, true);
for (var edgeIdx = 0; edgeIdx < node2.outEdges.length; edgeIdx++) {
var edge = node2.outEdges[edgeIdx];
var indexEdge = edges.indexOf(edge);
remainEdges[indexEdge] = 0;
var targetNode = edge.node2;
var nodeIndex = nodes.indexOf(targetNode);
if (--indegreeArr[nodeIndex] === 0 && nextTargetNode.indexOf(targetNode) < 0) {
nextTargetNode.push(targetNode);
}
}
}
++x2;
zeroIndegrees = nextTargetNode;
nextTargetNode = [];
}
for (var i = 0; i < remainEdges.length; i++) {
if (remainEdges[i] === 1) {
throw new Error("Sankey is a DAG, the original data has cycle!");
}
}
var maxDepth = maxNodeDepth > x2 - 1 ? maxNodeDepth : x2 - 1;
if (nodeAlign && nodeAlign !== "left") {
adjustNodeWithNodeAlign(nodes, nodeAlign, orient, maxDepth);
}
var kx = orient === "vertical" ? (height - nodeWidth) / maxDepth : (width - nodeWidth) / maxDepth;
scaleNodeBreadths(nodes, kx, orient);
}
function isNodeDepth(node2) {
var item = node2.hostGraph.data.getRawDataItem(node2.dataIndex);
return item.depth != null && item.depth >= 0;
}
function adjustNodeWithNodeAlign(nodes, nodeAlign, orient, maxDepth) {
if (nodeAlign === "right") {
var nextSourceNode = [];
var remainNodes = nodes;
var nodeHeight = 0;
while (remainNodes.length) {
for (var i = 0; i < remainNodes.length; i++) {
var node2 = remainNodes[i];
node2.setLayout({
skNodeHeight: nodeHeight
}, true);
for (var j = 0; j < node2.inEdges.length; j++) {
var edge = node2.inEdges[j];
if (nextSourceNode.indexOf(edge.node1) < 0) {
nextSourceNode.push(edge.node1);
}
}
}
remainNodes = nextSourceNode;
nextSourceNode = [];
++nodeHeight;
}
each$f(nodes, function(node3) {
if (!isNodeDepth(node3)) {
node3.setLayout({
depth: Math.max(0, maxDepth - node3.getLayout().skNodeHeight)
}, true);
}
});
} else if (nodeAlign === "justify") {
moveSinksRight(nodes, maxDepth);
}
}
function moveSinksRight(nodes, maxDepth) {
each$f(nodes, function(node2) {
if (!isNodeDepth(node2) && !node2.outEdges.length) {
node2.setLayout({
depth: maxDepth
}, true);
}
});
}
function scaleNodeBreadths(nodes, kx, orient) {
each$f(nodes, function(node2) {
var nodeDepth = node2.getLayout().depth * kx;
orient === "vertical" ? node2.setLayout({
y: nodeDepth
}, true) : node2.setLayout({
x: nodeDepth
}, true);
});
}
function computeNodeDepths(nodes, edges, height, width, nodeGap, iterations, orient) {
var nodesByBreadth = prepareNodesByBreadth(nodes, orient);
initializeNodeDepth(nodesByBreadth, edges, height, width, nodeGap, orient);
resolveCollisions(nodesByBreadth, nodeGap, height, width, orient);
for (var alpha = 1; iterations > 0; iterations--) {
alpha *= 0.99;
relaxRightToLeft(nodesByBreadth, alpha, orient);
resolveCollisions(nodesByBreadth, nodeGap, height, width, orient);
relaxLeftToRight(nodesByBreadth, alpha, orient);
resolveCollisions(nodesByBreadth, nodeGap, height, width, orient);
}
}
function prepareNodesByBreadth(nodes, orient) {
var nodesByBreadth = [];
var keyAttr = orient === "vertical" ? "y" : "x";
var groupResult = groupData(nodes, function(node2) {
return node2.getLayout()[keyAttr];
});
groupResult.keys.sort(function(a, b2) {
return a - b2;
});
each$f(groupResult.keys, function(key) {
nodesByBreadth.push(groupResult.buckets.get(key));
});
return nodesByBreadth;
}
function initializeNodeDepth(nodesByBreadth, edges, height, width, nodeGap, orient) {
var minKy = Infinity;
each$f(nodesByBreadth, function(nodes) {
var n2 = nodes.length;
var sum2 = 0;
each$f(nodes, function(node2) {
sum2 += node2.getLayout().value;
});
var ky = orient === "vertical" ? (width - (n2 - 1) * nodeGap) / sum2 : (height - (n2 - 1) * nodeGap) / sum2;
if (ky < minKy) {
minKy = ky;
}
});
each$f(nodesByBreadth, function(nodes) {
each$f(nodes, function(node2, i) {
var nodeDy = node2.getLayout().value * minKy;
if (orient === "vertical") {
node2.setLayout({
x: i
}, true);
node2.setLayout({
dx: nodeDy
}, true);
} else {
node2.setLayout({
y: i
}, true);
node2.setLayout({
dy: nodeDy
}, true);
}
});
});
each$f(edges, function(edge) {
var edgeDy = +edge.getValue() * minKy;
edge.setLayout({
dy: edgeDy
}, true);
});
}
function resolveCollisions(nodesByBreadth, nodeGap, height, width, orient) {
var keyAttr = orient === "vertical" ? "x" : "y";
each$f(nodesByBreadth, function(nodes) {
nodes.sort(function(a, b2) {
return a.getLayout()[keyAttr] - b2.getLayout()[keyAttr];
});
var nodeX;
var node2;
var dy;
var y0 = 0;
var n2 = nodes.length;
var nodeDyAttr = orient === "vertical" ? "dx" : "dy";
for (var i = 0; i < n2; i++) {
node2 = nodes[i];
dy = y0 - node2.getLayout()[keyAttr];
if (dy > 0) {
nodeX = node2.getLayout()[keyAttr] + dy;
orient === "vertical" ? node2.setLayout({
x: nodeX
}, true) : node2.setLayout({
y: nodeX
}, true);
}
y0 = node2.getLayout()[keyAttr] + node2.getLayout()[nodeDyAttr] + nodeGap;
}
var viewWidth = orient === "vertical" ? width : height;
dy = y0 - nodeGap - viewWidth;
if (dy > 0) {
nodeX = node2.getLayout()[keyAttr] - dy;
orient === "vertical" ? node2.setLayout({
x: nodeX
}, true) : node2.setLayout({
y: nodeX
}, true);
y0 = nodeX;
for (var i = n2 - 2; i >= 0; --i) {
node2 = nodes[i];
dy = node2.getLayout()[keyAttr] + node2.getLayout()[nodeDyAttr] + nodeGap - y0;
if (dy > 0) {
nodeX = node2.getLayout()[keyAttr] - dy;
orient === "vertical" ? node2.setLayout({
x: nodeX
}, true) : node2.setLayout({
y: nodeX
}, true);
}
y0 = node2.getLayout()[keyAttr];
}
}
});
}
function relaxRightToLeft(nodesByBreadth, alpha, orient) {
each$f(nodesByBreadth.slice().reverse(), function(nodes) {
each$f(nodes, function(node2) {
if (node2.outEdges.length) {
var y2 = sum(node2.outEdges, weightedTarget, orient) / sum(node2.outEdges, getEdgeValue);
if (isNaN(y2)) {
var len2 = node2.outEdges.length;
y2 = len2 ? sum(node2.outEdges, centerTarget, orient) / len2 : 0;
}
if (orient === "vertical") {
var nodeX = node2.getLayout().x + (y2 - center(node2, orient)) * alpha;
node2.setLayout({
x: nodeX
}, true);
} else {
var nodeY = node2.getLayout().y + (y2 - center(node2, orient)) * alpha;
node2.setLayout({
y: nodeY
}, true);
}
}
});
});
}
function weightedTarget(edge, orient) {
return center(edge.node2, orient) * edge.getValue();
}
function centerTarget(edge, orient) {
return center(edge.node2, orient);
}
function weightedSource(edge, orient) {
return center(edge.node1, orient) * edge.getValue();
}
function centerSource(edge, orient) {
return center(edge.node1, orient);
}
function center(node2, orient) {
return orient === "vertical" ? node2.getLayout().x + node2.getLayout().dx / 2 : node2.getLayout().y + node2.getLayout().dy / 2;
}
function getEdgeValue(edge) {
return edge.getValue();
}
function sum(array4, cb2, orient) {
var sum2 = 0;
var len2 = array4.length;
var i = -1;
while (++i < len2) {
var value = +cb2(array4[i], orient);
if (!isNaN(value)) {
sum2 += value;
}
}
return sum2;
}
function relaxLeftToRight(nodesByBreadth, alpha, orient) {
each$f(nodesByBreadth, function(nodes) {
each$f(nodes, function(node2) {
if (node2.inEdges.length) {
var y2 = sum(node2.inEdges, weightedSource, orient) / sum(node2.inEdges, getEdgeValue);
if (isNaN(y2)) {
var len2 = node2.inEdges.length;
y2 = len2 ? sum(node2.inEdges, centerSource, orient) / len2 : 0;
}
if (orient === "vertical") {
var nodeX = node2.getLayout().x + (y2 - center(node2, orient)) * alpha;
node2.setLayout({
x: nodeX
}, true);
} else {
var nodeY = node2.getLayout().y + (y2 - center(node2, orient)) * alpha;
node2.setLayout({
y: nodeY
}, true);
}
}
});
});
}
function computeEdgeDepths(nodes, orient) {
var keyAttr = orient === "vertical" ? "x" : "y";
each$f(nodes, function(node2) {
node2.outEdges.sort(function(a, b2) {
return a.node2.getLayout()[keyAttr] - b2.node2.getLayout()[keyAttr];
});
node2.inEdges.sort(function(a, b2) {
return a.node1.getLayout()[keyAttr] - b2.node1.getLayout()[keyAttr];
});
});
each$f(nodes, function(node2) {
var sy = 0;
var ty = 0;
each$f(node2.outEdges, function(edge) {
edge.setLayout({
sy
}, true);
sy += edge.getLayout().dy;
});
each$f(node2.inEdges, function(edge) {
edge.setLayout({
ty
}, true);
ty += edge.getLayout().dy;
});
});
}
function sankeyVisual(ecModel) {
ecModel.eachSeriesByType("sankey", function(seriesModel) {
var graph = seriesModel.getGraph();
var nodes = graph.nodes;
var edges = graph.edges;
if (nodes.length) {
var minValue_1 = Infinity;
var maxValue_1 = -Infinity;
each$f(nodes, function(node2) {
var nodeValue = node2.getLayout().value;
if (nodeValue < minValue_1) {
minValue_1 = nodeValue;
}
if (nodeValue > maxValue_1) {
maxValue_1 = nodeValue;
}
});
each$f(nodes, function(node2) {
var mapping = new VisualMapping({
type: "color",
mappingMethod: "linear",
dataExtent: [minValue_1, maxValue_1],
visual: seriesModel.get("color")
});
var mapValueToColor = mapping.mapValueToVisual(node2.getLayout().value);
var customColor = node2.getModel().get(["itemStyle", "color"]);
if (customColor != null) {
node2.setVisual("color", customColor);
node2.setVisual("style", {
fill: customColor
});
} else {
node2.setVisual("color", mapValueToColor);
node2.setVisual("style", {
fill: mapValueToColor
});
}
});
}
if (edges.length) {
each$f(edges, function(edge) {
var edgeStyle = edge.getModel().get("lineStyle");
edge.setVisual("style", edgeStyle);
});
}
});
}
function install$A(registers) {
registers.registerChartView(SankeyView);
registers.registerSeriesModel(SankeySeriesModel);
registers.registerLayout(sankeyLayout);
registers.registerVisual(sankeyVisual);
registers.registerAction({
type: "dragNode",
event: "dragnode",
// here can only use 'update' now, other value is not support in echarts.
update: "update"
}, function(payload, ecModel) {
ecModel.eachComponent({
mainType: "series",
subType: "sankey",
query: payload
}, function(seriesModel) {
seriesModel.setNodePosition(payload.dataIndex, [payload.localX, payload.localY]);
});
});
}
var WhiskerBoxCommonMixin = (
/** @class */
function() {
function WhiskerBoxCommonMixin2() {
}
WhiskerBoxCommonMixin2.prototype.getInitialData = function(option, ecModel) {
var ordinalMeta;
var xAxisModel = ecModel.getComponent("xAxis", this.get("xAxisIndex"));
var yAxisModel = ecModel.getComponent("yAxis", this.get("yAxisIndex"));
var xAxisType = xAxisModel.get("type");
var yAxisType = yAxisModel.get("type");
var addOrdinal;
if (xAxisType === "category") {
option.layout = "horizontal";
ordinalMeta = xAxisModel.getOrdinalMeta();
addOrdinal = true;
} else if (yAxisType === "category") {
option.layout = "vertical";
ordinalMeta = yAxisModel.getOrdinalMeta();
addOrdinal = true;
} else {
option.layout = option.layout || "horizontal";
}
var coordDims = ["x", "y"];
var baseAxisDimIndex = option.layout === "horizontal" ? 0 : 1;
var baseAxisDim = this._baseAxisDim = coordDims[baseAxisDimIndex];
var otherAxisDim = coordDims[1 - baseAxisDimIndex];
var axisModels = [xAxisModel, yAxisModel];
var baseAxisType = axisModels[baseAxisDimIndex].get("type");
var otherAxisType = axisModels[1 - baseAxisDimIndex].get("type");
var data = option.data;
if (data && addOrdinal) {
var newOptionData_1 = [];
each$f(data, function(item, index2) {
var newItem;
if (isArray$1(item)) {
newItem = item.slice();
item.unshift(index2);
} else if (isArray$1(item.value)) {
newItem = extend({}, item);
newItem.value = newItem.value.slice();
item.value.unshift(index2);
} else {
newItem = item;
}
newOptionData_1.push(newItem);
});
option.data = newOptionData_1;
}
var defaultValueDimensions = this.defaultValueDimensions;
var coordDimensions = [{
name: baseAxisDim,
type: getDimensionTypeByAxis(baseAxisType),
ordinalMeta,
otherDims: {
tooltip: false,
itemName: 0
},
dimsDef: ["base"]
}, {
name: otherAxisDim,
type: getDimensionTypeByAxis(otherAxisType),
dimsDef: defaultValueDimensions.slice()
}];
return createSeriesDataSimply(this, {
coordDimensions,
dimensionsCount: defaultValueDimensions.length + 1,
encodeDefaulter: curry$1(makeSeriesEncodeForAxisCoordSys, coordDimensions, this)
});
};
WhiskerBoxCommonMixin2.prototype.getBaseAxis = function() {
var dim = this._baseAxisDim;
return this.ecModel.getComponent(dim + "Axis", this.get(dim + "AxisIndex")).axis;
};
return WhiskerBoxCommonMixin2;
}()
);
var BoxplotSeriesModel = (
/** @class */
function(_super) {
__extends(BoxplotSeriesModel2, _super);
function BoxplotSeriesModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = BoxplotSeriesModel2.type;
_this.defaultValueDimensions = [{
name: "min",
defaultTooltip: true
}, {
name: "Q1",
defaultTooltip: true
}, {
name: "median",
defaultTooltip: true
}, {
name: "Q3",
defaultTooltip: true
}, {
name: "max",
defaultTooltip: true
}];
_this.visualDrawType = "stroke";
return _this;
}
BoxplotSeriesModel2.type = "series.boxplot";
BoxplotSeriesModel2.dependencies = ["xAxis", "yAxis", "grid"];
BoxplotSeriesModel2.defaultOption = {
// zlevel: 0,
z: 2,
coordinateSystem: "cartesian2d",
legendHoverLink: true,
layout: null,
boxWidth: [7, 50],
itemStyle: {
color: "#fff",
borderWidth: 1
},
emphasis: {
scale: true,
itemStyle: {
borderWidth: 2,
shadowBlur: 5,
shadowOffsetX: 1,
shadowOffsetY: 1,
shadowColor: "rgba(0,0,0,0.2)"
}
},
animationDuration: 800
};
return BoxplotSeriesModel2;
}(SeriesModel)
);
mixin(BoxplotSeriesModel, WhiskerBoxCommonMixin, true);
var BoxplotView = (
/** @class */
function(_super) {
__extends(BoxplotView2, _super);
function BoxplotView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = BoxplotView2.type;
return _this;
}
BoxplotView2.prototype.render = function(seriesModel, ecModel, api) {
var data = seriesModel.getData();
var group = this.group;
var oldData = this._data;
if (!this._data) {
group.removeAll();
}
var constDim = seriesModel.get("layout") === "horizontal" ? 1 : 0;
data.diff(oldData).add(function(newIdx) {
if (data.hasValue(newIdx)) {
var itemLayout = data.getItemLayout(newIdx);
var symbolEl = createNormalBox$1(itemLayout, data, newIdx, constDim, true);
data.setItemGraphicEl(newIdx, symbolEl);
group.add(symbolEl);
}
}).update(function(newIdx, oldIdx) {
var symbolEl = oldData.getItemGraphicEl(oldIdx);
if (!data.hasValue(newIdx)) {
group.remove(symbolEl);
return;
}
var itemLayout = data.getItemLayout(newIdx);
if (!symbolEl) {
symbolEl = createNormalBox$1(itemLayout, data, newIdx, constDim);
} else {
saveOldStyle(symbolEl);
updateNormalBoxData(itemLayout, symbolEl, data, newIdx);
}
group.add(symbolEl);
data.setItemGraphicEl(newIdx, symbolEl);
}).remove(function(oldIdx) {
var el2 = oldData.getItemGraphicEl(oldIdx);
el2 && group.remove(el2);
}).execute();
this._data = data;
};
BoxplotView2.prototype.remove = function(ecModel) {
var group = this.group;
var data = this._data;
this._data = null;
data && data.eachItemGraphicEl(function(el2) {
el2 && group.remove(el2);
});
};
BoxplotView2.type = "boxplot";
return BoxplotView2;
}(ChartView)
);
var BoxPathShape = (
/** @class */
/* @__PURE__ */ function() {
function BoxPathShape2() {
}
return BoxPathShape2;
}()
);
var BoxPath = (
/** @class */
function(_super) {
__extends(BoxPath2, _super);
function BoxPath2(opts) {
var _this = _super.call(this, opts) || this;
_this.type = "boxplotBoxPath";
return _this;
}
BoxPath2.prototype.getDefaultShape = function() {
return new BoxPathShape();
};
BoxPath2.prototype.buildPath = function(ctx, shape) {
var ends = shape.points;
var i = 0;
ctx.moveTo(ends[i][0], ends[i][1]);
i++;
for (; i < 4; i++) {
ctx.lineTo(ends[i][0], ends[i][1]);
}
ctx.closePath();
for (; i < ends.length; i++) {
ctx.moveTo(ends[i][0], ends[i][1]);
i++;
ctx.lineTo(ends[i][0], ends[i][1]);
}
};
return BoxPath2;
}(Path)
);
function createNormalBox$1(itemLayout, data, dataIndex, constDim, isInit) {
var ends = itemLayout.ends;
var el2 = new BoxPath({
shape: {
points: isInit ? transInit$1(ends, constDim, itemLayout) : ends
}
});
updateNormalBoxData(itemLayout, el2, data, dataIndex, isInit);
return el2;
}
function updateNormalBoxData(itemLayout, el2, data, dataIndex, isInit) {
var seriesModel = data.hostModel;
var updateMethod = graphic$1[isInit ? "initProps" : "updateProps"];
updateMethod(el2, {
shape: {
points: itemLayout.ends
}
}, seriesModel, dataIndex);
el2.useStyle(data.getItemVisual(dataIndex, "style"));
el2.style.strokeNoScale = true;
el2.z2 = 100;
var itemModel = data.getItemModel(dataIndex);
var emphasisModel = itemModel.getModel("emphasis");
setStatesStylesFromModel(el2, itemModel);
toggleHoverEmphasis(el2, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
}
function transInit$1(points2, dim, itemLayout) {
return map$1(points2, function(point) {
point = point.slice();
point[dim] = itemLayout.initBaseline;
return point;
});
}
var each$9 = each$f;
function boxplotLayout(ecModel) {
var groupResult = groupSeriesByAxis(ecModel);
each$9(groupResult, function(groupItem) {
var seriesModels = groupItem.seriesModels;
if (!seriesModels.length) {
return;
}
calculateBase(groupItem);
each$9(seriesModels, function(seriesModel, idx) {
layoutSingleSeries(seriesModel, groupItem.boxOffsetList[idx], groupItem.boxWidthList[idx]);
});
});
}
function groupSeriesByAxis(ecModel) {
var result = [];
var axisList = [];
ecModel.eachSeriesByType("boxplot", function(seriesModel) {
var baseAxis = seriesModel.getBaseAxis();
var idx = indexOf(axisList, baseAxis);
if (idx < 0) {
idx = axisList.length;
axisList[idx] = baseAxis;
result[idx] = {
axis: baseAxis,
seriesModels: []
};
}
result[idx].seriesModels.push(seriesModel);
});
return result;
}
function calculateBase(groupItem) {
var baseAxis = groupItem.axis;
var seriesModels = groupItem.seriesModels;
var seriesCount = seriesModels.length;
var boxWidthList = groupItem.boxWidthList = [];
var boxOffsetList = groupItem.boxOffsetList = [];
var boundList = [];
var bandWidth;
if (baseAxis.type === "category") {
bandWidth = baseAxis.getBandWidth();
} else {
var maxDataCount_1 = 0;
each$9(seriesModels, function(seriesModel) {
maxDataCount_1 = Math.max(maxDataCount_1, seriesModel.getData().count());
});
var extent3 = baseAxis.getExtent();
bandWidth = Math.abs(extent3[1] - extent3[0]) / maxDataCount_1;
}
each$9(seriesModels, function(seriesModel) {
var boxWidthBound = seriesModel.get("boxWidth");
if (!isArray$1(boxWidthBound)) {
boxWidthBound = [boxWidthBound, boxWidthBound];
}
boundList.push([parsePercent(boxWidthBound[0], bandWidth) || 0, parsePercent(boxWidthBound[1], bandWidth) || 0]);
});
var availableWidth = bandWidth * 0.8 - 2;
var boxGap = availableWidth / seriesCount * 0.3;
var boxWidth = (availableWidth - boxGap * (seriesCount - 1)) / seriesCount;
var base2 = boxWidth / 2 - availableWidth / 2;
each$9(seriesModels, function(seriesModel, idx) {
boxOffsetList.push(base2);
base2 += boxGap + boxWidth;
boxWidthList.push(Math.min(Math.max(boxWidth, boundList[idx][0]), boundList[idx][1]));
});
}
function layoutSingleSeries(seriesModel, offset2, boxWidth) {
var coordSys = seriesModel.coordinateSystem;
var data = seriesModel.getData();
var halfWidth = boxWidth / 2;
var cDimIdx = seriesModel.get("layout") === "horizontal" ? 0 : 1;
var vDimIdx = 1 - cDimIdx;
var coordDims = ["x", "y"];
var cDim = data.mapDimension(coordDims[cDimIdx]);
var vDims = data.mapDimensionsAll(coordDims[vDimIdx]);
if (cDim == null || vDims.length < 5) {
return;
}
for (var dataIndex = 0; dataIndex < data.count(); dataIndex++) {
var axisDimVal = data.get(cDim, dataIndex);
var median = getPoint(axisDimVal, vDims[2], dataIndex);
var end1 = getPoint(axisDimVal, vDims[0], dataIndex);
var end2 = getPoint(axisDimVal, vDims[1], dataIndex);
var end4 = getPoint(axisDimVal, vDims[3], dataIndex);
var end5 = getPoint(axisDimVal, vDims[4], dataIndex);
var ends = [];
addBodyEnd(ends, end2, false);
addBodyEnd(ends, end4, true);
ends.push(end1, end2, end5, end4);
layEndLine(ends, end1);
layEndLine(ends, end5);
layEndLine(ends, median);
data.setItemLayout(dataIndex, {
initBaseline: median[vDimIdx],
ends
});
}
function getPoint(axisDimVal2, dim, dataIndex2) {
var val = data.get(dim, dataIndex2);
var p2 = [];
p2[cDimIdx] = axisDimVal2;
p2[vDimIdx] = val;
var point;
if (isNaN(axisDimVal2) || isNaN(val)) {
point = [NaN, NaN];
} else {
point = coordSys.dataToPoint(p2);
point[cDimIdx] += offset2;
}
return point;
}
function addBodyEnd(ends2, point, start2) {
var point1 = point.slice();
var point2 = point.slice();
point1[cDimIdx] += halfWidth;
point2[cDimIdx] -= halfWidth;
start2 ? ends2.push(point1, point2) : ends2.push(point2, point1);
}
function layEndLine(ends2, endCenter) {
var from2 = endCenter.slice();
var to = endCenter.slice();
from2[cDimIdx] -= halfWidth;
to[cDimIdx] += halfWidth;
ends2.push(from2, to);
}
}
function prepareBoxplotData(rawData, opt) {
opt = opt || {};
var boxData = [];
var outliers = [];
var boundIQR = opt.boundIQR;
var useExtreme = boundIQR === "none" || boundIQR === 0;
for (var i = 0; i < rawData.length; i++) {
var ascList = asc$2(rawData[i].slice());
var Q1 = quantile(ascList, 0.25);
var Q2 = quantile(ascList, 0.5);
var Q3 = quantile(ascList, 0.75);
var min3 = ascList[0];
var max3 = ascList[ascList.length - 1];
var bound = (boundIQR == null ? 1.5 : boundIQR) * (Q3 - Q1);
var low = useExtreme ? min3 : Math.max(min3, Q1 - bound);
var high = useExtreme ? max3 : Math.min(max3, Q3 + bound);
var itemNameFormatter = opt.itemNameFormatter;
var itemName = isFunction$1(itemNameFormatter) ? itemNameFormatter({
value: i
}) : isString$1(itemNameFormatter) ? itemNameFormatter.replace("{value}", i + "") : i + "";
boxData.push([itemName, low, Q1, Q2, Q3, high]);
for (var j = 0; j < ascList.length; j++) {
var dataItem = ascList[j];
if (dataItem < low || dataItem > high) {
var outlier = [itemName, dataItem];
outliers.push(outlier);
}
}
}
return {
boxData,
outliers
};
}
var boxplotTransform = {
type: "echarts:boxplot",
transform: function transform(params) {
var upstream = params.upstream;
if (upstream.sourceFormat !== SOURCE_FORMAT_ARRAY_ROWS) {
var errMsg = "";
throwError(errMsg);
}
var result = prepareBoxplotData(upstream.getRawData(), params.config);
return [{
dimensions: ["ItemName", "Low", "Q1", "Q2", "Q3", "High"],
data: result.boxData
}, {
data: result.outliers
}];
}
};
function install$z(registers) {
registers.registerSeriesModel(BoxplotSeriesModel);
registers.registerChartView(BoxplotView);
registers.registerLayout(boxplotLayout);
registers.registerTransform(boxplotTransform);
}
var SKIP_PROPS = ["color", "borderColor"];
var CandlestickView = (
/** @class */
function(_super) {
__extends(CandlestickView2, _super);
function CandlestickView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = CandlestickView2.type;
return _this;
}
CandlestickView2.prototype.render = function(seriesModel, ecModel, api) {
this.group.removeClipPath();
this._progressiveEls = null;
this._updateDrawMode(seriesModel);
this._isLargeDraw ? this._renderLarge(seriesModel) : this._renderNormal(seriesModel);
};
CandlestickView2.prototype.incrementalPrepareRender = function(seriesModel, ecModel, api) {
this._clear();
this._updateDrawMode(seriesModel);
};
CandlestickView2.prototype.incrementalRender = function(params, seriesModel, ecModel, api) {
this._progressiveEls = [];
this._isLargeDraw ? this._incrementalRenderLarge(params, seriesModel) : this._incrementalRenderNormal(params, seriesModel);
};
CandlestickView2.prototype.eachRendered = function(cb2) {
traverseElements(this._progressiveEls || this.group, cb2);
};
CandlestickView2.prototype._updateDrawMode = function(seriesModel) {
var isLargeDraw = seriesModel.pipelineContext.large;
if (this._isLargeDraw == null || isLargeDraw !== this._isLargeDraw) {
this._isLargeDraw = isLargeDraw;
this._clear();
}
};
CandlestickView2.prototype._renderNormal = function(seriesModel) {
var data = seriesModel.getData();
var oldData = this._data;
var group = this.group;
var isSimpleBox = data.getLayout("isSimpleBox");
var needsClip = seriesModel.get("clip", true);
var coord = seriesModel.coordinateSystem;
var clipArea = coord.getArea && coord.getArea();
if (!this._data) {
group.removeAll();
}
data.diff(oldData).add(function(newIdx) {
if (data.hasValue(newIdx)) {
var itemLayout = data.getItemLayout(newIdx);
if (needsClip && isNormalBoxClipped(clipArea, itemLayout)) {
return;
}
var el2 = createNormalBox(itemLayout, newIdx, true);
initProps(el2, {
shape: {
points: itemLayout.ends
}
}, seriesModel, newIdx);
setBoxCommon(el2, data, newIdx, isSimpleBox);
group.add(el2);
data.setItemGraphicEl(newIdx, el2);
}
}).update(function(newIdx, oldIdx) {
var el2 = oldData.getItemGraphicEl(oldIdx);
if (!data.hasValue(newIdx)) {
group.remove(el2);
return;
}
var itemLayout = data.getItemLayout(newIdx);
if (needsClip && isNormalBoxClipped(clipArea, itemLayout)) {
group.remove(el2);
return;
}
if (!el2) {
el2 = createNormalBox(itemLayout);
} else {
updateProps$1(el2, {
shape: {
points: itemLayout.ends
}
}, seriesModel, newIdx);
saveOldStyle(el2);
}
setBoxCommon(el2, data, newIdx, isSimpleBox);
group.add(el2);
data.setItemGraphicEl(newIdx, el2);
}).remove(function(oldIdx) {
var el2 = oldData.getItemGraphicEl(oldIdx);
el2 && group.remove(el2);
}).execute();
this._data = data;
};
CandlestickView2.prototype._renderLarge = function(seriesModel) {
this._clear();
createLarge(seriesModel, this.group);
var clipPath = seriesModel.get("clip", true) ? createClipPath(seriesModel.coordinateSystem, false, seriesModel) : null;
if (clipPath) {
this.group.setClipPath(clipPath);
} else {
this.group.removeClipPath();
}
};
CandlestickView2.prototype._incrementalRenderNormal = function(params, seriesModel) {
var data = seriesModel.getData();
var isSimpleBox = data.getLayout("isSimpleBox");
var dataIndex;
while ((dataIndex = params.next()) != null) {
var itemLayout = data.getItemLayout(dataIndex);
var el2 = createNormalBox(itemLayout);
setBoxCommon(el2, data, dataIndex, isSimpleBox);
el2.incremental = true;
this.group.add(el2);
this._progressiveEls.push(el2);
}
};
CandlestickView2.prototype._incrementalRenderLarge = function(params, seriesModel) {
createLarge(seriesModel, this.group, this._progressiveEls, true);
};
CandlestickView2.prototype.remove = function(ecModel) {
this._clear();
};
CandlestickView2.prototype._clear = function() {
this.group.removeAll();
this._data = null;
};
CandlestickView2.type = "candlestick";
return CandlestickView2;
}(ChartView)
);
var NormalBoxPathShape = (
/** @class */
/* @__PURE__ */ function() {
function NormalBoxPathShape2() {
}
return NormalBoxPathShape2;
}()
);
var NormalBoxPath = (
/** @class */
function(_super) {
__extends(NormalBoxPath2, _super);
function NormalBoxPath2(opts) {
var _this = _super.call(this, opts) || this;
_this.type = "normalCandlestickBox";
return _this;
}
NormalBoxPath2.prototype.getDefaultShape = function() {
return new NormalBoxPathShape();
};
NormalBoxPath2.prototype.buildPath = function(ctx, shape) {
var ends = shape.points;
if (this.__simpleBox) {
ctx.moveTo(ends[4][0], ends[4][1]);
ctx.lineTo(ends[6][0], ends[6][1]);
} else {
ctx.moveTo(ends[0][0], ends[0][1]);
ctx.lineTo(ends[1][0], ends[1][1]);
ctx.lineTo(ends[2][0], ends[2][1]);
ctx.lineTo(ends[3][0], ends[3][1]);
ctx.closePath();
ctx.moveTo(ends[4][0], ends[4][1]);
ctx.lineTo(ends[5][0], ends[5][1]);
ctx.moveTo(ends[6][0], ends[6][1]);
ctx.lineTo(ends[7][0], ends[7][1]);
}
};
return NormalBoxPath2;
}(Path)
);
function createNormalBox(itemLayout, dataIndex, isInit) {
var ends = itemLayout.ends;
return new NormalBoxPath({
shape: {
points: isInit ? transInit(ends, itemLayout) : ends
},
z2: 100
});
}
function isNormalBoxClipped(clipArea, itemLayout) {
var clipped = true;
for (var i = 0; i < itemLayout.ends.length; i++) {
if (clipArea.contain(itemLayout.ends[i][0], itemLayout.ends[i][1])) {
clipped = false;
break;
}
}
return clipped;
}
function setBoxCommon(el2, data, dataIndex, isSimpleBox) {
var itemModel = data.getItemModel(dataIndex);
el2.useStyle(data.getItemVisual(dataIndex, "style"));
el2.style.strokeNoScale = true;
el2.__simpleBox = isSimpleBox;
setStatesStylesFromModel(el2, itemModel);
}
function transInit(points2, itemLayout) {
return map$1(points2, function(point) {
point = point.slice();
point[1] = itemLayout.initBaseline;
return point;
});
}
var LargeBoxPathShape = (
/** @class */
/* @__PURE__ */ function() {
function LargeBoxPathShape2() {
}
return LargeBoxPathShape2;
}()
);
var LargeBoxPath = (
/** @class */
function(_super) {
__extends(LargeBoxPath2, _super);
function LargeBoxPath2(opts) {
var _this = _super.call(this, opts) || this;
_this.type = "largeCandlestickBox";
return _this;
}
LargeBoxPath2.prototype.getDefaultShape = function() {
return new LargeBoxPathShape();
};
LargeBoxPath2.prototype.buildPath = function(ctx, shape) {
var points2 = shape.points;
for (var i = 0; i < points2.length; ) {
if (this.__sign === points2[i++]) {
var x2 = points2[i++];
ctx.moveTo(x2, points2[i++]);
ctx.lineTo(x2, points2[i++]);
} else {
i += 3;
}
}
};
return LargeBoxPath2;
}(Path)
);
function createLarge(seriesModel, group, progressiveEls, incremental) {
var data = seriesModel.getData();
var largePoints = data.getLayout("largePoints");
var elP = new LargeBoxPath({
shape: {
points: largePoints
},
__sign: 1,
ignoreCoarsePointer: true
});
group.add(elP);
var elN = new LargeBoxPath({
shape: {
points: largePoints
},
__sign: -1,
ignoreCoarsePointer: true
});
group.add(elN);
var elDoji = new LargeBoxPath({
shape: {
points: largePoints
},
__sign: 0,
ignoreCoarsePointer: true
});
group.add(elDoji);
setLargeStyle(1, elP, seriesModel);
setLargeStyle(-1, elN, seriesModel);
setLargeStyle(0, elDoji, seriesModel);
if (incremental) {
elP.incremental = true;
elN.incremental = true;
}
if (progressiveEls) {
progressiveEls.push(elP, elN);
}
}
function setLargeStyle(sign, el2, seriesModel, data) {
var borderColor = seriesModel.get(["itemStyle", sign > 0 ? "borderColor" : "borderColor0"]) || seriesModel.get(["itemStyle", sign > 0 ? "color" : "color0"]);
if (sign === 0) {
borderColor = seriesModel.get(["itemStyle", "borderColorDoji"]);
}
var itemStyle = seriesModel.getModel("itemStyle").getItemStyle(SKIP_PROPS);
el2.useStyle(itemStyle);
el2.style.fill = null;
el2.style.stroke = borderColor;
}
var CandlestickSeriesModel = (
/** @class */
function(_super) {
__extends(CandlestickSeriesModel2, _super);
function CandlestickSeriesModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = CandlestickSeriesModel2.type;
_this.defaultValueDimensions = [{
name: "open",
defaultTooltip: true
}, {
name: "close",
defaultTooltip: true
}, {
name: "lowest",
defaultTooltip: true
}, {
name: "highest",
defaultTooltip: true
}];
return _this;
}
CandlestickSeriesModel2.prototype.getShadowDim = function() {
return "open";
};
CandlestickSeriesModel2.prototype.brushSelector = function(dataIndex, data, selectors) {
var itemLayout = data.getItemLayout(dataIndex);
return itemLayout && selectors.rect(itemLayout.brushRect);
};
CandlestickSeriesModel2.type = "series.candlestick";
CandlestickSeriesModel2.dependencies = ["xAxis", "yAxis", "grid"];
CandlestickSeriesModel2.defaultOption = {
// zlevel: 0,
z: 2,
coordinateSystem: "cartesian2d",
legendHoverLink: true,
// xAxisIndex: 0,
// yAxisIndex: 0,
layout: null,
clip: true,
itemStyle: {
color: "#eb5454",
color0: "#47b262",
borderColor: "#eb5454",
borderColor0: "#47b262",
borderColorDoji: null,
// borderColor: '#d24040',
// borderColor0: '#398f4f',
borderWidth: 1
},
emphasis: {
scale: true,
itemStyle: {
borderWidth: 2
}
},
barMaxWidth: null,
barMinWidth: null,
barWidth: null,
large: true,
largeThreshold: 600,
progressive: 3e3,
progressiveThreshold: 1e4,
progressiveChunkMode: "mod",
animationEasing: "linear",
animationDuration: 300
};
return CandlestickSeriesModel2;
}(SeriesModel)
);
mixin(CandlestickSeriesModel, WhiskerBoxCommonMixin, true);
function candlestickPreprocessor(option) {
if (!option || !isArray$1(option.series)) {
return;
}
each$f(option.series, function(seriesItem) {
if (isObject$3(seriesItem) && seriesItem.type === "k") {
seriesItem.type = "candlestick";
}
});
}
var positiveBorderColorQuery = ["itemStyle", "borderColor"];
var negativeBorderColorQuery = ["itemStyle", "borderColor0"];
var dojiBorderColorQuery = ["itemStyle", "borderColorDoji"];
var positiveColorQuery = ["itemStyle", "color"];
var negativeColorQuery = ["itemStyle", "color0"];
var candlestickVisual = {
seriesType: "candlestick",
plan: createRenderPlanner(),
// For legend.
performRawSeries: true,
reset: function(seriesModel, ecModel) {
function getColor(sign, model) {
return model.get(sign > 0 ? positiveColorQuery : negativeColorQuery);
}
function getBorderColor(sign, model) {
return model.get(sign === 0 ? dojiBorderColorQuery : sign > 0 ? positiveBorderColorQuery : negativeBorderColorQuery);
}
if (ecModel.isSeriesFiltered(seriesModel)) {
return;
}
var isLargeRender = seriesModel.pipelineContext.large;
return !isLargeRender && {
progress: function(params, data) {
var dataIndex;
while ((dataIndex = params.next()) != null) {
var itemModel = data.getItemModel(dataIndex);
var sign = data.getItemLayout(dataIndex).sign;
var style2 = itemModel.getItemStyle();
style2.fill = getColor(sign, itemModel);
style2.stroke = getBorderColor(sign, itemModel) || style2.fill;
var existsStyle = data.ensureUniqueItemVisual(dataIndex, "style");
extend(existsStyle, style2);
}
}
};
}
};
var candlestickLayout = {
seriesType: "candlestick",
plan: createRenderPlanner(),
reset: function(seriesModel) {
var coordSys = seriesModel.coordinateSystem;
var data = seriesModel.getData();
var candleWidth = calculateCandleWidth(seriesModel, data);
var cDimIdx = 0;
var vDimIdx = 1;
var coordDims = ["x", "y"];
var cDimI = data.getDimensionIndex(data.mapDimension(coordDims[cDimIdx]));
var vDimsI = map$1(data.mapDimensionsAll(coordDims[vDimIdx]), data.getDimensionIndex, data);
var openDimI = vDimsI[0];
var closeDimI = vDimsI[1];
var lowestDimI = vDimsI[2];
var highestDimI = vDimsI[3];
data.setLayout({
candleWidth,
// The value is experimented visually.
isSimpleBox: candleWidth <= 1.3
});
if (cDimI < 0 || vDimsI.length < 4) {
return;
}
return {
progress: seriesModel.pipelineContext.large ? largeProgress : normalProgress
};
function normalProgress(params, data2) {
var dataIndex;
var store = data2.getStore();
while ((dataIndex = params.next()) != null) {
var axisDimVal = store.get(cDimI, dataIndex);
var openVal = store.get(openDimI, dataIndex);
var closeVal = store.get(closeDimI, dataIndex);
var lowestVal = store.get(lowestDimI, dataIndex);
var highestVal = store.get(highestDimI, dataIndex);
var ocLow = Math.min(openVal, closeVal);
var ocHigh = Math.max(openVal, closeVal);
var ocLowPoint = getPoint(ocLow, axisDimVal);
var ocHighPoint = getPoint(ocHigh, axisDimVal);
var lowestPoint = getPoint(lowestVal, axisDimVal);
var highestPoint = getPoint(highestVal, axisDimVal);
var ends = [];
addBodyEnd(ends, ocHighPoint, 0);
addBodyEnd(ends, ocLowPoint, 1);
ends.push(subPixelOptimizePoint(highestPoint), subPixelOptimizePoint(ocHighPoint), subPixelOptimizePoint(lowestPoint), subPixelOptimizePoint(ocLowPoint));
var itemModel = data2.getItemModel(dataIndex);
var hasDojiColor = !!itemModel.get(["itemStyle", "borderColorDoji"]);
data2.setItemLayout(dataIndex, {
sign: getSign(store, dataIndex, openVal, closeVal, closeDimI, hasDojiColor),
initBaseline: openVal > closeVal ? ocHighPoint[vDimIdx] : ocLowPoint[vDimIdx],
ends,
brushRect: makeBrushRect(lowestVal, highestVal, axisDimVal)
});
}
function getPoint(val, axisDimVal2) {
var p2 = [];
p2[cDimIdx] = axisDimVal2;
p2[vDimIdx] = val;
return isNaN(axisDimVal2) || isNaN(val) ? [NaN, NaN] : coordSys.dataToPoint(p2);
}
function addBodyEnd(ends2, point, start2) {
var point1 = point.slice();
var point2 = point.slice();
point1[cDimIdx] = subPixelOptimize(point1[cDimIdx] + candleWidth / 2, 1, false);
point2[cDimIdx] = subPixelOptimize(point2[cDimIdx] - candleWidth / 2, 1, true);
start2 ? ends2.push(point1, point2) : ends2.push(point2, point1);
}
function makeBrushRect(lowestVal2, highestVal2, axisDimVal2) {
var pmin = getPoint(lowestVal2, axisDimVal2);
var pmax = getPoint(highestVal2, axisDimVal2);
pmin[cDimIdx] -= candleWidth / 2;
pmax[cDimIdx] -= candleWidth / 2;
return {
x: pmin[0],
y: pmin[1],
width: candleWidth,
height: pmax[1] - pmin[1]
};
}
function subPixelOptimizePoint(point) {
point[cDimIdx] = subPixelOptimize(point[cDimIdx], 1);
return point;
}
}
function largeProgress(params, data2) {
var points2 = createFloat32Array(params.count * 4);
var offset2 = 0;
var point;
var tmpIn = [];
var tmpOut = [];
var dataIndex;
var store = data2.getStore();
var hasDojiColor = !!seriesModel.get(["itemStyle", "borderColorDoji"]);
while ((dataIndex = params.next()) != null) {
var axisDimVal = store.get(cDimI, dataIndex);
var openVal = store.get(openDimI, dataIndex);
var closeVal = store.get(closeDimI, dataIndex);
var lowestVal = store.get(lowestDimI, dataIndex);
var highestVal = store.get(highestDimI, dataIndex);
if (isNaN(axisDimVal) || isNaN(lowestVal) || isNaN(highestVal)) {
points2[offset2++] = NaN;
offset2 += 3;
continue;
}
points2[offset2++] = getSign(store, dataIndex, openVal, closeVal, closeDimI, hasDojiColor);
tmpIn[cDimIdx] = axisDimVal;
tmpIn[vDimIdx] = lowestVal;
point = coordSys.dataToPoint(tmpIn, null, tmpOut);
points2[offset2++] = point ? point[0] : NaN;
points2[offset2++] = point ? point[1] : NaN;
tmpIn[vDimIdx] = highestVal;
point = coordSys.dataToPoint(tmpIn, null, tmpOut);
points2[offset2++] = point ? point[1] : NaN;
}
data2.setLayout("largePoints", points2);
}
}
};
function getSign(store, dataIndex, openVal, closeVal, closeDimI, hasDojiColor) {
var sign;
if (openVal > closeVal) {
sign = -1;
} else if (openVal < closeVal) {
sign = 1;
} else {
sign = hasDojiColor ? 0 : dataIndex > 0 ? store.get(closeDimI, dataIndex - 1) <= closeVal ? 1 : -1 : 1;
}
return sign;
}
function calculateCandleWidth(seriesModel, data) {
var baseAxis = seriesModel.getBaseAxis();
var extent3;
var bandWidth = baseAxis.type === "category" ? baseAxis.getBandWidth() : (extent3 = baseAxis.getExtent(), Math.abs(extent3[1] - extent3[0]) / data.count());
var barMaxWidth = parsePercent(retrieve2(seriesModel.get("barMaxWidth"), bandWidth), bandWidth);
var barMinWidth = parsePercent(retrieve2(seriesModel.get("barMinWidth"), 1), bandWidth);
var barWidth = seriesModel.get("barWidth");
return barWidth != null ? parsePercent(barWidth, bandWidth) : Math.max(Math.min(bandWidth / 2, barMaxWidth), barMinWidth);
}
function install$y(registers) {
registers.registerChartView(CandlestickView);
registers.registerSeriesModel(CandlestickSeriesModel);
registers.registerPreprocessor(candlestickPreprocessor);
registers.registerVisual(candlestickVisual);
registers.registerLayout(candlestickLayout);
}
function updateRipplePath(rippleGroup, effectCfg) {
var color2 = effectCfg.rippleEffectColor || effectCfg.color;
rippleGroup.eachChild(function(ripplePath) {
ripplePath.attr({
z: effectCfg.z,
zlevel: effectCfg.zlevel,
style: {
stroke: effectCfg.brushType === "stroke" ? color2 : null,
fill: effectCfg.brushType === "fill" ? color2 : null
}
});
});
}
var EffectSymbol = (
/** @class */
function(_super) {
__extends(EffectSymbol2, _super);
function EffectSymbol2(data, idx) {
var _this = _super.call(this) || this;
var symbol = new Symbol$1(data, idx);
var rippleGroup = new Group$3();
_this.add(symbol);
_this.add(rippleGroup);
_this.updateData(data, idx);
return _this;
}
EffectSymbol2.prototype.stopEffectAnimation = function() {
this.childAt(1).removeAll();
};
EffectSymbol2.prototype.startEffectAnimation = function(effectCfg) {
var symbolType = effectCfg.symbolType;
var color2 = effectCfg.color;
var rippleNumber = effectCfg.rippleNumber;
var rippleGroup = this.childAt(1);
for (var i = 0; i < rippleNumber; i++) {
var ripplePath = createSymbol$1(symbolType, -1, -1, 2, 2, color2);
ripplePath.attr({
style: {
strokeNoScale: true
},
z2: 99,
silent: true,
scaleX: 0.5,
scaleY: 0.5
});
var delay = -i / rippleNumber * effectCfg.period + effectCfg.effectOffset;
ripplePath.animate("", true).when(effectCfg.period, {
scaleX: effectCfg.rippleScale / 2,
scaleY: effectCfg.rippleScale / 2
}).delay(delay).start();
ripplePath.animateStyle(true).when(effectCfg.period, {
opacity: 0
}).delay(delay).start();
rippleGroup.add(ripplePath);
}
updateRipplePath(rippleGroup, effectCfg);
};
EffectSymbol2.prototype.updateEffectAnimation = function(effectCfg) {
var oldEffectCfg = this._effectCfg;
var rippleGroup = this.childAt(1);
var DIFFICULT_PROPS = ["symbolType", "period", "rippleScale", "rippleNumber"];
for (var i = 0; i < DIFFICULT_PROPS.length; i++) {
var propName = DIFFICULT_PROPS[i];
if (oldEffectCfg[propName] !== effectCfg[propName]) {
this.stopEffectAnimation();
this.startEffectAnimation(effectCfg);
return;
}
}
updateRipplePath(rippleGroup, effectCfg);
};
EffectSymbol2.prototype.highlight = function() {
enterEmphasis(this);
};
EffectSymbol2.prototype.downplay = function() {
leaveEmphasis(this);
};
EffectSymbol2.prototype.getSymbolType = function() {
var symbol = this.childAt(0);
return symbol && symbol.getSymbolType();
};
EffectSymbol2.prototype.updateData = function(data, idx) {
var _this = this;
var seriesModel = data.hostModel;
this.childAt(0).updateData(data, idx);
var rippleGroup = this.childAt(1);
var itemModel = data.getItemModel(idx);
var symbolType = data.getItemVisual(idx, "symbol");
var symbolSize = normalizeSymbolSize(data.getItemVisual(idx, "symbolSize"));
var symbolStyle = data.getItemVisual(idx, "style");
var color2 = symbolStyle && symbolStyle.fill;
var emphasisModel = itemModel.getModel("emphasis");
rippleGroup.setScale(symbolSize);
rippleGroup.traverse(function(ripplePath) {
ripplePath.setStyle("fill", color2);
});
var symbolOffset = normalizeSymbolOffset(data.getItemVisual(idx, "symbolOffset"), symbolSize);
if (symbolOffset) {
rippleGroup.x = symbolOffset[0];
rippleGroup.y = symbolOffset[1];
}
var symbolRotate = data.getItemVisual(idx, "symbolRotate");
rippleGroup.rotation = (symbolRotate || 0) * Math.PI / 180 || 0;
var effectCfg = {};
effectCfg.showEffectOn = seriesModel.get("showEffectOn");
effectCfg.rippleScale = itemModel.get(["rippleEffect", "scale"]);
effectCfg.brushType = itemModel.get(["rippleEffect", "brushType"]);
effectCfg.period = itemModel.get(["rippleEffect", "period"]) * 1e3;
effectCfg.effectOffset = idx / data.count();
effectCfg.z = seriesModel.getShallow("z") || 0;
effectCfg.zlevel = seriesModel.getShallow("zlevel") || 0;
effectCfg.symbolType = symbolType;
effectCfg.color = color2;
effectCfg.rippleEffectColor = itemModel.get(["rippleEffect", "color"]);
effectCfg.rippleNumber = itemModel.get(["rippleEffect", "number"]);
if (effectCfg.showEffectOn === "render") {
this._effectCfg ? this.updateEffectAnimation(effectCfg) : this.startEffectAnimation(effectCfg);
this._effectCfg = effectCfg;
} else {
this._effectCfg = null;
this.stopEffectAnimation();
this.onHoverStateChange = function(toState) {
if (toState === "emphasis") {
if (effectCfg.showEffectOn !== "render") {
_this.startEffectAnimation(effectCfg);
}
} else if (toState === "normal") {
if (effectCfg.showEffectOn !== "render") {
_this.stopEffectAnimation();
}
}
};
}
this._effectCfg = effectCfg;
toggleHoverEmphasis(this, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
};
EffectSymbol2.prototype.fadeOut = function(cb2) {
cb2 && cb2();
};
return EffectSymbol2;
}(Group$3)
);
var EffectScatterView = (
/** @class */
function(_super) {
__extends(EffectScatterView2, _super);
function EffectScatterView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = EffectScatterView2.type;
return _this;
}
EffectScatterView2.prototype.init = function() {
this._symbolDraw = new SymbolDraw(EffectSymbol);
};
EffectScatterView2.prototype.render = function(seriesModel, ecModel, api) {
var data = seriesModel.getData();
var effectSymbolDraw = this._symbolDraw;
effectSymbolDraw.updateData(data, {
clipShape: this._getClipShape(seriesModel)
});
this.group.add(effectSymbolDraw.group);
};
EffectScatterView2.prototype._getClipShape = function(seriesModel) {
var coordSys = seriesModel.coordinateSystem;
var clipArea = coordSys && coordSys.getArea && coordSys.getArea();
return seriesModel.get("clip", true) ? clipArea : null;
};
EffectScatterView2.prototype.updateTransform = function(seriesModel, ecModel, api) {
var data = seriesModel.getData();
this.group.dirty();
var res = pointsLayout("").reset(seriesModel, ecModel, api);
if (res.progress) {
res.progress({
start: 0,
end: data.count(),
count: data.count()
}, data);
}
this._symbolDraw.updateLayout();
};
EffectScatterView2.prototype._updateGroupTransform = function(seriesModel) {
var coordSys = seriesModel.coordinateSystem;
if (coordSys && coordSys.getRoamTransform) {
this.group.transform = clone$2(coordSys.getRoamTransform());
this.group.decomposeTransform();
}
};
EffectScatterView2.prototype.remove = function(ecModel, api) {
this._symbolDraw && this._symbolDraw.remove(true);
};
EffectScatterView2.type = "effectScatter";
return EffectScatterView2;
}(ChartView)
);
var EffectScatterSeriesModel = (
/** @class */
function(_super) {
__extends(EffectScatterSeriesModel2, _super);
function EffectScatterSeriesModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = EffectScatterSeriesModel2.type;
_this.hasSymbolVisual = true;
return _this;
}
EffectScatterSeriesModel2.prototype.getInitialData = function(option, ecModel) {
return createSeriesData(null, this, {
useEncodeDefaulter: true
});
};
EffectScatterSeriesModel2.prototype.brushSelector = function(dataIndex, data, selectors) {
return selectors.point(data.getItemLayout(dataIndex));
};
EffectScatterSeriesModel2.type = "series.effectScatter";
EffectScatterSeriesModel2.dependencies = ["grid", "polar"];
EffectScatterSeriesModel2.defaultOption = {
coordinateSystem: "cartesian2d",
// zlevel: 0,
z: 2,
legendHoverLink: true,
effectType: "ripple",
progressive: 0,
// When to show the effect, option: 'render'|'emphasis'
showEffectOn: "render",
clip: true,
// Ripple effect config
rippleEffect: {
period: 4,
// Scale of ripple
scale: 2.5,
// Brush type can be fill or stroke
brushType: "fill",
// Ripple number
number: 3
},
universalTransition: {
divideShape: "clone"
},
// Cartesian coordinate system
// xAxisIndex: 0,
// yAxisIndex: 0,
// Polar coordinate system
// polarIndex: 0,
// Geo coordinate system
// geoIndex: 0,
// symbol: null, // 图形类型
symbolSize: 10
// 图形大小,半宽(半径)参数,当图形为方向或菱形则总宽度为symbolSize * 2
// symbolRotate: null, // 图形旋转控制
// itemStyle: {
// opacity: 1
// }
};
return EffectScatterSeriesModel2;
}(SeriesModel)
);
function install$x(registers) {
registers.registerChartView(EffectScatterView);
registers.registerSeriesModel(EffectScatterSeriesModel);
registers.registerLayout(pointsLayout("effectScatter"));
}
var EffectLine = (
/** @class */
function(_super) {
__extends(EffectLine2, _super);
function EffectLine2(lineData, idx, seriesScope) {
var _this = _super.call(this) || this;
_this.add(_this.createLine(lineData, idx, seriesScope));
_this._updateEffectSymbol(lineData, idx);
return _this;
}
EffectLine2.prototype.createLine = function(lineData, idx, seriesScope) {
return new Line(lineData, idx, seriesScope);
};
EffectLine2.prototype._updateEffectSymbol = function(lineData, idx) {
var itemModel = lineData.getItemModel(idx);
var effectModel = itemModel.getModel("effect");
var size = effectModel.get("symbolSize");
var symbolType = effectModel.get("symbol");
if (!isArray$1(size)) {
size = [size, size];
}
var lineStyle = lineData.getItemVisual(idx, "style");
var color2 = effectModel.get("color") || lineStyle && lineStyle.stroke;
var symbol = this.childAt(1);
if (this._symbolType !== symbolType) {
this.remove(symbol);
symbol = createSymbol$1(symbolType, -0.5, -0.5, 1, 1, color2);
symbol.z2 = 100;
symbol.culling = true;
this.add(symbol);
}
if (!symbol) {
return;
}
symbol.setStyle("shadowColor", color2);
symbol.setStyle(effectModel.getItemStyle(["color"]));
symbol.scaleX = size[0];
symbol.scaleY = size[1];
symbol.setColor(color2);
this._symbolType = symbolType;
this._symbolScale = size;
this._updateEffectAnimation(lineData, effectModel, idx);
};
EffectLine2.prototype._updateEffectAnimation = function(lineData, effectModel, idx) {
var symbol = this.childAt(1);
if (!symbol) {
return;
}
var points2 = lineData.getItemLayout(idx);
var period = effectModel.get("period") * 1e3;
var loop = effectModel.get("loop");
var roundTrip = effectModel.get("roundTrip");
var constantSpeed = effectModel.get("constantSpeed");
var delayExpr = retrieve(effectModel.get("delay"), function(idx2) {
return idx2 / lineData.count() * period / 3;
});
symbol.ignore = true;
this._updateAnimationPoints(symbol, points2);
if (constantSpeed > 0) {
period = this._getLineLength(symbol) / constantSpeed * 1e3;
}
if (period !== this._period || loop !== this._loop || roundTrip !== this._roundTrip) {
symbol.stopAnimation();
var delayNum = void 0;
if (isFunction$1(delayExpr)) {
delayNum = delayExpr(idx);
} else {
delayNum = delayExpr;
}
if (symbol.__t > 0) {
delayNum = -period * symbol.__t;
}
this._animateSymbol(symbol, period, delayNum, loop, roundTrip);
}
this._period = period;
this._loop = loop;
this._roundTrip = roundTrip;
};
EffectLine2.prototype._animateSymbol = function(symbol, period, delayNum, loop, roundTrip) {
if (period > 0) {
symbol.__t = 0;
var self_1 = this;
var animator = symbol.animate("", loop).when(roundTrip ? period * 2 : period, {
__t: roundTrip ? 2 : 1
}).delay(delayNum).during(function() {
self_1._updateSymbolPosition(symbol);
});
if (!loop) {
animator.done(function() {
self_1.remove(symbol);
});
}
animator.start();
}
};
EffectLine2.prototype._getLineLength = function(symbol) {
return dist$1(symbol.__p1, symbol.__cp1) + dist$1(symbol.__cp1, symbol.__p2);
};
EffectLine2.prototype._updateAnimationPoints = function(symbol, points2) {
symbol.__p1 = points2[0];
symbol.__p2 = points2[1];
symbol.__cp1 = points2[2] || [(points2[0][0] + points2[1][0]) / 2, (points2[0][1] + points2[1][1]) / 2];
};
EffectLine2.prototype.updateData = function(lineData, idx, seriesScope) {
this.childAt(0).updateData(lineData, idx, seriesScope);
this._updateEffectSymbol(lineData, idx);
};
EffectLine2.prototype._updateSymbolPosition = function(symbol) {
var p1 = symbol.__p1;
var p2 = symbol.__p2;
var cp1 = symbol.__cp1;
var t2 = symbol.__t < 1 ? symbol.__t : 2 - symbol.__t;
var pos = [symbol.x, symbol.y];
var lastPos = pos.slice();
var quadraticAt2 = quadraticAt$1;
var quadraticDerivativeAt$1 = quadraticDerivativeAt;
pos[0] = quadraticAt2(p1[0], cp1[0], p2[0], t2);
pos[1] = quadraticAt2(p1[1], cp1[1], p2[1], t2);
var tx = symbol.__t < 1 ? quadraticDerivativeAt$1(p1[0], cp1[0], p2[0], t2) : quadraticDerivativeAt$1(p2[0], cp1[0], p1[0], 1 - t2);
var ty = symbol.__t < 1 ? quadraticDerivativeAt$1(p1[1], cp1[1], p2[1], t2) : quadraticDerivativeAt$1(p2[1], cp1[1], p1[1], 1 - t2);
symbol.rotation = -Math.atan2(ty, tx) - Math.PI / 2;
if (this._symbolType === "line" || this._symbolType === "rect" || this._symbolType === "roundRect") {
if (symbol.__lastT !== void 0 && symbol.__lastT < symbol.__t) {
symbol.scaleY = dist$1(lastPos, pos) * 1.05;
if (t2 === 1) {
pos[0] = lastPos[0] + (pos[0] - lastPos[0]) / 2;
pos[1] = lastPos[1] + (pos[1] - lastPos[1]) / 2;
}
} else if (symbol.__lastT === 1) {
symbol.scaleY = 2 * dist$1(p1, pos);
} else {
symbol.scaleY = this._symbolScale[1];
}
}
symbol.__lastT = symbol.__t;
symbol.ignore = false;
symbol.x = pos[0];
symbol.y = pos[1];
};
EffectLine2.prototype.updateLayout = function(lineData, idx) {
this.childAt(0).updateLayout(lineData, idx);
var effectModel = lineData.getItemModel(idx).getModel("effect");
this._updateEffectAnimation(lineData, effectModel, idx);
};
return EffectLine2;
}(Group$3)
);
var Polyline = (
/** @class */
function(_super) {
__extends(Polyline2, _super);
function Polyline2(lineData, idx, seriesScope) {
var _this = _super.call(this) || this;
_this._createPolyline(lineData, idx, seriesScope);
return _this;
}
Polyline2.prototype._createPolyline = function(lineData, idx, seriesScope) {
var points2 = lineData.getItemLayout(idx);
var line2 = new Polyline$1({
shape: {
points: points2
}
});
this.add(line2);
this._updateCommonStl(lineData, idx, seriesScope);
};
Polyline2.prototype.updateData = function(lineData, idx, seriesScope) {
var seriesModel = lineData.hostModel;
var line2 = this.childAt(0);
var target = {
shape: {
points: lineData.getItemLayout(idx)
}
};
updateProps$1(line2, target, seriesModel, idx);
this._updateCommonStl(lineData, idx, seriesScope);
};
Polyline2.prototype._updateCommonStl = function(lineData, idx, seriesScope) {
var line2 = this.childAt(0);
var itemModel = lineData.getItemModel(idx);
var emphasisLineStyle = seriesScope && seriesScope.emphasisLineStyle;
var focus = seriesScope && seriesScope.focus;
var blurScope = seriesScope && seriesScope.blurScope;
var emphasisDisabled = seriesScope && seriesScope.emphasisDisabled;
if (!seriesScope || lineData.hasItemOption) {
var emphasisModel = itemModel.getModel("emphasis");
emphasisLineStyle = emphasisModel.getModel("lineStyle").getLineStyle();
emphasisDisabled = emphasisModel.get("disabled");
focus = emphasisModel.get("focus");
blurScope = emphasisModel.get("blurScope");
}
line2.useStyle(lineData.getItemVisual(idx, "style"));
line2.style.fill = null;
line2.style.strokeNoScale = true;
var lineEmphasisState = line2.ensureState("emphasis");
lineEmphasisState.style = emphasisLineStyle;
toggleHoverEmphasis(this, focus, blurScope, emphasisDisabled);
};
Polyline2.prototype.updateLayout = function(lineData, idx) {
var polyline = this.childAt(0);
polyline.setShape("points", lineData.getItemLayout(idx));
};
return Polyline2;
}(Group$3)
);
var EffectPolyline = (
/** @class */
function(_super) {
__extends(EffectPolyline2, _super);
function EffectPolyline2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this._lastFrame = 0;
_this._lastFramePercent = 0;
return _this;
}
EffectPolyline2.prototype.createLine = function(lineData, idx, seriesScope) {
return new Polyline(lineData, idx, seriesScope);
};
EffectPolyline2.prototype._updateAnimationPoints = function(symbol, points2) {
this._points = points2;
var accLenArr = [0];
var len2 = 0;
for (var i = 1; i < points2.length; i++) {
var p1 = points2[i - 1];
var p2 = points2[i];
len2 += dist$1(p1, p2);
accLenArr.push(len2);
}
if (len2 === 0) {
this._length = 0;
return;
}
for (var i = 0; i < accLenArr.length; i++) {
accLenArr[i] /= len2;
}
this._offsets = accLenArr;
this._length = len2;
};
EffectPolyline2.prototype._getLineLength = function() {
return this._length;
};
EffectPolyline2.prototype._updateSymbolPosition = function(symbol) {
var t2 = symbol.__t < 1 ? symbol.__t : 2 - symbol.__t;
var points2 = this._points;
var offsets = this._offsets;
var len2 = points2.length;
if (!offsets) {
return;
}
var lastFrame = this._lastFrame;
var frame;
if (t2 < this._lastFramePercent) {
var start2 = Math.min(lastFrame + 1, len2 - 1);
for (frame = start2; frame >= 0; frame--) {
if (offsets[frame] <= t2) {
break;
}
}
frame = Math.min(frame, len2 - 2);
} else {
for (frame = lastFrame; frame < len2; frame++) {
if (offsets[frame] > t2) {
break;
}
}
frame = Math.min(frame - 1, len2 - 2);
}
var p2 = (t2 - offsets[frame]) / (offsets[frame + 1] - offsets[frame]);
var p0 = points2[frame];
var p1 = points2[frame + 1];
symbol.x = p0[0] * (1 - p2) + p2 * p1[0];
symbol.y = p0[1] * (1 - p2) + p2 * p1[1];
var tx = symbol.__t < 1 ? p1[0] - p0[0] : p0[0] - p1[0];
var ty = symbol.__t < 1 ? p1[1] - p0[1] : p0[1] - p1[1];
symbol.rotation = -Math.atan2(ty, tx) - Math.PI / 2;
this._lastFrame = frame;
this._lastFramePercent = t2;
symbol.ignore = false;
};
return EffectPolyline2;
}(EffectLine)
);
var LargeLinesPathShape = (
/** @class */
/* @__PURE__ */ function() {
function LargeLinesPathShape2() {
this.polyline = false;
this.curveness = 0;
this.segs = [];
}
return LargeLinesPathShape2;
}()
);
var LargeLinesPath = (
/** @class */
function(_super) {
__extends(LargeLinesPath2, _super);
function LargeLinesPath2(opts) {
var _this = _super.call(this, opts) || this;
_this._off = 0;
_this.hoverDataIdx = -1;
return _this;
}
LargeLinesPath2.prototype.reset = function() {
this.notClear = false;
this._off = 0;
};
LargeLinesPath2.prototype.getDefaultStyle = function() {
return {
stroke: "#000",
fill: null
};
};
LargeLinesPath2.prototype.getDefaultShape = function() {
return new LargeLinesPathShape();
};
LargeLinesPath2.prototype.buildPath = function(ctx, shape) {
var segs = shape.segs;
var curveness = shape.curveness;
var i;
if (shape.polyline) {
for (i = this._off; i < segs.length; ) {
var count2 = segs[i++];
if (count2 > 0) {
ctx.moveTo(segs[i++], segs[i++]);
for (var k2 = 1; k2 < count2; k2++) {
ctx.lineTo(segs[i++], segs[i++]);
}
}
}
} else {
for (i = this._off; i < segs.length; ) {
var x0 = segs[i++];
var y0 = segs[i++];
var x1 = segs[i++];
var y1 = segs[i++];
ctx.moveTo(x0, y0);
if (curveness > 0) {
var x2 = (x0 + x1) / 2 - (y0 - y1) * curveness;
var y2 = (y0 + y1) / 2 - (x1 - x0) * curveness;
ctx.quadraticCurveTo(x2, y2, x1, y1);
} else {
ctx.lineTo(x1, y1);
}
}
}
if (this.incremental) {
this._off = i;
this.notClear = true;
}
};
LargeLinesPath2.prototype.findDataIndex = function(x2, y2) {
var shape = this.shape;
var segs = shape.segs;
var curveness = shape.curveness;
var lineWidth = this.style.lineWidth;
if (shape.polyline) {
var dataIndex = 0;
for (var i = 0; i < segs.length; ) {
var count2 = segs[i++];
if (count2 > 0) {
var x0 = segs[i++];
var y0 = segs[i++];
for (var k2 = 1; k2 < count2; k2++) {
var x1 = segs[i++];
var y1 = segs[i++];
if (containStroke$4(x0, y0, x1, y1, lineWidth, x2, y2)) {
return dataIndex;
}
}
}
dataIndex++;
}
} else {
var dataIndex = 0;
for (var i = 0; i < segs.length; ) {
var x0 = segs[i++];
var y0 = segs[i++];
var x1 = segs[i++];
var y1 = segs[i++];
if (curveness > 0) {
var x22 = (x0 + x1) / 2 - (y0 - y1) * curveness;
var y22 = (y0 + y1) / 2 - (x1 - x0) * curveness;
if (containStroke$2(x0, y0, x22, y22, x1, y1, lineWidth, x2, y2)) {
return dataIndex;
}
} else {
if (containStroke$4(x0, y0, x1, y1, lineWidth, x2, y2)) {
return dataIndex;
}
}
dataIndex++;
}
}
return -1;
};
LargeLinesPath2.prototype.contain = function(x2, y2) {
var localPos = this.transformCoordToLocal(x2, y2);
var rect = this.getBoundingRect();
x2 = localPos[0];
y2 = localPos[1];
if (rect.contain(x2, y2)) {
var dataIdx = this.hoverDataIdx = this.findDataIndex(x2, y2);
return dataIdx >= 0;
}
this.hoverDataIdx = -1;
return false;
};
LargeLinesPath2.prototype.getBoundingRect = function() {
var rect = this._rect;
if (!rect) {
var shape = this.shape;
var points2 = shape.segs;
var minX = Infinity;
var minY = Infinity;
var maxX = -Infinity;
var maxY = -Infinity;
for (var i = 0; i < points2.length; ) {
var x2 = points2[i++];
var y2 = points2[i++];
minX = Math.min(x2, minX);
maxX = Math.max(x2, maxX);
minY = Math.min(y2, minY);
maxY = Math.max(y2, maxY);
}
rect = this._rect = new BoundingRect(minX, minY, maxX, maxY);
}
return rect;
};
return LargeLinesPath2;
}(Path)
);
var LargeLineDraw = (
/** @class */
function() {
function LargeLineDraw2() {
this.group = new Group$3();
}
LargeLineDraw2.prototype.updateData = function(data) {
this._clear();
var lineEl = this._create();
lineEl.setShape({
segs: data.getLayout("linesPoints")
});
this._setCommon(lineEl, data);
};
LargeLineDraw2.prototype.incrementalPrepareUpdate = function(data) {
this.group.removeAll();
this._clear();
};
LargeLineDraw2.prototype.incrementalUpdate = function(taskParams, data) {
var lastAdded = this._newAdded[0];
var linePoints = data.getLayout("linesPoints");
var oldSegs = lastAdded && lastAdded.shape.segs;
if (oldSegs && oldSegs.length < 2e4) {
var oldLen = oldSegs.length;
var newSegs = new Float32Array(oldLen + linePoints.length);
newSegs.set(oldSegs);
newSegs.set(linePoints, oldLen);
lastAdded.setShape({
segs: newSegs
});
} else {
this._newAdded = [];
var lineEl = this._create();
lineEl.incremental = true;
lineEl.setShape({
segs: linePoints
});
this._setCommon(lineEl, data);
lineEl.__startIndex = taskParams.start;
}
};
LargeLineDraw2.prototype.remove = function() {
this._clear();
};
LargeLineDraw2.prototype.eachRendered = function(cb2) {
this._newAdded[0] && cb2(this._newAdded[0]);
};
LargeLineDraw2.prototype._create = function() {
var lineEl = new LargeLinesPath({
cursor: "default",
ignoreCoarsePointer: true
});
this._newAdded.push(lineEl);
this.group.add(lineEl);
return lineEl;
};
LargeLineDraw2.prototype._setCommon = function(lineEl, data, isIncremental) {
var hostModel = data.hostModel;
lineEl.setShape({
polyline: hostModel.get("polyline"),
curveness: hostModel.get(["lineStyle", "curveness"])
});
lineEl.useStyle(hostModel.getModel("lineStyle").getLineStyle());
lineEl.style.strokeNoScale = true;
var style2 = data.getVisual("style");
if (style2 && style2.stroke) {
lineEl.setStyle("stroke", style2.stroke);
}
lineEl.setStyle("fill", null);
var ecData = getECData(lineEl);
ecData.seriesIndex = hostModel.seriesIndex;
lineEl.on("mousemove", function(e2) {
ecData.dataIndex = null;
var dataIndex = lineEl.hoverDataIdx;
if (dataIndex > 0) {
ecData.dataIndex = dataIndex + lineEl.__startIndex;
}
});
};
LargeLineDraw2.prototype._clear = function() {
this._newAdded = [];
this.group.removeAll();
};
return LargeLineDraw2;
}()
);
var linesLayout = {
seriesType: "lines",
plan: createRenderPlanner(),
reset: function(seriesModel) {
var coordSys = seriesModel.coordinateSystem;
if (!coordSys) {
return;
}
var isPolyline = seriesModel.get("polyline");
var isLarge = seriesModel.pipelineContext.large;
return {
progress: function(params, lineData) {
var lineCoords = [];
if (isLarge) {
var points2 = void 0;
var segCount = params.end - params.start;
if (isPolyline) {
var totalCoordsCount = 0;
for (var i = params.start; i < params.end; i++) {
totalCoordsCount += seriesModel.getLineCoordsCount(i);
}
points2 = new Float32Array(segCount + totalCoordsCount * 2);
} else {
points2 = new Float32Array(segCount * 4);
}
var offset2 = 0;
var pt = [];
for (var i = params.start; i < params.end; i++) {
var len2 = seriesModel.getLineCoords(i, lineCoords);
if (isPolyline) {
points2[offset2++] = len2;
}
for (var k2 = 0; k2 < len2; k2++) {
pt = coordSys.dataToPoint(lineCoords[k2], false, pt);
points2[offset2++] = pt[0];
points2[offset2++] = pt[1];
}
}
lineData.setLayout("linesPoints", points2);
} else {
for (var i = params.start; i < params.end; i++) {
var itemModel = lineData.getItemModel(i);
var len2 = seriesModel.getLineCoords(i, lineCoords);
var pts = [];
if (isPolyline) {
for (var j = 0; j < len2; j++) {
pts.push(coordSys.dataToPoint(lineCoords[j]));
}
} else {
pts[0] = coordSys.dataToPoint(lineCoords[0]);
pts[1] = coordSys.dataToPoint(lineCoords[1]);
var curveness = itemModel.get(["lineStyle", "curveness"]);
if (+curveness) {
pts[2] = [(pts[0][0] + pts[1][0]) / 2 - (pts[0][1] - pts[1][1]) * curveness, (pts[0][1] + pts[1][1]) / 2 - (pts[1][0] - pts[0][0]) * curveness];
}
}
lineData.setItemLayout(i, pts);
}
}
}
};
}
};
var LinesView = (
/** @class */
function(_super) {
__extends(LinesView2, _super);
function LinesView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = LinesView2.type;
return _this;
}
LinesView2.prototype.render = function(seriesModel, ecModel, api) {
var data = seriesModel.getData();
var lineDraw = this._updateLineDraw(data, seriesModel);
var zlevel = seriesModel.get("zlevel");
var trailLength = seriesModel.get(["effect", "trailLength"]);
var zr = api.getZr();
var isSvg = zr.painter.getType() === "svg";
if (!isSvg) {
zr.painter.getLayer(zlevel).clear(true);
}
if (this._lastZlevel != null && !isSvg) {
zr.configLayer(this._lastZlevel, {
motionBlur: false
});
}
if (this._showEffect(seriesModel) && trailLength > 0) {
if (!isSvg) {
zr.configLayer(zlevel, {
motionBlur: true,
lastFrameAlpha: Math.max(Math.min(trailLength / 10 + 0.9, 1), 0)
});
}
}
lineDraw.updateData(data);
var clipPath = seriesModel.get("clip", true) && createClipPath(seriesModel.coordinateSystem, false, seriesModel);
if (clipPath) {
this.group.setClipPath(clipPath);
} else {
this.group.removeClipPath();
}
this._lastZlevel = zlevel;
this._finished = true;
};
LinesView2.prototype.incrementalPrepareRender = function(seriesModel, ecModel, api) {
var data = seriesModel.getData();
var lineDraw = this._updateLineDraw(data, seriesModel);
lineDraw.incrementalPrepareUpdate(data);
this._clearLayer(api);
this._finished = false;
};
LinesView2.prototype.incrementalRender = function(taskParams, seriesModel, ecModel) {
this._lineDraw.incrementalUpdate(taskParams, seriesModel.getData());
this._finished = taskParams.end === seriesModel.getData().count();
};
LinesView2.prototype.eachRendered = function(cb2) {
this._lineDraw && this._lineDraw.eachRendered(cb2);
};
LinesView2.prototype.updateTransform = function(seriesModel, ecModel, api) {
var data = seriesModel.getData();
var pipelineContext = seriesModel.pipelineContext;
if (!this._finished || pipelineContext.large || pipelineContext.progressiveRender) {
return {
update: true
};
} else {
var res = linesLayout.reset(seriesModel, ecModel, api);
if (res.progress) {
res.progress({
start: 0,
end: data.count(),
count: data.count()
}, data);
}
this._lineDraw.updateLayout();
this._clearLayer(api);
}
};
LinesView2.prototype._updateLineDraw = function(data, seriesModel) {
var lineDraw = this._lineDraw;
var hasEffect = this._showEffect(seriesModel);
var isPolyline = !!seriesModel.get("polyline");
var pipelineContext = seriesModel.pipelineContext;
var isLargeDraw = pipelineContext.large;
if (!lineDraw || hasEffect !== this._hasEffet || isPolyline !== this._isPolyline || isLargeDraw !== this._isLargeDraw) {
if (lineDraw) {
lineDraw.remove();
}
lineDraw = this._lineDraw = isLargeDraw ? new LargeLineDraw() : new LineDraw(isPolyline ? hasEffect ? EffectPolyline : Polyline : hasEffect ? EffectLine : Line);
this._hasEffet = hasEffect;
this._isPolyline = isPolyline;
this._isLargeDraw = isLargeDraw;
}
this.group.add(lineDraw.group);
return lineDraw;
};
LinesView2.prototype._showEffect = function(seriesModel) {
return !!seriesModel.get(["effect", "show"]);
};
LinesView2.prototype._clearLayer = function(api) {
var zr = api.getZr();
var isSvg = zr.painter.getType() === "svg";
if (!isSvg && this._lastZlevel != null) {
zr.painter.getLayer(this._lastZlevel).clear(true);
}
};
LinesView2.prototype.remove = function(ecModel, api) {
this._lineDraw && this._lineDraw.remove();
this._lineDraw = null;
this._clearLayer(api);
};
LinesView2.prototype.dispose = function(ecModel, api) {
this.remove(ecModel, api);
};
LinesView2.type = "lines";
return LinesView2;
}(ChartView)
);
var Uint32Arr = typeof Uint32Array === "undefined" ? Array : Uint32Array;
var Float64Arr = typeof Float64Array === "undefined" ? Array : Float64Array;
function compatEc2(seriesOpt) {
var data = seriesOpt.data;
if (data && data[0] && data[0][0] && data[0][0].coord) {
seriesOpt.data = map$1(data, function(itemOpt) {
var coords = [itemOpt[0].coord, itemOpt[1].coord];
var target = {
coords
};
if (itemOpt[0].name) {
target.fromName = itemOpt[0].name;
}
if (itemOpt[1].name) {
target.toName = itemOpt[1].name;
}
return mergeAll([target, itemOpt[0], itemOpt[1]]);
});
}
}
var LinesSeriesModel = (
/** @class */
function(_super) {
__extends(LinesSeriesModel2, _super);
function LinesSeriesModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = LinesSeriesModel2.type;
_this.visualStyleAccessPath = "lineStyle";
_this.visualDrawType = "stroke";
return _this;
}
LinesSeriesModel2.prototype.init = function(option) {
option.data = option.data || [];
compatEc2(option);
var result = this._processFlatCoordsArray(option.data);
this._flatCoords = result.flatCoords;
this._flatCoordsOffset = result.flatCoordsOffset;
if (result.flatCoords) {
option.data = new Float32Array(result.count);
}
_super.prototype.init.apply(this, arguments);
};
LinesSeriesModel2.prototype.mergeOption = function(option) {
compatEc2(option);
if (option.data) {
var result = this._processFlatCoordsArray(option.data);
this._flatCoords = result.flatCoords;
this._flatCoordsOffset = result.flatCoordsOffset;
if (result.flatCoords) {
option.data = new Float32Array(result.count);
}
}
_super.prototype.mergeOption.apply(this, arguments);
};
LinesSeriesModel2.prototype.appendData = function(params) {
var result = this._processFlatCoordsArray(params.data);
if (result.flatCoords) {
if (!this._flatCoords) {
this._flatCoords = result.flatCoords;
this._flatCoordsOffset = result.flatCoordsOffset;
} else {
this._flatCoords = concatArray(this._flatCoords, result.flatCoords);
this._flatCoordsOffset = concatArray(this._flatCoordsOffset, result.flatCoordsOffset);
}
params.data = new Float32Array(result.count);
}
this.getRawData().appendData(params.data);
};
LinesSeriesModel2.prototype._getCoordsFromItemModel = function(idx) {
var itemModel = this.getData().getItemModel(idx);
var coords = itemModel.option instanceof Array ? itemModel.option : itemModel.getShallow("coords");
return coords;
};
LinesSeriesModel2.prototype.getLineCoordsCount = function(idx) {
if (this._flatCoordsOffset) {
return this._flatCoordsOffset[idx * 2 + 1];
} else {
return this._getCoordsFromItemModel(idx).length;
}
};
LinesSeriesModel2.prototype.getLineCoords = function(idx, out2) {
if (this._flatCoordsOffset) {
var offset2 = this._flatCoordsOffset[idx * 2];
var len2 = this._flatCoordsOffset[idx * 2 + 1];
for (var i = 0; i < len2; i++) {
out2[i] = out2[i] || [];
out2[i][0] = this._flatCoords[offset2 + i * 2];
out2[i][1] = this._flatCoords[offset2 + i * 2 + 1];
}
return len2;
} else {
var coords = this._getCoordsFromItemModel(idx);
for (var i = 0; i < coords.length; i++) {
out2[i] = out2[i] || [];
out2[i][0] = coords[i][0];
out2[i][1] = coords[i][1];
}
return coords.length;
}
};
LinesSeriesModel2.prototype._processFlatCoordsArray = function(data) {
var startOffset = 0;
if (this._flatCoords) {
startOffset = this._flatCoords.length;
}
if (isNumber(data[0])) {
var len2 = data.length;
var coordsOffsetAndLenStorage = new Uint32Arr(len2);
var coordsStorage = new Float64Arr(len2);
var coordsCursor = 0;
var offsetCursor = 0;
var dataCount = 0;
for (var i = 0; i < len2; ) {
dataCount++;
var count2 = data[i++];
coordsOffsetAndLenStorage[offsetCursor++] = coordsCursor + startOffset;
coordsOffsetAndLenStorage[offsetCursor++] = count2;
for (var k2 = 0; k2 < count2; k2++) {
var x2 = data[i++];
var y2 = data[i++];
coordsStorage[coordsCursor++] = x2;
coordsStorage[coordsCursor++] = y2;
}
}
return {
flatCoordsOffset: new Uint32Array(coordsOffsetAndLenStorage.buffer, 0, offsetCursor),
flatCoords: coordsStorage,
count: dataCount
};
}
return {
flatCoordsOffset: null,
flatCoords: null,
count: data.length
};
};
LinesSeriesModel2.prototype.getInitialData = function(option, ecModel) {
var lineData = new SeriesData(["value"], this);
lineData.hasItemOption = false;
lineData.initData(option.data, [], function(dataItem, dimName, dataIndex, dimIndex) {
if (dataItem instanceof Array) {
return NaN;
} else {
lineData.hasItemOption = true;
var value = dataItem.value;
if (value != null) {
return value instanceof Array ? value[dimIndex] : value;
}
}
});
return lineData;
};
LinesSeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) {
var data = this.getData();
var itemModel = data.getItemModel(dataIndex);
var name = itemModel.get("name");
if (name) {
return name;
}
var fromName = itemModel.get("fromName");
var toName2 = itemModel.get("toName");
var nameArr = [];
fromName != null && nameArr.push(fromName);
toName2 != null && nameArr.push(toName2);
return createTooltipMarkup("nameValue", {
name: nameArr.join(" > ")
});
};
LinesSeriesModel2.prototype.preventIncremental = function() {
return !!this.get(["effect", "show"]);
};
LinesSeriesModel2.prototype.getProgressive = function() {
var progressive = this.option.progressive;
if (progressive == null) {
return this.option.large ? 1e4 : this.get("progressive");
}
return progressive;
};
LinesSeriesModel2.prototype.getProgressiveThreshold = function() {
var progressiveThreshold = this.option.progressiveThreshold;
if (progressiveThreshold == null) {
return this.option.large ? 2e4 : this.get("progressiveThreshold");
}
return progressiveThreshold;
};
LinesSeriesModel2.prototype.getZLevelKey = function() {
var effectModel = this.getModel("effect");
var trailLength = effectModel.get("trailLength");
return this.getData().count() > this.getProgressiveThreshold() ? this.id : effectModel.get("show") && trailLength > 0 ? trailLength + "" : "";
};
LinesSeriesModel2.type = "series.lines";
LinesSeriesModel2.dependencies = ["grid", "polar", "geo", "calendar"];
LinesSeriesModel2.defaultOption = {
coordinateSystem: "geo",
// zlevel: 0,
z: 2,
legendHoverLink: true,
// Cartesian coordinate system
xAxisIndex: 0,
yAxisIndex: 0,
symbol: ["none", "none"],
symbolSize: [10, 10],
// Geo coordinate system
geoIndex: 0,
effect: {
show: false,
period: 4,
constantSpeed: 0,
symbol: "circle",
symbolSize: 3,
loop: true,
trailLength: 0.2
},
large: false,
// Available when large is true
largeThreshold: 2e3,
polyline: false,
clip: true,
label: {
show: false,
position: "end"
// distance: 5,
// formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调
},
lineStyle: {
opacity: 0.5
}
};
return LinesSeriesModel2;
}(SeriesModel)
);
function normalize(a) {
if (!(a instanceof Array)) {
a = [a, a];
}
return a;
}
var linesVisual = {
seriesType: "lines",
reset: function(seriesModel) {
var symbolType = normalize(seriesModel.get("symbol"));
var symbolSize = normalize(seriesModel.get("symbolSize"));
var data = seriesModel.getData();
data.setVisual("fromSymbol", symbolType && symbolType[0]);
data.setVisual("toSymbol", symbolType && symbolType[1]);
data.setVisual("fromSymbolSize", symbolSize && symbolSize[0]);
data.setVisual("toSymbolSize", symbolSize && symbolSize[1]);
function dataEach(data2, idx) {
var itemModel = data2.getItemModel(idx);
var symbolType2 = normalize(itemModel.getShallow("symbol", true));
var symbolSize2 = normalize(itemModel.getShallow("symbolSize", true));
symbolType2[0] && data2.setItemVisual(idx, "fromSymbol", symbolType2[0]);
symbolType2[1] && data2.setItemVisual(idx, "toSymbol", symbolType2[1]);
symbolSize2[0] && data2.setItemVisual(idx, "fromSymbolSize", symbolSize2[0]);
symbolSize2[1] && data2.setItemVisual(idx, "toSymbolSize", symbolSize2[1]);
}
return {
dataEach: data.hasItemOption ? dataEach : null
};
}
};
function install$w(registers) {
registers.registerChartView(LinesView);
registers.registerSeriesModel(LinesSeriesModel);
registers.registerLayout(linesLayout);
registers.registerVisual(linesVisual);
}
var GRADIENT_LEVELS = 256;
var HeatmapLayer = (
/** @class */
function() {
function HeatmapLayer2() {
this.blurSize = 30;
this.pointSize = 20;
this.maxOpacity = 1;
this.minOpacity = 0;
this._gradientPixels = {
inRange: null,
outOfRange: null
};
var canvas = platformApi.createCanvas();
this.canvas = canvas;
}
HeatmapLayer2.prototype.update = function(data, width, height, normalize2, colorFunc, isInRange) {
var brush2 = this._getBrush();
var gradientInRange = this._getGradient(colorFunc, "inRange");
var gradientOutOfRange = this._getGradient(colorFunc, "outOfRange");
var r2 = this.pointSize + this.blurSize;
var canvas = this.canvas;
var ctx = canvas.getContext("2d");
var len2 = data.length;
canvas.width = width;
canvas.height = height;
for (var i = 0; i < len2; ++i) {
var p2 = data[i];
var x2 = p2[0];
var y2 = p2[1];
var value = p2[2];
var alpha = normalize2(value);
ctx.globalAlpha = alpha;
ctx.drawImage(brush2, x2 - r2, y2 - r2);
}
if (!canvas.width || !canvas.height) {
return canvas;
}
var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
var pixels = imageData.data;
var offset2 = 0;
var pixelLen = pixels.length;
var minOpacity = this.minOpacity;
var maxOpacity = this.maxOpacity;
var diffOpacity = maxOpacity - minOpacity;
while (offset2 < pixelLen) {
var alpha = pixels[offset2 + 3] / 256;
var gradientOffset = Math.floor(alpha * (GRADIENT_LEVELS - 1)) * 4;
if (alpha > 0) {
var gradient = isInRange(alpha) ? gradientInRange : gradientOutOfRange;
alpha > 0 && (alpha = alpha * diffOpacity + minOpacity);
pixels[offset2++] = gradient[gradientOffset];
pixels[offset2++] = gradient[gradientOffset + 1];
pixels[offset2++] = gradient[gradientOffset + 2];
pixels[offset2++] = gradient[gradientOffset + 3] * alpha * 256;
} else {
offset2 += 4;
}
}
ctx.putImageData(imageData, 0, 0);
return canvas;
};
HeatmapLayer2.prototype._getBrush = function() {
var brushCanvas = this._brushCanvas || (this._brushCanvas = platformApi.createCanvas());
var r2 = this.pointSize + this.blurSize;
var d2 = r2 * 2;
brushCanvas.width = d2;
brushCanvas.height = d2;
var ctx = brushCanvas.getContext("2d");
ctx.clearRect(0, 0, d2, d2);
ctx.shadowOffsetX = d2;
ctx.shadowBlur = this.blurSize;
ctx.shadowColor = "#000";
ctx.beginPath();
ctx.arc(-r2, r2, this.pointSize, 0, Math.PI * 2, true);
ctx.closePath();
ctx.fill();
return brushCanvas;
};
HeatmapLayer2.prototype._getGradient = function(colorFunc, state) {
var gradientPixels = this._gradientPixels;
var pixelsSingleState = gradientPixels[state] || (gradientPixels[state] = new Uint8ClampedArray(256 * 4));
var color2 = [0, 0, 0, 0];
var off = 0;
for (var i = 0; i < 256; i++) {
colorFunc[state](i / 255, true, color2);
pixelsSingleState[off++] = color2[0];
pixelsSingleState[off++] = color2[1];
pixelsSingleState[off++] = color2[2];
pixelsSingleState[off++] = color2[3];
}
return pixelsSingleState;
};
return HeatmapLayer2;
}()
);
function getIsInPiecewiseRange(dataExtent, pieceList, selected) {
var dataSpan = dataExtent[1] - dataExtent[0];
pieceList = map$1(pieceList, function(piece) {
return {
interval: [(piece.interval[0] - dataExtent[0]) / dataSpan, (piece.interval[1] - dataExtent[0]) / dataSpan]
};
});
var len2 = pieceList.length;
var lastIndex = 0;
return function(val) {
var i;
for (i = lastIndex; i < len2; i++) {
var interval = pieceList[i].interval;
if (interval[0] <= val && val <= interval[1]) {
lastIndex = i;
break;
}
}
if (i === len2) {
for (i = lastIndex - 1; i >= 0; i--) {
var interval = pieceList[i].interval;
if (interval[0] <= val && val <= interval[1]) {
lastIndex = i;
break;
}
}
}
return i >= 0 && i < len2 && selected[i];
};
}
function getIsInContinuousRange(dataExtent, range3) {
var dataSpan = dataExtent[1] - dataExtent[0];
range3 = [(range3[0] - dataExtent[0]) / dataSpan, (range3[1] - dataExtent[0]) / dataSpan];
return function(val) {
return val >= range3[0] && val <= range3[1];
};
}
function isGeoCoordSys(coordSys) {
var dimensions = coordSys.dimensions;
return dimensions[0] === "lng" && dimensions[1] === "lat";
}
var HeatmapView = (
/** @class */
function(_super) {
__extends(HeatmapView2, _super);
function HeatmapView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = HeatmapView2.type;
return _this;
}
HeatmapView2.prototype.render = function(seriesModel, ecModel, api) {
var visualMapOfThisSeries;
ecModel.eachComponent("visualMap", function(visualMap) {
visualMap.eachTargetSeries(function(targetSeries) {
if (targetSeries === seriesModel) {
visualMapOfThisSeries = visualMap;
}
});
});
this._progressiveEls = null;
this.group.removeAll();
var coordSys = seriesModel.coordinateSystem;
if (coordSys.type === "cartesian2d" || coordSys.type === "calendar") {
this._renderOnCartesianAndCalendar(seriesModel, api, 0, seriesModel.getData().count());
} else if (isGeoCoordSys(coordSys)) {
this._renderOnGeo(coordSys, seriesModel, visualMapOfThisSeries, api);
}
};
HeatmapView2.prototype.incrementalPrepareRender = function(seriesModel, ecModel, api) {
this.group.removeAll();
};
HeatmapView2.prototype.incrementalRender = function(params, seriesModel, ecModel, api) {
var coordSys = seriesModel.coordinateSystem;
if (coordSys) {
if (isGeoCoordSys(coordSys)) {
this.render(seriesModel, ecModel, api);
} else {
this._progressiveEls = [];
this._renderOnCartesianAndCalendar(seriesModel, api, params.start, params.end, true);
}
}
};
HeatmapView2.prototype.eachRendered = function(cb2) {
traverseElements(this._progressiveEls || this.group, cb2);
};
HeatmapView2.prototype._renderOnCartesianAndCalendar = function(seriesModel, api, start2, end2, incremental) {
var coordSys = seriesModel.coordinateSystem;
var isCartesian2d = isCoordinateSystemType(coordSys, "cartesian2d");
var width;
var height;
var xAxisExtent;
var yAxisExtent;
if (isCartesian2d) {
var xAxis = coordSys.getAxis("x");
var yAxis = coordSys.getAxis("y");
width = xAxis.getBandWidth() + 0.5;
height = yAxis.getBandWidth() + 0.5;
xAxisExtent = xAxis.scale.getExtent();
yAxisExtent = yAxis.scale.getExtent();
}
var group = this.group;
var data = seriesModel.getData();
var emphasisStyle = seriesModel.getModel(["emphasis", "itemStyle"]).getItemStyle();
var blurStyle = seriesModel.getModel(["blur", "itemStyle"]).getItemStyle();
var selectStyle = seriesModel.getModel(["select", "itemStyle"]).getItemStyle();
var borderRadius = seriesModel.get(["itemStyle", "borderRadius"]);
var labelStatesModels = getLabelStatesModels(seriesModel);
var emphasisModel = seriesModel.getModel("emphasis");
var focus = emphasisModel.get("focus");
var blurScope = emphasisModel.get("blurScope");
var emphasisDisabled = emphasisModel.get("disabled");
var dataDims = isCartesian2d ? [data.mapDimension("x"), data.mapDimension("y"), data.mapDimension("value")] : [data.mapDimension("time"), data.mapDimension("value")];
for (var idx = start2; idx < end2; idx++) {
var rect = void 0;
var style2 = data.getItemVisual(idx, "style");
if (isCartesian2d) {
var dataDimX = data.get(dataDims[0], idx);
var dataDimY = data.get(dataDims[1], idx);
if (isNaN(data.get(dataDims[2], idx)) || isNaN(dataDimX) || isNaN(dataDimY) || dataDimX < xAxisExtent[0] || dataDimX > xAxisExtent[1] || dataDimY < yAxisExtent[0] || dataDimY > yAxisExtent[1]) {
continue;
}
var point = coordSys.dataToPoint([dataDimX, dataDimY]);
rect = new Rect$2({
shape: {
x: point[0] - width / 2,
y: point[1] - height / 2,
width,
height
},
style: style2
});
} else {
if (isNaN(data.get(dataDims[1], idx))) {
continue;
}
rect = new Rect$2({
z2: 1,
shape: coordSys.dataToRect([data.get(dataDims[0], idx)]).contentShape,
style: style2
});
}
if (data.hasItemOption) {
var itemModel = data.getItemModel(idx);
var emphasisModel_1 = itemModel.getModel("emphasis");
emphasisStyle = emphasisModel_1.getModel("itemStyle").getItemStyle();
blurStyle = itemModel.getModel(["blur", "itemStyle"]).getItemStyle();
selectStyle = itemModel.getModel(["select", "itemStyle"]).getItemStyle();
borderRadius = itemModel.get(["itemStyle", "borderRadius"]);
focus = emphasisModel_1.get("focus");
blurScope = emphasisModel_1.get("blurScope");
emphasisDisabled = emphasisModel_1.get("disabled");
labelStatesModels = getLabelStatesModels(itemModel);
}
rect.shape.r = borderRadius;
var rawValue = seriesModel.getRawValue(idx);
var defaultText = "-";
if (rawValue && rawValue[2] != null) {
defaultText = rawValue[2] + "";
}
setLabelStyle(rect, labelStatesModels, {
labelFetcher: seriesModel,
labelDataIndex: idx,
defaultOpacity: style2.opacity,
defaultText
});
rect.ensureState("emphasis").style = emphasisStyle;
rect.ensureState("blur").style = blurStyle;
rect.ensureState("select").style = selectStyle;
toggleHoverEmphasis(rect, focus, blurScope, emphasisDisabled);
rect.incremental = incremental;
if (incremental) {
rect.states.emphasis.hoverLayer = true;
}
group.add(rect);
data.setItemGraphicEl(idx, rect);
if (this._progressiveEls) {
this._progressiveEls.push(rect);
}
}
};
HeatmapView2.prototype._renderOnGeo = function(geo, seriesModel, visualMapModel, api) {
var inRangeVisuals = visualMapModel.targetVisuals.inRange;
var outOfRangeVisuals = visualMapModel.targetVisuals.outOfRange;
var data = seriesModel.getData();
var hmLayer = this._hmLayer || this._hmLayer || new HeatmapLayer();
hmLayer.blurSize = seriesModel.get("blurSize");
hmLayer.pointSize = seriesModel.get("pointSize");
hmLayer.minOpacity = seriesModel.get("minOpacity");
hmLayer.maxOpacity = seriesModel.get("maxOpacity");
var rect = geo.getViewRect().clone();
var roamTransform = geo.getRoamTransform();
rect.applyTransform(roamTransform);
var x2 = Math.max(rect.x, 0);
var y2 = Math.max(rect.y, 0);
var x22 = Math.min(rect.width + rect.x, api.getWidth());
var y22 = Math.min(rect.height + rect.y, api.getHeight());
var width = x22 - x2;
var height = y22 - y2;
var dims = [data.mapDimension("lng"), data.mapDimension("lat"), data.mapDimension("value")];
var points2 = data.mapArray(dims, function(lng, lat, value) {
var pt = geo.dataToPoint([lng, lat]);
pt[0] -= x2;
pt[1] -= y2;
pt.push(value);
return pt;
});
var dataExtent = visualMapModel.getExtent();
var isInRange = visualMapModel.type === "visualMap.continuous" ? getIsInContinuousRange(dataExtent, visualMapModel.option.range) : getIsInPiecewiseRange(dataExtent, visualMapModel.getPieceList(), visualMapModel.option.selected);
hmLayer.update(points2, width, height, inRangeVisuals.color.getNormalizer(), {
inRange: inRangeVisuals.color.getColorMapper(),
outOfRange: outOfRangeVisuals.color.getColorMapper()
}, isInRange);
var img = new ZRImage({
style: {
width,
height,
x: x2,
y: y2,
image: hmLayer.canvas
},
silent: true
});
this.group.add(img);
};
HeatmapView2.type = "heatmap";
return HeatmapView2;
}(ChartView)
);
var HeatmapSeriesModel = (
/** @class */
function(_super) {
__extends(HeatmapSeriesModel2, _super);
function HeatmapSeriesModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = HeatmapSeriesModel2.type;
return _this;
}
HeatmapSeriesModel2.prototype.getInitialData = function(option, ecModel) {
return createSeriesData(null, this, {
generateCoord: "value"
});
};
HeatmapSeriesModel2.prototype.preventIncremental = function() {
var coordSysCreator = CoordinateSystemManager.get(this.get("coordinateSystem"));
if (coordSysCreator && coordSysCreator.dimensions) {
return coordSysCreator.dimensions[0] === "lng" && coordSysCreator.dimensions[1] === "lat";
}
};
HeatmapSeriesModel2.type = "series.heatmap";
HeatmapSeriesModel2.dependencies = ["grid", "geo", "calendar"];
HeatmapSeriesModel2.defaultOption = {
coordinateSystem: "cartesian2d",
// zlevel: 0,
z: 2,
// Cartesian coordinate system
// xAxisIndex: 0,
// yAxisIndex: 0,
// Geo coordinate system
geoIndex: 0,
blurSize: 30,
pointSize: 20,
maxOpacity: 1,
minOpacity: 0,
select: {
itemStyle: {
borderColor: "#212121"
}
}
};
return HeatmapSeriesModel2;
}(SeriesModel)
);
function install$v(registers) {
registers.registerChartView(HeatmapView);
registers.registerSeriesModel(HeatmapSeriesModel);
}
var BAR_BORDER_WIDTH_QUERY = ["itemStyle", "borderWidth"];
var LAYOUT_ATTRS = [{
xy: "x",
wh: "width",
index: 0,
posDesc: ["left", "right"]
}, {
xy: "y",
wh: "height",
index: 1,
posDesc: ["top", "bottom"]
}];
var pathForLineWidth = new Circle();
var PictorialBarView = (
/** @class */
function(_super) {
__extends(PictorialBarView2, _super);
function PictorialBarView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = PictorialBarView2.type;
return _this;
}
PictorialBarView2.prototype.render = function(seriesModel, ecModel, api) {
var group = this.group;
var data = seriesModel.getData();
var oldData = this._data;
var cartesian = seriesModel.coordinateSystem;
var baseAxis = cartesian.getBaseAxis();
var isHorizontal = baseAxis.isHorizontal();
var coordSysRect = cartesian.master.getRect();
var opt = {
ecSize: {
width: api.getWidth(),
height: api.getHeight()
},
seriesModel,
coordSys: cartesian,
coordSysExtent: [[coordSysRect.x, coordSysRect.x + coordSysRect.width], [coordSysRect.y, coordSysRect.y + coordSysRect.height]],
isHorizontal,
valueDim: LAYOUT_ATTRS[+isHorizontal],
categoryDim: LAYOUT_ATTRS[1 - +isHorizontal]
};
data.diff(oldData).add(function(dataIndex) {
if (!data.hasValue(dataIndex)) {
return;
}
var itemModel = getItemModel(data, dataIndex);
var symbolMeta = getSymbolMeta(data, dataIndex, itemModel, opt);
var bar = createBar(data, opt, symbolMeta);
data.setItemGraphicEl(dataIndex, bar);
group.add(bar);
updateCommon(bar, opt, symbolMeta);
}).update(function(newIndex, oldIndex) {
var bar = oldData.getItemGraphicEl(oldIndex);
if (!data.hasValue(newIndex)) {
group.remove(bar);
return;
}
var itemModel = getItemModel(data, newIndex);
var symbolMeta = getSymbolMeta(data, newIndex, itemModel, opt);
var pictorialShapeStr = getShapeStr(data, symbolMeta);
if (bar && pictorialShapeStr !== bar.__pictorialShapeStr) {
group.remove(bar);
data.setItemGraphicEl(newIndex, null);
bar = null;
}
if (bar) {
updateBar(bar, opt, symbolMeta);
} else {
bar = createBar(data, opt, symbolMeta, true);
}
data.setItemGraphicEl(newIndex, bar);
bar.__pictorialSymbolMeta = symbolMeta;
group.add(bar);
updateCommon(bar, opt, symbolMeta);
}).remove(function(dataIndex) {
var bar = oldData.getItemGraphicEl(dataIndex);
bar && removeBar(oldData, dataIndex, bar.__pictorialSymbolMeta.animationModel, bar);
}).execute();
var clipPath = seriesModel.get("clip", true) ? createClipPath(seriesModel.coordinateSystem, false, seriesModel) : null;
if (clipPath) {
group.setClipPath(clipPath);
} else {
group.removeClipPath();
}
this._data = data;
return this.group;
};
PictorialBarView2.prototype.remove = function(ecModel, api) {
var group = this.group;
var data = this._data;
if (ecModel.get("animation")) {
if (data) {
data.eachItemGraphicEl(function(bar) {
removeBar(data, getECData(bar).dataIndex, ecModel, bar);
});
}
} else {
group.removeAll();
}
};
PictorialBarView2.type = "pictorialBar";
return PictorialBarView2;
}(ChartView)
);
function getSymbolMeta(data, dataIndex, itemModel, opt) {
var layout2 = data.getItemLayout(dataIndex);
var symbolRepeat = itemModel.get("symbolRepeat");
var symbolClip = itemModel.get("symbolClip");
var symbolPosition = itemModel.get("symbolPosition") || "start";
var symbolRotate = itemModel.get("symbolRotate");
var rotation = (symbolRotate || 0) * Math.PI / 180 || 0;
var symbolPatternSize = itemModel.get("symbolPatternSize") || 2;
var isAnimationEnabled2 = itemModel.isAnimationEnabled();
var symbolMeta = {
dataIndex,
layout: layout2,
itemModel,
symbolType: data.getItemVisual(dataIndex, "symbol") || "circle",
style: data.getItemVisual(dataIndex, "style"),
symbolClip,
symbolRepeat,
symbolRepeatDirection: itemModel.get("symbolRepeatDirection"),
symbolPatternSize,
rotation,
animationModel: isAnimationEnabled2 ? itemModel : null,
hoverScale: isAnimationEnabled2 && itemModel.get(["emphasis", "scale"]),
z2: itemModel.getShallow("z", true) || 0
};
prepareBarLength(itemModel, symbolRepeat, layout2, opt, symbolMeta);
prepareSymbolSize(data, dataIndex, layout2, symbolRepeat, symbolClip, symbolMeta.boundingLength, symbolMeta.pxSign, symbolPatternSize, opt, symbolMeta);
prepareLineWidth(itemModel, symbolMeta.symbolScale, rotation, opt, symbolMeta);
var symbolSize = symbolMeta.symbolSize;
var symbolOffset = normalizeSymbolOffset(itemModel.get("symbolOffset"), symbolSize);
prepareLayoutInfo(itemModel, symbolSize, layout2, symbolRepeat, symbolClip, symbolOffset, symbolPosition, symbolMeta.valueLineWidth, symbolMeta.boundingLength, symbolMeta.repeatCutLength, opt, symbolMeta);
return symbolMeta;
}
function prepareBarLength(itemModel, symbolRepeat, layout2, opt, outputSymbolMeta) {
var valueDim = opt.valueDim;
var symbolBoundingData = itemModel.get("symbolBoundingData");
var valueAxis2 = opt.coordSys.getOtherAxis(opt.coordSys.getBaseAxis());
var zeroPx = valueAxis2.toGlobalCoord(valueAxis2.dataToCoord(0));
var pxSignIdx = 1 - +(layout2[valueDim.wh] <= 0);
var boundingLength;
if (isArray$1(symbolBoundingData)) {
var symbolBoundingExtent = [convertToCoordOnAxis(valueAxis2, symbolBoundingData[0]) - zeroPx, convertToCoordOnAxis(valueAxis2, symbolBoundingData[1]) - zeroPx];
symbolBoundingExtent[1] < symbolBoundingExtent[0] && symbolBoundingExtent.reverse();
boundingLength = symbolBoundingExtent[pxSignIdx];
} else if (symbolBoundingData != null) {
boundingLength = convertToCoordOnAxis(valueAxis2, symbolBoundingData) - zeroPx;
} else if (symbolRepeat) {
boundingLength = opt.coordSysExtent[valueDim.index][pxSignIdx] - zeroPx;
} else {
boundingLength = layout2[valueDim.wh];
}
outputSymbolMeta.boundingLength = boundingLength;
if (symbolRepeat) {
outputSymbolMeta.repeatCutLength = layout2[valueDim.wh];
}
outputSymbolMeta.pxSign = boundingLength > 0 ? 1 : -1;
}
function convertToCoordOnAxis(axis, value) {
return axis.toGlobalCoord(axis.dataToCoord(axis.scale.parse(value)));
}
function prepareSymbolSize(data, dataIndex, layout2, symbolRepeat, symbolClip, boundingLength, pxSign, symbolPatternSize, opt, outputSymbolMeta) {
var valueDim = opt.valueDim;
var categoryDim = opt.categoryDim;
var categorySize = Math.abs(layout2[categoryDim.wh]);
var symbolSize = data.getItemVisual(dataIndex, "symbolSize");
var parsedSymbolSize;
if (isArray$1(symbolSize)) {
parsedSymbolSize = symbolSize.slice();
} else {
if (symbolSize == null) {
parsedSymbolSize = ["100%", "100%"];
} else {
parsedSymbolSize = [symbolSize, symbolSize];
}
}
parsedSymbolSize[categoryDim.index] = parsePercent(parsedSymbolSize[categoryDim.index], categorySize);
parsedSymbolSize[valueDim.index] = parsePercent(parsedSymbolSize[valueDim.index], symbolRepeat ? categorySize : Math.abs(boundingLength));
outputSymbolMeta.symbolSize = parsedSymbolSize;
var symbolScale = outputSymbolMeta.symbolScale = [parsedSymbolSize[0] / symbolPatternSize, parsedSymbolSize[1] / symbolPatternSize];
symbolScale[valueDim.index] *= (opt.isHorizontal ? -1 : 1) * pxSign;
}
function prepareLineWidth(itemModel, symbolScale, rotation, opt, outputSymbolMeta) {
var valueLineWidth = itemModel.get(BAR_BORDER_WIDTH_QUERY) || 0;
if (valueLineWidth) {
pathForLineWidth.attr({
scaleX: symbolScale[0],
scaleY: symbolScale[1],
rotation
});
pathForLineWidth.updateTransform();
valueLineWidth /= pathForLineWidth.getLineScale();
valueLineWidth *= symbolScale[opt.valueDim.index];
}
outputSymbolMeta.valueLineWidth = valueLineWidth || 0;
}
function prepareLayoutInfo(itemModel, symbolSize, layout2, symbolRepeat, symbolClip, symbolOffset, symbolPosition, valueLineWidth, boundingLength, repeatCutLength, opt, outputSymbolMeta) {
var categoryDim = opt.categoryDim;
var valueDim = opt.valueDim;
var pxSign = outputSymbolMeta.pxSign;
var unitLength = Math.max(symbolSize[valueDim.index] + valueLineWidth, 0);
var pathLen = unitLength;
if (symbolRepeat) {
var absBoundingLength = Math.abs(boundingLength);
var symbolMargin = retrieve(itemModel.get("symbolMargin"), "15%") + "";
var hasEndGap = false;
if (symbolMargin.lastIndexOf("!") === symbolMargin.length - 1) {
hasEndGap = true;
symbolMargin = symbolMargin.slice(0, symbolMargin.length - 1);
}
var symbolMarginNumeric = parsePercent(symbolMargin, symbolSize[valueDim.index]);
var uLenWithMargin = Math.max(unitLength + symbolMarginNumeric * 2, 0);
var endFix = hasEndGap ? 0 : symbolMarginNumeric * 2;
var repeatSpecified = isNumeric(symbolRepeat);
var repeatTimes = repeatSpecified ? symbolRepeat : toIntTimes((absBoundingLength + endFix) / uLenWithMargin);
var mDiff = absBoundingLength - repeatTimes * unitLength;
symbolMarginNumeric = mDiff / 2 / (hasEndGap ? repeatTimes : Math.max(repeatTimes - 1, 1));
uLenWithMargin = unitLength + symbolMarginNumeric * 2;
endFix = hasEndGap ? 0 : symbolMarginNumeric * 2;
if (!repeatSpecified && symbolRepeat !== "fixed") {
repeatTimes = repeatCutLength ? toIntTimes((Math.abs(repeatCutLength) + endFix) / uLenWithMargin) : 0;
}
pathLen = repeatTimes * uLenWithMargin - endFix;
outputSymbolMeta.repeatTimes = repeatTimes;
outputSymbolMeta.symbolMargin = symbolMarginNumeric;
}
var sizeFix = pxSign * (pathLen / 2);
var pathPosition = outputSymbolMeta.pathPosition = [];
pathPosition[categoryDim.index] = layout2[categoryDim.wh] / 2;
pathPosition[valueDim.index] = symbolPosition === "start" ? sizeFix : symbolPosition === "end" ? boundingLength - sizeFix : boundingLength / 2;
if (symbolOffset) {
pathPosition[0] += symbolOffset[0];
pathPosition[1] += symbolOffset[1];
}
var bundlePosition = outputSymbolMeta.bundlePosition = [];
bundlePosition[categoryDim.index] = layout2[categoryDim.xy];
bundlePosition[valueDim.index] = layout2[valueDim.xy];
var barRectShape = outputSymbolMeta.barRectShape = extend({}, layout2);
barRectShape[valueDim.wh] = pxSign * Math.max(Math.abs(layout2[valueDim.wh]), Math.abs(pathPosition[valueDim.index] + sizeFix));
barRectShape[categoryDim.wh] = layout2[categoryDim.wh];
var clipShape = outputSymbolMeta.clipShape = {};
clipShape[categoryDim.xy] = -layout2[categoryDim.xy];
clipShape[categoryDim.wh] = opt.ecSize[categoryDim.wh];
clipShape[valueDim.xy] = 0;
clipShape[valueDim.wh] = layout2[valueDim.wh];
}
function createPath$1(symbolMeta) {
var symbolPatternSize = symbolMeta.symbolPatternSize;
var path = createSymbol$1(
// Consider texture img, make a big size.
symbolMeta.symbolType,
-symbolPatternSize / 2,
-symbolPatternSize / 2,
symbolPatternSize,
symbolPatternSize
);
path.attr({
culling: true
});
path.type !== "image" && path.setStyle({
strokeNoScale: true
});
return path;
}
function createOrUpdateRepeatSymbols(bar, opt, symbolMeta, isUpdate) {
var bundle = bar.__pictorialBundle;
var symbolSize = symbolMeta.symbolSize;
var valueLineWidth = symbolMeta.valueLineWidth;
var pathPosition = symbolMeta.pathPosition;
var valueDim = opt.valueDim;
var repeatTimes = symbolMeta.repeatTimes || 0;
var index2 = 0;
var unit2 = symbolSize[opt.valueDim.index] + valueLineWidth + symbolMeta.symbolMargin * 2;
eachPath(bar, function(path2) {
path2.__pictorialAnimationIndex = index2;
path2.__pictorialRepeatTimes = repeatTimes;
if (index2 < repeatTimes) {
updateAttr(path2, null, makeTarget(index2), symbolMeta, isUpdate);
} else {
updateAttr(path2, null, {
scaleX: 0,
scaleY: 0
}, symbolMeta, isUpdate, function() {
bundle.remove(path2);
});
}
index2++;
});
for (; index2 < repeatTimes; index2++) {
var path = createPath$1(symbolMeta);
path.__pictorialAnimationIndex = index2;
path.__pictorialRepeatTimes = repeatTimes;
bundle.add(path);
var target = makeTarget(index2);
updateAttr(path, {
x: target.x,
y: target.y,
scaleX: 0,
scaleY: 0
}, {
scaleX: target.scaleX,
scaleY: target.scaleY,
rotation: target.rotation
}, symbolMeta, isUpdate);
}
function makeTarget(index3) {
var position2 = pathPosition.slice();
var pxSign = symbolMeta.pxSign;
var i = index3;
if (symbolMeta.symbolRepeatDirection === "start" ? pxSign > 0 : pxSign < 0) {
i = repeatTimes - 1 - index3;
}
position2[valueDim.index] = unit2 * (i - repeatTimes / 2 + 0.5) + pathPosition[valueDim.index];
return {
x: position2[0],
y: position2[1],
scaleX: symbolMeta.symbolScale[0],
scaleY: symbolMeta.symbolScale[1],
rotation: symbolMeta.rotation
};
}
}
function createOrUpdateSingleSymbol(bar, opt, symbolMeta, isUpdate) {
var bundle = bar.__pictorialBundle;
var mainPath = bar.__pictorialMainPath;
if (!mainPath) {
mainPath = bar.__pictorialMainPath = createPath$1(symbolMeta);
bundle.add(mainPath);
updateAttr(mainPath, {
x: symbolMeta.pathPosition[0],
y: symbolMeta.pathPosition[1],
scaleX: 0,
scaleY: 0,
rotation: symbolMeta.rotation
}, {
scaleX: symbolMeta.symbolScale[0],
scaleY: symbolMeta.symbolScale[1]
}, symbolMeta, isUpdate);
} else {
updateAttr(mainPath, null, {
x: symbolMeta.pathPosition[0],
y: symbolMeta.pathPosition[1],
scaleX: symbolMeta.symbolScale[0],
scaleY: symbolMeta.symbolScale[1],
rotation: symbolMeta.rotation
}, symbolMeta, isUpdate);
}
}
function createOrUpdateBarRect(bar, symbolMeta, isUpdate) {
var rectShape = extend({}, symbolMeta.barRectShape);
var barRect = bar.__pictorialBarRect;
if (!barRect) {
barRect = bar.__pictorialBarRect = new Rect$2({
z2: 2,
shape: rectShape,
silent: true,
style: {
stroke: "transparent",
fill: "transparent",
lineWidth: 0
}
});
barRect.disableMorphing = true;
bar.add(barRect);
} else {
updateAttr(barRect, null, {
shape: rectShape
}, symbolMeta, isUpdate);
}
}
function createOrUpdateClip(bar, opt, symbolMeta, isUpdate) {
if (symbolMeta.symbolClip) {
var clipPath = bar.__pictorialClipPath;
var clipShape = extend({}, symbolMeta.clipShape);
var valueDim = opt.valueDim;
var animationModel = symbolMeta.animationModel;
var dataIndex = symbolMeta.dataIndex;
if (clipPath) {
updateProps$1(clipPath, {
shape: clipShape
}, animationModel, dataIndex);
} else {
clipShape[valueDim.wh] = 0;
clipPath = new Rect$2({
shape: clipShape
});
bar.__pictorialBundle.setClipPath(clipPath);
bar.__pictorialClipPath = clipPath;
var target = {};
target[valueDim.wh] = symbolMeta.clipShape[valueDim.wh];
graphic$1[isUpdate ? "updateProps" : "initProps"](clipPath, {
shape: target
}, animationModel, dataIndex);
}
}
}
function getItemModel(data, dataIndex) {
var itemModel = data.getItemModel(dataIndex);
itemModel.getAnimationDelayParams = getAnimationDelayParams;
itemModel.isAnimationEnabled = isAnimationEnabled;
return itemModel;
}
function getAnimationDelayParams(path) {
return {
index: path.__pictorialAnimationIndex,
count: path.__pictorialRepeatTimes
};
}
function isAnimationEnabled() {
return this.parentModel.isAnimationEnabled() && !!this.getShallow("animation");
}
function createBar(data, opt, symbolMeta, isUpdate) {
var bar = new Group$3();
var bundle = new Group$3();
bar.add(bundle);
bar.__pictorialBundle = bundle;
bundle.x = symbolMeta.bundlePosition[0];
bundle.y = symbolMeta.bundlePosition[1];
if (symbolMeta.symbolRepeat) {
createOrUpdateRepeatSymbols(bar, opt, symbolMeta);
} else {
createOrUpdateSingleSymbol(bar, opt, symbolMeta);
}
createOrUpdateBarRect(bar, symbolMeta, isUpdate);
createOrUpdateClip(bar, opt, symbolMeta, isUpdate);
bar.__pictorialShapeStr = getShapeStr(data, symbolMeta);
bar.__pictorialSymbolMeta = symbolMeta;
return bar;
}
function updateBar(bar, opt, symbolMeta) {
var animationModel = symbolMeta.animationModel;
var dataIndex = symbolMeta.dataIndex;
var bundle = bar.__pictorialBundle;
updateProps$1(bundle, {
x: symbolMeta.bundlePosition[0],
y: symbolMeta.bundlePosition[1]
}, animationModel, dataIndex);
if (symbolMeta.symbolRepeat) {
createOrUpdateRepeatSymbols(bar, opt, symbolMeta, true);
} else {
createOrUpdateSingleSymbol(bar, opt, symbolMeta, true);
}
createOrUpdateBarRect(bar, symbolMeta, true);
createOrUpdateClip(bar, opt, symbolMeta, true);
}
function removeBar(data, dataIndex, animationModel, bar) {
var labelRect = bar.__pictorialBarRect;
labelRect && labelRect.removeTextContent();
var paths = [];
eachPath(bar, function(path) {
paths.push(path);
});
bar.__pictorialMainPath && paths.push(bar.__pictorialMainPath);
bar.__pictorialClipPath && (animationModel = null);
each$f(paths, function(path) {
removeElement(path, {
scaleX: 0,
scaleY: 0
}, animationModel, dataIndex, function() {
bar.parent && bar.parent.remove(bar);
});
});
data.setItemGraphicEl(dataIndex, null);
}
function getShapeStr(data, symbolMeta) {
return [data.getItemVisual(symbolMeta.dataIndex, "symbol") || "none", !!symbolMeta.symbolRepeat, !!symbolMeta.symbolClip].join(":");
}
function eachPath(bar, cb2, context) {
each$f(bar.__pictorialBundle.children(), function(el2) {
el2 !== bar.__pictorialBarRect && cb2.call(context, el2);
});
}
function updateAttr(el2, immediateAttrs, animationAttrs, symbolMeta, isUpdate, cb2) {
immediateAttrs && el2.attr(immediateAttrs);
if (symbolMeta.symbolClip && !isUpdate) {
animationAttrs && el2.attr(animationAttrs);
} else {
animationAttrs && graphic$1[isUpdate ? "updateProps" : "initProps"](el2, animationAttrs, symbolMeta.animationModel, symbolMeta.dataIndex, cb2);
}
}
function updateCommon(bar, opt, symbolMeta) {
var dataIndex = symbolMeta.dataIndex;
var itemModel = symbolMeta.itemModel;
var emphasisModel = itemModel.getModel("emphasis");
var emphasisStyle = emphasisModel.getModel("itemStyle").getItemStyle();
var blurStyle = itemModel.getModel(["blur", "itemStyle"]).getItemStyle();
var selectStyle = itemModel.getModel(["select", "itemStyle"]).getItemStyle();
var cursorStyle = itemModel.getShallow("cursor");
var focus = emphasisModel.get("focus");
var blurScope = emphasisModel.get("blurScope");
var hoverScale = emphasisModel.get("scale");
eachPath(bar, function(path) {
if (path instanceof ZRImage) {
var pathStyle = path.style;
path.useStyle(extend({
// TODO other properties like dx, dy ?
image: pathStyle.image,
x: pathStyle.x,
y: pathStyle.y,
width: pathStyle.width,
height: pathStyle.height
}, symbolMeta.style));
} else {
path.useStyle(symbolMeta.style);
}
var emphasisState = path.ensureState("emphasis");
emphasisState.style = emphasisStyle;
if (hoverScale) {
emphasisState.scaleX = path.scaleX * 1.1;
emphasisState.scaleY = path.scaleY * 1.1;
}
path.ensureState("blur").style = blurStyle;
path.ensureState("select").style = selectStyle;
cursorStyle && (path.cursor = cursorStyle);
path.z2 = symbolMeta.z2;
});
var barPositionOutside = opt.valueDim.posDesc[+(symbolMeta.boundingLength > 0)];
var barRect = bar.__pictorialBarRect;
barRect.ignoreClip = true;
setLabelStyle(barRect, getLabelStatesModels(itemModel), {
labelFetcher: opt.seriesModel,
labelDataIndex: dataIndex,
defaultText: getDefaultLabel(opt.seriesModel.getData(), dataIndex),
inheritColor: symbolMeta.style.fill,
defaultOpacity: symbolMeta.style.opacity,
defaultOutsidePosition: barPositionOutside
});
toggleHoverEmphasis(bar, focus, blurScope, emphasisModel.get("disabled"));
}
function toIntTimes(times) {
var roundedTimes = Math.round(times);
return Math.abs(times - roundedTimes) < 1e-4 ? roundedTimes : Math.ceil(times);
}
var PictorialBarSeriesModel = (
/** @class */
function(_super) {
__extends(PictorialBarSeriesModel2, _super);
function PictorialBarSeriesModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = PictorialBarSeriesModel2.type;
_this.hasSymbolVisual = true;
_this.defaultSymbol = "roundRect";
return _this;
}
PictorialBarSeriesModel2.prototype.getInitialData = function(option) {
option.stack = null;
return _super.prototype.getInitialData.apply(this, arguments);
};
PictorialBarSeriesModel2.type = "series.pictorialBar";
PictorialBarSeriesModel2.dependencies = ["grid"];
PictorialBarSeriesModel2.defaultOption = inheritDefaultOption(BaseBarSeriesModel.defaultOption, {
symbol: "circle",
symbolSize: null,
symbolRotate: null,
symbolPosition: null,
symbolOffset: null,
symbolMargin: null,
symbolRepeat: false,
symbolRepeatDirection: "end",
symbolClip: false,
symbolBoundingData: null,
symbolPatternSize: 400,
barGap: "-100%",
// Pictorial bar do not clip by default because in many cases
// xAxis and yAxis are not displayed and it's expected not to clip
clip: false,
// z can be set in data item, which is z2 actually.
// Disable progressive
progressive: 0,
emphasis: {
// By default pictorialBar do not hover scale. Hover scale is not suitable
// for the case that both has foreground and background.
scale: false
},
select: {
itemStyle: {
borderColor: "#212121"
}
}
});
return PictorialBarSeriesModel2;
}(BaseBarSeriesModel)
);
function install$u(registers) {
registers.registerChartView(PictorialBarView);
registers.registerSeriesModel(PictorialBarSeriesModel);
registers.registerLayout(registers.PRIORITY.VISUAL.LAYOUT, curry$1(layout$3, "pictorialBar"));
registers.registerLayout(registers.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, createProgressiveLayout("pictorialBar"));
}
var ThemeRiverView = (
/** @class */
function(_super) {
__extends(ThemeRiverView2, _super);
function ThemeRiverView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = ThemeRiverView2.type;
_this._layers = [];
return _this;
}
ThemeRiverView2.prototype.render = function(seriesModel, ecModel, api) {
var data = seriesModel.getData();
var self2 = this;
var group = this.group;
var layersSeries = seriesModel.getLayerSeries();
var layoutInfo = data.getLayout("layoutInfo");
var rect = layoutInfo.rect;
var boundaryGap = layoutInfo.boundaryGap;
group.x = 0;
group.y = rect.y + boundaryGap[0];
function keyGetter(item) {
return item.name;
}
var dataDiffer = new DataDiffer(this._layersSeries || [], layersSeries, keyGetter, keyGetter);
var newLayersGroups = [];
dataDiffer.add(bind$2(process2, this, "add")).update(bind$2(process2, this, "update")).remove(bind$2(process2, this, "remove")).execute();
function process2(status, idx, oldIdx) {
var oldLayersGroups = self2._layers;
if (status === "remove") {
group.remove(oldLayersGroups[idx]);
return;
}
var points0 = [];
var points1 = [];
var style2;
var indices = layersSeries[idx].indices;
var j = 0;
for (; j < indices.length; j++) {
var layout2 = data.getItemLayout(indices[j]);
var x2 = layout2.x;
var y0 = layout2.y0;
var y2 = layout2.y;
points0.push(x2, y0);
points1.push(x2, y0 + y2);
style2 = data.getItemVisual(indices[j], "style");
}
var polygon;
var textLayout = data.getItemLayout(indices[0]);
var labelModel = seriesModel.getModel("label");
var margin = labelModel.get("margin");
var emphasisModel = seriesModel.getModel("emphasis");
if (status === "add") {
var layerGroup = newLayersGroups[idx] = new Group$3();
polygon = new ECPolygon({
shape: {
points: points0,
stackedOnPoints: points1,
smooth: 0.4,
stackedOnSmooth: 0.4,
smoothConstraint: false
},
z2: 0
});
layerGroup.add(polygon);
group.add(layerGroup);
if (seriesModel.isAnimationEnabled()) {
polygon.setClipPath(createGridClipShape(polygon.getBoundingRect(), seriesModel, function() {
polygon.removeClipPath();
}));
}
} else {
var layerGroup = oldLayersGroups[oldIdx];
polygon = layerGroup.childAt(0);
group.add(layerGroup);
newLayersGroups[idx] = layerGroup;
updateProps$1(polygon, {
shape: {
points: points0,
stackedOnPoints: points1
}
}, seriesModel);
saveOldStyle(polygon);
}
setLabelStyle(polygon, getLabelStatesModels(seriesModel), {
labelDataIndex: indices[j - 1],
defaultText: data.getName(indices[j - 1]),
inheritColor: style2.fill
}, {
normal: {
verticalAlign: "middle"
// align: 'right'
}
});
polygon.setTextConfig({
position: null,
local: true
});
var labelEl = polygon.getTextContent();
if (labelEl) {
labelEl.x = textLayout.x - margin;
labelEl.y = textLayout.y0 + textLayout.y / 2;
}
polygon.useStyle(style2);
data.setItemGraphicEl(idx, polygon);
setStatesStylesFromModel(polygon, seriesModel);
toggleHoverEmphasis(polygon, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
}
this._layersSeries = layersSeries;
this._layers = newLayersGroups;
};
ThemeRiverView2.type = "themeRiver";
return ThemeRiverView2;
}(ChartView)
);
function createGridClipShape(rect, seriesModel, cb2) {
var rectEl = new Rect$2({
shape: {
x: rect.x - 10,
y: rect.y - 10,
width: 0,
height: rect.height + 20
}
});
initProps(rectEl, {
shape: {
x: rect.x - 50,
width: rect.width + 100,
height: rect.height + 20
}
}, seriesModel, cb2);
return rectEl;
}
var DATA_NAME_INDEX = 2;
var ThemeRiverSeriesModel = (
/** @class */
function(_super) {
__extends(ThemeRiverSeriesModel2, _super);
function ThemeRiverSeriesModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = ThemeRiverSeriesModel2.type;
return _this;
}
ThemeRiverSeriesModel2.prototype.init = function(option) {
_super.prototype.init.apply(this, arguments);
this.legendVisualProvider = new LegendVisualProvider(bind$2(this.getData, this), bind$2(this.getRawData, this));
};
ThemeRiverSeriesModel2.prototype.fixData = function(data) {
var rawDataLength = data.length;
var timeValueKeys = {};
var groupResult = groupData(data, function(item) {
if (!timeValueKeys.hasOwnProperty(item[0] + "")) {
timeValueKeys[item[0] + ""] = -1;
}
return item[2];
});
var layerData = [];
groupResult.buckets.each(function(items, key) {
layerData.push({
name: key,
dataList: items
});
});
var layerNum = layerData.length;
for (var k2 = 0; k2 < layerNum; ++k2) {
var name_1 = layerData[k2].name;
for (var j = 0; j < layerData[k2].dataList.length; ++j) {
var timeValue = layerData[k2].dataList[j][0] + "";
timeValueKeys[timeValue] = k2;
}
for (var timeValue in timeValueKeys) {
if (timeValueKeys.hasOwnProperty(timeValue) && timeValueKeys[timeValue] !== k2) {
timeValueKeys[timeValue] = k2;
data[rawDataLength] = [timeValue, 0, name_1];
rawDataLength++;
}
}
}
return data;
};
ThemeRiverSeriesModel2.prototype.getInitialData = function(option, ecModel) {
var singleAxisModel = this.getReferringComponents("singleAxis", SINGLE_REFERRING).models[0];
var axisType = singleAxisModel.get("type");
var filterData = filter(option.data, function(dataItem) {
return dataItem[2] !== void 0;
});
var data = this.fixData(filterData || []);
var nameList = [];
var nameMap = this.nameMap = createHashMap();
var count2 = 0;
for (var i = 0; i < data.length; ++i) {
nameList.push(data[i][DATA_NAME_INDEX]);
if (!nameMap.get(data[i][DATA_NAME_INDEX])) {
nameMap.set(data[i][DATA_NAME_INDEX], count2);
count2++;
}
}
var dimensions = prepareSeriesDataSchema(data, {
coordDimensions: ["single"],
dimensionsDefine: [{
name: "time",
type: getDimensionTypeByAxis(axisType)
}, {
name: "value",
type: "float"
}, {
name: "name",
type: "ordinal"
}],
encodeDefine: {
single: 0,
value: 1,
itemName: 2
}
}).dimensions;
var list = new SeriesData(dimensions, this);
list.initData(data);
return list;
};
ThemeRiverSeriesModel2.prototype.getLayerSeries = function() {
var data = this.getData();
var lenCount = data.count();
var indexArr = [];
for (var i = 0; i < lenCount; ++i) {
indexArr[i] = i;
}
var timeDim = data.mapDimension("single");
var groupResult = groupData(indexArr, function(index2) {
return data.get("name", index2);
});
var layerSeries = [];
groupResult.buckets.each(function(items, key) {
items.sort(function(index1, index2) {
return data.get(timeDim, index1) - data.get(timeDim, index2);
});
layerSeries.push({
name: key,
indices: items
});
});
return layerSeries;
};
ThemeRiverSeriesModel2.prototype.getAxisTooltipData = function(dim, value, baseAxis) {
if (!isArray$1(dim)) {
dim = dim ? [dim] : [];
}
var data = this.getData();
var layerSeries = this.getLayerSeries();
var indices = [];
var layerNum = layerSeries.length;
var nestestValue;
for (var i = 0; i < layerNum; ++i) {
var minDist = Number.MAX_VALUE;
var nearestIdx = -1;
var pointNum = layerSeries[i].indices.length;
for (var j = 0; j < pointNum; ++j) {
var theValue = data.get(dim[0], layerSeries[i].indices[j]);
var dist2 = Math.abs(theValue - value);
if (dist2 <= minDist) {
nestestValue = theValue;
minDist = dist2;
nearestIdx = layerSeries[i].indices[j];
}
}
indices.push(nearestIdx);
}
return {
dataIndices: indices,
nestestValue
};
};
ThemeRiverSeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) {
var data = this.getData();
var name = data.getName(dataIndex);
var value = data.get(data.mapDimension("value"), dataIndex);
return createTooltipMarkup("nameValue", {
name,
value
});
};
ThemeRiverSeriesModel2.type = "series.themeRiver";
ThemeRiverSeriesModel2.dependencies = ["singleAxis"];
ThemeRiverSeriesModel2.defaultOption = {
// zlevel: 0,
z: 2,
colorBy: "data",
coordinateSystem: "singleAxis",
// gap in axis's orthogonal orientation
boundaryGap: ["10%", "10%"],
// legendHoverLink: true,
singleAxisIndex: 0,
animationEasing: "linear",
label: {
margin: 4,
show: true,
position: "left",
fontSize: 11
},
emphasis: {
label: {
show: true
}
}
};
return ThemeRiverSeriesModel2;
}(SeriesModel)
);
function themeRiverLayout(ecModel, api) {
ecModel.eachSeriesByType("themeRiver", function(seriesModel) {
var data = seriesModel.getData();
var single = seriesModel.coordinateSystem;
var layoutInfo = {};
var rect = single.getRect();
layoutInfo.rect = rect;
var boundaryGap = seriesModel.get("boundaryGap");
var axis = single.getAxis();
layoutInfo.boundaryGap = boundaryGap;
if (axis.orient === "horizontal") {
boundaryGap[0] = parsePercent(boundaryGap[0], rect.height);
boundaryGap[1] = parsePercent(boundaryGap[1], rect.height);
var height = rect.height - boundaryGap[0] - boundaryGap[1];
doThemeRiverLayout(data, seriesModel, height);
} else {
boundaryGap[0] = parsePercent(boundaryGap[0], rect.width);
boundaryGap[1] = parsePercent(boundaryGap[1], rect.width);
var width = rect.width - boundaryGap[0] - boundaryGap[1];
doThemeRiverLayout(data, seriesModel, width);
}
data.setLayout("layoutInfo", layoutInfo);
});
}
function doThemeRiverLayout(data, seriesModel, height) {
if (!data.count()) {
return;
}
var coordSys = seriesModel.coordinateSystem;
var layerSeries = seriesModel.getLayerSeries();
var timeDim = data.mapDimension("single");
var valueDim = data.mapDimension("value");
var layerPoints = map$1(layerSeries, function(singleLayer) {
return map$1(singleLayer.indices, function(idx) {
var pt = coordSys.dataToPoint(data.get(timeDim, idx));
pt[1] = data.get(valueDim, idx);
return pt;
});
});
var base2 = computeBaseline(layerPoints);
var baseLine = base2.y0;
var ky = height / base2.max;
var n2 = layerSeries.length;
var m2 = layerSeries[0].indices.length;
var baseY0;
for (var j = 0; j < m2; ++j) {
baseY0 = baseLine[j] * ky;
data.setItemLayout(layerSeries[0].indices[j], {
layerIndex: 0,
x: layerPoints[0][j][0],
y0: baseY0,
y: layerPoints[0][j][1] * ky
});
for (var i = 1; i < n2; ++i) {
baseY0 += layerPoints[i - 1][j][1] * ky;
data.setItemLayout(layerSeries[i].indices[j], {
layerIndex: i,
x: layerPoints[i][j][0],
y0: baseY0,
y: layerPoints[i][j][1] * ky
});
}
}
}
function computeBaseline(data) {
var layerNum = data.length;
var pointNum = data[0].length;
var sums = [];
var y0 = [];
var max3 = 0;
for (var i = 0; i < pointNum; ++i) {
var temp = 0;
for (var j = 0; j < layerNum; ++j) {
temp += data[j][i][1];
}
if (temp > max3) {
max3 = temp;
}
sums.push(temp);
}
for (var k2 = 0; k2 < pointNum; ++k2) {
y0[k2] = (max3 - sums[k2]) / 2;
}
max3 = 0;
for (var l2 = 0; l2 < pointNum; ++l2) {
var sum2 = sums[l2] + y0[l2];
if (sum2 > max3) {
max3 = sum2;
}
}
return {
y0,
max: max3
};
}
function install$t(registers) {
registers.registerChartView(ThemeRiverView);
registers.registerSeriesModel(ThemeRiverSeriesModel);
registers.registerLayout(themeRiverLayout);
registers.registerProcessor(dataFilter$1("themeRiver"));
}
var DEFAULT_SECTOR_Z = 2;
var DEFAULT_TEXT_Z = 4;
var SunburstPiece = (
/** @class */
function(_super) {
__extends(SunburstPiece2, _super);
function SunburstPiece2(node2, seriesModel, ecModel, api) {
var _this = _super.call(this) || this;
_this.z2 = DEFAULT_SECTOR_Z;
_this.textConfig = {
inside: true
};
getECData(_this).seriesIndex = seriesModel.seriesIndex;
var text = new ZRText({
z2: DEFAULT_TEXT_Z,
silent: node2.getModel().get(["label", "silent"])
});
_this.setTextContent(text);
_this.updateData(true, node2, seriesModel, ecModel, api);
return _this;
}
SunburstPiece2.prototype.updateData = function(firstCreate, node2, seriesModel, ecModel, api) {
this.node = node2;
node2.piece = this;
seriesModel = seriesModel || this._seriesModel;
ecModel = ecModel || this._ecModel;
var sector = this;
getECData(sector).dataIndex = node2.dataIndex;
var itemModel = node2.getModel();
var emphasisModel = itemModel.getModel("emphasis");
var layout2 = node2.getLayout();
var sectorShape = extend({}, layout2);
sectorShape.label = null;
var normalStyle = node2.getVisual("style");
normalStyle.lineJoin = "bevel";
var decal = node2.getVisual("decal");
if (decal) {
normalStyle.decal = createOrUpdatePatternFromDecal(decal, api);
}
var cornerRadius = getSectorCornerRadius(itemModel.getModel("itemStyle"), sectorShape, true);
extend(sectorShape, cornerRadius);
each$f(SPECIAL_STATES, function(stateName) {
var state = sector.ensureState(stateName);
var itemStyleModel = itemModel.getModel([stateName, "itemStyle"]);
state.style = itemStyleModel.getItemStyle();
var cornerRadius2 = getSectorCornerRadius(itemStyleModel, sectorShape);
if (cornerRadius2) {
state.shape = cornerRadius2;
}
});
if (firstCreate) {
sector.setShape(sectorShape);
sector.shape.r = layout2.r0;
initProps(sector, {
shape: {
r: layout2.r
}
}, seriesModel, node2.dataIndex);
} else {
updateProps$1(sector, {
shape: sectorShape
}, seriesModel);
saveOldStyle(sector);
}
sector.useStyle(normalStyle);
this._updateLabel(seriesModel);
var cursorStyle = itemModel.getShallow("cursor");
cursorStyle && sector.attr("cursor", cursorStyle);
this._seriesModel = seriesModel || this._seriesModel;
this._ecModel = ecModel || this._ecModel;
var focus = emphasisModel.get("focus");
var focusOrIndices = focus === "ancestor" ? node2.getAncestorsIndices() : focus === "descendant" ? node2.getDescendantIndices() : focus;
toggleHoverEmphasis(this, focusOrIndices, emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
};
SunburstPiece2.prototype._updateLabel = function(seriesModel) {
var _this = this;
var itemModel = this.node.getModel();
var normalLabelModel = itemModel.getModel("label");
var layout2 = this.node.getLayout();
var angle = layout2.endAngle - layout2.startAngle;
var midAngle = (layout2.startAngle + layout2.endAngle) / 2;
var dx = Math.cos(midAngle);
var dy = Math.sin(midAngle);
var sector = this;
var label = sector.getTextContent();
var dataIndex = this.node.dataIndex;
var labelMinAngle = normalLabelModel.get("minAngle") / 180 * Math.PI;
var isNormalShown = normalLabelModel.get("show") && !(labelMinAngle != null && Math.abs(angle) < labelMinAngle);
label.ignore = !isNormalShown;
each$f(DISPLAY_STATES, function(stateName) {
var labelStateModel = stateName === "normal" ? itemModel.getModel("label") : itemModel.getModel([stateName, "label"]);
var isNormal = stateName === "normal";
var state = isNormal ? label : label.ensureState(stateName);
var text = seriesModel.getFormattedLabel(dataIndex, stateName);
if (isNormal) {
text = text || _this.node.name;
}
state.style = createTextStyle$1(labelStateModel, {}, null, stateName !== "normal", true);
if (text) {
state.style.text = text;
}
var isShown = labelStateModel.get("show");
if (isShown != null && !isNormal) {
state.ignore = !isShown;
}
var labelPosition = getLabelAttr(labelStateModel, "position");
var sectorState = isNormal ? sector : sector.states[stateName];
var labelColor = sectorState.style.fill;
sectorState.textConfig = {
outsideFill: labelStateModel.get("color") === "inherit" ? labelColor : null,
inside: labelPosition !== "outside"
};
var r2;
var labelPadding = getLabelAttr(labelStateModel, "distance") || 0;
var textAlign = getLabelAttr(labelStateModel, "align");
var rotateType = getLabelAttr(labelStateModel, "rotate");
var flipStartAngle = Math.PI * 0.5;
var flipEndAngle = Math.PI * 1.5;
var midAngleNormal = normalizeRadian(rotateType === "tangential" ? Math.PI / 2 - midAngle : midAngle);
var needsFlip = midAngleNormal > flipStartAngle && !isRadianAroundZero(midAngleNormal - flipStartAngle) && midAngleNormal < flipEndAngle;
if (labelPosition === "outside") {
r2 = layout2.r + labelPadding;
textAlign = needsFlip ? "right" : "left";
} else {
if (!textAlign || textAlign === "center") {
if (angle === 2 * Math.PI && layout2.r0 === 0) {
r2 = 0;
} else {
r2 = (layout2.r + layout2.r0) / 2;
}
textAlign = "center";
} else if (textAlign === "left") {
r2 = layout2.r0 + labelPadding;
textAlign = needsFlip ? "right" : "left";
} else if (textAlign === "right") {
r2 = layout2.r - labelPadding;
textAlign = needsFlip ? "left" : "right";
}
}
state.style.align = textAlign;
state.style.verticalAlign = getLabelAttr(labelStateModel, "verticalAlign") || "middle";
state.x = r2 * dx + layout2.cx;
state.y = r2 * dy + layout2.cy;
var rotate2 = 0;
if (rotateType === "radial") {
rotate2 = normalizeRadian(-midAngle) + (needsFlip ? Math.PI : 0);
} else if (rotateType === "tangential") {
rotate2 = normalizeRadian(Math.PI / 2 - midAngle) + (needsFlip ? Math.PI : 0);
} else if (isNumber(rotateType)) {
rotate2 = rotateType * Math.PI / 180;
}
state.rotation = normalizeRadian(rotate2);
});
function getLabelAttr(model, name) {
var stateAttr = model.get(name);
if (stateAttr == null) {
return normalLabelModel.get(name);
}
return stateAttr;
}
label.dirtyStyle();
};
return SunburstPiece2;
}(Sector)
);
var ROOT_TO_NODE_ACTION = "sunburstRootToNode";
var HIGHLIGHT_ACTION = "sunburstHighlight";
var UNHIGHLIGHT_ACTION = "sunburstUnhighlight";
function installSunburstAction(registers) {
registers.registerAction({
type: ROOT_TO_NODE_ACTION,
update: "updateView"
}, function(payload, ecModel) {
ecModel.eachComponent({
mainType: "series",
subType: "sunburst",
query: payload
}, handleRootToNode);
function handleRootToNode(model, index2) {
var targetInfo = retrieveTargetInfo(payload, [ROOT_TO_NODE_ACTION], model);
if (targetInfo) {
var originViewRoot = model.getViewRoot();
if (originViewRoot) {
payload.direction = aboveViewRoot(originViewRoot, targetInfo.node) ? "rollUp" : "drillDown";
}
model.resetViewRoot(targetInfo.node);
}
}
});
registers.registerAction({
type: HIGHLIGHT_ACTION,
update: "none"
}, function(payload, ecModel, api) {
payload = extend({}, payload);
ecModel.eachComponent({
mainType: "series",
subType: "sunburst",
query: payload
}, handleHighlight);
function handleHighlight(model) {
var targetInfo = retrieveTargetInfo(payload, [HIGHLIGHT_ACTION], model);
if (targetInfo) {
payload.dataIndex = targetInfo.node.dataIndex;
}
}
api.dispatchAction(extend(payload, {
type: "highlight"
}));
});
registers.registerAction({
type: UNHIGHLIGHT_ACTION,
update: "updateView"
}, function(payload, ecModel, api) {
payload = extend({}, payload);
api.dispatchAction(extend(payload, {
type: "downplay"
}));
});
}
var SunburstView = (
/** @class */
function(_super) {
__extends(SunburstView2, _super);
function SunburstView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = SunburstView2.type;
return _this;
}
SunburstView2.prototype.render = function(seriesModel, ecModel, api, payload) {
var self2 = this;
this.seriesModel = seriesModel;
this.api = api;
this.ecModel = ecModel;
var data = seriesModel.getData();
var virtualRoot = data.tree.root;
var newRoot = seriesModel.getViewRoot();
var group = this.group;
var renderLabelForZeroData = seriesModel.get("renderLabelForZeroData");
var newChildren = [];
newRoot.eachNode(function(node2) {
newChildren.push(node2);
});
var oldChildren = this._oldChildren || [];
dualTravel(newChildren, oldChildren);
renderRollUp(virtualRoot, newRoot);
this._initEvents();
this._oldChildren = newChildren;
function dualTravel(newChildren2, oldChildren2) {
if (newChildren2.length === 0 && oldChildren2.length === 0) {
return;
}
new DataDiffer(oldChildren2, newChildren2, getKey2, getKey2).add(processNode).update(processNode).remove(curry$1(processNode, null)).execute();
function getKey2(node2) {
return node2.getId();
}
function processNode(newIdx, oldIdx) {
var newNode = newIdx == null ? null : newChildren2[newIdx];
var oldNode = oldIdx == null ? null : oldChildren2[oldIdx];
doRenderNode(newNode, oldNode);
}
}
function doRenderNode(newNode, oldNode) {
if (!renderLabelForZeroData && newNode && !newNode.getValue()) {
newNode = null;
}
if (newNode !== virtualRoot && oldNode !== virtualRoot) {
if (oldNode && oldNode.piece) {
if (newNode) {
oldNode.piece.updateData(false, newNode, seriesModel, ecModel, api);
data.setItemGraphicEl(newNode.dataIndex, oldNode.piece);
} else {
removeNode2(oldNode);
}
} else if (newNode) {
var piece = new SunburstPiece(newNode, seriesModel, ecModel, api);
group.add(piece);
data.setItemGraphicEl(newNode.dataIndex, piece);
}
}
}
function removeNode2(node2) {
if (!node2) {
return;
}
if (node2.piece) {
group.remove(node2.piece);
node2.piece = null;
}
}
function renderRollUp(virtualRoot2, viewRoot) {
if (viewRoot.depth > 0) {
if (self2.virtualPiece) {
self2.virtualPiece.updateData(false, virtualRoot2, seriesModel, ecModel, api);
} else {
self2.virtualPiece = new SunburstPiece(virtualRoot2, seriesModel, ecModel, api);
group.add(self2.virtualPiece);
}
viewRoot.piece.off("click");
self2.virtualPiece.on("click", function(e2) {
self2._rootToNode(viewRoot.parentNode);
});
} else if (self2.virtualPiece) {
group.remove(self2.virtualPiece);
self2.virtualPiece = null;
}
}
};
SunburstView2.prototype._initEvents = function() {
var _this = this;
this.group.off("click");
this.group.on("click", function(e2) {
var targetFound = false;
var viewRoot = _this.seriesModel.getViewRoot();
viewRoot.eachNode(function(node2) {
if (!targetFound && node2.piece && node2.piece === e2.target) {
var nodeClick = node2.getModel().get("nodeClick");
if (nodeClick === "rootToNode") {
_this._rootToNode(node2);
} else if (nodeClick === "link") {
var itemModel = node2.getModel();
var link = itemModel.get("link");
if (link) {
var linkTarget = itemModel.get("target", true) || "_blank";
windowOpen(link, linkTarget);
}
}
targetFound = true;
}
});
});
};
SunburstView2.prototype._rootToNode = function(node2) {
if (node2 !== this.seriesModel.getViewRoot()) {
this.api.dispatchAction({
type: ROOT_TO_NODE_ACTION,
from: this.uid,
seriesId: this.seriesModel.id,
targetNode: node2
});
}
};
SunburstView2.prototype.containPoint = function(point, seriesModel) {
var treeRoot = seriesModel.getData();
var itemLayout = treeRoot.getItemLayout(0);
if (itemLayout) {
var dx = point[0] - itemLayout.cx;
var dy = point[1] - itemLayout.cy;
var radius2 = Math.sqrt(dx * dx + dy * dy);
return radius2 <= itemLayout.r && radius2 >= itemLayout.r0;
}
};
SunburstView2.type = "sunburst";
return SunburstView2;
}(ChartView)
);
var SunburstSeriesModel = (
/** @class */
function(_super) {
__extends(SunburstSeriesModel2, _super);
function SunburstSeriesModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = SunburstSeriesModel2.type;
_this.ignoreStyleOnData = true;
return _this;
}
SunburstSeriesModel2.prototype.getInitialData = function(option, ecModel) {
var root = {
name: option.name,
children: option.data
};
completeTreeValue(root);
var levelModels = this._levelModels = map$1(option.levels || [], function(levelDefine) {
return new Model(levelDefine, this, ecModel);
}, this);
var tree = Tree.createTree(root, this, beforeLink);
function beforeLink(nodeData) {
nodeData.wrapMethod("getItemModel", function(model, idx) {
var node2 = tree.getNodeByDataIndex(idx);
var levelModel = levelModels[node2.depth];
levelModel && (model.parentModel = levelModel);
return model;
});
}
return tree.data;
};
SunburstSeriesModel2.prototype.optionUpdated = function() {
this.resetViewRoot();
};
SunburstSeriesModel2.prototype.getDataParams = function(dataIndex) {
var params = _super.prototype.getDataParams.apply(this, arguments);
var node2 = this.getData().tree.getNodeByDataIndex(dataIndex);
params.treePathInfo = wrapTreePathInfo(node2, this);
return params;
};
SunburstSeriesModel2.prototype.getLevelModel = function(node2) {
return this._levelModels && this._levelModels[node2.depth];
};
SunburstSeriesModel2.prototype.getViewRoot = function() {
return this._viewRoot;
};
SunburstSeriesModel2.prototype.resetViewRoot = function(viewRoot) {
viewRoot ? this._viewRoot = viewRoot : viewRoot = this._viewRoot;
var root = this.getRawData().tree.root;
if (!viewRoot || viewRoot !== root && !root.contains(viewRoot)) {
this._viewRoot = root;
}
};
SunburstSeriesModel2.prototype.enableAriaDecal = function() {
enableAriaDecalForTree(this);
};
SunburstSeriesModel2.type = "series.sunburst";
SunburstSeriesModel2.defaultOption = {
// zlevel: 0,
z: 2,
// 默认全局居中
center: ["50%", "50%"],
radius: [0, "75%"],
// 默认顺时针
clockwise: true,
startAngle: 90,
// 最小角度改为0
minAngle: 0,
// If still show when all data zero.
stillShowZeroSum: true,
// 'rootToNode', 'link', or false
nodeClick: "rootToNode",
renderLabelForZeroData: false,
label: {
// could be: 'radial', 'tangential', or 'none'
rotate: "radial",
show: true,
opacity: 1,
// 'left' is for inner side of inside, and 'right' is for outer
// side for inside
align: "center",
position: "inside",
distance: 5,
silent: true
},
itemStyle: {
borderWidth: 1,
borderColor: "white",
borderType: "solid",
shadowBlur: 0,
shadowColor: "rgba(0, 0, 0, 0.2)",
shadowOffsetX: 0,
shadowOffsetY: 0,
opacity: 1
},
emphasis: {
focus: "descendant"
},
blur: {
itemStyle: {
opacity: 0.2
},
label: {
opacity: 0.1
}
},
// Animation type can be expansion, scale.
animationType: "expansion",
animationDuration: 1e3,
animationDurationUpdate: 500,
data: [],
/**
* Sort order.
*
* Valid values: 'desc', 'asc', null, or callback function.
* 'desc' and 'asc' for descend and ascendant order;
* null for not sorting;
* example of callback function:
* function(nodeA, nodeB) {
* return nodeA.getValue() - nodeB.getValue();
* }
*/
sort: "desc"
};
return SunburstSeriesModel2;
}(SeriesModel)
);
function completeTreeValue(dataNode) {
var sum2 = 0;
each$f(dataNode.children, function(child) {
completeTreeValue(child);
var childValue = child.value;
isArray$1(childValue) && (childValue = childValue[0]);
sum2 += childValue;
});
var thisValue = dataNode.value;
if (isArray$1(thisValue)) {
thisValue = thisValue[0];
}
if (thisValue == null || isNaN(thisValue)) {
thisValue = sum2;
}
if (thisValue < 0) {
thisValue = 0;
}
isArray$1(dataNode.value) ? dataNode.value[0] = thisValue : dataNode.value = thisValue;
}
var RADIAN = Math.PI / 180;
function sunburstLayout(seriesType2, ecModel, api) {
ecModel.eachSeriesByType(seriesType2, function(seriesModel) {
var center2 = seriesModel.get("center");
var radius2 = seriesModel.get("radius");
if (!isArray$1(radius2)) {
radius2 = [0, radius2];
}
if (!isArray$1(center2)) {
center2 = [center2, center2];
}
var width = api.getWidth();
var height = api.getHeight();
var size = Math.min(width, height);
var cx = parsePercent(center2[0], width);
var cy = parsePercent(center2[1], height);
var r0 = parsePercent(radius2[0], size / 2);
var r2 = parsePercent(radius2[1], size / 2);
var startAngle = -seriesModel.get("startAngle") * RADIAN;
var minAngle = seriesModel.get("minAngle") * RADIAN;
var virtualRoot = seriesModel.getData().tree.root;
var treeRoot = seriesModel.getViewRoot();
var rootDepth = treeRoot.depth;
var sort2 = seriesModel.get("sort");
if (sort2 != null) {
initChildren(treeRoot, sort2);
}
var validDataCount = 0;
each$f(treeRoot.children, function(child) {
!isNaN(child.getValue()) && validDataCount++;
});
var sum2 = treeRoot.getValue();
var unitRadian = Math.PI / (sum2 || validDataCount) * 2;
var renderRollupNode = treeRoot.depth > 0;
var levels = treeRoot.height - (renderRollupNode ? -1 : 1);
var rPerLevel = (r2 - r0) / (levels || 1);
var clockwise = seriesModel.get("clockwise");
var stillShowZeroSum = seriesModel.get("stillShowZeroSum");
var dir3 = clockwise ? 1 : -1;
var renderNode2 = function(node2, startAngle2) {
if (!node2) {
return;
}
var endAngle = startAngle2;
if (node2 !== virtualRoot) {
var value = node2.getValue();
var angle2 = sum2 === 0 && stillShowZeroSum ? unitRadian : value * unitRadian;
if (angle2 < minAngle) {
angle2 = minAngle;
}
endAngle = startAngle2 + dir3 * angle2;
var depth = node2.depth - rootDepth - (renderRollupNode ? -1 : 1);
var rStart2 = r0 + rPerLevel * depth;
var rEnd2 = r0 + rPerLevel * (depth + 1);
var levelModel = seriesModel.getLevelModel(node2);
if (levelModel) {
var r0_1 = levelModel.get("r0", true);
var r_1 = levelModel.get("r", true);
var radius_1 = levelModel.get("radius", true);
if (radius_1 != null) {
r0_1 = radius_1[0];
r_1 = radius_1[1];
}
r0_1 != null && (rStart2 = parsePercent(r0_1, size / 2));
r_1 != null && (rEnd2 = parsePercent(r_1, size / 2));
}
node2.setLayout({
angle: angle2,
startAngle: startAngle2,
endAngle,
clockwise,
cx,
cy,
r0: rStart2,
r: rEnd2
});
}
if (node2.children && node2.children.length) {
var siblingAngle_1 = 0;
each$f(node2.children, function(node3) {
siblingAngle_1 += renderNode2(node3, startAngle2 + siblingAngle_1);
});
}
return endAngle - startAngle2;
};
if (renderRollupNode) {
var rStart = r0;
var rEnd = r0 + rPerLevel;
var angle = Math.PI * 2;
virtualRoot.setLayout({
angle,
startAngle,
endAngle: startAngle + angle,
clockwise,
cx,
cy,
r0: rStart,
r: rEnd
});
}
renderNode2(treeRoot, startAngle);
});
}
function initChildren(node2, sortOrder) {
var children = node2.children || [];
node2.children = sort(children, sortOrder);
if (children.length) {
each$f(node2.children, function(child) {
initChildren(child, sortOrder);
});
}
}
function sort(children, sortOrder) {
if (isFunction$1(sortOrder)) {
var sortTargets = map$1(children, function(child, idx) {
var value = child.getValue();
return {
params: {
depth: child.depth,
height: child.height,
dataIndex: child.dataIndex,
getValue: function() {
return value;
}
},
index: idx
};
});
sortTargets.sort(function(a, b2) {
return sortOrder(a.params, b2.params);
});
return map$1(sortTargets, function(target) {
return children[target.index];
});
} else {
var isAsc_1 = sortOrder === "asc";
return children.sort(function(a, b2) {
var diff = (a.getValue() - b2.getValue()) * (isAsc_1 ? 1 : -1);
return diff === 0 ? (a.dataIndex - b2.dataIndex) * (isAsc_1 ? -1 : 1) : diff;
});
}
}
function sunburstVisual(ecModel) {
var paletteScope = {};
function pickColor(node2, seriesModel, treeHeight) {
var current = node2;
while (current && current.depth > 1) {
current = current.parentNode;
}
var color2 = seriesModel.getColorFromPalette(current.name || current.dataIndex + "", paletteScope);
if (node2.depth > 1 && isString$1(color2)) {
color2 = lift(color2, (node2.depth - 1) / (treeHeight - 1) * 0.5);
}
return color2;
}
ecModel.eachSeriesByType("sunburst", function(seriesModel) {
var data = seriesModel.getData();
var tree = data.tree;
tree.eachNode(function(node2) {
var model = node2.getModel();
var style2 = model.getModel("itemStyle").getItemStyle();
if (!style2.fill) {
style2.fill = pickColor(node2, seriesModel, tree.root.height);
}
var existsStyle = data.ensureUniqueItemVisual(node2.dataIndex, "style");
extend(existsStyle, style2);
});
});
}
function install$s(registers) {
registers.registerChartView(SunburstView);
registers.registerSeriesModel(SunburstSeriesModel);
registers.registerLayout(curry$1(sunburstLayout, "sunburst"));
registers.registerProcessor(curry$1(dataFilter$1, "sunburst"));
registers.registerVisual(sunburstVisual);
installSunburstAction(registers);
}
var STYLE_VISUAL_TYPE = {
color: "fill",
borderColor: "stroke"
};
var NON_STYLE_VISUAL_PROPS = {
symbol: 1,
symbolSize: 1,
symbolKeepAspect: 1,
legendIcon: 1,
visualMeta: 1,
liftZ: 1,
decal: 1
};
var customInnerStore = makeInner();
var CustomSeriesModel = (
/** @class */
function(_super) {
__extends(CustomSeriesModel2, _super);
function CustomSeriesModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = CustomSeriesModel2.type;
return _this;
}
CustomSeriesModel2.prototype.optionUpdated = function() {
this.currentZLevel = this.get("zlevel", true);
this.currentZ = this.get("z", true);
};
CustomSeriesModel2.prototype.getInitialData = function(option, ecModel) {
return createSeriesData(null, this);
};
CustomSeriesModel2.prototype.getDataParams = function(dataIndex, dataType, el2) {
var params = _super.prototype.getDataParams.call(this, dataIndex, dataType);
el2 && (params.info = customInnerStore(el2).info);
return params;
};
CustomSeriesModel2.type = "series.custom";
CustomSeriesModel2.dependencies = ["grid", "polar", "geo", "singleAxis", "calendar"];
CustomSeriesModel2.defaultOption = {
coordinateSystem: "cartesian2d",
// zlevel: 0,
z: 2,
legendHoverLink: true,
// Custom series will not clip by default.
// Some case will use custom series to draw label
// For example https://echarts.apache.org/examples/en/editor.html?c=custom-gantt-flight
clip: false
// Cartesian coordinate system
// xAxisIndex: 0,
// yAxisIndex: 0,
// Polar coordinate system
// polarIndex: 0,
// Geo coordinate system
// geoIndex: 0,
};
return CustomSeriesModel2;
}(SeriesModel)
);
function dataToCoordSize$3(dataSize, dataItem) {
dataItem = dataItem || [0, 0];
return map$1(["x", "y"], function(dim, dimIdx) {
var axis = this.getAxis(dim);
var val = dataItem[dimIdx];
var halfSize = dataSize[dimIdx] / 2;
return axis.type === "category" ? axis.getBandWidth() : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize));
}, this);
}
function cartesianPrepareCustom(coordSys) {
var rect = coordSys.master.getRect();
return {
coordSys: {
// The name exposed to user is always 'cartesian2d' but not 'grid'.
type: "cartesian2d",
x: rect.x,
y: rect.y,
width: rect.width,
height: rect.height
},
api: {
coord: function(data) {
return coordSys.dataToPoint(data);
},
size: bind$2(dataToCoordSize$3, coordSys)
}
};
}
function dataToCoordSize$2(dataSize, dataItem) {
dataItem = dataItem || [0, 0];
return map$1([0, 1], function(dimIdx) {
var val = dataItem[dimIdx];
var halfSize = dataSize[dimIdx] / 2;
var p1 = [];
var p2 = [];
p1[dimIdx] = val - halfSize;
p2[dimIdx] = val + halfSize;
p1[1 - dimIdx] = p2[1 - dimIdx] = dataItem[1 - dimIdx];
return Math.abs(this.dataToPoint(p1)[dimIdx] - this.dataToPoint(p2)[dimIdx]);
}, this);
}
function geoPrepareCustom(coordSys) {
var rect = coordSys.getBoundingRect();
return {
coordSys: {
type: "geo",
x: rect.x,
y: rect.y,
width: rect.width,
height: rect.height,
zoom: coordSys.getZoom()
},
api: {
coord: function(data) {
return coordSys.dataToPoint(data);
},
size: bind$2(dataToCoordSize$2, coordSys)
}
};
}
function dataToCoordSize$1(dataSize, dataItem) {
var axis = this.getAxis();
var val = dataItem instanceof Array ? dataItem[0] : dataItem;
var halfSize = (dataSize instanceof Array ? dataSize[0] : dataSize) / 2;
return axis.type === "category" ? axis.getBandWidth() : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize));
}
function singlePrepareCustom(coordSys) {
var rect = coordSys.getRect();
return {
coordSys: {
type: "singleAxis",
x: rect.x,
y: rect.y,
width: rect.width,
height: rect.height
},
api: {
coord: function(val) {
return coordSys.dataToPoint(val);
},
size: bind$2(dataToCoordSize$1, coordSys)
}
};
}
function dataToCoordSize(dataSize, dataItem) {
dataItem = dataItem || [0, 0];
return map$1(["Radius", "Angle"], function(dim, dimIdx) {
var getterName = "get" + dim + "Axis";
var axis = this[getterName]();
var val = dataItem[dimIdx];
var halfSize = dataSize[dimIdx] / 2;
var result = axis.type === "category" ? axis.getBandWidth() : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize));
if (dim === "Angle") {
result = result * Math.PI / 180;
}
return result;
}, this);
}
function polarPrepareCustom(coordSys) {
var radiusAxis = coordSys.getRadiusAxis();
var angleAxis = coordSys.getAngleAxis();
var radius2 = radiusAxis.getExtent();
radius2[0] > radius2[1] && radius2.reverse();
return {
coordSys: {
type: "polar",
cx: coordSys.cx,
cy: coordSys.cy,
r: radius2[1],
r0: radius2[0]
},
api: {
coord: function(data) {
var radius3 = radiusAxis.dataToRadius(data[0]);
var angle = angleAxis.dataToAngle(data[1]);
var coord = coordSys.coordToPoint([radius3, angle]);
coord.push(radius3, angle * Math.PI / 180);
return coord;
},
size: bind$2(dataToCoordSize, coordSys)
}
};
}
function calendarPrepareCustom(coordSys) {
var rect = coordSys.getRect();
var rangeInfo = coordSys.getRangeInfo();
return {
coordSys: {
type: "calendar",
x: rect.x,
y: rect.y,
width: rect.width,
height: rect.height,
cellWidth: coordSys.getCellWidth(),
cellHeight: coordSys.getCellHeight(),
rangeInfo: {
start: rangeInfo.start,
end: rangeInfo.end,
weeks: rangeInfo.weeks,
dayCount: rangeInfo.allDay
}
},
api: {
coord: function(data, clamp2) {
return coordSys.dataToPoint(data, clamp2);
}
}
};
}
function isEC4CompatibleStyle(style2, elType, hasOwnTextContentOption, hasOwnTextConfig) {
return style2 && (style2.legacy || style2.legacy !== false && !hasOwnTextContentOption && !hasOwnTextConfig && elType !== "tspan" && (elType === "text" || hasOwn(style2, "text")));
}
function convertFromEC4CompatibleStyle(hostStyle, elType, isNormal) {
var srcStyle = hostStyle;
var textConfig;
var textContent;
var textContentStyle;
if (elType === "text") {
textContentStyle = srcStyle;
} else {
textContentStyle = {};
hasOwn(srcStyle, "text") && (textContentStyle.text = srcStyle.text);
hasOwn(srcStyle, "rich") && (textContentStyle.rich = srcStyle.rich);
hasOwn(srcStyle, "textFill") && (textContentStyle.fill = srcStyle.textFill);
hasOwn(srcStyle, "textStroke") && (textContentStyle.stroke = srcStyle.textStroke);
hasOwn(srcStyle, "fontFamily") && (textContentStyle.fontFamily = srcStyle.fontFamily);
hasOwn(srcStyle, "fontSize") && (textContentStyle.fontSize = srcStyle.fontSize);
hasOwn(srcStyle, "fontStyle") && (textContentStyle.fontStyle = srcStyle.fontStyle);
hasOwn(srcStyle, "fontWeight") && (textContentStyle.fontWeight = srcStyle.fontWeight);
textContent = {
type: "text",
style: textContentStyle,
// ec4 does not support rectText trigger.
// And when text position is different in normal and emphasis
// => hover text trigger emphasis;
// => text position changed, leave mouse pointer immediately;
// That might cause incorrect state.
silent: true
};
textConfig = {};
var hasOwnPos = hasOwn(srcStyle, "textPosition");
if (isNormal) {
textConfig.position = hasOwnPos ? srcStyle.textPosition : "inside";
} else {
hasOwnPos && (textConfig.position = srcStyle.textPosition);
}
hasOwn(srcStyle, "textPosition") && (textConfig.position = srcStyle.textPosition);
hasOwn(srcStyle, "textOffset") && (textConfig.offset = srcStyle.textOffset);
hasOwn(srcStyle, "textRotation") && (textConfig.rotation = srcStyle.textRotation);
hasOwn(srcStyle, "textDistance") && (textConfig.distance = srcStyle.textDistance);
}
convertEC4CompatibleRichItem(textContentStyle, hostStyle);
each$f(textContentStyle.rich, function(richItem) {
convertEC4CompatibleRichItem(richItem, richItem);
});
return {
textConfig,
textContent
};
}
function convertEC4CompatibleRichItem(out2, richItem) {
if (!richItem) {
return;
}
richItem.font = richItem.textFont || richItem.font;
hasOwn(richItem, "textStrokeWidth") && (out2.lineWidth = richItem.textStrokeWidth);
hasOwn(richItem, "textAlign") && (out2.align = richItem.textAlign);
hasOwn(richItem, "textVerticalAlign") && (out2.verticalAlign = richItem.textVerticalAlign);
hasOwn(richItem, "textLineHeight") && (out2.lineHeight = richItem.textLineHeight);
hasOwn(richItem, "textWidth") && (out2.width = richItem.textWidth);
hasOwn(richItem, "textHeight") && (out2.height = richItem.textHeight);
hasOwn(richItem, "textBackgroundColor") && (out2.backgroundColor = richItem.textBackgroundColor);
hasOwn(richItem, "textPadding") && (out2.padding = richItem.textPadding);
hasOwn(richItem, "textBorderColor") && (out2.borderColor = richItem.textBorderColor);
hasOwn(richItem, "textBorderWidth") && (out2.borderWidth = richItem.textBorderWidth);
hasOwn(richItem, "textBorderRadius") && (out2.borderRadius = richItem.textBorderRadius);
hasOwn(richItem, "textBoxShadowColor") && (out2.shadowColor = richItem.textBoxShadowColor);
hasOwn(richItem, "textBoxShadowBlur") && (out2.shadowBlur = richItem.textBoxShadowBlur);
hasOwn(richItem, "textBoxShadowOffsetX") && (out2.shadowOffsetX = richItem.textBoxShadowOffsetX);
hasOwn(richItem, "textBoxShadowOffsetY") && (out2.shadowOffsetY = richItem.textBoxShadowOffsetY);
}
function convertToEC4StyleForCustomSerise(itemStl, txStl, txCfg) {
var out2 = itemStl;
out2.textPosition = out2.textPosition || txCfg.position || "inside";
txCfg.offset != null && (out2.textOffset = txCfg.offset);
txCfg.rotation != null && (out2.textRotation = txCfg.rotation);
txCfg.distance != null && (out2.textDistance = txCfg.distance);
var isInside = out2.textPosition.indexOf("inside") >= 0;
var hostFill = itemStl.fill || "#000";
convertToEC4RichItem(out2, txStl);
var textFillNotSet = out2.textFill == null;
if (isInside) {
if (textFillNotSet) {
out2.textFill = txCfg.insideFill || "#fff";
!out2.textStroke && txCfg.insideStroke && (out2.textStroke = txCfg.insideStroke);
!out2.textStroke && (out2.textStroke = hostFill);
out2.textStrokeWidth == null && (out2.textStrokeWidth = 2);
}
} else {
if (textFillNotSet) {
out2.textFill = itemStl.fill || txCfg.outsideFill || "#000";
}
!out2.textStroke && txCfg.outsideStroke && (out2.textStroke = txCfg.outsideStroke);
}
out2.text = txStl.text;
out2.rich = txStl.rich;
each$f(txStl.rich, function(richItem) {
convertToEC4RichItem(richItem, richItem);
});
return out2;
}
function convertToEC4RichItem(out2, richItem) {
if (!richItem) {
return;
}
hasOwn(richItem, "fill") && (out2.textFill = richItem.fill);
hasOwn(richItem, "stroke") && (out2.textStroke = richItem.fill);
hasOwn(richItem, "lineWidth") && (out2.textStrokeWidth = richItem.lineWidth);
hasOwn(richItem, "font") && (out2.font = richItem.font);
hasOwn(richItem, "fontStyle") && (out2.fontStyle = richItem.fontStyle);
hasOwn(richItem, "fontWeight") && (out2.fontWeight = richItem.fontWeight);
hasOwn(richItem, "fontSize") && (out2.fontSize = richItem.fontSize);
hasOwn(richItem, "fontFamily") && (out2.fontFamily = richItem.fontFamily);
hasOwn(richItem, "align") && (out2.textAlign = richItem.align);
hasOwn(richItem, "verticalAlign") && (out2.textVerticalAlign = richItem.verticalAlign);
hasOwn(richItem, "lineHeight") && (out2.textLineHeight = richItem.lineHeight);
hasOwn(richItem, "width") && (out2.textWidth = richItem.width);
hasOwn(richItem, "height") && (out2.textHeight = richItem.height);
hasOwn(richItem, "backgroundColor") && (out2.textBackgroundColor = richItem.backgroundColor);
hasOwn(richItem, "padding") && (out2.textPadding = richItem.padding);
hasOwn(richItem, "borderColor") && (out2.textBorderColor = richItem.borderColor);
hasOwn(richItem, "borderWidth") && (out2.textBorderWidth = richItem.borderWidth);
hasOwn(richItem, "borderRadius") && (out2.textBorderRadius = richItem.borderRadius);
hasOwn(richItem, "shadowColor") && (out2.textBoxShadowColor = richItem.shadowColor);
hasOwn(richItem, "shadowBlur") && (out2.textBoxShadowBlur = richItem.shadowBlur);
hasOwn(richItem, "shadowOffsetX") && (out2.textBoxShadowOffsetX = richItem.shadowOffsetX);
hasOwn(richItem, "shadowOffsetY") && (out2.textBoxShadowOffsetY = richItem.shadowOffsetY);
hasOwn(richItem, "textShadowColor") && (out2.textShadowColor = richItem.textShadowColor);
hasOwn(richItem, "textShadowBlur") && (out2.textShadowBlur = richItem.textShadowBlur);
hasOwn(richItem, "textShadowOffsetX") && (out2.textShadowOffsetX = richItem.textShadowOffsetX);
hasOwn(richItem, "textShadowOffsetY") && (out2.textShadowOffsetY = richItem.textShadowOffsetY);
}
var LEGACY_TRANSFORM_PROPS_MAP = {
position: ["x", "y"],
scale: ["scaleX", "scaleY"],
origin: ["originX", "originY"]
};
var LEGACY_TRANSFORM_PROPS = keys(LEGACY_TRANSFORM_PROPS_MAP);
reduce(TRANSFORMABLE_PROPS, function(obj, key) {
obj[key] = 1;
return obj;
}, {});
TRANSFORMABLE_PROPS.join(", ");
var ELEMENT_ANIMATABLE_PROPS = ["", "style", "shape", "extra"];
var transitionInnerStore = makeInner();
function getElementAnimationConfig(animationType, el2, elOption, parentModel, dataIndex) {
var animationProp = animationType + "Animation";
var config = getAnimationConfig(animationType, parentModel, dataIndex) || {};
var userDuring = transitionInnerStore(el2).userDuring;
if (config.duration > 0) {
config.during = userDuring ? bind$2(duringCall, {
el: el2,
userDuring
}) : null;
config.setToFinal = true;
config.scope = animationType;
}
extend(config, elOption[animationProp]);
return config;
}
function applyUpdateTransition(el2, elOption, animatableModel, opts) {
opts = opts || {};
var dataIndex = opts.dataIndex, isInit = opts.isInit, clearStyle = opts.clearStyle;
var hasAnimation = animatableModel.isAnimationEnabled();
var store = transitionInnerStore(el2);
var styleOpt = elOption.style;
store.userDuring = elOption.during;
var transFromProps = {};
var propsToSet = {};
prepareTransformAllPropsFinal(el2, elOption, propsToSet);
prepareShapeOrExtraAllPropsFinal("shape", elOption, propsToSet);
prepareShapeOrExtraAllPropsFinal("extra", elOption, propsToSet);
if (!isInit && hasAnimation) {
prepareTransformTransitionFrom(el2, elOption, transFromProps);
prepareShapeOrExtraTransitionFrom("shape", el2, elOption, transFromProps);
prepareShapeOrExtraTransitionFrom("extra", el2, elOption, transFromProps);
prepareStyleTransitionFrom(el2, elOption, styleOpt, transFromProps);
}
propsToSet.style = styleOpt;
applyPropsDirectly(el2, propsToSet, clearStyle);
applyMiscProps(el2, elOption);
if (hasAnimation) {
if (isInit) {
var enterFromProps_1 = {};
each$f(ELEMENT_ANIMATABLE_PROPS, function(propName) {
var prop = propName ? elOption[propName] : elOption;
if (prop && prop.enterFrom) {
if (propName) {
enterFromProps_1[propName] = enterFromProps_1[propName] || {};
}
extend(propName ? enterFromProps_1[propName] : enterFromProps_1, prop.enterFrom);
}
});
var config = getElementAnimationConfig("enter", el2, elOption, animatableModel, dataIndex);
if (config.duration > 0) {
el2.animateFrom(enterFromProps_1, config);
}
} else {
applyPropsTransition(el2, elOption, dataIndex || 0, animatableModel, transFromProps);
}
}
updateLeaveTo(el2, elOption);
styleOpt ? el2.dirty() : el2.markRedraw();
}
function updateLeaveTo(el2, elOption) {
var leaveToProps = transitionInnerStore(el2).leaveToProps;
for (var i = 0; i < ELEMENT_ANIMATABLE_PROPS.length; i++) {
var propName = ELEMENT_ANIMATABLE_PROPS[i];
var prop = propName ? elOption[propName] : elOption;
if (prop && prop.leaveTo) {
if (!leaveToProps) {
leaveToProps = transitionInnerStore(el2).leaveToProps = {};
}
if (propName) {
leaveToProps[propName] = leaveToProps[propName] || {};
}
extend(propName ? leaveToProps[propName] : leaveToProps, prop.leaveTo);
}
}
}
function applyLeaveTransition(el2, elOption, animatableModel, onRemove) {
if (el2) {
var parent_1 = el2.parent;
var leaveToProps = transitionInnerStore(el2).leaveToProps;
if (leaveToProps) {
var config = getElementAnimationConfig("update", el2, elOption, animatableModel, 0);
config.done = function() {
parent_1.remove(el2);
};
el2.animateTo(leaveToProps, config);
} else {
parent_1.remove(el2);
}
}
}
function isTransitionAll(transition) {
return transition === "all";
}
function applyPropsDirectly(el2, allPropsFinal, clearStyle) {
var styleOpt = allPropsFinal.style;
if (!el2.isGroup && styleOpt) {
if (clearStyle) {
el2.useStyle({});
var animators = el2.animators;
for (var i = 0; i < animators.length; i++) {
var animator = animators[i];
if (animator.targetName === "style") {
animator.changeTarget(el2.style);
}
}
}
el2.setStyle(styleOpt);
}
if (allPropsFinal) {
allPropsFinal.style = null;
allPropsFinal && el2.attr(allPropsFinal);
allPropsFinal.style = styleOpt;
}
}
function applyPropsTransition(el2, elOption, dataIndex, model, transFromProps) {
if (transFromProps) {
var config = getElementAnimationConfig("update", el2, elOption, model, dataIndex);
if (config.duration > 0) {
el2.animateFrom(transFromProps, config);
}
}
}
function applyMiscProps(el2, elOption) {
hasOwn(elOption, "silent") && (el2.silent = elOption.silent);
hasOwn(elOption, "ignore") && (el2.ignore = elOption.ignore);
if (el2 instanceof Displayable) {
hasOwn(elOption, "invisible") && (el2.invisible = elOption.invisible);
}
if (el2 instanceof Path) {
hasOwn(elOption, "autoBatch") && (el2.autoBatch = elOption.autoBatch);
}
}
var tmpDuringScope = {};
var transitionDuringAPI = {
// Usually other props do not need to be changed in animation during.
setTransform: function(key, val) {
tmpDuringScope.el[key] = val;
return this;
},
getTransform: function(key) {
return tmpDuringScope.el[key];
},
setShape: function(key, val) {
var el2 = tmpDuringScope.el;
var shape = el2.shape || (el2.shape = {});
shape[key] = val;
el2.dirtyShape && el2.dirtyShape();
return this;
},
getShape: function(key) {
var shape = tmpDuringScope.el.shape;
if (shape) {
return shape[key];
}
},
setStyle: function(key, val) {
var el2 = tmpDuringScope.el;
var style2 = el2.style;
if (style2) {
style2[key] = val;
el2.dirtyStyle && el2.dirtyStyle();
}
return this;
},
getStyle: function(key) {
var style2 = tmpDuringScope.el.style;
if (style2) {
return style2[key];
}
},
setExtra: function(key, val) {
var extra = tmpDuringScope.el.extra || (tmpDuringScope.el.extra = {});
extra[key] = val;
return this;
},
getExtra: function(key) {
var extra = tmpDuringScope.el.extra;
if (extra) {
return extra[key];
}
}
};
function duringCall() {
var scope = this;
var el2 = scope.el;
if (!el2) {
return;
}
var latestUserDuring = transitionInnerStore(el2).userDuring;
var scopeUserDuring = scope.userDuring;
if (latestUserDuring !== scopeUserDuring) {
scope.el = scope.userDuring = null;
return;
}
tmpDuringScope.el = el2;
scopeUserDuring(transitionDuringAPI);
}
function prepareShapeOrExtraTransitionFrom(mainAttr, fromEl, elOption, transFromProps) {
var attrOpt = elOption[mainAttr];
if (!attrOpt) {
return;
}
var elPropsInAttr = fromEl[mainAttr];
var transFromPropsInAttr;
if (elPropsInAttr) {
var transition = elOption.transition;
var attrTransition = attrOpt.transition;
if (attrTransition) {
!transFromPropsInAttr && (transFromPropsInAttr = transFromProps[mainAttr] = {});
if (isTransitionAll(attrTransition)) {
extend(transFromPropsInAttr, elPropsInAttr);
} else {
var transitionKeys2 = normalizeToArray(attrTransition);
for (var i = 0; i < transitionKeys2.length; i++) {
var key = transitionKeys2[i];
var elVal = elPropsInAttr[key];
transFromPropsInAttr[key] = elVal;
}
}
} else if (isTransitionAll(transition) || indexOf(transition, mainAttr) >= 0) {
!transFromPropsInAttr && (transFromPropsInAttr = transFromProps[mainAttr] = {});
var elPropsInAttrKeys = keys(elPropsInAttr);
for (var i = 0; i < elPropsInAttrKeys.length; i++) {
var key = elPropsInAttrKeys[i];
var elVal = elPropsInAttr[key];
if (isNonStyleTransitionEnabled(attrOpt[key], elVal)) {
transFromPropsInAttr[key] = elVal;
}
}
}
}
}
function prepareShapeOrExtraAllPropsFinal(mainAttr, elOption, allProps) {
var attrOpt = elOption[mainAttr];
if (!attrOpt) {
return;
}
var allPropsInAttr = allProps[mainAttr] = {};
var keysInAttr = keys(attrOpt);
for (var i = 0; i < keysInAttr.length; i++) {
var key = keysInAttr[i];
allPropsInAttr[key] = cloneValue(attrOpt[key]);
}
}
function prepareTransformTransitionFrom(el2, elOption, transFromProps) {
var transition = elOption.transition;
var transitionKeys2 = isTransitionAll(transition) ? TRANSFORMABLE_PROPS : normalizeToArray(transition || []);
for (var i = 0; i < transitionKeys2.length; i++) {
var key = transitionKeys2[i];
if (key === "style" || key === "shape" || key === "extra") {
continue;
}
var elVal = el2[key];
transFromProps[key] = elVal;
}
}
function prepareTransformAllPropsFinal(el2, elOption, allProps) {
for (var i = 0; i < LEGACY_TRANSFORM_PROPS.length; i++) {
var legacyName = LEGACY_TRANSFORM_PROPS[i];
var xyName = LEGACY_TRANSFORM_PROPS_MAP[legacyName];
var legacyArr = elOption[legacyName];
if (legacyArr) {
allProps[xyName[0]] = legacyArr[0];
allProps[xyName[1]] = legacyArr[1];
}
}
for (var i = 0; i < TRANSFORMABLE_PROPS.length; i++) {
var key = TRANSFORMABLE_PROPS[i];
if (elOption[key] != null) {
allProps[key] = elOption[key];
}
}
}
function prepareStyleTransitionFrom(fromEl, elOption, styleOpt, transFromProps) {
if (!styleOpt) {
return;
}
var fromElStyle = fromEl.style;
var transFromStyleProps;
if (fromElStyle) {
var styleTransition = styleOpt.transition;
var elTransition = elOption.transition;
if (styleTransition && !isTransitionAll(styleTransition)) {
var transitionKeys2 = normalizeToArray(styleTransition);
!transFromStyleProps && (transFromStyleProps = transFromProps.style = {});
for (var i = 0; i < transitionKeys2.length; i++) {
var key = transitionKeys2[i];
var elVal = fromElStyle[key];
transFromStyleProps[key] = elVal;
}
} else if (fromEl.getAnimationStyleProps && (isTransitionAll(elTransition) || isTransitionAll(styleTransition) || indexOf(elTransition, "style") >= 0)) {
var animationProps = fromEl.getAnimationStyleProps();
var animationStyleProps = animationProps ? animationProps.style : null;
if (animationStyleProps) {
!transFromStyleProps && (transFromStyleProps = transFromProps.style = {});
var styleKeys = keys(styleOpt);
for (var i = 0; i < styleKeys.length; i++) {
var key = styleKeys[i];
if (animationStyleProps[key]) {
var elVal = fromElStyle[key];
transFromStyleProps[key] = elVal;
}
}
}
}
}
}
function isNonStyleTransitionEnabled(optVal, elVal) {
return !isArrayLike(optVal) ? optVal != null && isFinite(optVal) : optVal !== elVal;
}
var getStateToRestore = makeInner();
var KEYFRAME_EXCLUDE_KEYS = ["percent", "easing", "shape", "style", "extra"];
function stopPreviousKeyframeAnimationAndRestore(el2) {
el2.stopAnimation("keyframe");
el2.attr(getStateToRestore(el2));
}
function applyKeyframeAnimation(el2, animationOpts, animatableModel) {
if (!animatableModel.isAnimationEnabled() || !animationOpts) {
return;
}
if (isArray$1(animationOpts)) {
each$f(animationOpts, function(singleAnimationOpts) {
applyKeyframeAnimation(el2, singleAnimationOpts, animatableModel);
});
return;
}
var keyframes = animationOpts.keyframes;
var duration = animationOpts.duration;
if (animatableModel && duration == null) {
var config = getAnimationConfig("enter", animatableModel, 0);
duration = config && config.duration;
}
if (!keyframes || !duration) {
return;
}
var stateToRestore = getStateToRestore(el2);
each$f(ELEMENT_ANIMATABLE_PROPS, function(targetPropName) {
if (targetPropName && !el2[targetPropName]) {
return;
}
var animator;
keyframes.sort(function(a, b2) {
return a.percent - b2.percent;
});
each$f(keyframes, function(kf) {
var animators = el2.animators;
var kfValues = targetPropName ? kf[targetPropName] : kf;
if (!kfValues) {
return;
}
var propKeys = keys(kfValues);
if (!targetPropName) {
propKeys = filter(propKeys, function(key) {
return indexOf(KEYFRAME_EXCLUDE_KEYS, key) < 0;
});
}
if (!propKeys.length) {
return;
}
if (!animator) {
animator = el2.animate(targetPropName, animationOpts.loop, true);
animator.scope = "keyframe";
}
for (var i = 0; i < animators.length; i++) {
if (animators[i] !== animator && animators[i].targetName === animator.targetName) {
animators[i].stopTracks(propKeys);
}
}
targetPropName && (stateToRestore[targetPropName] = stateToRestore[targetPropName] || {});
var savedTarget = targetPropName ? stateToRestore[targetPropName] : stateToRestore;
each$f(propKeys, function(key) {
savedTarget[key] = ((targetPropName ? el2[targetPropName] : el2) || {})[key];
});
animator.whenWithKeys(duration * kf.percent, kfValues, propKeys, kf.easing);
});
if (!animator) {
return;
}
animator.delay(animationOpts.delay || 0).duration(duration).start(animationOpts.easing);
});
}
var EMPHASIS = "emphasis";
var NORMAL = "normal";
var BLUR = "blur";
var SELECT = "select";
var STATES = [NORMAL, EMPHASIS, BLUR, SELECT];
var PATH_ITEM_STYLE = {
normal: ["itemStyle"],
emphasis: [EMPHASIS, "itemStyle"],
blur: [BLUR, "itemStyle"],
select: [SELECT, "itemStyle"]
};
var PATH_LABEL = {
normal: ["label"],
emphasis: [EMPHASIS, "label"],
blur: [BLUR, "label"],
select: [SELECT, "label"]
};
var DEFAULT_TRANSITION = ["x", "y"];
var GROUP_DIFF_PREFIX = "e\0\0";
var attachedTxInfoTmp = {
normal: {},
emphasis: {},
blur: {},
select: {}
};
var prepareCustoms = {
cartesian2d: cartesianPrepareCustom,
geo: geoPrepareCustom,
single: singlePrepareCustom,
polar: polarPrepareCustom,
calendar: calendarPrepareCustom
};
function isPath(el2) {
return el2 instanceof Path;
}
function isDisplayable(el2) {
return el2 instanceof Displayable;
}
function copyElement(sourceEl, targetEl) {
targetEl.copyTransform(sourceEl);
if (isDisplayable(targetEl) && isDisplayable(sourceEl)) {
targetEl.setStyle(sourceEl.style);
targetEl.z = sourceEl.z;
targetEl.z2 = sourceEl.z2;
targetEl.zlevel = sourceEl.zlevel;
targetEl.invisible = sourceEl.invisible;
targetEl.ignore = sourceEl.ignore;
if (isPath(targetEl) && isPath(sourceEl)) {
targetEl.setShape(sourceEl.shape);
}
}
}
var CustomChartView = (
/** @class */
function(_super) {
__extends(CustomChartView2, _super);
function CustomChartView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = CustomChartView2.type;
return _this;
}
CustomChartView2.prototype.render = function(customSeries, ecModel, api, payload) {
this._progressiveEls = null;
var oldData = this._data;
var data = customSeries.getData();
var group = this.group;
var renderItem = makeRenderItem(customSeries, data, ecModel, api);
if (!oldData) {
group.removeAll();
}
data.diff(oldData).add(function(newIdx) {
createOrUpdateItem(api, null, newIdx, renderItem(newIdx, payload), customSeries, group, data);
}).remove(function(oldIdx) {
var el2 = oldData.getItemGraphicEl(oldIdx);
el2 && applyLeaveTransition(el2, customInnerStore(el2).option, customSeries);
}).update(function(newIdx, oldIdx) {
var oldEl = oldData.getItemGraphicEl(oldIdx);
createOrUpdateItem(api, oldEl, newIdx, renderItem(newIdx, payload), customSeries, group, data);
}).execute();
var clipPath = customSeries.get("clip", true) ? createClipPath(customSeries.coordinateSystem, false, customSeries) : null;
if (clipPath) {
group.setClipPath(clipPath);
} else {
group.removeClipPath();
}
this._data = data;
};
CustomChartView2.prototype.incrementalPrepareRender = function(customSeries, ecModel, api) {
this.group.removeAll();
this._data = null;
};
CustomChartView2.prototype.incrementalRender = function(params, customSeries, ecModel, api, payload) {
var data = customSeries.getData();
var renderItem = makeRenderItem(customSeries, data, ecModel, api);
var progressiveEls = this._progressiveEls = [];
function setIncrementalAndHoverLayer(el22) {
if (!el22.isGroup) {
el22.incremental = true;
el22.ensureState("emphasis").hoverLayer = true;
}
}
for (var idx = params.start; idx < params.end; idx++) {
var el2 = createOrUpdateItem(null, null, idx, renderItem(idx, payload), customSeries, this.group, data);
if (el2) {
el2.traverse(setIncrementalAndHoverLayer);
progressiveEls.push(el2);
}
}
};
CustomChartView2.prototype.eachRendered = function(cb2) {
traverseElements(this._progressiveEls || this.group, cb2);
};
CustomChartView2.prototype.filterForExposedEvent = function(eventType, query, targetEl, packedEvent) {
var elementName = query.element;
if (elementName == null || targetEl.name === elementName) {
return true;
}
while ((targetEl = targetEl.__hostTarget || targetEl.parent) && targetEl !== this.group) {
if (targetEl.name === elementName) {
return true;
}
}
return false;
};
CustomChartView2.type = "custom";
return CustomChartView2;
}(ChartView)
);
function createEl$1(elOption) {
var graphicType = elOption.type;
var el2;
if (graphicType === "path") {
var shape = elOption.shape;
var pathRect = shape.width != null && shape.height != null ? {
x: shape.x || 0,
y: shape.y || 0,
width: shape.width,
height: shape.height
} : null;
var pathData = getPathData(shape);
el2 = makePath(pathData, null, pathRect, shape.layout || "center");
customInnerStore(el2).customPathData = pathData;
} else if (graphicType === "image") {
el2 = new ZRImage({});
customInnerStore(el2).customImagePath = elOption.style.image;
} else if (graphicType === "text") {
el2 = new ZRText({});
} else if (graphicType === "group") {
el2 = new Group$3();
} else if (graphicType === "compoundPath") {
throw new Error('"compoundPath" is not supported yet.');
} else {
var Clz = getShapeClass(graphicType);
if (!Clz) {
var errMsg = "";
throwError(errMsg);
}
el2 = new Clz();
}
customInnerStore(el2).customGraphicType = graphicType;
el2.name = elOption.name;
el2.z2EmphasisLift = 1;
el2.z2SelectLift = 1;
return el2;
}
function updateElNormal(api, el2, dataIndex, elOption, attachedTxInfo, seriesModel, isInit) {
stopPreviousKeyframeAnimationAndRestore(el2);
var txCfgOpt = attachedTxInfo && attachedTxInfo.normal.cfg;
if (txCfgOpt) {
el2.setTextConfig(txCfgOpt);
}
if (elOption && elOption.transition == null) {
elOption.transition = DEFAULT_TRANSITION;
}
var styleOpt = elOption && elOption.style;
if (styleOpt) {
if (el2.type === "text") {
var textOptionStyle = styleOpt;
hasOwn(textOptionStyle, "textFill") && (textOptionStyle.fill = textOptionStyle.textFill);
hasOwn(textOptionStyle, "textStroke") && (textOptionStyle.stroke = textOptionStyle.textStroke);
}
var decalPattern = void 0;
var decalObj = isPath(el2) ? styleOpt.decal : null;
if (api && decalObj) {
decalObj.dirty = true;
decalPattern = createOrUpdatePatternFromDecal(decalObj, api);
}
styleOpt.__decalPattern = decalPattern;
}
if (isDisplayable(el2)) {
if (styleOpt) {
var decalPattern = styleOpt.__decalPattern;
if (decalPattern) {
styleOpt.decal = decalPattern;
}
}
}
applyUpdateTransition(el2, elOption, seriesModel, {
dataIndex,
isInit,
clearStyle: true
});
applyKeyframeAnimation(el2, elOption.keyframeAnimation, seriesModel);
}
function updateElOnState(state, el2, elStateOpt, styleOpt, attachedTxInfo) {
var elDisplayable = el2.isGroup ? null : el2;
var txCfgOpt = attachedTxInfo && attachedTxInfo[state].cfg;
if (elDisplayable) {
var stateObj = elDisplayable.ensureState(state);
if (styleOpt === false) {
var existingEmphasisState = elDisplayable.getState(state);
if (existingEmphasisState) {
existingEmphasisState.style = null;
}
} else {
stateObj.style = styleOpt || null;
}
if (txCfgOpt) {
stateObj.textConfig = txCfgOpt;
}
setDefaultStateProxy(elDisplayable);
}
}
function updateZ(el2, elOption, seriesModel) {
if (el2.isGroup) {
return;
}
var elDisplayable = el2;
var currentZ = seriesModel.currentZ;
var currentZLevel = seriesModel.currentZLevel;
elDisplayable.z = currentZ;
elDisplayable.zlevel = currentZLevel;
var optZ2 = elOption.z2;
optZ2 != null && (elDisplayable.z2 = optZ2 || 0);
for (var i = 0; i < STATES.length; i++) {
updateZForEachState(elDisplayable, elOption, STATES[i]);
}
}
function updateZForEachState(elDisplayable, elOption, state) {
var isNormal = state === NORMAL;
var elStateOpt = isNormal ? elOption : retrieveStateOption(elOption, state);
var optZ2 = elStateOpt ? elStateOpt.z2 : null;
var stateObj;
if (optZ2 != null) {
stateObj = isNormal ? elDisplayable : elDisplayable.ensureState(state);
stateObj.z2 = optZ2 || 0;
}
}
function makeRenderItem(customSeries, data, ecModel, api) {
var renderItem = customSeries.get("renderItem");
var coordSys = customSeries.coordinateSystem;
var prepareResult2 = {};
if (coordSys) {
prepareResult2 = coordSys.prepareCustoms ? coordSys.prepareCustoms(coordSys) : prepareCustoms[coordSys.type](coordSys);
}
var userAPI = defaults({
getWidth: api.getWidth,
getHeight: api.getHeight,
getZr: api.getZr,
getDevicePixelRatio: api.getDevicePixelRatio,
value,
style: style2,
ordinalRawValue,
styleEmphasis,
visual,
barLayout,
currentSeriesIndices,
font
}, prepareResult2.api || {});
var userParams = {
// The life cycle of context: current round of rendering.
// The global life cycle is probably not necessary, because
// user can store global status by themselves.
context: {},
seriesId: customSeries.id,
seriesName: customSeries.name,
seriesIndex: customSeries.seriesIndex,
coordSys: prepareResult2.coordSys,
dataInsideLength: data.count(),
encode: wrapEncodeDef(customSeries.getData())
};
var currDataIndexInside;
var currItemModel;
var currItemStyleModels = {};
var currLabelModels = {};
var seriesItemStyleModels = {};
var seriesLabelModels = {};
for (var i = 0; i < STATES.length; i++) {
var stateName = STATES[i];
seriesItemStyleModels[stateName] = customSeries.getModel(PATH_ITEM_STYLE[stateName]);
seriesLabelModels[stateName] = customSeries.getModel(PATH_LABEL[stateName]);
}
function getItemModel2(dataIndexInside) {
return dataIndexInside === currDataIndexInside ? currItemModel || (currItemModel = data.getItemModel(dataIndexInside)) : data.getItemModel(dataIndexInside);
}
function getItemStyleModel(dataIndexInside, state) {
return !data.hasItemOption ? seriesItemStyleModels[state] : dataIndexInside === currDataIndexInside ? currItemStyleModels[state] || (currItemStyleModels[state] = getItemModel2(dataIndexInside).getModel(PATH_ITEM_STYLE[state])) : getItemModel2(dataIndexInside).getModel(PATH_ITEM_STYLE[state]);
}
function getLabelModel(dataIndexInside, state) {
return !data.hasItemOption ? seriesLabelModels[state] : dataIndexInside === currDataIndexInside ? currLabelModels[state] || (currLabelModels[state] = getItemModel2(dataIndexInside).getModel(PATH_LABEL[state])) : getItemModel2(dataIndexInside).getModel(PATH_LABEL[state]);
}
return function(dataIndexInside, payload) {
currDataIndexInside = dataIndexInside;
currItemModel = null;
currItemStyleModels = {};
currLabelModels = {};
return renderItem && renderItem(defaults({
dataIndexInside,
dataIndex: data.getRawIndex(dataIndexInside),
// Can be used for optimization when zoom or roam.
actionType: payload ? payload.type : null
}, userParams), userAPI);
};
function value(dim, dataIndexInside) {
dataIndexInside == null && (dataIndexInside = currDataIndexInside);
return data.getStore().get(data.getDimensionIndex(dim || 0), dataIndexInside);
}
function ordinalRawValue(dim, dataIndexInside) {
dataIndexInside == null && (dataIndexInside = currDataIndexInside);
dim = dim || 0;
var dimInfo = data.getDimensionInfo(dim);
if (!dimInfo) {
var dimIndex = data.getDimensionIndex(dim);
return dimIndex >= 0 ? data.getStore().get(dimIndex, dataIndexInside) : void 0;
}
var val = data.get(dimInfo.name, dataIndexInside);
var ordinalMeta = dimInfo && dimInfo.ordinalMeta;
return ordinalMeta ? ordinalMeta.categories[val] : val;
}
function style2(userProps, dataIndexInside) {
dataIndexInside == null && (dataIndexInside = currDataIndexInside);
var style22 = data.getItemVisual(dataIndexInside, "style");
var visualColor = style22 && style22.fill;
var opacity = style22 && style22.opacity;
var itemStyle = getItemStyleModel(dataIndexInside, NORMAL).getItemStyle();
visualColor != null && (itemStyle.fill = visualColor);
opacity != null && (itemStyle.opacity = opacity);
var opt = {
inheritColor: isString$1(visualColor) ? visualColor : "#000"
};
var labelModel = getLabelModel(dataIndexInside, NORMAL);
var textStyle = createTextStyle$1(labelModel, null, opt, false, true);
textStyle.text = labelModel.getShallow("show") ? retrieve2(customSeries.getFormattedLabel(dataIndexInside, NORMAL), getDefaultLabel(data, dataIndexInside)) : null;
var textConfig = createTextConfig(labelModel, opt, false);
preFetchFromExtra(userProps, itemStyle);
itemStyle = convertToEC4StyleForCustomSerise(itemStyle, textStyle, textConfig);
userProps && applyUserPropsAfter(itemStyle, userProps);
itemStyle.legacy = true;
return itemStyle;
}
function styleEmphasis(userProps, dataIndexInside) {
dataIndexInside == null && (dataIndexInside = currDataIndexInside);
var itemStyle = getItemStyleModel(dataIndexInside, EMPHASIS).getItemStyle();
var labelModel = getLabelModel(dataIndexInside, EMPHASIS);
var textStyle = createTextStyle$1(labelModel, null, null, true, true);
textStyle.text = labelModel.getShallow("show") ? retrieve3(customSeries.getFormattedLabel(dataIndexInside, EMPHASIS), customSeries.getFormattedLabel(dataIndexInside, NORMAL), getDefaultLabel(data, dataIndexInside)) : null;
var textConfig = createTextConfig(labelModel, null, true);
preFetchFromExtra(userProps, itemStyle);
itemStyle = convertToEC4StyleForCustomSerise(itemStyle, textStyle, textConfig);
userProps && applyUserPropsAfter(itemStyle, userProps);
itemStyle.legacy = true;
return itemStyle;
}
function applyUserPropsAfter(itemStyle, extra) {
for (var key in extra) {
if (hasOwn(extra, key)) {
itemStyle[key] = extra[key];
}
}
}
function preFetchFromExtra(extra, itemStyle) {
if (extra) {
extra.textFill && (itemStyle.textFill = extra.textFill);
extra.textPosition && (itemStyle.textPosition = extra.textPosition);
}
}
function visual(visualType, dataIndexInside) {
dataIndexInside == null && (dataIndexInside = currDataIndexInside);
if (hasOwn(STYLE_VISUAL_TYPE, visualType)) {
var style_1 = data.getItemVisual(dataIndexInside, "style");
return style_1 ? style_1[STYLE_VISUAL_TYPE[visualType]] : null;
}
if (hasOwn(NON_STYLE_VISUAL_PROPS, visualType)) {
return data.getItemVisual(dataIndexInside, visualType);
}
}
function barLayout(opt) {
if (coordSys.type === "cartesian2d") {
var baseAxis = coordSys.getBaseAxis();
return getLayoutOnAxis(defaults({
axis: baseAxis
}, opt));
}
}
function currentSeriesIndices() {
return ecModel.getCurrentSeriesIndices();
}
function font(opt) {
return getFont(opt, ecModel);
}
}
function wrapEncodeDef(data) {
var encodeDef = {};
each$f(data.dimensions, function(dimName) {
var dimInfo = data.getDimensionInfo(dimName);
if (!dimInfo.isExtraCoord) {
var coordDim = dimInfo.coordDim;
var dataDims = encodeDef[coordDim] = encodeDef[coordDim] || [];
dataDims[dimInfo.coordDimIndex] = data.getDimensionIndex(dimName);
}
});
return encodeDef;
}
function createOrUpdateItem(api, existsEl, dataIndex, elOption, seriesModel, group, data) {
if (!elOption) {
group.remove(existsEl);
return;
}
var el2 = doCreateOrUpdateEl(api, existsEl, dataIndex, elOption, seriesModel, group);
el2 && data.setItemGraphicEl(dataIndex, el2);
el2 && toggleHoverEmphasis(el2, elOption.focus, elOption.blurScope, elOption.emphasisDisabled);
return el2;
}
function doCreateOrUpdateEl(api, existsEl, dataIndex, elOption, seriesModel, group) {
var toBeReplacedIdx = -1;
var oldEl = existsEl;
if (existsEl && doesElNeedRecreate(existsEl, elOption, seriesModel)) {
toBeReplacedIdx = indexOf(group.childrenRef(), existsEl);
existsEl = null;
}
var isInit = !existsEl;
var el2 = existsEl;
if (!el2) {
el2 = createEl$1(elOption);
if (oldEl) {
copyElement(oldEl, el2);
}
} else {
el2.clearStates();
}
if (elOption.morph === false) {
el2.disableMorphing = true;
} else if (el2.disableMorphing) {
el2.disableMorphing = false;
}
attachedTxInfoTmp.normal.cfg = attachedTxInfoTmp.normal.conOpt = attachedTxInfoTmp.emphasis.cfg = attachedTxInfoTmp.emphasis.conOpt = attachedTxInfoTmp.blur.cfg = attachedTxInfoTmp.blur.conOpt = attachedTxInfoTmp.select.cfg = attachedTxInfoTmp.select.conOpt = null;
attachedTxInfoTmp.isLegacy = false;
doCreateOrUpdateAttachedTx(el2, dataIndex, elOption, seriesModel, isInit, attachedTxInfoTmp);
doCreateOrUpdateClipPath(el2, dataIndex, elOption, seriesModel, isInit);
updateElNormal(api, el2, dataIndex, elOption, attachedTxInfoTmp, seriesModel, isInit);
hasOwn(elOption, "info") && (customInnerStore(el2).info = elOption.info);
for (var i = 0; i < STATES.length; i++) {
var stateName = STATES[i];
if (stateName !== NORMAL) {
var otherStateOpt = retrieveStateOption(elOption, stateName);
var otherStyleOpt = retrieveStyleOptionOnState(elOption, otherStateOpt, stateName);
updateElOnState(stateName, el2, otherStateOpt, otherStyleOpt, attachedTxInfoTmp);
}
}
updateZ(el2, elOption, seriesModel);
if (elOption.type === "group") {
mergeChildren(api, el2, dataIndex, elOption, seriesModel);
}
if (toBeReplacedIdx >= 0) {
group.replaceAt(el2, toBeReplacedIdx);
} else {
group.add(el2);
}
return el2;
}
function doesElNeedRecreate(el2, elOption, seriesModel) {
var elInner = customInnerStore(el2);
var elOptionType = elOption.type;
var elOptionShape = elOption.shape;
var elOptionStyle = elOption.style;
return (
// Always create new if universal transition is enabled.
// Because we do transition after render. It needs to know what old element is. Replacement will loose it.
seriesModel.isUniversalTransitionEnabled() || elOptionType != null && elOptionType !== elInner.customGraphicType || elOptionType === "path" && hasOwnPathData(elOptionShape) && getPathData(elOptionShape) !== elInner.customPathData || elOptionType === "image" && hasOwn(elOptionStyle, "image") && elOptionStyle.image !== elInner.customImagePath
);
}
function doCreateOrUpdateClipPath(el2, dataIndex, elOption, seriesModel, isInit) {
var clipPathOpt = elOption.clipPath;
if (clipPathOpt === false) {
if (el2 && el2.getClipPath()) {
el2.removeClipPath();
}
} else if (clipPathOpt) {
var clipPath = el2.getClipPath();
if (clipPath && doesElNeedRecreate(clipPath, clipPathOpt, seriesModel)) {
clipPath = null;
}
if (!clipPath) {
clipPath = createEl$1(clipPathOpt);
el2.setClipPath(clipPath);
}
updateElNormal(null, clipPath, dataIndex, clipPathOpt, null, seriesModel, isInit);
}
}
function doCreateOrUpdateAttachedTx(el2, dataIndex, elOption, seriesModel, isInit, attachedTxInfo) {
if (el2.isGroup) {
return;
}
processTxInfo(elOption, null, attachedTxInfo);
processTxInfo(elOption, EMPHASIS, attachedTxInfo);
var txConOptNormal = attachedTxInfo.normal.conOpt;
var txConOptEmphasis = attachedTxInfo.emphasis.conOpt;
var txConOptBlur = attachedTxInfo.blur.conOpt;
var txConOptSelect = attachedTxInfo.select.conOpt;
if (txConOptNormal != null || txConOptEmphasis != null || txConOptSelect != null || txConOptBlur != null) {
var textContent = el2.getTextContent();
if (txConOptNormal === false) {
textContent && el2.removeTextContent();
} else {
txConOptNormal = attachedTxInfo.normal.conOpt = txConOptNormal || {
type: "text"
};
if (!textContent) {
textContent = createEl$1(txConOptNormal);
el2.setTextContent(textContent);
} else {
textContent.clearStates();
}
updateElNormal(null, textContent, dataIndex, txConOptNormal, null, seriesModel, isInit);
var txConStlOptNormal = txConOptNormal && txConOptNormal.style;
for (var i = 0; i < STATES.length; i++) {
var stateName = STATES[i];
if (stateName !== NORMAL) {
var txConOptOtherState = attachedTxInfo[stateName].conOpt;
updateElOnState(stateName, textContent, txConOptOtherState, retrieveStyleOptionOnState(txConOptNormal, txConOptOtherState, stateName), null);
}
}
txConStlOptNormal ? textContent.dirty() : textContent.markRedraw();
}
}
}
function processTxInfo(elOption, state, attachedTxInfo) {
var stateOpt = !state ? elOption : retrieveStateOption(elOption, state);
var styleOpt = !state ? elOption.style : retrieveStyleOptionOnState(elOption, stateOpt, EMPHASIS);
var elType = elOption.type;
var txCfg = stateOpt ? stateOpt.textConfig : null;
var txConOptNormal = elOption.textContent;
var txConOpt = !txConOptNormal ? null : !state ? txConOptNormal : retrieveStateOption(txConOptNormal, state);
if (styleOpt && // Because emphasis style has little info to detect legacy,
// if normal is legacy, emphasis is trade as legacy.
(attachedTxInfo.isLegacy || isEC4CompatibleStyle(styleOpt, elType, !!txCfg, !!txConOpt))) {
attachedTxInfo.isLegacy = true;
var convertResult = convertFromEC4CompatibleStyle(styleOpt, elType, !state);
if (!txCfg && convertResult.textConfig) {
txCfg = convertResult.textConfig;
}
if (!txConOpt && convertResult.textContent) {
txConOpt = convertResult.textContent;
}
}
if (!state && txConOpt) {
var txConOptNormal_1 = txConOpt;
!txConOptNormal_1.type && (txConOptNormal_1.type = "text");
}
var info = !state ? attachedTxInfo.normal : attachedTxInfo[state];
info.cfg = txCfg;
info.conOpt = txConOpt;
}
function retrieveStateOption(elOption, state) {
return !state ? elOption : elOption ? elOption[state] : null;
}
function retrieveStyleOptionOnState(stateOptionNormal, stateOption, state) {
var style2 = stateOption && stateOption.style;
if (style2 == null && state === EMPHASIS && stateOptionNormal) {
style2 = stateOptionNormal.styleEmphasis;
}
return style2;
}
function mergeChildren(api, el2, dataIndex, elOption, seriesModel) {
var newChildren = elOption.children;
var newLen = newChildren ? newChildren.length : 0;
var mergeChildren2 = elOption.$mergeChildren;
var byName = mergeChildren2 === "byName" || elOption.diffChildrenByName;
var notMerge = mergeChildren2 === false;
if (!newLen && !byName && !notMerge) {
return;
}
if (byName) {
diffGroupChildren({
api,
oldChildren: el2.children() || [],
newChildren: newChildren || [],
dataIndex,
seriesModel,
group: el2
});
return;
}
notMerge && el2.removeAll();
var index2 = 0;
for (; index2 < newLen; index2++) {
var newChild = newChildren[index2];
var oldChild = el2.childAt(index2);
if (newChild) {
if (newChild.ignore == null) {
newChild.ignore = false;
}
doCreateOrUpdateEl(api, oldChild, dataIndex, newChild, seriesModel, el2);
} else {
oldChild.ignore = true;
}
}
for (var i = el2.childCount() - 1; i >= index2; i--) {
var child = el2.childAt(i);
removeChildFromGroup(el2, child, seriesModel);
}
}
function removeChildFromGroup(group, child, seriesModel) {
child && applyLeaveTransition(child, customInnerStore(group).option, seriesModel);
}
function diffGroupChildren(context) {
new DataDiffer(context.oldChildren, context.newChildren, getKey, getKey, context).add(processAddUpdate).update(processAddUpdate).remove(processRemove).execute();
}
function getKey(item, idx) {
var name = item && item.name;
return name != null ? name : GROUP_DIFF_PREFIX + idx;
}
function processAddUpdate(newIndex, oldIndex) {
var context = this.context;
var childOption = newIndex != null ? context.newChildren[newIndex] : null;
var child = oldIndex != null ? context.oldChildren[oldIndex] : null;
doCreateOrUpdateEl(context.api, child, context.dataIndex, childOption, context.seriesModel, context.group);
}
function processRemove(oldIndex) {
var context = this.context;
var child = context.oldChildren[oldIndex];
child && applyLeaveTransition(child, customInnerStore(child).option, context.seriesModel);
}
function getPathData(shape) {
return shape && (shape.pathData || shape.d);
}
function hasOwnPathData(shape) {
return shape && (hasOwn(shape, "pathData") || hasOwn(shape, "d"));
}
function install$r(registers) {
registers.registerChartView(CustomChartView);
registers.registerSeriesModel(CustomSeriesModel);
}
var inner$b = makeInner();
var clone$1 = clone$4;
var bind$1 = bind$2;
var BaseAxisPointer = (
/** @class */
function() {
function BaseAxisPointer2() {
this._dragging = false;
this.animationThreshold = 15;
}
BaseAxisPointer2.prototype.render = function(axisModel, axisPointerModel, api, forceRender) {
var value = axisPointerModel.get("value");
var status = axisPointerModel.get("status");
this._axisModel = axisModel;
this._axisPointerModel = axisPointerModel;
this._api = api;
if (!forceRender && this._lastValue === value && this._lastStatus === status) {
return;
}
this._lastValue = value;
this._lastStatus = status;
var group = this._group;
var handle = this._handle;
if (!status || status === "hide") {
group && group.hide();
handle && handle.hide();
return;
}
group && group.show();
handle && handle.show();
var elOption = {};
this.makeElOption(elOption, value, axisModel, axisPointerModel, api);
var graphicKey = elOption.graphicKey;
if (graphicKey !== this._lastGraphicKey) {
this.clear(api);
}
this._lastGraphicKey = graphicKey;
var moveAnimation = this._moveAnimation = this.determineAnimation(axisModel, axisPointerModel);
if (!group) {
group = this._group = new Group$3();
this.createPointerEl(group, elOption, axisModel, axisPointerModel);
this.createLabelEl(group, elOption, axisModel, axisPointerModel);
api.getZr().add(group);
} else {
var doUpdateProps = curry$1(updateProps, axisPointerModel, moveAnimation);
this.updatePointerEl(group, elOption, doUpdateProps);
this.updateLabelEl(group, elOption, doUpdateProps, axisPointerModel);
}
updateMandatoryProps(group, axisPointerModel, true);
this._renderHandle(value);
};
BaseAxisPointer2.prototype.remove = function(api) {
this.clear(api);
};
BaseAxisPointer2.prototype.dispose = function(api) {
this.clear(api);
};
BaseAxisPointer2.prototype.determineAnimation = function(axisModel, axisPointerModel) {
var animation = axisPointerModel.get("animation");
var axis = axisModel.axis;
var isCategoryAxis = axis.type === "category";
var useSnap = axisPointerModel.get("snap");
if (!useSnap && !isCategoryAxis) {
return false;
}
if (animation === "auto" || animation == null) {
var animationThreshold = this.animationThreshold;
if (isCategoryAxis && axis.getBandWidth() > animationThreshold) {
return true;
}
if (useSnap) {
var seriesDataCount = getAxisInfo$1(axisModel).seriesDataCount;
var axisExtent = axis.getExtent();
return Math.abs(axisExtent[0] - axisExtent[1]) / seriesDataCount > animationThreshold;
}
return false;
}
return animation === true;
};
BaseAxisPointer2.prototype.makeElOption = function(elOption, value, axisModel, axisPointerModel, api) {
};
BaseAxisPointer2.prototype.createPointerEl = function(group, elOption, axisModel, axisPointerModel) {
var pointerOption = elOption.pointer;
if (pointerOption) {
var pointerEl = inner$b(group).pointerEl = new graphic$1[pointerOption.type](clone$1(elOption.pointer));
group.add(pointerEl);
}
};
BaseAxisPointer2.prototype.createLabelEl = function(group, elOption, axisModel, axisPointerModel) {
if (elOption.label) {
var labelEl = inner$b(group).labelEl = new ZRText(clone$1(elOption.label));
group.add(labelEl);
updateLabelShowHide(labelEl, axisPointerModel);
}
};
BaseAxisPointer2.prototype.updatePointerEl = function(group, elOption, updateProps2) {
var pointerEl = inner$b(group).pointerEl;
if (pointerEl && elOption.pointer) {
pointerEl.setStyle(elOption.pointer.style);
updateProps2(pointerEl, {
shape: elOption.pointer.shape
});
}
};
BaseAxisPointer2.prototype.updateLabelEl = function(group, elOption, updateProps2, axisPointerModel) {
var labelEl = inner$b(group).labelEl;
if (labelEl) {
labelEl.setStyle(elOption.label.style);
updateProps2(labelEl, {
// Consider text length change in vertical axis, animation should
// be used on shape, otherwise the effect will be weird.
// TODOTODO
// shape: elOption.label.shape,
x: elOption.label.x,
y: elOption.label.y
});
updateLabelShowHide(labelEl, axisPointerModel);
}
};
BaseAxisPointer2.prototype._renderHandle = function(value) {
if (this._dragging || !this.updateHandleTransform) {
return;
}
var axisPointerModel = this._axisPointerModel;
var zr = this._api.getZr();
var handle = this._handle;
var handleModel = axisPointerModel.getModel("handle");
var status = axisPointerModel.get("status");
if (!handleModel.get("show") || !status || status === "hide") {
handle && zr.remove(handle);
this._handle = null;
return;
}
var isInit;
if (!this._handle) {
isInit = true;
handle = this._handle = createIcon(handleModel.get("icon"), {
cursor: "move",
draggable: true,
onmousemove: function(e2) {
stop(e2.event);
},
onmousedown: bind$1(this._onHandleDragMove, this, 0, 0),
drift: bind$1(this._onHandleDragMove, this),
ondragend: bind$1(this._onHandleDragEnd, this)
});
zr.add(handle);
}
updateMandatoryProps(handle, axisPointerModel, false);
handle.setStyle(handleModel.getItemStyle(null, ["color", "borderColor", "borderWidth", "opacity", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY"]));
var handleSize = handleModel.get("size");
if (!isArray$1(handleSize)) {
handleSize = [handleSize, handleSize];
}
handle.scaleX = handleSize[0] / 2;
handle.scaleY = handleSize[1] / 2;
createOrUpdate(this, "_doDispatchAxisPointer", handleModel.get("throttle") || 0, "fixRate");
this._moveHandleToValue(value, isInit);
};
BaseAxisPointer2.prototype._moveHandleToValue = function(value, isInit) {
updateProps(this._axisPointerModel, !isInit && this._moveAnimation, this._handle, getHandleTransProps(this.getHandleTransform(value, this._axisModel, this._axisPointerModel)));
};
BaseAxisPointer2.prototype._onHandleDragMove = function(dx, dy) {
var handle = this._handle;
if (!handle) {
return;
}
this._dragging = true;
var trans = this.updateHandleTransform(getHandleTransProps(handle), [dx, dy], this._axisModel, this._axisPointerModel);
this._payloadInfo = trans;
handle.stopAnimation();
handle.attr(getHandleTransProps(trans));
inner$b(handle).lastProp = null;
this._doDispatchAxisPointer();
};
BaseAxisPointer2.prototype._doDispatchAxisPointer = function() {
var handle = this._handle;
if (!handle) {
return;
}
var payloadInfo = this._payloadInfo;
var axisModel = this._axisModel;
this._api.dispatchAction({
type: "updateAxisPointer",
x: payloadInfo.cursorPoint[0],
y: payloadInfo.cursorPoint[1],
tooltipOption: payloadInfo.tooltipOption,
axesInfo: [{
axisDim: axisModel.axis.dim,
axisIndex: axisModel.componentIndex
}]
});
};
BaseAxisPointer2.prototype._onHandleDragEnd = function() {
this._dragging = false;
var handle = this._handle;
if (!handle) {
return;
}
var value = this._axisPointerModel.get("value");
this._moveHandleToValue(value);
this._api.dispatchAction({
type: "hideTip"
});
};
BaseAxisPointer2.prototype.clear = function(api) {
this._lastValue = null;
this._lastStatus = null;
var zr = api.getZr();
var group = this._group;
var handle = this._handle;
if (zr && group) {
this._lastGraphicKey = null;
group && zr.remove(group);
handle && zr.remove(handle);
this._group = null;
this._handle = null;
this._payloadInfo = null;
}
clear$2(this, "_doDispatchAxisPointer");
};
BaseAxisPointer2.prototype.doClear = function() {
};
BaseAxisPointer2.prototype.buildLabel = function(xy, wh2, xDimIndex) {
xDimIndex = xDimIndex || 0;
return {
x: xy[xDimIndex],
y: xy[1 - xDimIndex],
width: wh2[xDimIndex],
height: wh2[1 - xDimIndex]
};
};
return BaseAxisPointer2;
}()
);
function updateProps(animationModel, moveAnimation, el2, props) {
if (!propsEqual(inner$b(el2).lastProp, props)) {
inner$b(el2).lastProp = props;
moveAnimation ? updateProps$1(el2, props, animationModel) : (el2.stopAnimation(), el2.attr(props));
}
}
function propsEqual(lastProps, newProps) {
if (isObject$3(lastProps) && isObject$3(newProps)) {
var equals_1 = true;
each$f(newProps, function(item, key) {
equals_1 = equals_1 && propsEqual(lastProps[key], item);
});
return !!equals_1;
} else {
return lastProps === newProps;
}
}
function updateLabelShowHide(labelEl, axisPointerModel) {
labelEl[axisPointerModel.get(["label", "show"]) ? "show" : "hide"]();
}
function getHandleTransProps(trans) {
return {
x: trans.x || 0,
y: trans.y || 0,
rotation: trans.rotation || 0
};
}
function updateMandatoryProps(group, axisPointerModel, silent) {
var z2 = axisPointerModel.get("z");
var zlevel = axisPointerModel.get("zlevel");
group && group.traverse(function(el2) {
if (el2.type !== "group") {
z2 != null && (el2.z = z2);
zlevel != null && (el2.zlevel = zlevel);
el2.silent = silent;
}
});
}
function buildElStyle(axisPointerModel) {
var axisPointerType = axisPointerModel.get("type");
var styleModel = axisPointerModel.getModel(axisPointerType + "Style");
var style2;
if (axisPointerType === "line") {
style2 = styleModel.getLineStyle();
style2.fill = null;
} else if (axisPointerType === "shadow") {
style2 = styleModel.getAreaStyle();
style2.stroke = null;
}
return style2;
}
function buildLabelElOption(elOption, axisModel, axisPointerModel, api, labelPos) {
var value = axisPointerModel.get("value");
var text = getValueLabel(value, axisModel.axis, axisModel.ecModel, axisPointerModel.get("seriesDataIndices"), {
precision: axisPointerModel.get(["label", "precision"]),
formatter: axisPointerModel.get(["label", "formatter"])
});
var labelModel = axisPointerModel.getModel("label");
var paddings = normalizeCssArray(labelModel.get("padding") || 0);
var font = labelModel.getFont();
var textRect = getBoundingRect(text, font);
var position2 = labelPos.position;
var width = textRect.width + paddings[1] + paddings[3];
var height = textRect.height + paddings[0] + paddings[2];
var align = labelPos.align;
align === "right" && (position2[0] -= width);
align === "center" && (position2[0] -= width / 2);
var verticalAlign = labelPos.verticalAlign;
verticalAlign === "bottom" && (position2[1] -= height);
verticalAlign === "middle" && (position2[1] -= height / 2);
confineInContainer(position2, width, height, api);
var bgColor = labelModel.get("backgroundColor");
if (!bgColor || bgColor === "auto") {
bgColor = axisModel.get(["axisLine", "lineStyle", "color"]);
}
elOption.label = {
// shape: {x: 0, y: 0, width: width, height: height, r: labelModel.get('borderRadius')},
x: position2[0],
y: position2[1],
style: createTextStyle$1(labelModel, {
text,
font,
fill: labelModel.getTextColor(),
padding: paddings,
backgroundColor: bgColor
}),
// Label should be over axisPointer.
z2: 10
};
}
function confineInContainer(position2, width, height, api) {
var viewWidth = api.getWidth();
var viewHeight = api.getHeight();
position2[0] = Math.min(position2[0] + width, viewWidth) - width;
position2[1] = Math.min(position2[1] + height, viewHeight) - height;
position2[0] = Math.max(position2[0], 0);
position2[1] = Math.max(position2[1], 0);
}
function getValueLabel(value, axis, ecModel, seriesDataIndices, opt) {
value = axis.scale.parse(value);
var text = axis.scale.getLabel({
value
}, {
// If `precision` is set, width can be fixed (like '12.00500'), which
// helps to debounce when when moving label.
precision: opt.precision
});
var formatter = opt.formatter;
if (formatter) {
var params_1 = {
value: getAxisRawValue(axis, {
value
}),
axisDimension: axis.dim,
axisIndex: axis.index,
seriesData: []
};
each$f(seriesDataIndices, function(idxItem) {
var series = ecModel.getSeriesByIndex(idxItem.seriesIndex);
var dataIndex = idxItem.dataIndexInside;
var dataParams = series && series.getDataParams(dataIndex);
dataParams && params_1.seriesData.push(dataParams);
});
if (isString$1(formatter)) {
text = formatter.replace("{value}", text);
} else if (isFunction$1(formatter)) {
text = formatter(params_1);
}
}
return text;
}
function getTransformedPosition(axis, value, layoutInfo) {
var transform2 = create$1();
rotate(transform2, transform2, layoutInfo.rotation);
translate(transform2, transform2, layoutInfo.position);
return applyTransform([axis.dataToCoord(value), (layoutInfo.labelOffset || 0) + (layoutInfo.labelDirection || 1) * (layoutInfo.labelMargin || 0)], transform2);
}
function buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api) {
var textLayout = AxisBuilder.innerTextLayout(layoutInfo.rotation, 0, layoutInfo.labelDirection);
layoutInfo.labelMargin = axisPointerModel.get(["label", "margin"]);
buildLabelElOption(elOption, axisModel, axisPointerModel, api, {
position: getTransformedPosition(axisModel.axis, value, layoutInfo),
align: textLayout.textAlign,
verticalAlign: textLayout.textVerticalAlign
});
}
function makeLineShape(p1, p2, xDimIndex) {
xDimIndex = xDimIndex || 0;
return {
x1: p1[xDimIndex],
y1: p1[1 - xDimIndex],
x2: p2[xDimIndex],
y2: p2[1 - xDimIndex]
};
}
function makeRectShape(xy, wh2, xDimIndex) {
xDimIndex = xDimIndex || 0;
return {
x: xy[xDimIndex],
y: xy[1 - xDimIndex],
width: wh2[xDimIndex],
height: wh2[1 - xDimIndex]
};
}
function makeSectorShape(cx, cy, r0, r2, startAngle, endAngle) {
return {
cx,
cy,
r0,
r: r2,
startAngle,
endAngle,
clockwise: true
};
}
var CartesianAxisPointer = (
/** @class */
function(_super) {
__extends(CartesianAxisPointer2, _super);
function CartesianAxisPointer2() {
return _super !== null && _super.apply(this, arguments) || this;
}
CartesianAxisPointer2.prototype.makeElOption = function(elOption, value, axisModel, axisPointerModel, api) {
var axis = axisModel.axis;
var grid = axis.grid;
var axisPointerType = axisPointerModel.get("type");
var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();
var pixelValue = axis.toGlobalCoord(axis.dataToCoord(value, true));
if (axisPointerType && axisPointerType !== "none") {
var elStyle = buildElStyle(axisPointerModel);
var pointerOption = pointerShapeBuilder$2[axisPointerType](axis, pixelValue, otherExtent);
pointerOption.style = elStyle;
elOption.graphicKey = pointerOption.type;
elOption.pointer = pointerOption;
}
var layoutInfo = layout$2(grid.model, axisModel);
buildCartesianSingleLabelElOption(
// @ts-ignore
value,
elOption,
layoutInfo,
axisModel,
axisPointerModel,
api
);
};
CartesianAxisPointer2.prototype.getHandleTransform = function(value, axisModel, axisPointerModel) {
var layoutInfo = layout$2(axisModel.axis.grid.model, axisModel, {
labelInside: false
});
layoutInfo.labelMargin = axisPointerModel.get(["handle", "margin"]);
var pos = getTransformedPosition(axisModel.axis, value, layoutInfo);
return {
x: pos[0],
y: pos[1],
rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0)
};
};
CartesianAxisPointer2.prototype.updateHandleTransform = function(transform2, delta, axisModel, axisPointerModel) {
var axis = axisModel.axis;
var grid = axis.grid;
var axisExtent = axis.getGlobalExtent(true);
var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();
var dimIndex = axis.dim === "x" ? 0 : 1;
var currPosition = [transform2.x, transform2.y];
currPosition[dimIndex] += delta[dimIndex];
currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]);
currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]);
var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2;
var cursorPoint = [cursorOtherValue, cursorOtherValue];
cursorPoint[dimIndex] = currPosition[dimIndex];
var tooltipOptions = [{
verticalAlign: "middle"
}, {
align: "center"
}];
return {
x: currPosition[0],
y: currPosition[1],
rotation: transform2.rotation,
cursorPoint,
tooltipOption: tooltipOptions[dimIndex]
};
};
return CartesianAxisPointer2;
}(BaseAxisPointer)
);
function getCartesian(grid, axis) {
var opt = {};
opt[axis.dim + "AxisIndex"] = axis.index;
return grid.getCartesian(opt);
}
var pointerShapeBuilder$2 = {
line: function(axis, pixelValue, otherExtent) {
var targetShape = makeLineShape([pixelValue, otherExtent[0]], [pixelValue, otherExtent[1]], getAxisDimIndex(axis));
return {
type: "Line",
subPixelOptimize: true,
shape: targetShape
};
},
shadow: function(axis, pixelValue, otherExtent) {
var bandWidth = Math.max(1, axis.getBandWidth());
var span = otherExtent[1] - otherExtent[0];
return {
type: "Rect",
shape: makeRectShape([pixelValue - bandWidth / 2, otherExtent[0]], [bandWidth, span], getAxisDimIndex(axis))
};
}
};
function getAxisDimIndex(axis) {
return axis.dim === "x" ? 0 : 1;
}
var AxisPointerModel = (
/** @class */
function(_super) {
__extends(AxisPointerModel2, _super);
function AxisPointerModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = AxisPointerModel2.type;
return _this;
}
AxisPointerModel2.type = "axisPointer";
AxisPointerModel2.defaultOption = {
// 'auto' means that show when triggered by tooltip or handle.
show: "auto",
// zlevel: 0,
z: 50,
type: "line",
// axispointer triggered by tootip determine snap automatically,
// see `modelHelper`.
snap: false,
triggerTooltip: true,
triggerEmphasis: true,
value: null,
status: null,
link: [],
// Do not set 'auto' here, otherwise global animation: false
// will not effect at this axispointer.
animation: null,
animationDurationUpdate: 200,
lineStyle: {
color: "#B9BEC9",
width: 1,
type: "dashed"
},
shadowStyle: {
color: "rgba(210,219,238,0.2)"
},
label: {
show: true,
formatter: null,
precision: "auto",
margin: 3,
color: "#fff",
padding: [5, 7, 5, 7],
backgroundColor: "auto",
borderColor: null,
borderWidth: 0,
borderRadius: 3
},
handle: {
show: false,
// eslint-disable-next-line
icon: "M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z",
size: 45,
// handle margin is from symbol center to axis, which is stable when circular move.
margin: 50,
// color: '#1b8bbd'
// color: '#2f4554'
color: "#333",
shadowBlur: 3,
shadowColor: "#aaa",
shadowOffsetX: 0,
shadowOffsetY: 2,
// For mobile performance
throttle: 40
}
};
return AxisPointerModel2;
}(ComponentModel)
);
var inner$a = makeInner();
var each$8 = each$f;
function register2(key, api, handler) {
if (env.node) {
return;
}
var zr = api.getZr();
inner$a(zr).records || (inner$a(zr).records = {});
initGlobalListeners(zr, api);
var record = inner$a(zr).records[key] || (inner$a(zr).records[key] = {});
record.handler = handler;
}
function initGlobalListeners(zr, api) {
if (inner$a(zr).initialized) {
return;
}
inner$a(zr).initialized = true;
useHandler("click", curry$1(doEnter, "click"));
useHandler("mousemove", curry$1(doEnter, "mousemove"));
useHandler("globalout", onLeave);
function useHandler(eventType, cb2) {
zr.on(eventType, function(e2) {
var dis = makeDispatchAction$1(api);
each$8(inner$a(zr).records, function(record) {
record && cb2(record, e2, dis.dispatchAction);
});
dispatchTooltipFinally(dis.pendings, api);
});
}
}
function dispatchTooltipFinally(pendings, api) {
var showLen = pendings.showTip.length;
var hideLen = pendings.hideTip.length;
var actuallyPayload;
if (showLen) {
actuallyPayload = pendings.showTip[showLen - 1];
} else if (hideLen) {
actuallyPayload = pendings.hideTip[hideLen - 1];
}
if (actuallyPayload) {
actuallyPayload.dispatchAction = null;
api.dispatchAction(actuallyPayload);
}
}
function onLeave(record, e2, dispatchAction2) {
record.handler("leave", null, dispatchAction2);
}
function doEnter(currTrigger, record, e2, dispatchAction2) {
record.handler(currTrigger, e2, dispatchAction2);
}
function makeDispatchAction$1(api) {
var pendings = {
showTip: [],
hideTip: []
};
var dispatchAction2 = function(payload) {
var pendingList = pendings[payload.type];
if (pendingList) {
pendingList.push(payload);
} else {
payload.dispatchAction = dispatchAction2;
api.dispatchAction(payload);
}
};
return {
dispatchAction: dispatchAction2,
pendings
};
}
function unregister(key, api) {
if (env.node) {
return;
}
var zr = api.getZr();
var record = (inner$a(zr).records || {})[key];
if (record) {
inner$a(zr).records[key] = null;
}
}
var AxisPointerView = (
/** @class */
function(_super) {
__extends(AxisPointerView2, _super);
function AxisPointerView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = AxisPointerView2.type;
return _this;
}
AxisPointerView2.prototype.render = function(globalAxisPointerModel, ecModel, api) {
var globalTooltipModel = ecModel.getComponent("tooltip");
var triggerOn = globalAxisPointerModel.get("triggerOn") || globalTooltipModel && globalTooltipModel.get("triggerOn") || "mousemove|click";
register2("axisPointer", api, function(currTrigger, e2, dispatchAction2) {
if (triggerOn !== "none" && (currTrigger === "leave" || triggerOn.indexOf(currTrigger) >= 0)) {
dispatchAction2({
type: "updateAxisPointer",
currTrigger,
x: e2 && e2.offsetX,
y: e2 && e2.offsetY
});
}
});
};
AxisPointerView2.prototype.remove = function(ecModel, api) {
unregister("axisPointer", api);
};
AxisPointerView2.prototype.dispose = function(ecModel, api) {
unregister("axisPointer", api);
};
AxisPointerView2.type = "axisPointer";
return AxisPointerView2;
}(ComponentView)
);
function findPointFromSeries(finder, ecModel) {
var point = [];
var seriesIndex = finder.seriesIndex;
var seriesModel;
if (seriesIndex == null || !(seriesModel = ecModel.getSeriesByIndex(seriesIndex))) {
return {
point: []
};
}
var data = seriesModel.getData();
var dataIndex = queryDataIndex(data, finder);
if (dataIndex == null || dataIndex < 0 || isArray$1(dataIndex)) {
return {
point: []
};
}
var el2 = data.getItemGraphicEl(dataIndex);
var coordSys = seriesModel.coordinateSystem;
if (seriesModel.getTooltipPosition) {
point = seriesModel.getTooltipPosition(dataIndex) || [];
} else if (coordSys && coordSys.dataToPoint) {
if (finder.isStacked) {
var baseAxis = coordSys.getBaseAxis();
var valueAxis2 = coordSys.getOtherAxis(baseAxis);
var valueAxisDim = valueAxis2.dim;
var baseAxisDim = baseAxis.dim;
var baseDataOffset = valueAxisDim === "x" || valueAxisDim === "radius" ? 1 : 0;
var baseDim = data.mapDimension(baseAxisDim);
var stackedData = [];
stackedData[baseDataOffset] = data.get(baseDim, dataIndex);
stackedData[1 - baseDataOffset] = data.get(data.getCalculationInfo("stackResultDimension"), dataIndex);
point = coordSys.dataToPoint(stackedData) || [];
} else {
point = coordSys.dataToPoint(data.getValues(map$1(coordSys.dimensions, function(dim) {
return data.mapDimension(dim);
}), dataIndex)) || [];
}
} else if (el2) {
var rect = el2.getBoundingRect().clone();
rect.applyTransform(el2.transform);
point = [rect.x + rect.width / 2, rect.y + rect.height / 2];
}
return {
point,
el: el2
};
}
var inner$9 = makeInner();
function axisTrigger(payload, ecModel, api) {
var currTrigger = payload.currTrigger;
var point = [payload.x, payload.y];
var finder = payload;
var dispatchAction2 = payload.dispatchAction || bind$2(api.dispatchAction, api);
var coordSysAxesInfo = ecModel.getComponent("axisPointer").coordSysAxesInfo;
if (!coordSysAxesInfo) {
return;
}
if (illegalPoint(point)) {
point = findPointFromSeries({
seriesIndex: finder.seriesIndex,
// Do not use dataIndexInside from other ec instance.
// FIXME: auto detect it?
dataIndex: finder.dataIndex
}, ecModel).point;
}
var isIllegalPoint = illegalPoint(point);
var inputAxesInfo = finder.axesInfo;
var axesInfo = coordSysAxesInfo.axesInfo;
var shouldHide = currTrigger === "leave" || illegalPoint(point);
var outputPayload = {};
var showValueMap = {};
var dataByCoordSys = {
list: [],
map: {}
};
var updaters = {
showPointer: curry$1(showPointer, showValueMap),
showTooltip: curry$1(showTooltip, dataByCoordSys)
};
each$f(coordSysAxesInfo.coordSysMap, function(coordSys, coordSysKey) {
var coordSysContainsPoint = isIllegalPoint || coordSys.containPoint(point);
each$f(coordSysAxesInfo.coordSysAxesInfo[coordSysKey], function(axisInfo, key) {
var axis = axisInfo.axis;
var inputAxisInfo = findInputAxisInfo(inputAxesInfo, axisInfo);
if (!shouldHide && coordSysContainsPoint && (!inputAxesInfo || inputAxisInfo)) {
var val = inputAxisInfo && inputAxisInfo.value;
if (val == null && !isIllegalPoint) {
val = axis.pointToData(point);
}
val != null && processOnAxis(axisInfo, val, updaters, false, outputPayload);
}
});
});
var linkTriggers = {};
each$f(axesInfo, function(tarAxisInfo, tarKey) {
var linkGroup = tarAxisInfo.linkGroup;
if (linkGroup && !showValueMap[tarKey]) {
each$f(linkGroup.axesInfo, function(srcAxisInfo, srcKey) {
var srcValItem = showValueMap[srcKey];
if (srcAxisInfo !== tarAxisInfo && srcValItem) {
var val = srcValItem.value;
linkGroup.mapper && (val = tarAxisInfo.axis.scale.parse(linkGroup.mapper(val, makeMapperParam(srcAxisInfo), makeMapperParam(tarAxisInfo))));
linkTriggers[tarAxisInfo.key] = val;
}
});
}
});
each$f(linkTriggers, function(val, tarKey) {
processOnAxis(axesInfo[tarKey], val, updaters, true, outputPayload);
});
updateModelActually(showValueMap, axesInfo, outputPayload);
dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction2);
dispatchHighDownActually(axesInfo, dispatchAction2, api);
return outputPayload;
}
function processOnAxis(axisInfo, newValue, updaters, noSnap, outputFinder) {
var axis = axisInfo.axis;
if (axis.scale.isBlank() || !axis.containData(newValue)) {
return;
}
if (!axisInfo.involveSeries) {
updaters.showPointer(axisInfo, newValue);
return;
}
var payloadInfo = buildPayloadsBySeries(newValue, axisInfo);
var payloadBatch = payloadInfo.payloadBatch;
var snapToValue = payloadInfo.snapToValue;
if (payloadBatch[0] && outputFinder.seriesIndex == null) {
extend(outputFinder, payloadBatch[0]);
}
if (!noSnap && axisInfo.snap) {
if (axis.containData(snapToValue) && snapToValue != null) {
newValue = snapToValue;
}
}
updaters.showPointer(axisInfo, newValue, payloadBatch);
updaters.showTooltip(axisInfo, payloadInfo, snapToValue);
}
function buildPayloadsBySeries(value, axisInfo) {
var axis = axisInfo.axis;
var dim = axis.dim;
var snapToValue = value;
var payloadBatch = [];
var minDist = Number.MAX_VALUE;
var minDiff = -1;
each$f(axisInfo.seriesModels, function(series, idx) {
var dataDim = series.getData().mapDimensionsAll(dim);
var seriesNestestValue;
var dataIndices;
if (series.getAxisTooltipData) {
var result = series.getAxisTooltipData(dataDim, value, axis);
dataIndices = result.dataIndices;
seriesNestestValue = result.nestestValue;
} else {
dataIndices = series.getData().indicesOfNearest(
dataDim[0],
value,
// Add a threshold to avoid find the wrong dataIndex
// when data length is not same.
// false,
axis.type === "category" ? 0.5 : null
);
if (!dataIndices.length) {
return;
}
seriesNestestValue = series.getData().get(dataDim[0], dataIndices[0]);
}
if (seriesNestestValue == null || !isFinite(seriesNestestValue)) {
return;
}
var diff = value - seriesNestestValue;
var dist2 = Math.abs(diff);
if (dist2 <= minDist) {
if (dist2 < minDist || diff >= 0 && minDiff < 0) {
minDist = dist2;
minDiff = diff;
snapToValue = seriesNestestValue;
payloadBatch.length = 0;
}
each$f(dataIndices, function(dataIndex) {
payloadBatch.push({
seriesIndex: series.seriesIndex,
dataIndexInside: dataIndex,
dataIndex: series.getData().getRawIndex(dataIndex)
});
});
}
});
return {
payloadBatch,
snapToValue
};
}
function showPointer(showValueMap, axisInfo, value, payloadBatch) {
showValueMap[axisInfo.key] = {
value,
payloadBatch
};
}
function showTooltip(dataByCoordSys, axisInfo, payloadInfo, value) {
var payloadBatch = payloadInfo.payloadBatch;
var axis = axisInfo.axis;
var axisModel = axis.model;
var axisPointerModel = axisInfo.axisPointerModel;
if (!axisInfo.triggerTooltip || !payloadBatch.length) {
return;
}
var coordSysModel = axisInfo.coordSys.model;
var coordSysKey = makeKey(coordSysModel);
var coordSysItem = dataByCoordSys.map[coordSysKey];
if (!coordSysItem) {
coordSysItem = dataByCoordSys.map[coordSysKey] = {
coordSysId: coordSysModel.id,
coordSysIndex: coordSysModel.componentIndex,
coordSysType: coordSysModel.type,
coordSysMainType: coordSysModel.mainType,
dataByAxis: []
};
dataByCoordSys.list.push(coordSysItem);
}
coordSysItem.dataByAxis.push({
axisDim: axis.dim,
axisIndex: axisModel.componentIndex,
axisType: axisModel.type,
axisId: axisModel.id,
value,
// Caustion: viewHelper.getValueLabel is actually on "view stage", which
// depends that all models have been updated. So it should not be performed
// here. Considering axisPointerModel used here is volatile, which is hard
// to be retrieve in TooltipView, we prepare parameters here.
valueLabelOpt: {
precision: axisPointerModel.get(["label", "precision"]),
formatter: axisPointerModel.get(["label", "formatter"])
},
seriesDataIndices: payloadBatch.slice()
});
}
function updateModelActually(showValueMap, axesInfo, outputPayload) {
var outputAxesInfo = outputPayload.axesInfo = [];
each$f(axesInfo, function(axisInfo, key) {
var option = axisInfo.axisPointerModel.option;
var valItem = showValueMap[key];
if (valItem) {
!axisInfo.useHandle && (option.status = "show");
option.value = valItem.value;
option.seriesDataIndices = (valItem.payloadBatch || []).slice();
} else {
!axisInfo.useHandle && (option.status = "hide");
}
option.status === "show" && outputAxesInfo.push({
axisDim: axisInfo.axis.dim,
axisIndex: axisInfo.axis.model.componentIndex,
value: option.value
});
});
}
function dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction2) {
if (illegalPoint(point) || !dataByCoordSys.list.length) {
dispatchAction2({
type: "hideTip"
});
return;
}
var sampleItem = ((dataByCoordSys.list[0].dataByAxis[0] || {}).seriesDataIndices || [])[0] || {};
dispatchAction2({
type: "showTip",
escapeConnect: true,
x: point[0],
y: point[1],
tooltipOption: payload.tooltipOption,
position: payload.position,
dataIndexInside: sampleItem.dataIndexInside,
dataIndex: sampleItem.dataIndex,
seriesIndex: sampleItem.seriesIndex,
dataByCoordSys: dataByCoordSys.list
});
}
function dispatchHighDownActually(axesInfo, dispatchAction2, api) {
var zr = api.getZr();
var highDownKey = "axisPointerLastHighlights";
var lastHighlights = inner$9(zr)[highDownKey] || {};
var newHighlights = inner$9(zr)[highDownKey] = {};
each$f(axesInfo, function(axisInfo, key) {
var option = axisInfo.axisPointerModel.option;
option.status === "show" && axisInfo.triggerEmphasis && each$f(option.seriesDataIndices, function(batchItem) {
var key2 = batchItem.seriesIndex + " | " + batchItem.dataIndex;
newHighlights[key2] = batchItem;
});
});
var toHighlight = [];
var toDownplay = [];
each$f(lastHighlights, function(batchItem, key) {
!newHighlights[key] && toDownplay.push(batchItem);
});
each$f(newHighlights, function(batchItem, key) {
!lastHighlights[key] && toHighlight.push(batchItem);
});
toDownplay.length && api.dispatchAction({
type: "downplay",
escapeConnect: true,
// Not blur others when highlight in axisPointer.
notBlur: true,
batch: toDownplay
});
toHighlight.length && api.dispatchAction({
type: "highlight",
escapeConnect: true,
// Not blur others when highlight in axisPointer.
notBlur: true,
batch: toHighlight
});
}
function findInputAxisInfo(inputAxesInfo, axisInfo) {
for (var i = 0; i < (inputAxesInfo || []).length; i++) {
var inputAxisInfo = inputAxesInfo[i];
if (axisInfo.axis.dim === inputAxisInfo.axisDim && axisInfo.axis.model.componentIndex === inputAxisInfo.axisIndex) {
return inputAxisInfo;
}
}
}
function makeMapperParam(axisInfo) {
var axisModel = axisInfo.axis.model;
var item = {};
var dim = item.axisDim = axisInfo.axis.dim;
item.axisIndex = item[dim + "AxisIndex"] = axisModel.componentIndex;
item.axisName = item[dim + "AxisName"] = axisModel.name;
item.axisId = item[dim + "AxisId"] = axisModel.id;
return item;
}
function illegalPoint(point) {
return !point || point[0] == null || isNaN(point[0]) || point[1] == null || isNaN(point[1]);
}
function install$q(registers) {
AxisView.registerAxisPointerClass("CartesianAxisPointer", CartesianAxisPointer);
registers.registerComponentModel(AxisPointerModel);
registers.registerComponentView(AxisPointerView);
registers.registerPreprocessor(function(option) {
if (option) {
(!option.axisPointer || option.axisPointer.length === 0) && (option.axisPointer = {});
var link = option.axisPointer.link;
if (link && !isArray$1(link)) {
option.axisPointer.link = [link];
}
}
});
registers.registerProcessor(registers.PRIORITY.PROCESSOR.STATISTIC, function(ecModel, api) {
ecModel.getComponent("axisPointer").coordSysAxesInfo = collect(ecModel, api);
});
registers.registerAction({
type: "updateAxisPointer",
event: "updateAxisPointer",
update: ":updateAxisPointer"
}, axisTrigger);
}
function install$p(registers) {
use(install$N);
use(install$q);
}
var PolarAxisPointer = (
/** @class */
function(_super) {
__extends(PolarAxisPointer2, _super);
function PolarAxisPointer2() {
return _super !== null && _super.apply(this, arguments) || this;
}
PolarAxisPointer2.prototype.makeElOption = function(elOption, value, axisModel, axisPointerModel, api) {
var axis = axisModel.axis;
if (axis.dim === "angle") {
this.animationThreshold = Math.PI / 18;
}
var polar = axis.polar;
var otherAxis = polar.getOtherAxis(axis);
var otherExtent = otherAxis.getExtent();
var coordValue = axis.dataToCoord(value);
var axisPointerType = axisPointerModel.get("type");
if (axisPointerType && axisPointerType !== "none") {
var elStyle = buildElStyle(axisPointerModel);
var pointerOption = pointerShapeBuilder$1[axisPointerType](axis, polar, coordValue, otherExtent);
pointerOption.style = elStyle;
elOption.graphicKey = pointerOption.type;
elOption.pointer = pointerOption;
}
var labelMargin = axisPointerModel.get(["label", "margin"]);
var labelPos = getLabelPosition(value, axisModel, axisPointerModel, polar, labelMargin);
buildLabelElOption(elOption, axisModel, axisPointerModel, api, labelPos);
};
return PolarAxisPointer2;
}(BaseAxisPointer)
);
function getLabelPosition(value, axisModel, axisPointerModel, polar, labelMargin) {
var axis = axisModel.axis;
var coord = axis.dataToCoord(value);
var axisAngle = polar.getAngleAxis().getExtent()[0];
axisAngle = axisAngle / 180 * Math.PI;
var radiusExtent = polar.getRadiusAxis().getExtent();
var position2;
var align;
var verticalAlign;
if (axis.dim === "radius") {
var transform2 = create$1();
rotate(transform2, transform2, axisAngle);
translate(transform2, transform2, [polar.cx, polar.cy]);
position2 = applyTransform([coord, -labelMargin], transform2);
var labelRotation = axisModel.getModel("axisLabel").get("rotate") || 0;
var labelLayout2 = AxisBuilder.innerTextLayout(axisAngle, labelRotation * Math.PI / 180, -1);
align = labelLayout2.textAlign;
verticalAlign = labelLayout2.textVerticalAlign;
} else {
var r2 = radiusExtent[1];
position2 = polar.coordToPoint([r2 + labelMargin, coord]);
var cx = polar.cx;
var cy = polar.cy;
align = Math.abs(position2[0] - cx) / r2 < 0.3 ? "center" : position2[0] > cx ? "left" : "right";
verticalAlign = Math.abs(position2[1] - cy) / r2 < 0.3 ? "middle" : position2[1] > cy ? "top" : "bottom";
}
return {
position: position2,
align,
verticalAlign
};
}
var pointerShapeBuilder$1 = {
line: function(axis, polar, coordValue, otherExtent) {
return axis.dim === "angle" ? {
type: "Line",
shape: makeLineShape(polar.coordToPoint([otherExtent[0], coordValue]), polar.coordToPoint([otherExtent[1], coordValue]))
} : {
type: "Circle",
shape: {
cx: polar.cx,
cy: polar.cy,
r: coordValue
}
};
},
shadow: function(axis, polar, coordValue, otherExtent) {
var bandWidth = Math.max(1, axis.getBandWidth());
var radian = Math.PI / 180;
return axis.dim === "angle" ? {
type: "Sector",
shape: makeSectorShape(
polar.cx,
polar.cy,
otherExtent[0],
otherExtent[1],
// In ECharts y is negative if angle is positive
(-coordValue - bandWidth / 2) * radian,
(-coordValue + bandWidth / 2) * radian
)
} : {
type: "Sector",
shape: makeSectorShape(polar.cx, polar.cy, coordValue - bandWidth / 2, coordValue + bandWidth / 2, 0, Math.PI * 2)
};
}
};
var PolarModel = (
/** @class */
function(_super) {
__extends(PolarModel2, _super);
function PolarModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = PolarModel2.type;
return _this;
}
PolarModel2.prototype.findAxisModel = function(axisType) {
var foundAxisModel;
var ecModel = this.ecModel;
ecModel.eachComponent(axisType, function(axisModel) {
if (axisModel.getCoordSysModel() === this) {
foundAxisModel = axisModel;
}
}, this);
return foundAxisModel;
};
PolarModel2.type = "polar";
PolarModel2.dependencies = ["radiusAxis", "angleAxis"];
PolarModel2.defaultOption = {
// zlevel: 0,
z: 0,
center: ["50%", "50%"],
radius: "80%"
};
return PolarModel2;
}(ComponentModel)
);
var PolarAxisModel = (
/** @class */
function(_super) {
__extends(PolarAxisModel2, _super);
function PolarAxisModel2() {
return _super !== null && _super.apply(this, arguments) || this;
}
PolarAxisModel2.prototype.getCoordSysModel = function() {
return this.getReferringComponents("polar", SINGLE_REFERRING).models[0];
};
PolarAxisModel2.type = "polarAxis";
return PolarAxisModel2;
}(ComponentModel)
);
mixin(PolarAxisModel, AxisModelCommonMixin);
var AngleAxisModel = (
/** @class */
function(_super) {
__extends(AngleAxisModel2, _super);
function AngleAxisModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = AngleAxisModel2.type;
return _this;
}
AngleAxisModel2.type = "angleAxis";
return AngleAxisModel2;
}(PolarAxisModel)
);
var RadiusAxisModel = (
/** @class */
function(_super) {
__extends(RadiusAxisModel2, _super);
function RadiusAxisModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = RadiusAxisModel2.type;
return _this;
}
RadiusAxisModel2.type = "radiusAxis";
return RadiusAxisModel2;
}(PolarAxisModel)
);
var RadiusAxis = (
/** @class */
function(_super) {
__extends(RadiusAxis2, _super);
function RadiusAxis2(scale2, radiusExtent) {
return _super.call(this, "radius", scale2, radiusExtent) || this;
}
RadiusAxis2.prototype.pointToData = function(point, clamp2) {
return this.polar.pointToData(point, clamp2)[this.dim === "radius" ? 0 : 1];
};
return RadiusAxis2;
}(Axis)
);
RadiusAxis.prototype.dataToRadius = Axis.prototype.dataToCoord;
RadiusAxis.prototype.radiusToData = Axis.prototype.coordToData;
var inner$8 = makeInner();
var AngleAxis = (
/** @class */
function(_super) {
__extends(AngleAxis2, _super);
function AngleAxis2(scale2, angleExtent) {
return _super.call(this, "angle", scale2, angleExtent || [0, 360]) || this;
}
AngleAxis2.prototype.pointToData = function(point, clamp2) {
return this.polar.pointToData(point, clamp2)[this.dim === "radius" ? 0 : 1];
};
AngleAxis2.prototype.calculateCategoryInterval = function() {
var axis = this;
var labelModel = axis.getLabelModel();
var ordinalScale = axis.scale;
var ordinalExtent = ordinalScale.getExtent();
var tickCount = ordinalScale.count();
if (ordinalExtent[1] - ordinalExtent[0] < 1) {
return 0;
}
var tickValue = ordinalExtent[0];
var unitSpan = axis.dataToCoord(tickValue + 1) - axis.dataToCoord(tickValue);
var unitH = Math.abs(unitSpan);
var rect = getBoundingRect(tickValue == null ? "" : tickValue + "", labelModel.getFont(), "center", "top");
var maxH = Math.max(rect.height, 7);
var dh2 = maxH / unitH;
isNaN(dh2) && (dh2 = Infinity);
var interval = Math.max(0, Math.floor(dh2));
var cache = inner$8(axis.model);
var lastAutoInterval = cache.lastAutoInterval;
var lastTickCount = cache.lastTickCount;
if (lastAutoInterval != null && lastTickCount != null && Math.abs(lastAutoInterval - interval) <= 1 && Math.abs(lastTickCount - tickCount) <= 1 && lastAutoInterval > interval) {
interval = lastAutoInterval;
} else {
cache.lastTickCount = tickCount;
cache.lastAutoInterval = interval;
}
return interval;
};
return AngleAxis2;
}(Axis)
);
AngleAxis.prototype.dataToAngle = Axis.prototype.dataToCoord;
AngleAxis.prototype.angleToData = Axis.prototype.coordToData;
var polarDimensions = ["radius", "angle"];
var Polar = (
/** @class */
function() {
function Polar2(name) {
this.dimensions = polarDimensions;
this.type = "polar";
this.cx = 0;
this.cy = 0;
this._radiusAxis = new RadiusAxis();
this._angleAxis = new AngleAxis();
this.axisPointerEnabled = true;
this.name = name || "";
this._radiusAxis.polar = this._angleAxis.polar = this;
}
Polar2.prototype.containPoint = function(point) {
var coord = this.pointToCoord(point);
return this._radiusAxis.contain(coord[0]) && this._angleAxis.contain(coord[1]);
};
Polar2.prototype.containData = function(data) {
return this._radiusAxis.containData(data[0]) && this._angleAxis.containData(data[1]);
};
Polar2.prototype.getAxis = function(dim) {
var key = "_" + dim + "Axis";
return this[key];
};
Polar2.prototype.getAxes = function() {
return [this._radiusAxis, this._angleAxis];
};
Polar2.prototype.getAxesByScale = function(scaleType) {
var axes = [];
var angleAxis = this._angleAxis;
var radiusAxis = this._radiusAxis;
angleAxis.scale.type === scaleType && axes.push(angleAxis);
radiusAxis.scale.type === scaleType && axes.push(radiusAxis);
return axes;
};
Polar2.prototype.getAngleAxis = function() {
return this._angleAxis;
};
Polar2.prototype.getRadiusAxis = function() {
return this._radiusAxis;
};
Polar2.prototype.getOtherAxis = function(axis) {
var angleAxis = this._angleAxis;
return axis === angleAxis ? this._radiusAxis : angleAxis;
};
Polar2.prototype.getBaseAxis = function() {
return this.getAxesByScale("ordinal")[0] || this.getAxesByScale("time")[0] || this.getAngleAxis();
};
Polar2.prototype.getTooltipAxes = function(dim) {
var baseAxis = dim != null && dim !== "auto" ? this.getAxis(dim) : this.getBaseAxis();
return {
baseAxes: [baseAxis],
otherAxes: [this.getOtherAxis(baseAxis)]
};
};
Polar2.prototype.dataToPoint = function(data, clamp2) {
return this.coordToPoint([this._radiusAxis.dataToRadius(data[0], clamp2), this._angleAxis.dataToAngle(data[1], clamp2)]);
};
Polar2.prototype.pointToData = function(point, clamp2) {
var coord = this.pointToCoord(point);
return [this._radiusAxis.radiusToData(coord[0], clamp2), this._angleAxis.angleToData(coord[1], clamp2)];
};
Polar2.prototype.pointToCoord = function(point) {
var dx = point[0] - this.cx;
var dy = point[1] - this.cy;
var angleAxis = this.getAngleAxis();
var extent3 = angleAxis.getExtent();
var minAngle = Math.min(extent3[0], extent3[1]);
var maxAngle = Math.max(extent3[0], extent3[1]);
angleAxis.inverse ? minAngle = maxAngle - 360 : maxAngle = minAngle + 360;
var radius2 = Math.sqrt(dx * dx + dy * dy);
dx /= radius2;
dy /= radius2;
var radian = Math.atan2(-dy, dx) / Math.PI * 180;
var dir3 = radian < minAngle ? 1 : -1;
while (radian < minAngle || radian > maxAngle) {
radian += dir3 * 360;
}
return [radius2, radian];
};
Polar2.prototype.coordToPoint = function(coord) {
var radius2 = coord[0];
var radian = coord[1] / 180 * Math.PI;
var x2 = Math.cos(radian) * radius2 + this.cx;
var y2 = -Math.sin(radian) * radius2 + this.cy;
return [x2, y2];
};
Polar2.prototype.getArea = function() {
var angleAxis = this.getAngleAxis();
var radiusAxis = this.getRadiusAxis();
var radiusExtent = radiusAxis.getExtent().slice();
radiusExtent[0] > radiusExtent[1] && radiusExtent.reverse();
var angleExtent = angleAxis.getExtent();
var RADIAN2 = Math.PI / 180;
return {
cx: this.cx,
cy: this.cy,
r0: radiusExtent[0],
r: radiusExtent[1],
startAngle: -angleExtent[0] * RADIAN2,
endAngle: -angleExtent[1] * RADIAN2,
clockwise: angleAxis.inverse,
contain: function(x2, y2) {
var dx = x2 - this.cx;
var dy = y2 - this.cy;
var d2 = dx * dx + dy * dy - 1e-4;
var r2 = this.r;
var r0 = this.r0;
return d2 <= r2 * r2 && d2 >= r0 * r0;
}
};
};
Polar2.prototype.convertToPixel = function(ecModel, finder, value) {
var coordSys = getCoordSys$2(finder);
return coordSys === this ? this.dataToPoint(value) : null;
};
Polar2.prototype.convertFromPixel = function(ecModel, finder, pixel) {
var coordSys = getCoordSys$2(finder);
return coordSys === this ? this.pointToData(pixel) : null;
};
return Polar2;
}()
);
function getCoordSys$2(finder) {
var seriesModel = finder.seriesModel;
var polarModel = finder.polarModel;
return polarModel && polarModel.coordinateSystem || seriesModel && seriesModel.coordinateSystem;
}
function resizePolar(polar, polarModel, api) {
var center2 = polarModel.get("center");
var width = api.getWidth();
var height = api.getHeight();
polar.cx = parsePercent(center2[0], width);
polar.cy = parsePercent(center2[1], height);
var radiusAxis = polar.getRadiusAxis();
var size = Math.min(width, height) / 2;
var radius2 = polarModel.get("radius");
if (radius2 == null) {
radius2 = [0, "100%"];
} else if (!isArray$1(radius2)) {
radius2 = [0, radius2];
}
var parsedRadius = [parsePercent(radius2[0], size), parsePercent(radius2[1], size)];
radiusAxis.inverse ? radiusAxis.setExtent(parsedRadius[1], parsedRadius[0]) : radiusAxis.setExtent(parsedRadius[0], parsedRadius[1]);
}
function updatePolarScale(ecModel, api) {
var polar = this;
var angleAxis = polar.getAngleAxis();
var radiusAxis = polar.getRadiusAxis();
angleAxis.scale.setExtent(Infinity, -Infinity);
radiusAxis.scale.setExtent(Infinity, -Infinity);
ecModel.eachSeries(function(seriesModel) {
if (seriesModel.coordinateSystem === polar) {
var data_1 = seriesModel.getData();
each$f(getDataDimensionsOnAxis(data_1, "radius"), function(dim) {
radiusAxis.scale.unionExtentFromData(data_1, dim);
});
each$f(getDataDimensionsOnAxis(data_1, "angle"), function(dim) {
angleAxis.scale.unionExtentFromData(data_1, dim);
});
}
});
niceScaleExtent(angleAxis.scale, angleAxis.model);
niceScaleExtent(radiusAxis.scale, radiusAxis.model);
if (angleAxis.type === "category" && !angleAxis.onBand) {
var extent3 = angleAxis.getExtent();
var diff = 360 / angleAxis.scale.count();
angleAxis.inverse ? extent3[1] += diff : extent3[1] -= diff;
angleAxis.setExtent(extent3[0], extent3[1]);
}
}
function isAngleAxisModel(axisModel) {
return axisModel.mainType === "angleAxis";
}
function setAxis(axis, axisModel) {
var _a2;
axis.type = axisModel.get("type");
axis.scale = createScaleByModel$1(axisModel);
axis.onBand = axisModel.get("boundaryGap") && axis.type === "category";
axis.inverse = axisModel.get("inverse");
if (isAngleAxisModel(axisModel)) {
axis.inverse = axis.inverse !== axisModel.get("clockwise");
var startAngle = axisModel.get("startAngle");
var endAngle = (_a2 = axisModel.get("endAngle")) !== null && _a2 !== void 0 ? _a2 : startAngle + (axis.inverse ? -360 : 360);
axis.setExtent(startAngle, endAngle);
}
axisModel.axis = axis;
axis.model = axisModel;
}
var polarCreator = {
dimensions: polarDimensions,
create: function(ecModel, api) {
var polarList = [];
ecModel.eachComponent("polar", function(polarModel, idx) {
var polar = new Polar(idx + "");
polar.update = updatePolarScale;
var radiusAxis = polar.getRadiusAxis();
var angleAxis = polar.getAngleAxis();
var radiusAxisModel = polarModel.findAxisModel("radiusAxis");
var angleAxisModel = polarModel.findAxisModel("angleAxis");
setAxis(radiusAxis, radiusAxisModel);
setAxis(angleAxis, angleAxisModel);
resizePolar(polar, polarModel, api);
polarList.push(polar);
polarModel.coordinateSystem = polar;
polar.model = polarModel;
});
ecModel.eachSeries(function(seriesModel) {
if (seriesModel.get("coordinateSystem") === "polar") {
var polarModel = seriesModel.getReferringComponents("polar", SINGLE_REFERRING).models[0];
seriesModel.coordinateSystem = polarModel.coordinateSystem;
}
});
return polarList;
}
};
var elementList = ["axisLine", "axisLabel", "axisTick", "minorTick", "splitLine", "minorSplitLine", "splitArea"];
function getAxisLineShape(polar, rExtent, angle) {
rExtent[1] > rExtent[0] && (rExtent = rExtent.slice().reverse());
var start2 = polar.coordToPoint([rExtent[0], angle]);
var end2 = polar.coordToPoint([rExtent[1], angle]);
return {
x1: start2[0],
y1: start2[1],
x2: end2[0],
y2: end2[1]
};
}
function getRadiusIdx(polar) {
var radiusAxis = polar.getRadiusAxis();
return radiusAxis.inverse ? 0 : 1;
}
function fixAngleOverlap(list) {
var firstItem = list[0];
var lastItem = list[list.length - 1];
if (firstItem && lastItem && Math.abs(Math.abs(firstItem.coord - lastItem.coord) - 360) < 1e-4) {
list.pop();
}
}
var AngleAxisView = (
/** @class */
function(_super) {
__extends(AngleAxisView2, _super);
function AngleAxisView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = AngleAxisView2.type;
_this.axisPointerClass = "PolarAxisPointer";
return _this;
}
AngleAxisView2.prototype.render = function(angleAxisModel, ecModel) {
this.group.removeAll();
if (!angleAxisModel.get("show")) {
return;
}
var angleAxis = angleAxisModel.axis;
var polar = angleAxis.polar;
var radiusExtent = polar.getRadiusAxis().getExtent();
var ticksAngles = angleAxis.getTicksCoords();
var minorTickAngles = angleAxis.getMinorTicksCoords();
var labels = map$1(angleAxis.getViewLabels(), function(labelItem) {
labelItem = clone$4(labelItem);
var scale2 = angleAxis.scale;
var tickValue = scale2.type === "ordinal" ? scale2.getRawOrdinalNumber(labelItem.tickValue) : labelItem.tickValue;
labelItem.coord = angleAxis.dataToCoord(tickValue);
return labelItem;
});
fixAngleOverlap(labels);
fixAngleOverlap(ticksAngles);
each$f(elementList, function(name) {
if (angleAxisModel.get([name, "show"]) && (!angleAxis.scale.isBlank() || name === "axisLine")) {
angelAxisElementsBuilders[name](this.group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent, labels);
}
}, this);
};
AngleAxisView2.type = "angleAxis";
return AngleAxisView2;
}(AxisView)
);
var angelAxisElementsBuilders = {
axisLine: function(group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {
var lineStyleModel = angleAxisModel.getModel(["axisLine", "lineStyle"]);
var angleAxis = polar.getAngleAxis();
var RADIAN2 = Math.PI / 180;
var angleExtent = angleAxis.getExtent();
var rId = getRadiusIdx(polar);
var r0Id = rId ? 0 : 1;
var shape;
var shapeType = Math.abs(angleExtent[1] - angleExtent[0]) === 360 ? "Circle" : "Arc";
if (radiusExtent[r0Id] === 0) {
shape = new graphic$1[shapeType]({
shape: {
cx: polar.cx,
cy: polar.cy,
r: radiusExtent[rId],
startAngle: -angleExtent[0] * RADIAN2,
endAngle: -angleExtent[1] * RADIAN2,
clockwise: angleAxis.inverse
},
style: lineStyleModel.getLineStyle(),
z2: 1,
silent: true
});
} else {
shape = new Ring({
shape: {
cx: polar.cx,
cy: polar.cy,
r: radiusExtent[rId],
r0: radiusExtent[r0Id]
},
style: lineStyleModel.getLineStyle(),
z2: 1,
silent: true
});
}
shape.style.fill = null;
group.add(shape);
},
axisTick: function(group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {
var tickModel = angleAxisModel.getModel("axisTick");
var tickLen = (tickModel.get("inside") ? -1 : 1) * tickModel.get("length");
var radius2 = radiusExtent[getRadiusIdx(polar)];
var lines = map$1(ticksAngles, function(tickAngleItem) {
return new Line$1({
shape: getAxisLineShape(polar, [radius2, radius2 + tickLen], tickAngleItem.coord)
});
});
group.add(mergePath(lines, {
style: defaults(tickModel.getModel("lineStyle").getLineStyle(), {
stroke: angleAxisModel.get(["axisLine", "lineStyle", "color"])
})
}));
},
minorTick: function(group, angleAxisModel, polar, tickAngles, minorTickAngles, radiusExtent) {
if (!minorTickAngles.length) {
return;
}
var tickModel = angleAxisModel.getModel("axisTick");
var minorTickModel = angleAxisModel.getModel("minorTick");
var tickLen = (tickModel.get("inside") ? -1 : 1) * minorTickModel.get("length");
var radius2 = radiusExtent[getRadiusIdx(polar)];
var lines = [];
for (var i = 0; i < minorTickAngles.length; i++) {
for (var k2 = 0; k2 < minorTickAngles[i].length; k2++) {
lines.push(new Line$1({
shape: getAxisLineShape(polar, [radius2, radius2 + tickLen], minorTickAngles[i][k2].coord)
}));
}
}
group.add(mergePath(lines, {
style: defaults(minorTickModel.getModel("lineStyle").getLineStyle(), defaults(tickModel.getLineStyle(), {
stroke: angleAxisModel.get(["axisLine", "lineStyle", "color"])
}))
}));
},
axisLabel: function(group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent, labels) {
var rawCategoryData = angleAxisModel.getCategories(true);
var commonLabelModel = angleAxisModel.getModel("axisLabel");
var labelMargin = commonLabelModel.get("margin");
var triggerEvent = angleAxisModel.get("triggerEvent");
each$f(labels, function(labelItem, idx) {
var labelModel = commonLabelModel;
var tickValue = labelItem.tickValue;
var r2 = radiusExtent[getRadiusIdx(polar)];
var p2 = polar.coordToPoint([r2 + labelMargin, labelItem.coord]);
var cx = polar.cx;
var cy = polar.cy;
var labelTextAlign = Math.abs(p2[0] - cx) / r2 < 0.3 ? "center" : p2[0] > cx ? "left" : "right";
var labelTextVerticalAlign = Math.abs(p2[1] - cy) / r2 < 0.3 ? "middle" : p2[1] > cy ? "top" : "bottom";
if (rawCategoryData && rawCategoryData[tickValue]) {
var rawCategoryItem = rawCategoryData[tickValue];
if (isObject$3(rawCategoryItem) && rawCategoryItem.textStyle) {
labelModel = new Model(rawCategoryItem.textStyle, commonLabelModel, commonLabelModel.ecModel);
}
}
var textEl = new ZRText({
silent: AxisBuilder.isLabelSilent(angleAxisModel),
style: createTextStyle$1(labelModel, {
x: p2[0],
y: p2[1],
fill: labelModel.getTextColor() || angleAxisModel.get(["axisLine", "lineStyle", "color"]),
text: labelItem.formattedLabel,
align: labelTextAlign,
verticalAlign: labelTextVerticalAlign
})
});
group.add(textEl);
if (triggerEvent) {
var eventData = AxisBuilder.makeAxisEventDataBase(angleAxisModel);
eventData.targetType = "axisLabel";
eventData.value = labelItem.rawLabel;
getECData(textEl).eventData = eventData;
}
}, this);
},
splitLine: function(group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {
var splitLineModel = angleAxisModel.getModel("splitLine");
var lineStyleModel = splitLineModel.getModel("lineStyle");
var lineColors = lineStyleModel.get("color");
var lineCount = 0;
lineColors = lineColors instanceof Array ? lineColors : [lineColors];
var splitLines = [];
for (var i = 0; i < ticksAngles.length; i++) {
var colorIndex = lineCount++ % lineColors.length;
splitLines[colorIndex] = splitLines[colorIndex] || [];
splitLines[colorIndex].push(new Line$1({
shape: getAxisLineShape(polar, radiusExtent, ticksAngles[i].coord)
}));
}
for (var i = 0; i < splitLines.length; i++) {
group.add(mergePath(splitLines[i], {
style: defaults({
stroke: lineColors[i % lineColors.length]
}, lineStyleModel.getLineStyle()),
silent: true,
z: angleAxisModel.get("z")
}));
}
},
minorSplitLine: function(group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {
if (!minorTickAngles.length) {
return;
}
var minorSplitLineModel = angleAxisModel.getModel("minorSplitLine");
var lineStyleModel = minorSplitLineModel.getModel("lineStyle");
var lines = [];
for (var i = 0; i < minorTickAngles.length; i++) {
for (var k2 = 0; k2 < minorTickAngles[i].length; k2++) {
lines.push(new Line$1({
shape: getAxisLineShape(polar, radiusExtent, minorTickAngles[i][k2].coord)
}));
}
}
group.add(mergePath(lines, {
style: lineStyleModel.getLineStyle(),
silent: true,
z: angleAxisModel.get("z")
}));
},
splitArea: function(group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {
if (!ticksAngles.length) {
return;
}
var splitAreaModel = angleAxisModel.getModel("splitArea");
var areaStyleModel = splitAreaModel.getModel("areaStyle");
var areaColors = areaStyleModel.get("color");
var lineCount = 0;
areaColors = areaColors instanceof Array ? areaColors : [areaColors];
var splitAreas = [];
var RADIAN2 = Math.PI / 180;
var prevAngle = -ticksAngles[0].coord * RADIAN2;
var r0 = Math.min(radiusExtent[0], radiusExtent[1]);
var r1 = Math.max(radiusExtent[0], radiusExtent[1]);
var clockwise = angleAxisModel.get("clockwise");
for (var i = 1, len2 = ticksAngles.length; i <= len2; i++) {
var coord = i === len2 ? ticksAngles[0].coord : ticksAngles[i].coord;
var colorIndex = lineCount++ % areaColors.length;
splitAreas[colorIndex] = splitAreas[colorIndex] || [];
splitAreas[colorIndex].push(new Sector({
shape: {
cx: polar.cx,
cy: polar.cy,
r0,
r: r1,
startAngle: prevAngle,
endAngle: -coord * RADIAN2,
clockwise
},
silent: true
}));
prevAngle = -coord * RADIAN2;
}
for (var i = 0; i < splitAreas.length; i++) {
group.add(mergePath(splitAreas[i], {
style: defaults({
fill: areaColors[i % areaColors.length]
}, areaStyleModel.getAreaStyle()),
silent: true
}));
}
}
};
var axisBuilderAttrs$1 = ["axisLine", "axisTickLabel", "axisName"];
var selfBuilderAttrs$1 = ["splitLine", "splitArea", "minorSplitLine"];
var RadiusAxisView = (
/** @class */
function(_super) {
__extends(RadiusAxisView2, _super);
function RadiusAxisView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = RadiusAxisView2.type;
_this.axisPointerClass = "PolarAxisPointer";
return _this;
}
RadiusAxisView2.prototype.render = function(radiusAxisModel, ecModel) {
this.group.removeAll();
if (!radiusAxisModel.get("show")) {
return;
}
var oldAxisGroup = this._axisGroup;
var newAxisGroup = this._axisGroup = new Group$3();
this.group.add(newAxisGroup);
var radiusAxis = radiusAxisModel.axis;
var polar = radiusAxis.polar;
var angleAxis = polar.getAngleAxis();
var ticksCoords = radiusAxis.getTicksCoords();
var minorTicksCoords = radiusAxis.getMinorTicksCoords();
var axisAngle = angleAxis.getExtent()[0];
var radiusExtent = radiusAxis.getExtent();
var layout2 = layoutAxis(polar, radiusAxisModel, axisAngle);
var axisBuilder = new AxisBuilder(radiusAxisModel, layout2);
each$f(axisBuilderAttrs$1, axisBuilder.add, axisBuilder);
newAxisGroup.add(axisBuilder.getGroup());
groupTransition(oldAxisGroup, newAxisGroup, radiusAxisModel);
each$f(selfBuilderAttrs$1, function(name) {
if (radiusAxisModel.get([name, "show"]) && !radiusAxis.scale.isBlank()) {
axisElementBuilders$1[name](this.group, radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords, minorTicksCoords);
}
}, this);
};
RadiusAxisView2.type = "radiusAxis";
return RadiusAxisView2;
}(AxisView)
);
var axisElementBuilders$1 = {
splitLine: function(group, radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords) {
var splitLineModel = radiusAxisModel.getModel("splitLine");
var lineStyleModel = splitLineModel.getModel("lineStyle");
var lineColors = lineStyleModel.get("color");
var lineCount = 0;
var angleAxis = polar.getAngleAxis();
var RADIAN2 = Math.PI / 180;
var angleExtent = angleAxis.getExtent();
var shapeType = Math.abs(angleExtent[1] - angleExtent[0]) === 360 ? "Circle" : "Arc";
lineColors = lineColors instanceof Array ? lineColors : [lineColors];
var splitLines = [];
for (var i = 0; i < ticksCoords.length; i++) {
var colorIndex = lineCount++ % lineColors.length;
splitLines[colorIndex] = splitLines[colorIndex] || [];
splitLines[colorIndex].push(new graphic$1[shapeType]({
shape: {
cx: polar.cx,
cy: polar.cy,
// ensure circle radius >= 0
r: Math.max(ticksCoords[i].coord, 0),
startAngle: -angleExtent[0] * RADIAN2,
endAngle: -angleExtent[1] * RADIAN2,
clockwise: angleAxis.inverse
}
}));
}
for (var i = 0; i < splitLines.length; i++) {
group.add(mergePath(splitLines[i], {
style: defaults({
stroke: lineColors[i % lineColors.length],
fill: null
}, lineStyleModel.getLineStyle()),
silent: true
}));
}
},
minorSplitLine: function(group, radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords, minorTicksCoords) {
if (!minorTicksCoords.length) {
return;
}
var minorSplitLineModel = radiusAxisModel.getModel("minorSplitLine");
var lineStyleModel = minorSplitLineModel.getModel("lineStyle");
var lines = [];
for (var i = 0; i < minorTicksCoords.length; i++) {
for (var k2 = 0; k2 < minorTicksCoords[i].length; k2++) {
lines.push(new Circle({
shape: {
cx: polar.cx,
cy: polar.cy,
r: minorTicksCoords[i][k2].coord
}
}));
}
}
group.add(mergePath(lines, {
style: defaults({
fill: null
}, lineStyleModel.getLineStyle()),
silent: true
}));
},
splitArea: function(group, radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords) {
if (!ticksCoords.length) {
return;
}
var splitAreaModel = radiusAxisModel.getModel("splitArea");
var areaStyleModel = splitAreaModel.getModel("areaStyle");
var areaColors = areaStyleModel.get("color");
var lineCount = 0;
areaColors = areaColors instanceof Array ? areaColors : [areaColors];
var splitAreas = [];
var prevRadius = ticksCoords[0].coord;
for (var i = 1; i < ticksCoords.length; i++) {
var colorIndex = lineCount++ % areaColors.length;
splitAreas[colorIndex] = splitAreas[colorIndex] || [];
splitAreas[colorIndex].push(new Sector({
shape: {
cx: polar.cx,
cy: polar.cy,
r0: prevRadius,
r: ticksCoords[i].coord,
startAngle: 0,
endAngle: Math.PI * 2
},
silent: true
}));
prevRadius = ticksCoords[i].coord;
}
for (var i = 0; i < splitAreas.length; i++) {
group.add(mergePath(splitAreas[i], {
style: defaults({
fill: areaColors[i % areaColors.length]
}, areaStyleModel.getAreaStyle()),
silent: true
}));
}
}
};
function layoutAxis(polar, radiusAxisModel, axisAngle) {
return {
position: [polar.cx, polar.cy],
rotation: axisAngle / 180 * Math.PI,
labelDirection: -1,
tickDirection: -1,
nameDirection: 1,
labelRotate: radiusAxisModel.getModel("axisLabel").get("rotate"),
// Over splitLine and splitArea
z2: 1
};
}
function getSeriesStackId(seriesModel) {
return seriesModel.get("stack") || "__ec_stack_" + seriesModel.seriesIndex;
}
function getAxisKey(polar, axis) {
return axis.dim + polar.model.componentIndex;
}
function barLayoutPolar(seriesType2, ecModel, api) {
var lastStackCoords = {};
var barWidthAndOffset = calRadialBar(filter(ecModel.getSeriesByType(seriesType2), function(seriesModel) {
return !ecModel.isSeriesFiltered(seriesModel) && seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === "polar";
}));
ecModel.eachSeriesByType(seriesType2, function(seriesModel) {
if (seriesModel.coordinateSystem.type !== "polar") {
return;
}
var data = seriesModel.getData();
var polar = seriesModel.coordinateSystem;
var baseAxis = polar.getBaseAxis();
var axisKey = getAxisKey(polar, baseAxis);
var stackId = getSeriesStackId(seriesModel);
var columnLayoutInfo = barWidthAndOffset[axisKey][stackId];
var columnOffset = columnLayoutInfo.offset;
var columnWidth = columnLayoutInfo.width;
var valueAxis2 = polar.getOtherAxis(baseAxis);
var cx = seriesModel.coordinateSystem.cx;
var cy = seriesModel.coordinateSystem.cy;
var barMinHeight = seriesModel.get("barMinHeight") || 0;
var barMinAngle = seriesModel.get("barMinAngle") || 0;
lastStackCoords[stackId] = lastStackCoords[stackId] || [];
var valueDim = data.mapDimension(valueAxis2.dim);
var baseDim = data.mapDimension(baseAxis.dim);
var stacked = isDimensionStacked(
data,
valueDim
/* , baseDim */
);
var clampLayout = baseAxis.dim !== "radius" || !seriesModel.get("roundCap", true);
var valueAxisModel = valueAxis2.model;
var startValue = valueAxisModel.get("startValue");
var valueAxisStart = valueAxis2.dataToCoord(startValue || 0);
for (var idx = 0, len2 = data.count(); idx < len2; idx++) {
var value = data.get(valueDim, idx);
var baseValue = data.get(baseDim, idx);
var sign = value >= 0 ? "p" : "n";
var baseCoord = valueAxisStart;
if (stacked) {
if (!lastStackCoords[stackId][baseValue]) {
lastStackCoords[stackId][baseValue] = {
p: valueAxisStart,
n: valueAxisStart
// Negative stack
};
}
baseCoord = lastStackCoords[stackId][baseValue][sign];
}
var r0 = void 0;
var r2 = void 0;
var startAngle = void 0;
var endAngle = void 0;
if (valueAxis2.dim === "radius") {
var radiusSpan = valueAxis2.dataToCoord(value) - valueAxisStart;
var angle = baseAxis.dataToCoord(baseValue);
if (Math.abs(radiusSpan) < barMinHeight) {
radiusSpan = (radiusSpan < 0 ? -1 : 1) * barMinHeight;
}
r0 = baseCoord;
r2 = baseCoord + radiusSpan;
startAngle = angle - columnOffset;
endAngle = startAngle - columnWidth;
stacked && (lastStackCoords[stackId][baseValue][sign] = r2);
} else {
var angleSpan = valueAxis2.dataToCoord(value, clampLayout) - valueAxisStart;
var radius2 = baseAxis.dataToCoord(baseValue);
if (Math.abs(angleSpan) < barMinAngle) {
angleSpan = (angleSpan < 0 ? -1 : 1) * barMinAngle;
}
r0 = radius2 + columnOffset;
r2 = r0 + columnWidth;
startAngle = baseCoord;
endAngle = baseCoord + angleSpan;
stacked && (lastStackCoords[stackId][baseValue][sign] = endAngle);
}
data.setItemLayout(idx, {
cx,
cy,
r0,
r: r2,
// Consider that positive angle is anti-clockwise,
// while positive radian of sector is clockwise
startAngle: -startAngle * Math.PI / 180,
endAngle: -endAngle * Math.PI / 180,
/**
* Keep the same logic with bar in catesion: use end value to
* control direction. Notice that if clockwise is true (by
* default), the sector will always draw clockwisely, no matter
* whether endAngle is greater or less than startAngle.
*/
clockwise: startAngle >= endAngle
});
}
});
}
function calRadialBar(barSeries) {
var columnsMap = {};
each$f(barSeries, function(seriesModel, idx) {
var data = seriesModel.getData();
var polar = seriesModel.coordinateSystem;
var baseAxis = polar.getBaseAxis();
var axisKey = getAxisKey(polar, baseAxis);
var axisExtent = baseAxis.getExtent();
var bandWidth = baseAxis.type === "category" ? baseAxis.getBandWidth() : Math.abs(axisExtent[1] - axisExtent[0]) / data.count();
var columnsOnAxis = columnsMap[axisKey] || {
bandWidth,
remainedWidth: bandWidth,
autoWidthCount: 0,
categoryGap: "20%",
gap: "30%",
stacks: {}
};
var stacks = columnsOnAxis.stacks;
columnsMap[axisKey] = columnsOnAxis;
var stackId = getSeriesStackId(seriesModel);
if (!stacks[stackId]) {
columnsOnAxis.autoWidthCount++;
}
stacks[stackId] = stacks[stackId] || {
width: 0,
maxWidth: 0
};
var barWidth = parsePercent(seriesModel.get("barWidth"), bandWidth);
var barMaxWidth = parsePercent(seriesModel.get("barMaxWidth"), bandWidth);
var barGap = seriesModel.get("barGap");
var barCategoryGap = seriesModel.get("barCategoryGap");
if (barWidth && !stacks[stackId].width) {
barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth);
stacks[stackId].width = barWidth;
columnsOnAxis.remainedWidth -= barWidth;
}
barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth);
barGap != null && (columnsOnAxis.gap = barGap);
barCategoryGap != null && (columnsOnAxis.categoryGap = barCategoryGap);
});
var result = {};
each$f(columnsMap, function(columnsOnAxis, coordSysName) {
result[coordSysName] = {};
var stacks = columnsOnAxis.stacks;
var bandWidth = columnsOnAxis.bandWidth;
var categoryGap = parsePercent(columnsOnAxis.categoryGap, bandWidth);
var barGapPercent = parsePercent(columnsOnAxis.gap, 1);
var remainedWidth = columnsOnAxis.remainedWidth;
var autoWidthCount = columnsOnAxis.autoWidthCount;
var autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);
autoWidth = Math.max(autoWidth, 0);
each$f(stacks, function(column2, stack) {
var maxWidth = column2.maxWidth;
if (maxWidth && maxWidth < autoWidth) {
maxWidth = Math.min(maxWidth, remainedWidth);
if (column2.width) {
maxWidth = Math.min(maxWidth, column2.width);
}
remainedWidth -= maxWidth;
column2.width = maxWidth;
autoWidthCount--;
}
});
autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);
autoWidth = Math.max(autoWidth, 0);
var widthSum = 0;
var lastColumn;
each$f(stacks, function(column2, idx) {
if (!column2.width) {
column2.width = autoWidth;
}
lastColumn = column2;
widthSum += column2.width * (1 + barGapPercent);
});
if (lastColumn) {
widthSum -= lastColumn.width * barGapPercent;
}
var offset2 = -widthSum / 2;
each$f(stacks, function(column2, stackId) {
result[coordSysName][stackId] = result[coordSysName][stackId] || {
offset: offset2,
width: column2.width
};
offset2 += column2.width * (1 + barGapPercent);
});
});
return result;
}
var angleAxisExtraOption = {
startAngle: 90,
clockwise: true,
splitNumber: 12,
axisLabel: {
rotate: 0
}
};
var radiusAxisExtraOption = {
splitNumber: 5
};
var PolarView = (
/** @class */
function(_super) {
__extends(PolarView2, _super);
function PolarView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = PolarView2.type;
return _this;
}
PolarView2.type = "polar";
return PolarView2;
}(ComponentView)
);
function install$o(registers) {
use(install$q);
AxisView.registerAxisPointerClass("PolarAxisPointer", PolarAxisPointer);
registers.registerCoordinateSystem("polar", polarCreator);
registers.registerComponentModel(PolarModel);
registers.registerComponentView(PolarView);
axisModelCreator(registers, "angle", AngleAxisModel, angleAxisExtraOption);
axisModelCreator(registers, "radius", RadiusAxisModel, radiusAxisExtraOption);
registers.registerComponentView(AngleAxisView);
registers.registerComponentView(RadiusAxisView);
registers.registerLayout(curry$1(barLayoutPolar, "bar"));
}
function layout$1(axisModel, opt) {
opt = opt || {};
var single = axisModel.coordinateSystem;
var axis = axisModel.axis;
var layout2 = {};
var axisPosition = axis.position;
var orient = axis.orient;
var rect = single.getRect();
var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height];
var positionMap = {
horizontal: {
top: rectBound[2],
bottom: rectBound[3]
},
vertical: {
left: rectBound[0],
right: rectBound[1]
}
};
layout2.position = [orient === "vertical" ? positionMap.vertical[axisPosition] : rectBound[0], orient === "horizontal" ? positionMap.horizontal[axisPosition] : rectBound[3]];
var r2 = {
horizontal: 0,
vertical: 1
};
layout2.rotation = Math.PI / 2 * r2[orient];
var directionMap = {
top: -1,
bottom: 1,
right: 1,
left: -1
};
layout2.labelDirection = layout2.tickDirection = layout2.nameDirection = directionMap[axisPosition];
if (axisModel.get(["axisTick", "inside"])) {
layout2.tickDirection = -layout2.tickDirection;
}
if (retrieve(opt.labelInside, axisModel.get(["axisLabel", "inside"]))) {
layout2.labelDirection = -layout2.labelDirection;
}
var labelRotation = opt.rotate;
labelRotation == null && (labelRotation = axisModel.get(["axisLabel", "rotate"]));
layout2.labelRotation = axisPosition === "top" ? -labelRotation : labelRotation;
layout2.z2 = 1;
return layout2;
}
var axisBuilderAttrs = ["axisLine", "axisTickLabel", "axisName"];
var selfBuilderAttrs = ["splitArea", "splitLine"];
var SingleAxisView = (
/** @class */
function(_super) {
__extends(SingleAxisView2, _super);
function SingleAxisView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = SingleAxisView2.type;
_this.axisPointerClass = "SingleAxisPointer";
return _this;
}
SingleAxisView2.prototype.render = function(axisModel, ecModel, api, payload) {
var group = this.group;
group.removeAll();
var oldAxisGroup = this._axisGroup;
this._axisGroup = new Group$3();
var layout2 = layout$1(axisModel);
var axisBuilder = new AxisBuilder(axisModel, layout2);
each$f(axisBuilderAttrs, axisBuilder.add, axisBuilder);
group.add(this._axisGroup);
group.add(axisBuilder.getGroup());
each$f(selfBuilderAttrs, function(name) {
if (axisModel.get([name, "show"])) {
axisElementBuilders[name](this, this.group, this._axisGroup, axisModel);
}
}, this);
groupTransition(oldAxisGroup, this._axisGroup, axisModel);
_super.prototype.render.call(this, axisModel, ecModel, api, payload);
};
SingleAxisView2.prototype.remove = function() {
rectCoordAxisHandleRemove(this);
};
SingleAxisView2.type = "singleAxis";
return SingleAxisView2;
}(AxisView)
);
var axisElementBuilders = {
splitLine: function(axisView, group, axisGroup, axisModel) {
var axis = axisModel.axis;
if (axis.scale.isBlank()) {
return;
}
var splitLineModel = axisModel.getModel("splitLine");
var lineStyleModel = splitLineModel.getModel("lineStyle");
var lineColors = lineStyleModel.get("color");
lineColors = lineColors instanceof Array ? lineColors : [lineColors];
var lineWidth = lineStyleModel.get("width");
var gridRect = axisModel.coordinateSystem.getRect();
var isHorizontal = axis.isHorizontal();
var splitLines = [];
var lineCount = 0;
var ticksCoords = axis.getTicksCoords({
tickModel: splitLineModel
});
var p1 = [];
var p2 = [];
for (var i = 0; i < ticksCoords.length; ++i) {
var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);
if (isHorizontal) {
p1[0] = tickCoord;
p1[1] = gridRect.y;
p2[0] = tickCoord;
p2[1] = gridRect.y + gridRect.height;
} else {
p1[0] = gridRect.x;
p1[1] = tickCoord;
p2[0] = gridRect.x + gridRect.width;
p2[1] = tickCoord;
}
var line2 = new Line$1({
shape: {
x1: p1[0],
y1: p1[1],
x2: p2[0],
y2: p2[1]
},
silent: true
});
subPixelOptimizeLine(line2.shape, lineWidth);
var colorIndex = lineCount++ % lineColors.length;
splitLines[colorIndex] = splitLines[colorIndex] || [];
splitLines[colorIndex].push(line2);
}
var lineStyle = lineStyleModel.getLineStyle(["color"]);
for (var i = 0; i < splitLines.length; ++i) {
group.add(mergePath(splitLines[i], {
style: defaults({
stroke: lineColors[i % lineColors.length]
}, lineStyle),
silent: true
}));
}
},
splitArea: function(axisView, group, axisGroup, axisModel) {
rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, axisModel);
}
};
var SingleAxisModel = (
/** @class */
function(_super) {
__extends(SingleAxisModel2, _super);
function SingleAxisModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = SingleAxisModel2.type;
return _this;
}
SingleAxisModel2.prototype.getCoordSysModel = function() {
return this;
};
SingleAxisModel2.type = "singleAxis";
SingleAxisModel2.layoutMode = "box";
SingleAxisModel2.defaultOption = {
left: "5%",
top: "5%",
right: "5%",
bottom: "5%",
type: "value",
position: "bottom",
orient: "horizontal",
axisLine: {
show: true,
lineStyle: {
width: 1,
type: "solid"
}
},
// Single coordinate system and single axis is the,
// which is used as the parent tooltip model.
// same model, so we set default tooltip show as true.
tooltip: {
show: true
},
axisTick: {
show: true,
length: 6,
lineStyle: {
width: 1
}
},
axisLabel: {
show: true,
interval: "auto"
},
splitLine: {
show: true,
lineStyle: {
type: "dashed",
opacity: 0.2
}
}
};
return SingleAxisModel2;
}(ComponentModel)
);
mixin(SingleAxisModel, AxisModelCommonMixin.prototype);
var SingleAxis = (
/** @class */
function(_super) {
__extends(SingleAxis2, _super);
function SingleAxis2(dim, scale2, coordExtent, axisType, position2) {
var _this = _super.call(this, dim, scale2, coordExtent) || this;
_this.type = axisType || "value";
_this.position = position2 || "bottom";
return _this;
}
SingleAxis2.prototype.isHorizontal = function() {
var position2 = this.position;
return position2 === "top" || position2 === "bottom";
};
SingleAxis2.prototype.pointToData = function(point, clamp2) {
return this.coordinateSystem.pointToData(point)[0];
};
return SingleAxis2;
}(Axis)
);
var singleDimensions = ["single"];
var Single = (
/** @class */
function() {
function Single2(axisModel, ecModel, api) {
this.type = "single";
this.dimension = "single";
this.dimensions = singleDimensions;
this.axisPointerEnabled = true;
this.model = axisModel;
this._init(axisModel, ecModel, api);
}
Single2.prototype._init = function(axisModel, ecModel, api) {
var dim = this.dimension;
var axis = new SingleAxis(dim, createScaleByModel$1(axisModel), [0, 0], axisModel.get("type"), axisModel.get("position"));
var isCategory2 = axis.type === "category";
axis.onBand = isCategory2 && axisModel.get("boundaryGap");
axis.inverse = axisModel.get("inverse");
axis.orient = axisModel.get("orient");
axisModel.axis = axis;
axis.model = axisModel;
axis.coordinateSystem = this;
this._axis = axis;
};
Single2.prototype.update = function(ecModel, api) {
ecModel.eachSeries(function(seriesModel) {
if (seriesModel.coordinateSystem === this) {
var data_1 = seriesModel.getData();
each$f(data_1.mapDimensionsAll(this.dimension), function(dim) {
this._axis.scale.unionExtentFromData(data_1, dim);
}, this);
niceScaleExtent(this._axis.scale, this._axis.model);
}
}, this);
};
Single2.prototype.resize = function(axisModel, api) {
this._rect = getLayoutRect({
left: axisModel.get("left"),
top: axisModel.get("top"),
right: axisModel.get("right"),
bottom: axisModel.get("bottom"),
width: axisModel.get("width"),
height: axisModel.get("height")
}, {
width: api.getWidth(),
height: api.getHeight()
});
this._adjustAxis();
};
Single2.prototype.getRect = function() {
return this._rect;
};
Single2.prototype._adjustAxis = function() {
var rect = this._rect;
var axis = this._axis;
var isHorizontal = axis.isHorizontal();
var extent3 = isHorizontal ? [0, rect.width] : [0, rect.height];
var idx = axis.inverse ? 1 : 0;
axis.setExtent(extent3[idx], extent3[1 - idx]);
this._updateAxisTransform(axis, isHorizontal ? rect.x : rect.y);
};
Single2.prototype._updateAxisTransform = function(axis, coordBase) {
var axisExtent = axis.getExtent();
var extentSum = axisExtent[0] + axisExtent[1];
var isHorizontal = axis.isHorizontal();
axis.toGlobalCoord = isHorizontal ? function(coord) {
return coord + coordBase;
} : function(coord) {
return extentSum - coord + coordBase;
};
axis.toLocalCoord = isHorizontal ? function(coord) {
return coord - coordBase;
} : function(coord) {
return extentSum - coord + coordBase;
};
};
Single2.prototype.getAxis = function() {
return this._axis;
};
Single2.prototype.getBaseAxis = function() {
return this._axis;
};
Single2.prototype.getAxes = function() {
return [this._axis];
};
Single2.prototype.getTooltipAxes = function() {
return {
baseAxes: [this.getAxis()],
// Empty otherAxes
otherAxes: []
};
};
Single2.prototype.containPoint = function(point) {
var rect = this.getRect();
var axis = this.getAxis();
var orient = axis.orient;
if (orient === "horizontal") {
return axis.contain(axis.toLocalCoord(point[0])) && point[1] >= rect.y && point[1] <= rect.y + rect.height;
} else {
return axis.contain(axis.toLocalCoord(point[1])) && point[0] >= rect.y && point[0] <= rect.y + rect.height;
}
};
Single2.prototype.pointToData = function(point) {
var axis = this.getAxis();
return [axis.coordToData(axis.toLocalCoord(point[axis.orient === "horizontal" ? 0 : 1]))];
};
Single2.prototype.dataToPoint = function(val) {
var axis = this.getAxis();
var rect = this.getRect();
var pt = [];
var idx = axis.orient === "horizontal" ? 0 : 1;
if (val instanceof Array) {
val = val[0];
}
pt[idx] = axis.toGlobalCoord(axis.dataToCoord(+val));
pt[1 - idx] = idx === 0 ? rect.y + rect.height / 2 : rect.x + rect.width / 2;
return pt;
};
Single2.prototype.convertToPixel = function(ecModel, finder, value) {
var coordSys = getCoordSys$1(finder);
return coordSys === this ? this.dataToPoint(value) : null;
};
Single2.prototype.convertFromPixel = function(ecModel, finder, pixel) {
var coordSys = getCoordSys$1(finder);
return coordSys === this ? this.pointToData(pixel) : null;
};
return Single2;
}()
);
function getCoordSys$1(finder) {
var seriesModel = finder.seriesModel;
var singleModel = finder.singleAxisModel;
return singleModel && singleModel.coordinateSystem || seriesModel && seriesModel.coordinateSystem;
}
function create(ecModel, api) {
var singles = [];
ecModel.eachComponent("singleAxis", function(axisModel, idx) {
var single = new Single(axisModel, ecModel, api);
single.name = "single_" + idx;
single.resize(axisModel, api);
axisModel.coordinateSystem = single;
singles.push(single);
});
ecModel.eachSeries(function(seriesModel) {
if (seriesModel.get("coordinateSystem") === "singleAxis") {
var singleAxisModel = seriesModel.getReferringComponents("singleAxis", SINGLE_REFERRING).models[0];
seriesModel.coordinateSystem = singleAxisModel && singleAxisModel.coordinateSystem;
}
});
return singles;
}
var singleCreator = {
create,
dimensions: singleDimensions
};
var XY$1 = ["x", "y"];
var WH$1 = ["width", "height"];
var SingleAxisPointer = (
/** @class */
function(_super) {
__extends(SingleAxisPointer2, _super);
function SingleAxisPointer2() {
return _super !== null && _super.apply(this, arguments) || this;
}
SingleAxisPointer2.prototype.makeElOption = function(elOption, value, axisModel, axisPointerModel, api) {
var axis = axisModel.axis;
var coordSys = axis.coordinateSystem;
var otherExtent = getGlobalExtent(coordSys, 1 - getPointDimIndex(axis));
var pixelValue = coordSys.dataToPoint(value)[0];
var axisPointerType = axisPointerModel.get("type");
if (axisPointerType && axisPointerType !== "none") {
var elStyle = buildElStyle(axisPointerModel);
var pointerOption = pointerShapeBuilder[axisPointerType](axis, pixelValue, otherExtent);
pointerOption.style = elStyle;
elOption.graphicKey = pointerOption.type;
elOption.pointer = pointerOption;
}
var layoutInfo = layout$1(axisModel);
buildCartesianSingleLabelElOption(
// @ts-ignore
value,
elOption,
layoutInfo,
axisModel,
axisPointerModel,
api
);
};
SingleAxisPointer2.prototype.getHandleTransform = function(value, axisModel, axisPointerModel) {
var layoutInfo = layout$1(axisModel, {
labelInside: false
});
layoutInfo.labelMargin = axisPointerModel.get(["handle", "margin"]);
var position2 = getTransformedPosition(axisModel.axis, value, layoutInfo);
return {
x: position2[0],
y: position2[1],
rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0)
};
};
SingleAxisPointer2.prototype.updateHandleTransform = function(transform2, delta, axisModel, axisPointerModel) {
var axis = axisModel.axis;
var coordSys = axis.coordinateSystem;
var dimIndex = getPointDimIndex(axis);
var axisExtent = getGlobalExtent(coordSys, dimIndex);
var currPosition = [transform2.x, transform2.y];
currPosition[dimIndex] += delta[dimIndex];
currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]);
currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]);
var otherExtent = getGlobalExtent(coordSys, 1 - dimIndex);
var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2;
var cursorPoint = [cursorOtherValue, cursorOtherValue];
cursorPoint[dimIndex] = currPosition[dimIndex];
return {
x: currPosition[0],
y: currPosition[1],
rotation: transform2.rotation,
cursorPoint,
tooltipOption: {
verticalAlign: "middle"
}
};
};
return SingleAxisPointer2;
}(BaseAxisPointer)
);
var pointerShapeBuilder = {
line: function(axis, pixelValue, otherExtent) {
var targetShape = makeLineShape([pixelValue, otherExtent[0]], [pixelValue, otherExtent[1]], getPointDimIndex(axis));
return {
type: "Line",
subPixelOptimize: true,
shape: targetShape
};
},
shadow: function(axis, pixelValue, otherExtent) {
var bandWidth = axis.getBandWidth();
var span = otherExtent[1] - otherExtent[0];
return {
type: "Rect",
shape: makeRectShape([pixelValue - bandWidth / 2, otherExtent[0]], [bandWidth, span], getPointDimIndex(axis))
};
}
};
function getPointDimIndex(axis) {
return axis.isHorizontal() ? 0 : 1;
}
function getGlobalExtent(coordSys, dimIndex) {
var rect = coordSys.getRect();
return [rect[XY$1[dimIndex]], rect[XY$1[dimIndex]] + rect[WH$1[dimIndex]]];
}
var SingleView = (
/** @class */
function(_super) {
__extends(SingleView2, _super);
function SingleView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = SingleView2.type;
return _this;
}
SingleView2.type = "single";
return SingleView2;
}(ComponentView)
);
function install$n(registers) {
use(install$q);
AxisView.registerAxisPointerClass("SingleAxisPointer", SingleAxisPointer);
registers.registerComponentView(SingleView);
registers.registerComponentView(SingleAxisView);
registers.registerComponentModel(SingleAxisModel);
axisModelCreator(registers, "single", SingleAxisModel, SingleAxisModel.defaultOption);
registers.registerCoordinateSystem("single", singleCreator);
}
var CalendarModel = (
/** @class */
function(_super) {
__extends(CalendarModel2, _super);
function CalendarModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = CalendarModel2.type;
return _this;
}
CalendarModel2.prototype.init = function(option, parentModel, ecModel) {
var inputPositionParams = getLayoutParams(option);
_super.prototype.init.apply(this, arguments);
mergeAndNormalizeLayoutParams$1(option, inputPositionParams);
};
CalendarModel2.prototype.mergeOption = function(option) {
_super.prototype.mergeOption.apply(this, arguments);
mergeAndNormalizeLayoutParams$1(this.option, option);
};
CalendarModel2.prototype.getCellSize = function() {
return this.option.cellSize;
};
CalendarModel2.type = "calendar";
CalendarModel2.defaultOption = {
// zlevel: 0,
z: 2,
left: 80,
top: 60,
cellSize: 20,
// horizontal vertical
orient: "horizontal",
// month separate line style
splitLine: {
show: true,
lineStyle: {
color: "#000",
width: 1,
type: "solid"
}
},
// rect style temporarily unused emphasis
itemStyle: {
color: "#fff",
borderWidth: 1,
borderColor: "#ccc"
},
// week text style
dayLabel: {
show: true,
firstDay: 0,
// start end
position: "start",
margin: "50%",
color: "#000"
},
// month text style
monthLabel: {
show: true,
// start end
position: "start",
margin: 5,
// center or left
align: "center",
formatter: null,
color: "#000"
},
// year text style
yearLabel: {
show: true,
// top bottom left right
position: null,
margin: 30,
formatter: null,
color: "#ccc",
fontFamily: "sans-serif",
fontWeight: "bolder",
fontSize: 20
}
};
return CalendarModel2;
}(ComponentModel)
);
function mergeAndNormalizeLayoutParams$1(target, raw) {
var cellSize = target.cellSize;
var cellSizeArr;
if (!isArray$1(cellSize)) {
cellSizeArr = target.cellSize = [cellSize, cellSize];
} else {
cellSizeArr = cellSize;
}
if (cellSizeArr.length === 1) {
cellSizeArr[1] = cellSizeArr[0];
}
var ignoreSize = map$1([0, 1], function(hvIdx) {
if (sizeCalculable(raw, hvIdx)) {
cellSizeArr[hvIdx] = "auto";
}
return cellSizeArr[hvIdx] != null && cellSizeArr[hvIdx] !== "auto";
});
mergeLayoutParam(target, raw, {
type: "box",
ignoreSize
});
}
var CalendarView = (
/** @class */
function(_super) {
__extends(CalendarView2, _super);
function CalendarView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = CalendarView2.type;
return _this;
}
CalendarView2.prototype.render = function(calendarModel, ecModel, api) {
var group = this.group;
group.removeAll();
var coordSys = calendarModel.coordinateSystem;
var rangeData = coordSys.getRangeInfo();
var orient = coordSys.getOrient();
var localeModel = ecModel.getLocaleModel();
this._renderDayRect(calendarModel, rangeData, group);
this._renderLines(calendarModel, rangeData, orient, group);
this._renderYearText(calendarModel, rangeData, orient, group);
this._renderMonthText(calendarModel, localeModel, orient, group);
this._renderWeekText(calendarModel, localeModel, rangeData, orient, group);
};
CalendarView2.prototype._renderDayRect = function(calendarModel, rangeData, group) {
var coordSys = calendarModel.coordinateSystem;
var itemRectStyleModel = calendarModel.getModel("itemStyle").getItemStyle();
var sw = coordSys.getCellWidth();
var sh2 = coordSys.getCellHeight();
for (var i = rangeData.start.time; i <= rangeData.end.time; i = coordSys.getNextNDay(i, 1).time) {
var point = coordSys.dataToRect([i], false).tl;
var rect = new Rect$2({
shape: {
x: point[0],
y: point[1],
width: sw,
height: sh2
},
cursor: "default",
style: itemRectStyleModel
});
group.add(rect);
}
};
CalendarView2.prototype._renderLines = function(calendarModel, rangeData, orient, group) {
var self2 = this;
var coordSys = calendarModel.coordinateSystem;
var lineStyleModel = calendarModel.getModel(["splitLine", "lineStyle"]).getLineStyle();
var show = calendarModel.get(["splitLine", "show"]);
var lineWidth = lineStyleModel.lineWidth;
this._tlpoints = [];
this._blpoints = [];
this._firstDayOfMonth = [];
this._firstDayPoints = [];
var firstDay = rangeData.start;
for (var i = 0; firstDay.time <= rangeData.end.time; i++) {
addPoints(firstDay.formatedDate);
if (i === 0) {
firstDay = coordSys.getDateInfo(rangeData.start.y + "-" + rangeData.start.m);
}
var date4 = firstDay.date;
date4.setMonth(date4.getMonth() + 1);
firstDay = coordSys.getDateInfo(date4);
}
addPoints(coordSys.getNextNDay(rangeData.end.time, 1).formatedDate);
function addPoints(date5) {
self2._firstDayOfMonth.push(coordSys.getDateInfo(date5));
self2._firstDayPoints.push(coordSys.dataToRect([date5], false).tl);
var points2 = self2._getLinePointsOfOneWeek(calendarModel, date5, orient);
self2._tlpoints.push(points2[0]);
self2._blpoints.push(points2[points2.length - 1]);
show && self2._drawSplitline(points2, lineStyleModel, group);
}
show && this._drawSplitline(self2._getEdgesPoints(self2._tlpoints, lineWidth, orient), lineStyleModel, group);
show && this._drawSplitline(self2._getEdgesPoints(self2._blpoints, lineWidth, orient), lineStyleModel, group);
};
CalendarView2.prototype._getEdgesPoints = function(points2, lineWidth, orient) {
var rs = [points2[0].slice(), points2[points2.length - 1].slice()];
var idx = orient === "horizontal" ? 0 : 1;
rs[0][idx] = rs[0][idx] - lineWidth / 2;
rs[1][idx] = rs[1][idx] + lineWidth / 2;
return rs;
};
CalendarView2.prototype._drawSplitline = function(points2, lineStyle, group) {
var poyline = new Polyline$1({
z2: 20,
shape: {
points: points2
},
style: lineStyle
});
group.add(poyline);
};
CalendarView2.prototype._getLinePointsOfOneWeek = function(calendarModel, date4, orient) {
var coordSys = calendarModel.coordinateSystem;
var parsedDate = coordSys.getDateInfo(date4);
var points2 = [];
for (var i = 0; i < 7; i++) {
var tmpD = coordSys.getNextNDay(parsedDate.time, i);
var point = coordSys.dataToRect([tmpD.time], false);
points2[2 * tmpD.day] = point.tl;
points2[2 * tmpD.day + 1] = point[orient === "horizontal" ? "bl" : "tr"];
}
return points2;
};
CalendarView2.prototype._formatterLabel = function(formatter, params) {
if (isString$1(formatter) && formatter) {
return formatTplSimple(formatter, params);
}
if (isFunction$1(formatter)) {
return formatter(params);
}
return params.nameMap;
};
CalendarView2.prototype._yearTextPositionControl = function(textEl, point, orient, position2, margin) {
var x2 = point[0];
var y2 = point[1];
var aligns = ["center", "bottom"];
if (position2 === "bottom") {
y2 += margin;
aligns = ["center", "top"];
} else if (position2 === "left") {
x2 -= margin;
} else if (position2 === "right") {
x2 += margin;
aligns = ["center", "top"];
} else {
y2 -= margin;
}
var rotate2 = 0;
if (position2 === "left" || position2 === "right") {
rotate2 = Math.PI / 2;
}
return {
rotation: rotate2,
x: x2,
y: y2,
style: {
align: aligns[0],
verticalAlign: aligns[1]
}
};
};
CalendarView2.prototype._renderYearText = function(calendarModel, rangeData, orient, group) {
var yearLabel = calendarModel.getModel("yearLabel");
if (!yearLabel.get("show")) {
return;
}
var margin = yearLabel.get("margin");
var pos = yearLabel.get("position");
if (!pos) {
pos = orient !== "horizontal" ? "top" : "left";
}
var points2 = [this._tlpoints[this._tlpoints.length - 1], this._blpoints[0]];
var xc2 = (points2[0][0] + points2[1][0]) / 2;
var yc2 = (points2[0][1] + points2[1][1]) / 2;
var idx = orient === "horizontal" ? 0 : 1;
var posPoints = {
top: [xc2, points2[idx][1]],
bottom: [xc2, points2[1 - idx][1]],
left: [points2[1 - idx][0], yc2],
right: [points2[idx][0], yc2]
};
var name = rangeData.start.y;
if (+rangeData.end.y > +rangeData.start.y) {
name = name + "-" + rangeData.end.y;
}
var formatter = yearLabel.get("formatter");
var params = {
start: rangeData.start.y,
end: rangeData.end.y,
nameMap: name
};
var content = this._formatterLabel(formatter, params);
var yearText = new ZRText({
z2: 30,
style: createTextStyle$1(yearLabel, {
text: content
})
});
yearText.attr(this._yearTextPositionControl(yearText, posPoints[pos], orient, pos, margin));
group.add(yearText);
};
CalendarView2.prototype._monthTextPositionControl = function(point, isCenter, orient, position2, margin) {
var align = "left";
var vAlign = "top";
var x2 = point[0];
var y2 = point[1];
if (orient === "horizontal") {
y2 = y2 + margin;
if (isCenter) {
align = "center";
}
if (position2 === "start") {
vAlign = "bottom";
}
} else {
x2 = x2 + margin;
if (isCenter) {
vAlign = "middle";
}
if (position2 === "start") {
align = "right";
}
}
return {
x: x2,
y: y2,
align,
verticalAlign: vAlign
};
};
CalendarView2.prototype._renderMonthText = function(calendarModel, localeModel, orient, group) {
var monthLabel = calendarModel.getModel("monthLabel");
if (!monthLabel.get("show")) {
return;
}
var nameMap = monthLabel.get("nameMap");
var margin = monthLabel.get("margin");
var pos = monthLabel.get("position");
var align = monthLabel.get("align");
var termPoints = [this._tlpoints, this._blpoints];
if (!nameMap || isString$1(nameMap)) {
if (nameMap) {
localeModel = getLocaleModel(nameMap) || localeModel;
}
nameMap = localeModel.get(["time", "monthAbbr"]) || [];
}
var idx = pos === "start" ? 0 : 1;
var axis = orient === "horizontal" ? 0 : 1;
margin = pos === "start" ? -margin : margin;
var isCenter = align === "center";
for (var i = 0; i < termPoints[idx].length - 1; i++) {
var tmp = termPoints[idx][i].slice();
var firstDay = this._firstDayOfMonth[i];
if (isCenter) {
var firstDayPoints = this._firstDayPoints[i];
tmp[axis] = (firstDayPoints[axis] + termPoints[0][i + 1][axis]) / 2;
}
var formatter = monthLabel.get("formatter");
var name_1 = nameMap[+firstDay.m - 1];
var params = {
yyyy: firstDay.y,
yy: (firstDay.y + "").slice(2),
MM: firstDay.m,
M: +firstDay.m,
nameMap: name_1
};
var content = this._formatterLabel(formatter, params);
var monthText = new ZRText({
z2: 30,
style: extend(createTextStyle$1(monthLabel, {
text: content
}), this._monthTextPositionControl(tmp, isCenter, orient, pos, margin))
});
group.add(monthText);
}
};
CalendarView2.prototype._weekTextPositionControl = function(point, orient, position2, margin, cellSize) {
var align = "center";
var vAlign = "middle";
var x2 = point[0];
var y2 = point[1];
var isStart = position2 === "start";
if (orient === "horizontal") {
x2 = x2 + margin + (isStart ? 1 : -1) * cellSize[0] / 2;
align = isStart ? "right" : "left";
} else {
y2 = y2 + margin + (isStart ? 1 : -1) * cellSize[1] / 2;
vAlign = isStart ? "bottom" : "top";
}
return {
x: x2,
y: y2,
align,
verticalAlign: vAlign
};
};
CalendarView2.prototype._renderWeekText = function(calendarModel, localeModel, rangeData, orient, group) {
var dayLabel = calendarModel.getModel("dayLabel");
if (!dayLabel.get("show")) {
return;
}
var coordSys = calendarModel.coordinateSystem;
var pos = dayLabel.get("position");
var nameMap = dayLabel.get("nameMap");
var margin = dayLabel.get("margin");
var firstDayOfWeek = coordSys.getFirstDayOfWeek();
if (!nameMap || isString$1(nameMap)) {
if (nameMap) {
localeModel = getLocaleModel(nameMap) || localeModel;
}
var dayOfWeekShort = localeModel.get(["time", "dayOfWeekShort"]);
nameMap = dayOfWeekShort || map$1(localeModel.get(["time", "dayOfWeekAbbr"]), function(val) {
return val[0];
});
}
var start2 = coordSys.getNextNDay(rangeData.end.time, 7 - rangeData.lweek).time;
var cellSize = [coordSys.getCellWidth(), coordSys.getCellHeight()];
margin = parsePercent(margin, Math.min(cellSize[1], cellSize[0]));
if (pos === "start") {
start2 = coordSys.getNextNDay(rangeData.start.time, -(7 + rangeData.fweek)).time;
margin = -margin;
}
for (var i = 0; i < 7; i++) {
var tmpD = coordSys.getNextNDay(start2, i);
var point = coordSys.dataToRect([tmpD.time], false).center;
var day = i;
day = Math.abs((i + firstDayOfWeek) % 7);
var weekText = new ZRText({
z2: 30,
style: extend(createTextStyle$1(dayLabel, {
text: nameMap[day]
}), this._weekTextPositionControl(point, orient, pos, margin, cellSize))
});
group.add(weekText);
}
};
CalendarView2.type = "calendar";
return CalendarView2;
}(ComponentView)
);
var PROXIMATE_ONE_DAY = 864e5;
var Calendar = (
/** @class */
function() {
function Calendar2(calendarModel, ecModel, api) {
this.type = "calendar";
this.dimensions = Calendar2.dimensions;
this.getDimensionsInfo = Calendar2.getDimensionsInfo;
this._model = calendarModel;
}
Calendar2.getDimensionsInfo = function() {
return [{
name: "time",
type: "time"
}, "value"];
};
Calendar2.prototype.getRangeInfo = function() {
return this._rangeInfo;
};
Calendar2.prototype.getModel = function() {
return this._model;
};
Calendar2.prototype.getRect = function() {
return this._rect;
};
Calendar2.prototype.getCellWidth = function() {
return this._sw;
};
Calendar2.prototype.getCellHeight = function() {
return this._sh;
};
Calendar2.prototype.getOrient = function() {
return this._orient;
};
Calendar2.prototype.getFirstDayOfWeek = function() {
return this._firstDayOfWeek;
};
Calendar2.prototype.getDateInfo = function(date4) {
date4 = parseDate(date4);
var y2 = date4.getFullYear();
var m2 = date4.getMonth() + 1;
var mStr = m2 < 10 ? "0" + m2 : "" + m2;
var d2 = date4.getDate();
var dStr = d2 < 10 ? "0" + d2 : "" + d2;
var day = date4.getDay();
day = Math.abs((day + 7 - this.getFirstDayOfWeek()) % 7);
return {
y: y2 + "",
m: mStr,
d: dStr,
day,
time: date4.getTime(),
formatedDate: y2 + "-" + mStr + "-" + dStr,
date: date4
};
};
Calendar2.prototype.getNextNDay = function(date4, n2) {
n2 = n2 || 0;
if (n2 === 0) {
return this.getDateInfo(date4);
}
date4 = new Date(this.getDateInfo(date4).time);
date4.setDate(date4.getDate() + n2);
return this.getDateInfo(date4);
};
Calendar2.prototype.update = function(ecModel, api) {
this._firstDayOfWeek = +this._model.getModel("dayLabel").get("firstDay");
this._orient = this._model.get("orient");
this._lineWidth = this._model.getModel("itemStyle").getItemStyle().lineWidth || 0;
this._rangeInfo = this._getRangeInfo(this._initRangeOption());
var weeks = this._rangeInfo.weeks || 1;
var whNames = ["width", "height"];
var cellSize = this._model.getCellSize().slice();
var layoutParams = this._model.getBoxLayoutParams();
var cellNumbers = this._orient === "horizontal" ? [weeks, 7] : [7, weeks];
each$f([0, 1], function(idx) {
if (cellSizeSpecified(cellSize, idx)) {
layoutParams[whNames[idx]] = cellSize[idx] * cellNumbers[idx];
}
});
var whGlobal = {
width: api.getWidth(),
height: api.getHeight()
};
var calendarRect = this._rect = getLayoutRect(layoutParams, whGlobal);
each$f([0, 1], function(idx) {
if (!cellSizeSpecified(cellSize, idx)) {
cellSize[idx] = calendarRect[whNames[idx]] / cellNumbers[idx];
}
});
function cellSizeSpecified(cellSize2, idx) {
return cellSize2[idx] != null && cellSize2[idx] !== "auto";
}
this._sw = cellSize[0];
this._sh = cellSize[1];
};
Calendar2.prototype.dataToPoint = function(data, clamp2) {
isArray$1(data) && (data = data[0]);
clamp2 == null && (clamp2 = true);
var dayInfo = this.getDateInfo(data);
var range3 = this._rangeInfo;
var date4 = dayInfo.formatedDate;
if (clamp2 && !(dayInfo.time >= range3.start.time && dayInfo.time < range3.end.time + PROXIMATE_ONE_DAY)) {
return [NaN, NaN];
}
var week = dayInfo.day;
var nthWeek = this._getRangeInfo([range3.start.time, date4]).nthWeek;
if (this._orient === "vertical") {
return [this._rect.x + week * this._sw + this._sw / 2, this._rect.y + nthWeek * this._sh + this._sh / 2];
}
return [this._rect.x + nthWeek * this._sw + this._sw / 2, this._rect.y + week * this._sh + this._sh / 2];
};
Calendar2.prototype.pointToData = function(point) {
var date4 = this.pointToDate(point);
return date4 && date4.time;
};
Calendar2.prototype.dataToRect = function(data, clamp2) {
var point = this.dataToPoint(data, clamp2);
return {
contentShape: {
x: point[0] - (this._sw - this._lineWidth) / 2,
y: point[1] - (this._sh - this._lineWidth) / 2,
width: this._sw - this._lineWidth,
height: this._sh - this._lineWidth
},
center: point,
tl: [point[0] - this._sw / 2, point[1] - this._sh / 2],
tr: [point[0] + this._sw / 2, point[1] - this._sh / 2],
br: [point[0] + this._sw / 2, point[1] + this._sh / 2],
bl: [point[0] - this._sw / 2, point[1] + this._sh / 2]
};
};
Calendar2.prototype.pointToDate = function(point) {
var nthX = Math.floor((point[0] - this._rect.x) / this._sw) + 1;
var nthY = Math.floor((point[1] - this._rect.y) / this._sh) + 1;
var range3 = this._rangeInfo.range;
if (this._orient === "vertical") {
return this._getDateByWeeksAndDay(nthY, nthX - 1, range3);
}
return this._getDateByWeeksAndDay(nthX, nthY - 1, range3);
};
Calendar2.prototype.convertToPixel = function(ecModel, finder, value) {
var coordSys = getCoordSys(finder);
return coordSys === this ? coordSys.dataToPoint(value) : null;
};
Calendar2.prototype.convertFromPixel = function(ecModel, finder, pixel) {
var coordSys = getCoordSys(finder);
return coordSys === this ? coordSys.pointToData(pixel) : null;
};
Calendar2.prototype.containPoint = function(point) {
console.warn("Not implemented.");
return false;
};
Calendar2.prototype._initRangeOption = function() {
var range3 = this._model.get("range");
var normalizedRange;
if (isArray$1(range3) && range3.length === 1) {
range3 = range3[0];
}
if (!isArray$1(range3)) {
var rangeStr = range3.toString();
if (/^\d{4}$/.test(rangeStr)) {
normalizedRange = [rangeStr + "-01-01", rangeStr + "-12-31"];
}
if (/^\d{4}[\/|-]\d{1,2}$/.test(rangeStr)) {
var start2 = this.getDateInfo(rangeStr);
var firstDay = start2.date;
firstDay.setMonth(firstDay.getMonth() + 1);
var end2 = this.getNextNDay(firstDay, -1);
normalizedRange = [start2.formatedDate, end2.formatedDate];
}
if (/^\d{4}[\/|-]\d{1,2}[\/|-]\d{1,2}$/.test(rangeStr)) {
normalizedRange = [rangeStr, rangeStr];
}
} else {
normalizedRange = range3;
}
if (!normalizedRange) {
return range3;
}
var tmp = this._getRangeInfo(normalizedRange);
if (tmp.start.time > tmp.end.time) {
normalizedRange.reverse();
}
return normalizedRange;
};
Calendar2.prototype._getRangeInfo = function(range3) {
var parsedRange = [this.getDateInfo(range3[0]), this.getDateInfo(range3[1])];
var reversed;
if (parsedRange[0].time > parsedRange[1].time) {
reversed = true;
parsedRange.reverse();
}
var allDay = Math.floor(parsedRange[1].time / PROXIMATE_ONE_DAY) - Math.floor(parsedRange[0].time / PROXIMATE_ONE_DAY) + 1;
var date4 = new Date(parsedRange[0].time);
var startDateNum = date4.getDate();
var endDateNum = parsedRange[1].date.getDate();
date4.setDate(startDateNum + allDay - 1);
var dateNum = date4.getDate();
if (dateNum !== endDateNum) {
var sign = date4.getTime() - parsedRange[1].time > 0 ? 1 : -1;
while ((dateNum = date4.getDate()) !== endDateNum && (date4.getTime() - parsedRange[1].time) * sign > 0) {
allDay -= sign;
date4.setDate(dateNum - sign);
}
}
var weeks = Math.floor((allDay + parsedRange[0].day + 6) / 7);
var nthWeek = reversed ? -weeks + 1 : weeks - 1;
reversed && parsedRange.reverse();
return {
range: [parsedRange[0].formatedDate, parsedRange[1].formatedDate],
start: parsedRange[0],
end: parsedRange[1],
allDay,
weeks,
// From 0.
nthWeek,
fweek: parsedRange[0].day,
lweek: parsedRange[1].day
};
};
Calendar2.prototype._getDateByWeeksAndDay = function(nthWeek, day, range3) {
var rangeInfo = this._getRangeInfo(range3);
if (nthWeek > rangeInfo.weeks || nthWeek === 0 && day < rangeInfo.fweek || nthWeek === rangeInfo.weeks && day > rangeInfo.lweek) {
return null;
}
var nthDay = (nthWeek - 1) * 7 - rangeInfo.fweek + day;
var date4 = new Date(rangeInfo.start.time);
date4.setDate(+rangeInfo.start.d + nthDay);
return this.getDateInfo(date4);
};
Calendar2.create = function(ecModel, api) {
var calendarList = [];
ecModel.eachComponent("calendar", function(calendarModel) {
var calendar = new Calendar2(calendarModel);
calendarList.push(calendar);
calendarModel.coordinateSystem = calendar;
});
ecModel.eachSeries(function(calendarSeries) {
if (calendarSeries.get("coordinateSystem") === "calendar") {
calendarSeries.coordinateSystem = calendarList[calendarSeries.get("calendarIndex") || 0];
}
});
return calendarList;
};
Calendar2.dimensions = ["time", "value"];
return Calendar2;
}()
);
function getCoordSys(finder) {
var calendarModel = finder.calendarModel;
var seriesModel = finder.seriesModel;
var coordSys = calendarModel ? calendarModel.coordinateSystem : seriesModel ? seriesModel.coordinateSystem : null;
return coordSys;
}
function install$m(registers) {
registers.registerComponentModel(CalendarModel);
registers.registerComponentView(CalendarView);
registers.registerCoordinateSystem("calendar", Calendar);
}
function setKeyInfoToNewElOption(resultItem, newElOption) {
var existElOption = resultItem.existing;
newElOption.id = resultItem.keyInfo.id;
!newElOption.type && existElOption && (newElOption.type = existElOption.type);
if (newElOption.parentId == null) {
var newElParentOption = newElOption.parentOption;
if (newElParentOption) {
newElOption.parentId = newElParentOption.id;
} else if (existElOption) {
newElOption.parentId = existElOption.parentId;
}
}
newElOption.parentOption = null;
}
function isSetLoc(obj, props) {
var isSet;
each$f(props, function(prop) {
obj[prop] != null && obj[prop] !== "auto" && (isSet = true);
});
return isSet;
}
function mergeNewElOptionToExist(existList, index2, newElOption) {
var newElOptCopy = extend({}, newElOption);
var existElOption = existList[index2];
var $action = newElOption.$action || "merge";
if ($action === "merge") {
if (existElOption) {
merge(existElOption, newElOptCopy, true);
mergeLayoutParam(existElOption, newElOptCopy, {
ignoreSize: true
});
copyLayoutParams(newElOption, existElOption);
copyTransitionInfo(newElOption, existElOption);
copyTransitionInfo(newElOption, existElOption, "shape");
copyTransitionInfo(newElOption, existElOption, "style");
copyTransitionInfo(newElOption, existElOption, "extra");
newElOption.clipPath = existElOption.clipPath;
} else {
existList[index2] = newElOptCopy;
}
} else if ($action === "replace") {
existList[index2] = newElOptCopy;
} else if ($action === "remove") {
existElOption && (existList[index2] = null);
}
}
var TRANSITION_PROPS_TO_COPY = ["transition", "enterFrom", "leaveTo"];
var ROOT_TRANSITION_PROPS_TO_COPY = TRANSITION_PROPS_TO_COPY.concat(["enterAnimation", "updateAnimation", "leaveAnimation"]);
function copyTransitionInfo(target, source, targetProp) {
if (targetProp) {
if (!target[targetProp] && source[targetProp]) {
target[targetProp] = {};
}
target = target[targetProp];
source = source[targetProp];
}
if (!target || !source) {
return;
}
var props = targetProp ? TRANSITION_PROPS_TO_COPY : ROOT_TRANSITION_PROPS_TO_COPY;
for (var i = 0; i < props.length; i++) {
var prop = props[i];
if (target[prop] == null && source[prop] != null) {
target[prop] = source[prop];
}
}
}
function setLayoutInfoToExist(existItem, newElOption) {
if (!existItem) {
return;
}
existItem.hv = newElOption.hv = [
// Rigid body, don't care about `width`.
isSetLoc(newElOption, ["left", "right"]),
// Rigid body, don't care about `height`.
isSetLoc(newElOption, ["top", "bottom"])
];
if (existItem.type === "group") {
var existingGroupOpt = existItem;
var newGroupOpt = newElOption;
existingGroupOpt.width == null && (existingGroupOpt.width = newGroupOpt.width = 0);
existingGroupOpt.height == null && (existingGroupOpt.height = newGroupOpt.height = 0);
}
}
var GraphicComponentModel = (
/** @class */
function(_super) {
__extends(GraphicComponentModel2, _super);
function GraphicComponentModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = GraphicComponentModel2.type;
_this.preventAutoZ = true;
return _this;
}
GraphicComponentModel2.prototype.mergeOption = function(option, ecModel) {
var elements = this.option.elements;
this.option.elements = null;
_super.prototype.mergeOption.call(this, option, ecModel);
this.option.elements = elements;
};
GraphicComponentModel2.prototype.optionUpdated = function(newOption, isInit) {
var thisOption = this.option;
var newList = (isInit ? thisOption : newOption).elements;
var existList = thisOption.elements = isInit ? [] : thisOption.elements;
var flattenedList = [];
this._flatten(newList, flattenedList, null);
var mappingResult = mappingToExists(existList, flattenedList, "normalMerge");
var elOptionsToUpdate = this._elOptionsToUpdate = [];
each$f(mappingResult, function(resultItem, index2) {
var newElOption = resultItem.newOption;
if (!newElOption) {
return;
}
elOptionsToUpdate.push(newElOption);
setKeyInfoToNewElOption(resultItem, newElOption);
mergeNewElOptionToExist(existList, index2, newElOption);
setLayoutInfoToExist(existList[index2], newElOption);
}, this);
thisOption.elements = filter(existList, function(item) {
item && delete item.$action;
return item != null;
});
};
GraphicComponentModel2.prototype._flatten = function(optionList, result, parentOption) {
each$f(optionList, function(option) {
if (!option) {
return;
}
if (parentOption) {
option.parentOption = parentOption;
}
result.push(option);
var children = option.children;
if (children && children.length) {
this._flatten(children, result, option);
}
delete option.children;
}, this);
};
GraphicComponentModel2.prototype.useElOptionsToUpdate = function() {
var els = this._elOptionsToUpdate;
this._elOptionsToUpdate = null;
return els;
};
GraphicComponentModel2.type = "graphic";
GraphicComponentModel2.defaultOption = {
elements: []
// parentId: null
};
return GraphicComponentModel2;
}(ComponentModel)
);
var nonShapeGraphicElements = {
// Reserved but not supported in graphic component.
path: null,
compoundPath: null,
// Supported in graphic component.
group: Group$3,
image: ZRImage,
text: ZRText
};
var inner$7 = makeInner();
var GraphicComponentView = (
/** @class */
function(_super) {
__extends(GraphicComponentView2, _super);
function GraphicComponentView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = GraphicComponentView2.type;
return _this;
}
GraphicComponentView2.prototype.init = function() {
this._elMap = createHashMap();
};
GraphicComponentView2.prototype.render = function(graphicModel, ecModel, api) {
if (graphicModel !== this._lastGraphicModel) {
this._clear();
}
this._lastGraphicModel = graphicModel;
this._updateElements(graphicModel);
this._relocate(graphicModel, api);
};
GraphicComponentView2.prototype._updateElements = function(graphicModel) {
var elOptionsToUpdate = graphicModel.useElOptionsToUpdate();
if (!elOptionsToUpdate) {
return;
}
var elMap = this._elMap;
var rootGroup = this.group;
var globalZ = graphicModel.get("z");
var globalZLevel = graphicModel.get("zlevel");
each$f(elOptionsToUpdate, function(elOption) {
var id2 = convertOptionIdName(elOption.id, null);
var elExisting = id2 != null ? elMap.get(id2) : null;
var parentId = convertOptionIdName(elOption.parentId, null);
var targetElParent = parentId != null ? elMap.get(parentId) : rootGroup;
var elType = elOption.type;
var elOptionStyle = elOption.style;
if (elType === "text" && elOptionStyle) {
if (elOption.hv && elOption.hv[1]) {
elOptionStyle.textVerticalAlign = elOptionStyle.textBaseline = elOptionStyle.verticalAlign = elOptionStyle.align = null;
}
}
var textContentOption = elOption.textContent;
var textConfig = elOption.textConfig;
if (elOptionStyle && isEC4CompatibleStyle(elOptionStyle, elType, !!textConfig, !!textContentOption)) {
var convertResult = convertFromEC4CompatibleStyle(elOptionStyle, elType, true);
if (!textConfig && convertResult.textConfig) {
textConfig = elOption.textConfig = convertResult.textConfig;
}
if (!textContentOption && convertResult.textContent) {
textContentOption = convertResult.textContent;
}
}
var elOptionCleaned = getCleanedElOption(elOption);
var $action = elOption.$action || "merge";
var isMerge = $action === "merge";
var isReplace = $action === "replace";
if (isMerge) {
var isInit = !elExisting;
var el_1 = elExisting;
if (isInit) {
el_1 = createEl(id2, targetElParent, elOption.type, elMap);
} else {
el_1 && (inner$7(el_1).isNew = false);
stopPreviousKeyframeAnimationAndRestore(el_1);
}
if (el_1) {
applyUpdateTransition(el_1, elOptionCleaned, graphicModel, {
isInit
});
updateCommonAttrs(el_1, elOption, globalZ, globalZLevel);
}
} else if (isReplace) {
removeEl$1(elExisting, elOption, elMap, graphicModel);
var el_2 = createEl(id2, targetElParent, elOption.type, elMap);
if (el_2) {
applyUpdateTransition(el_2, elOptionCleaned, graphicModel, {
isInit: true
});
updateCommonAttrs(el_2, elOption, globalZ, globalZLevel);
}
} else if ($action === "remove") {
updateLeaveTo(elExisting, elOption);
removeEl$1(elExisting, elOption, elMap, graphicModel);
}
var el2 = elMap.get(id2);
if (el2 && textContentOption) {
if (isMerge) {
var textContentExisting = el2.getTextContent();
textContentExisting ? textContentExisting.attr(textContentOption) : el2.setTextContent(new ZRText(textContentOption));
} else if (isReplace) {
el2.setTextContent(new ZRText(textContentOption));
}
}
if (el2) {
var clipPathOption = elOption.clipPath;
if (clipPathOption) {
var clipPathType = clipPathOption.type;
var clipPath = void 0;
var isInit = false;
if (isMerge) {
var oldClipPath = el2.getClipPath();
isInit = !oldClipPath || inner$7(oldClipPath).type !== clipPathType;
clipPath = isInit ? newEl(clipPathType) : oldClipPath;
} else if (isReplace) {
isInit = true;
clipPath = newEl(clipPathType);
}
el2.setClipPath(clipPath);
applyUpdateTransition(clipPath, clipPathOption, graphicModel, {
isInit
});
applyKeyframeAnimation(clipPath, clipPathOption.keyframeAnimation, graphicModel);
}
var elInner = inner$7(el2);
el2.setTextConfig(textConfig);
elInner.option = elOption;
setEventData(el2, graphicModel, elOption);
setTooltipConfig({
el: el2,
componentModel: graphicModel,
itemName: el2.name,
itemTooltipOption: elOption.tooltip
});
applyKeyframeAnimation(el2, elOption.keyframeAnimation, graphicModel);
}
});
};
GraphicComponentView2.prototype._relocate = function(graphicModel, api) {
var elOptions = graphicModel.option.elements;
var rootGroup = this.group;
var elMap = this._elMap;
var apiWidth = api.getWidth();
var apiHeight = api.getHeight();
var xy = ["x", "y"];
for (var i = 0; i < elOptions.length; i++) {
var elOption = elOptions[i];
var id2 = convertOptionIdName(elOption.id, null);
var el2 = id2 != null ? elMap.get(id2) : null;
if (!el2 || !el2.isGroup) {
continue;
}
var parentEl = el2.parent;
var isParentRoot = parentEl === rootGroup;
var elInner = inner$7(el2);
var parentElInner = inner$7(parentEl);
elInner.width = parsePercent(elInner.option.width, isParentRoot ? apiWidth : parentElInner.width) || 0;
elInner.height = parsePercent(elInner.option.height, isParentRoot ? apiHeight : parentElInner.height) || 0;
}
for (var i = elOptions.length - 1; i >= 0; i--) {
var elOption = elOptions[i];
var id2 = convertOptionIdName(elOption.id, null);
var el2 = id2 != null ? elMap.get(id2) : null;
if (!el2) {
continue;
}
var parentEl = el2.parent;
var parentElInner = inner$7(parentEl);
var containerInfo = parentEl === rootGroup ? {
width: apiWidth,
height: apiHeight
} : {
width: parentElInner.width,
height: parentElInner.height
};
var layoutPos = {};
var layouted = positionElement(el2, elOption, containerInfo, null, {
hv: elOption.hv,
boundingMode: elOption.bounding
}, layoutPos);
if (!inner$7(el2).isNew && layouted) {
var transition = elOption.transition;
var animatePos = {};
for (var k2 = 0; k2 < xy.length; k2++) {
var key = xy[k2];
var val = layoutPos[key];
if (transition && (isTransitionAll(transition) || indexOf(transition, key) >= 0)) {
animatePos[key] = val;
} else {
el2[key] = val;
}
}
updateProps$1(el2, animatePos, graphicModel, 0);
} else {
el2.attr(layoutPos);
}
}
};
GraphicComponentView2.prototype._clear = function() {
var _this = this;
var elMap = this._elMap;
elMap.each(function(el2) {
removeEl$1(el2, inner$7(el2).option, elMap, _this._lastGraphicModel);
});
this._elMap = createHashMap();
};
GraphicComponentView2.prototype.dispose = function() {
this._clear();
};
GraphicComponentView2.type = "graphic";
return GraphicComponentView2;
}(ComponentView)
);
function newEl(graphicType) {
var Clz = hasOwn(nonShapeGraphicElements, graphicType) ? nonShapeGraphicElements[graphicType] : getShapeClass(graphicType);
var el2 = new Clz({});
inner$7(el2).type = graphicType;
return el2;
}
function createEl(id2, targetElParent, graphicType, elMap) {
var el2 = newEl(graphicType);
targetElParent.add(el2);
elMap.set(id2, el2);
inner$7(el2).id = id2;
inner$7(el2).isNew = true;
return el2;
}
function removeEl$1(elExisting, elOption, elMap, graphicModel) {
var existElParent = elExisting && elExisting.parent;
if (existElParent) {
elExisting.type === "group" && elExisting.traverse(function(el2) {
removeEl$1(el2, elOption, elMap, graphicModel);
});
applyLeaveTransition(elExisting, elOption, graphicModel);
elMap.removeKey(inner$7(elExisting).id);
}
}
function updateCommonAttrs(el2, elOption, defaultZ, defaultZlevel) {
if (!el2.isGroup) {
each$f([
["cursor", Displayable.prototype.cursor],
// We should not support configure z and zlevel in the element level.
// But seems we didn't limit it previously. So here still use it to avoid breaking.
["zlevel", defaultZlevel || 0],
["z", defaultZ || 0],
// z2 must not be null/undefined, otherwise sort error may occur.
["z2", 0]
], function(item) {
var prop = item[0];
if (hasOwn(elOption, prop)) {
el2[prop] = retrieve2(elOption[prop], item[1]);
} else if (el2[prop] == null) {
el2[prop] = item[1];
}
});
}
each$f(keys(elOption), function(key) {
if (key.indexOf("on") === 0) {
var val = elOption[key];
el2[key] = isFunction$1(val) ? val : null;
}
});
if (hasOwn(elOption, "draggable")) {
el2.draggable = elOption.draggable;
}
elOption.name != null && (el2.name = elOption.name);
elOption.id != null && (el2.id = elOption.id);
}
function getCleanedElOption(elOption) {
elOption = extend({}, elOption);
each$f(["id", "parentId", "$action", "hv", "bounding", "textContent", "clipPath"].concat(LOCATION_PARAMS), function(name) {
delete elOption[name];
});
return elOption;
}
function setEventData(el2, graphicModel, elOption) {
var eventData = getECData(el2).eventData;
if (!el2.silent && !el2.ignore && !eventData) {
eventData = getECData(el2).eventData = {
componentType: "graphic",
componentIndex: graphicModel.componentIndex,
name: el2.name
};
}
if (eventData) {
eventData.info = elOption.info;
}
}
function install$l(registers) {
registers.registerComponentModel(GraphicComponentModel);
registers.registerComponentView(GraphicComponentView);
registers.registerPreprocessor(function(option) {
var graphicOption = option.graphic;
if (isArray$1(graphicOption)) {
if (!graphicOption[0] || !graphicOption[0].elements) {
option.graphic = [{
elements: graphicOption
}];
} else {
option.graphic = [option.graphic[0]];
}
} else if (graphicOption && !graphicOption.elements) {
option.graphic = [{
elements: [graphicOption]
}];
}
});
}
var DATA_ZOOM_AXIS_DIMENSIONS = ["x", "y", "radius", "angle", "single"];
var SERIES_COORDS = ["cartesian2d", "polar", "singleAxis"];
function isCoordSupported(seriesModel) {
var coordType = seriesModel.get("coordinateSystem");
return indexOf(SERIES_COORDS, coordType) >= 0;
}
function getAxisMainType(axisDim) {
return axisDim + "Axis";
}
function findEffectedDataZooms(ecModel, payload) {
var axisRecords = createHashMap();
var effectedModels = [];
var effectedModelMap = createHashMap();
ecModel.eachComponent({
mainType: "dataZoom",
query: payload
}, function(dataZoomModel) {
if (!effectedModelMap.get(dataZoomModel.uid)) {
addToEffected(dataZoomModel);
}
});
var foundNewLink;
do {
foundNewLink = false;
ecModel.eachComponent("dataZoom", processSingle);
} while (foundNewLink);
function processSingle(dataZoomModel) {
if (!effectedModelMap.get(dataZoomModel.uid) && isLinked(dataZoomModel)) {
addToEffected(dataZoomModel);
foundNewLink = true;
}
}
function addToEffected(dataZoom) {
effectedModelMap.set(dataZoom.uid, true);
effectedModels.push(dataZoom);
markAxisControlled(dataZoom);
}
function isLinked(dataZoomModel) {
var isLink = false;
dataZoomModel.eachTargetAxis(function(axisDim, axisIndex) {
var axisIdxArr = axisRecords.get(axisDim);
if (axisIdxArr && axisIdxArr[axisIndex]) {
isLink = true;
}
});
return isLink;
}
function markAxisControlled(dataZoomModel) {
dataZoomModel.eachTargetAxis(function(axisDim, axisIndex) {
(axisRecords.get(axisDim) || axisRecords.set(axisDim, []))[axisIndex] = true;
});
}
return effectedModels;
}
function collectReferCoordSysModelInfo(dataZoomModel) {
var ecModel = dataZoomModel.ecModel;
var coordSysInfoWrap = {
infoList: [],
infoMap: createHashMap()
};
dataZoomModel.eachTargetAxis(function(axisDim, axisIndex) {
var axisModel = ecModel.getComponent(getAxisMainType(axisDim), axisIndex);
if (!axisModel) {
return;
}
var coordSysModel = axisModel.getCoordSysModel();
if (!coordSysModel) {
return;
}
var coordSysUid = coordSysModel.uid;
var coordSysInfo = coordSysInfoWrap.infoMap.get(coordSysUid);
if (!coordSysInfo) {
coordSysInfo = {
model: coordSysModel,
axisModels: []
};
coordSysInfoWrap.infoList.push(coordSysInfo);
coordSysInfoWrap.infoMap.set(coordSysUid, coordSysInfo);
}
coordSysInfo.axisModels.push(axisModel);
});
return coordSysInfoWrap;
}
var DataZoomAxisInfo = (
/** @class */
function() {
function DataZoomAxisInfo2() {
this.indexList = [];
this.indexMap = [];
}
DataZoomAxisInfo2.prototype.add = function(axisCmptIdx) {
if (!this.indexMap[axisCmptIdx]) {
this.indexList.push(axisCmptIdx);
this.indexMap[axisCmptIdx] = true;
}
};
return DataZoomAxisInfo2;
}()
);
var DataZoomModel = (
/** @class */
function(_super) {
__extends(DataZoomModel2, _super);
function DataZoomModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = DataZoomModel2.type;
_this._autoThrottle = true;
_this._noTarget = true;
_this._rangePropMode = ["percent", "percent"];
return _this;
}
DataZoomModel2.prototype.init = function(option, parentModel, ecModel) {
var inputRawOption = retrieveRawOption(option);
this.settledOption = inputRawOption;
this.mergeDefaultAndTheme(option, ecModel);
this._doInit(inputRawOption);
};
DataZoomModel2.prototype.mergeOption = function(newOption) {
var inputRawOption = retrieveRawOption(newOption);
merge(this.option, newOption, true);
merge(this.settledOption, inputRawOption, true);
this._doInit(inputRawOption);
};
DataZoomModel2.prototype._doInit = function(inputRawOption) {
var thisOption = this.option;
this._setDefaultThrottle(inputRawOption);
this._updateRangeUse(inputRawOption);
var settledOption = this.settledOption;
each$f([["start", "startValue"], ["end", "endValue"]], function(names2, index2) {
if (this._rangePropMode[index2] === "value") {
thisOption[names2[0]] = settledOption[names2[0]] = null;
}
}, this);
this._resetTarget();
};
DataZoomModel2.prototype._resetTarget = function() {
var optionOrient = this.get("orient", true);
var targetAxisIndexMap = this._targetAxisInfoMap = createHashMap();
var hasAxisSpecified = this._fillSpecifiedTargetAxis(targetAxisIndexMap);
if (hasAxisSpecified) {
this._orient = optionOrient || this._makeAutoOrientByTargetAxis();
} else {
this._orient = optionOrient || "horizontal";
this._fillAutoTargetAxisByOrient(targetAxisIndexMap, this._orient);
}
this._noTarget = true;
targetAxisIndexMap.each(function(axisInfo) {
if (axisInfo.indexList.length) {
this._noTarget = false;
}
}, this);
};
DataZoomModel2.prototype._fillSpecifiedTargetAxis = function(targetAxisIndexMap) {
var hasAxisSpecified = false;
each$f(DATA_ZOOM_AXIS_DIMENSIONS, function(axisDim) {
var refering = this.getReferringComponents(getAxisMainType(axisDim), MULTIPLE_REFERRING);
if (!refering.specified) {
return;
}
hasAxisSpecified = true;
var axisInfo = new DataZoomAxisInfo();
each$f(refering.models, function(axisModel) {
axisInfo.add(axisModel.componentIndex);
});
targetAxisIndexMap.set(axisDim, axisInfo);
}, this);
return hasAxisSpecified;
};
DataZoomModel2.prototype._fillAutoTargetAxisByOrient = function(targetAxisIndexMap, orient) {
var ecModel = this.ecModel;
var needAuto = true;
if (needAuto) {
var axisDim = orient === "vertical" ? "y" : "x";
var axisModels = ecModel.findComponents({
mainType: axisDim + "Axis"
});
setParallelAxis(axisModels, axisDim);
}
if (needAuto) {
var axisModels = ecModel.findComponents({
mainType: "singleAxis",
filter: function(axisModel) {
return axisModel.get("orient", true) === orient;
}
});
setParallelAxis(axisModels, "single");
}
function setParallelAxis(axisModels2, axisDim2) {
var axisModel = axisModels2[0];
if (!axisModel) {
return;
}
var axisInfo = new DataZoomAxisInfo();
axisInfo.add(axisModel.componentIndex);
targetAxisIndexMap.set(axisDim2, axisInfo);
needAuto = false;
if (axisDim2 === "x" || axisDim2 === "y") {
var gridModel_1 = axisModel.getReferringComponents("grid", SINGLE_REFERRING).models[0];
gridModel_1 && each$f(axisModels2, function(axModel) {
if (axisModel.componentIndex !== axModel.componentIndex && gridModel_1 === axModel.getReferringComponents("grid", SINGLE_REFERRING).models[0]) {
axisInfo.add(axModel.componentIndex);
}
});
}
}
if (needAuto) {
each$f(DATA_ZOOM_AXIS_DIMENSIONS, function(axisDim2) {
if (!needAuto) {
return;
}
var axisModels2 = ecModel.findComponents({
mainType: getAxisMainType(axisDim2),
filter: function(axisModel) {
return axisModel.get("type", true) === "category";
}
});
if (axisModels2[0]) {
var axisInfo = new DataZoomAxisInfo();
axisInfo.add(axisModels2[0].componentIndex);
targetAxisIndexMap.set(axisDim2, axisInfo);
needAuto = false;
}
}, this);
}
};
DataZoomModel2.prototype._makeAutoOrientByTargetAxis = function() {
var dim;
this.eachTargetAxis(function(axisDim) {
!dim && (dim = axisDim);
}, this);
return dim === "y" ? "vertical" : "horizontal";
};
DataZoomModel2.prototype._setDefaultThrottle = function(inputRawOption) {
if (inputRawOption.hasOwnProperty("throttle")) {
this._autoThrottle = false;
}
if (this._autoThrottle) {
var globalOption = this.ecModel.option;
this.option.throttle = globalOption.animation && globalOption.animationDurationUpdate > 0 ? 100 : 20;
}
};
DataZoomModel2.prototype._updateRangeUse = function(inputRawOption) {
var rangePropMode = this._rangePropMode;
var rangeModeInOption = this.get("rangeMode");
each$f([["start", "startValue"], ["end", "endValue"]], function(names2, index2) {
var percentSpecified = inputRawOption[names2[0]] != null;
var valueSpecified = inputRawOption[names2[1]] != null;
if (percentSpecified && !valueSpecified) {
rangePropMode[index2] = "percent";
} else if (!percentSpecified && valueSpecified) {
rangePropMode[index2] = "value";
} else if (rangeModeInOption) {
rangePropMode[index2] = rangeModeInOption[index2];
} else if (percentSpecified) {
rangePropMode[index2] = "percent";
}
});
};
DataZoomModel2.prototype.noTarget = function() {
return this._noTarget;
};
DataZoomModel2.prototype.getFirstTargetAxisModel = function() {
var firstAxisModel;
this.eachTargetAxis(function(axisDim, axisIndex) {
if (firstAxisModel == null) {
firstAxisModel = this.ecModel.getComponent(getAxisMainType(axisDim), axisIndex);
}
}, this);
return firstAxisModel;
};
DataZoomModel2.prototype.eachTargetAxis = function(callback, context) {
this._targetAxisInfoMap.each(function(axisInfo, axisDim) {
each$f(axisInfo.indexList, function(axisIndex) {
callback.call(context, axisDim, axisIndex);
});
});
};
DataZoomModel2.prototype.getAxisProxy = function(axisDim, axisIndex) {
var axisModel = this.getAxisModel(axisDim, axisIndex);
if (axisModel) {
return axisModel.__dzAxisProxy;
}
};
DataZoomModel2.prototype.getAxisModel = function(axisDim, axisIndex) {
var axisInfo = this._targetAxisInfoMap.get(axisDim);
if (axisInfo && axisInfo.indexMap[axisIndex]) {
return this.ecModel.getComponent(getAxisMainType(axisDim), axisIndex);
}
};
DataZoomModel2.prototype.setRawRange = function(opt) {
var thisOption = this.option;
var settledOption = this.settledOption;
each$f([["start", "startValue"], ["end", "endValue"]], function(names2) {
if (opt[names2[0]] != null || opt[names2[1]] != null) {
thisOption[names2[0]] = settledOption[names2[0]] = opt[names2[0]];
thisOption[names2[1]] = settledOption[names2[1]] = opt[names2[1]];
}
}, this);
this._updateRangeUse(opt);
};
DataZoomModel2.prototype.setCalculatedRange = function(opt) {
var option = this.option;
each$f(["start", "startValue", "end", "endValue"], function(name) {
option[name] = opt[name];
});
};
DataZoomModel2.prototype.getPercentRange = function() {
var axisProxy = this.findRepresentativeAxisProxy();
if (axisProxy) {
return axisProxy.getDataPercentWindow();
}
};
DataZoomModel2.prototype.getValueRange = function(axisDim, axisIndex) {
if (axisDim == null && axisIndex == null) {
var axisProxy = this.findRepresentativeAxisProxy();
if (axisProxy) {
return axisProxy.getDataValueWindow();
}
} else {
return this.getAxisProxy(axisDim, axisIndex).getDataValueWindow();
}
};
DataZoomModel2.prototype.findRepresentativeAxisProxy = function(axisModel) {
if (axisModel) {
return axisModel.__dzAxisProxy;
}
var firstProxy;
var axisDimList = this._targetAxisInfoMap.keys();
for (var i = 0; i < axisDimList.length; i++) {
var axisDim = axisDimList[i];
var axisInfo = this._targetAxisInfoMap.get(axisDim);
for (var j = 0; j < axisInfo.indexList.length; j++) {
var proxy = this.getAxisProxy(axisDim, axisInfo.indexList[j]);
if (proxy.hostedBy(this)) {
return proxy;
}
if (!firstProxy) {
firstProxy = proxy;
}
}
}
return firstProxy;
};
DataZoomModel2.prototype.getRangePropMode = function() {
return this._rangePropMode.slice();
};
DataZoomModel2.prototype.getOrient = function() {
return this._orient;
};
DataZoomModel2.type = "dataZoom";
DataZoomModel2.dependencies = ["xAxis", "yAxis", "radiusAxis", "angleAxis", "singleAxis", "series", "toolbox"];
DataZoomModel2.defaultOption = {
// zlevel: 0,
z: 4,
filterMode: "filter",
start: 0,
end: 100
};
return DataZoomModel2;
}(ComponentModel)
);
function retrieveRawOption(option) {
var ret = {};
each$f(["start", "end", "startValue", "endValue", "throttle"], function(name) {
option.hasOwnProperty(name) && (ret[name] = option[name]);
});
return ret;
}
var SelectDataZoomModel = (
/** @class */
function(_super) {
__extends(SelectDataZoomModel2, _super);
function SelectDataZoomModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = SelectDataZoomModel2.type;
return _this;
}
SelectDataZoomModel2.type = "dataZoom.select";
return SelectDataZoomModel2;
}(DataZoomModel)
);
var DataZoomView = (
/** @class */
function(_super) {
__extends(DataZoomView2, _super);
function DataZoomView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = DataZoomView2.type;
return _this;
}
DataZoomView2.prototype.render = function(dataZoomModel, ecModel, api, payload) {
this.dataZoomModel = dataZoomModel;
this.ecModel = ecModel;
this.api = api;
};
DataZoomView2.type = "dataZoom";
return DataZoomView2;
}(ComponentView)
);
var SelectDataZoomView = (
/** @class */
function(_super) {
__extends(SelectDataZoomView2, _super);
function SelectDataZoomView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = SelectDataZoomView2.type;
return _this;
}
SelectDataZoomView2.type = "dataZoom.select";
return SelectDataZoomView2;
}(DataZoomView)
);
var each$7 = each$f;
var asc$1 = asc$2;
var AxisProxy = (
/** @class */
function() {
function AxisProxy2(dimName, axisIndex, dataZoomModel, ecModel) {
this._dimName = dimName;
this._axisIndex = axisIndex;
this.ecModel = ecModel;
this._dataZoomModel = dataZoomModel;
}
AxisProxy2.prototype.hostedBy = function(dataZoomModel) {
return this._dataZoomModel === dataZoomModel;
};
AxisProxy2.prototype.getDataValueWindow = function() {
return this._valueWindow.slice();
};
AxisProxy2.prototype.getDataPercentWindow = function() {
return this._percentWindow.slice();
};
AxisProxy2.prototype.getTargetSeriesModels = function() {
var seriesModels = [];
this.ecModel.eachSeries(function(seriesModel) {
if (isCoordSupported(seriesModel)) {
var axisMainType = getAxisMainType(this._dimName);
var axisModel = seriesModel.getReferringComponents(axisMainType, SINGLE_REFERRING).models[0];
if (axisModel && this._axisIndex === axisModel.componentIndex) {
seriesModels.push(seriesModel);
}
}
}, this);
return seriesModels;
};
AxisProxy2.prototype.getAxisModel = function() {
return this.ecModel.getComponent(this._dimName + "Axis", this._axisIndex);
};
AxisProxy2.prototype.getMinMaxSpan = function() {
return clone$4(this._minMaxSpan);
};
AxisProxy2.prototype.calculateDataWindow = function(opt) {
var dataExtent = this._dataExtent;
var axisModel = this.getAxisModel();
var scale2 = axisModel.axis.scale;
var rangePropMode = this._dataZoomModel.getRangePropMode();
var percentExtent = [0, 100];
var percentWindow = [];
var valueWindow = [];
var hasPropModeValue;
each$7(["start", "end"], function(prop, idx) {
var boundPercent = opt[prop];
var boundValue = opt[prop + "Value"];
if (rangePropMode[idx] === "percent") {
boundPercent == null && (boundPercent = percentExtent[idx]);
boundValue = scale2.parse(linearMap$2(boundPercent, percentExtent, dataExtent));
} else {
hasPropModeValue = true;
boundValue = boundValue == null ? dataExtent[idx] : scale2.parse(boundValue);
boundPercent = linearMap$2(boundValue, dataExtent, percentExtent);
}
valueWindow[idx] = boundValue == null || isNaN(boundValue) ? dataExtent[idx] : boundValue;
percentWindow[idx] = boundPercent == null || isNaN(boundPercent) ? percentExtent[idx] : boundPercent;
});
asc$1(valueWindow);
asc$1(percentWindow);
var spans = this._minMaxSpan;
hasPropModeValue ? restrictSet(valueWindow, percentWindow, dataExtent, percentExtent, false) : restrictSet(percentWindow, valueWindow, percentExtent, dataExtent, true);
function restrictSet(fromWindow, toWindow, fromExtent, toExtent, toValue) {
var suffix = toValue ? "Span" : "ValueSpan";
sliderMove(0, fromWindow, fromExtent, "all", spans["min" + suffix], spans["max" + suffix]);
for (var i = 0; i < 2; i++) {
toWindow[i] = linearMap$2(fromWindow[i], fromExtent, toExtent, true);
toValue && (toWindow[i] = scale2.parse(toWindow[i]));
}
}
return {
valueWindow,
percentWindow
};
};
AxisProxy2.prototype.reset = function(dataZoomModel) {
if (dataZoomModel !== this._dataZoomModel) {
return;
}
var targetSeries = this.getTargetSeriesModels();
this._dataExtent = calculateDataExtent(this, this._dimName, targetSeries);
this._updateMinMaxSpan();
var dataWindow = this.calculateDataWindow(dataZoomModel.settledOption);
this._valueWindow = dataWindow.valueWindow;
this._percentWindow = dataWindow.percentWindow;
this._setAxisModel();
};
AxisProxy2.prototype.filterData = function(dataZoomModel, api) {
if (dataZoomModel !== this._dataZoomModel) {
return;
}
var axisDim = this._dimName;
var seriesModels = this.getTargetSeriesModels();
var filterMode = dataZoomModel.get("filterMode");
var valueWindow = this._valueWindow;
if (filterMode === "none") {
return;
}
each$7(seriesModels, function(seriesModel) {
var seriesData = seriesModel.getData();
var dataDims = seriesData.mapDimensionsAll(axisDim);
if (!dataDims.length) {
return;
}
if (filterMode === "weakFilter") {
var store_1 = seriesData.getStore();
var dataDimIndices_1 = map$1(dataDims, function(dim) {
return seriesData.getDimensionIndex(dim);
}, seriesData);
seriesData.filterSelf(function(dataIndex) {
var leftOut;
var rightOut;
var hasValue2;
for (var i = 0; i < dataDims.length; i++) {
var value = store_1.get(dataDimIndices_1[i], dataIndex);
var thisHasValue = !isNaN(value);
var thisLeftOut = value < valueWindow[0];
var thisRightOut = value > valueWindow[1];
if (thisHasValue && !thisLeftOut && !thisRightOut) {
return true;
}
thisHasValue && (hasValue2 = true);
thisLeftOut && (leftOut = true);
thisRightOut && (rightOut = true);
}
return hasValue2 && leftOut && rightOut;
});
} else {
each$7(dataDims, function(dim) {
if (filterMode === "empty") {
seriesModel.setData(seriesData = seriesData.map(dim, function(value) {
return !isInWindow(value) ? NaN : value;
}));
} else {
var range3 = {};
range3[dim] = valueWindow;
seriesData.selectRange(range3);
}
});
}
each$7(dataDims, function(dim) {
seriesData.setApproximateExtent(valueWindow, dim);
});
});
function isInWindow(value) {
return value >= valueWindow[0] && value <= valueWindow[1];
}
};
AxisProxy2.prototype._updateMinMaxSpan = function() {
var minMaxSpan = this._minMaxSpan = {};
var dataZoomModel = this._dataZoomModel;
var dataExtent = this._dataExtent;
each$7(["min", "max"], function(minMax) {
var percentSpan = dataZoomModel.get(minMax + "Span");
var valueSpan = dataZoomModel.get(minMax + "ValueSpan");
valueSpan != null && (valueSpan = this.getAxisModel().axis.scale.parse(valueSpan));
if (valueSpan != null) {
percentSpan = linearMap$2(dataExtent[0] + valueSpan, dataExtent, [0, 100], true);
} else if (percentSpan != null) {
valueSpan = linearMap$2(percentSpan, [0, 100], dataExtent, true) - dataExtent[0];
}
minMaxSpan[minMax + "Span"] = percentSpan;
minMaxSpan[minMax + "ValueSpan"] = valueSpan;
}, this);
};
AxisProxy2.prototype._setAxisModel = function() {
var axisModel = this.getAxisModel();
var percentWindow = this._percentWindow;
var valueWindow = this._valueWindow;
if (!percentWindow) {
return;
}
var precision = getPixelPrecision(valueWindow, [0, 500]);
precision = Math.min(precision, 20);
var rawExtentInfo = axisModel.axis.scale.rawExtentInfo;
if (percentWindow[0] !== 0) {
rawExtentInfo.setDeterminedMinMax("min", +valueWindow[0].toFixed(precision));
}
if (percentWindow[1] !== 100) {
rawExtentInfo.setDeterminedMinMax("max", +valueWindow[1].toFixed(precision));
}
rawExtentInfo.freeze();
};
return AxisProxy2;
}()
);
function calculateDataExtent(axisProxy, axisDim, seriesModels) {
var dataExtent = [Infinity, -Infinity];
each$7(seriesModels, function(seriesModel) {
unionAxisExtentFromData(dataExtent, seriesModel.getData(), axisDim);
});
var axisModel = axisProxy.getAxisModel();
var rawExtentResult = ensureScaleRawExtentInfo(axisModel.axis.scale, axisModel, dataExtent).calculate();
return [rawExtentResult.min, rawExtentResult.max];
}
var dataZoomProcessor = {
// `dataZoomProcessor` will only be performed in needed series. Consider if
// there is a line series and a pie series, it is better not to update the
// line series if only pie series is needed to be updated.
getTargetSeries: function(ecModel) {
function eachAxisModel(cb2) {
ecModel.eachComponent("dataZoom", function(dataZoomModel) {
dataZoomModel.eachTargetAxis(function(axisDim, axisIndex) {
var axisModel = ecModel.getComponent(getAxisMainType(axisDim), axisIndex);
cb2(axisDim, axisIndex, axisModel, dataZoomModel);
});
});
}
eachAxisModel(function(axisDim, axisIndex, axisModel, dataZoomModel) {
axisModel.__dzAxisProxy = null;
});
var proxyList = [];
eachAxisModel(function(axisDim, axisIndex, axisModel, dataZoomModel) {
if (!axisModel.__dzAxisProxy) {
axisModel.__dzAxisProxy = new AxisProxy(axisDim, axisIndex, dataZoomModel, ecModel);
proxyList.push(axisModel.__dzAxisProxy);
}
});
var seriesModelMap = createHashMap();
each$f(proxyList, function(axisProxy) {
each$f(axisProxy.getTargetSeriesModels(), function(seriesModel) {
seriesModelMap.set(seriesModel.uid, seriesModel);
});
});
return seriesModelMap;
},
// Consider appendData, where filter should be performed. Because data process is
// in block mode currently, it is not need to worry about that the overallProgress
// execute every frame.
overallReset: function(ecModel, api) {
ecModel.eachComponent("dataZoom", function(dataZoomModel) {
dataZoomModel.eachTargetAxis(function(axisDim, axisIndex) {
dataZoomModel.getAxisProxy(axisDim, axisIndex).reset(dataZoomModel);
});
dataZoomModel.eachTargetAxis(function(axisDim, axisIndex) {
dataZoomModel.getAxisProxy(axisDim, axisIndex).filterData(dataZoomModel, api);
});
});
ecModel.eachComponent("dataZoom", function(dataZoomModel) {
var axisProxy = dataZoomModel.findRepresentativeAxisProxy();
if (axisProxy) {
var percentRange = axisProxy.getDataPercentWindow();
var valueRange = axisProxy.getDataValueWindow();
dataZoomModel.setCalculatedRange({
start: percentRange[0],
end: percentRange[1],
startValue: valueRange[0],
endValue: valueRange[1]
});
}
});
}
};
function installDataZoomAction(registers) {
registers.registerAction("dataZoom", function(payload, ecModel) {
var effectedModels = findEffectedDataZooms(ecModel, payload);
each$f(effectedModels, function(dataZoomModel) {
dataZoomModel.setRawRange({
start: payload.start,
end: payload.end,
startValue: payload.startValue,
endValue: payload.endValue
});
});
});
}
var installed$1 = false;
function installCommon$1(registers) {
if (installed$1) {
return;
}
installed$1 = true;
registers.registerProcessor(registers.PRIORITY.PROCESSOR.FILTER, dataZoomProcessor);
installDataZoomAction(registers);
registers.registerSubTypeDefaulter("dataZoom", function() {
return "slider";
});
}
function install$k(registers) {
registers.registerComponentModel(SelectDataZoomModel);
registers.registerComponentView(SelectDataZoomView);
installCommon$1(registers);
}
var ToolboxFeature = (
/** @class */
/* @__PURE__ */ function() {
function ToolboxFeature2() {
}
return ToolboxFeature2;
}()
);
var features = {};
function registerFeature(name, ctor) {
features[name] = ctor;
}
function getFeature(name) {
return features[name];
}
var ToolboxModel = (
/** @class */
function(_super) {
__extends(ToolboxModel2, _super);
function ToolboxModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = ToolboxModel2.type;
return _this;
}
ToolboxModel2.prototype.optionUpdated = function() {
_super.prototype.optionUpdated.apply(this, arguments);
var ecModel = this.ecModel;
each$f(this.option.feature, function(featureOpt, featureName) {
var Feature = getFeature(featureName);
if (Feature) {
if (Feature.getDefaultOption) {
Feature.defaultOption = Feature.getDefaultOption(ecModel);
}
merge(featureOpt, Feature.defaultOption);
}
});
};
ToolboxModel2.type = "toolbox";
ToolboxModel2.layoutMode = {
type: "box",
ignoreSize: true
};
ToolboxModel2.defaultOption = {
show: true,
z: 6,
// zlevel: 0,
orient: "horizontal",
left: "right",
top: "top",
// right
// bottom
backgroundColor: "transparent",
borderColor: "#ccc",
borderRadius: 0,
borderWidth: 0,
padding: 5,
itemSize: 15,
itemGap: 8,
showTitle: true,
iconStyle: {
borderColor: "#666",
color: "none"
},
emphasis: {
iconStyle: {
borderColor: "#3E98C5"
}
},
// textStyle: {},
// feature
tooltip: {
show: false,
position: "bottom"
}
};
return ToolboxModel2;
}(ComponentModel)
);
function layout(group, componentModel, api) {
var boxLayoutParams = componentModel.getBoxLayoutParams();
var padding = componentModel.get("padding");
var viewportSize = {
width: api.getWidth(),
height: api.getHeight()
};
var rect = getLayoutRect(boxLayoutParams, viewportSize, padding);
box(componentModel.get("orient"), group, componentModel.get("itemGap"), rect.width, rect.height);
positionElement(group, boxLayoutParams, viewportSize, padding);
}
function makeBackground(rect, componentModel) {
var padding = normalizeCssArray(componentModel.get("padding"));
var style2 = componentModel.getItemStyle(["color", "opacity"]);
style2.fill = componentModel.get("backgroundColor");
rect = new Rect$2({
shape: {
x: rect.x - padding[3],
y: rect.y - padding[0],
width: rect.width + padding[1] + padding[3],
height: rect.height + padding[0] + padding[2],
r: componentModel.get("borderRadius")
},
style: style2,
silent: true,
z2: -1
});
return rect;
}
var ToolboxView = (
/** @class */
function(_super) {
__extends(ToolboxView2, _super);
function ToolboxView2() {
return _super !== null && _super.apply(this, arguments) || this;
}
ToolboxView2.prototype.render = function(toolboxModel, ecModel, api, payload) {
var group = this.group;
group.removeAll();
if (!toolboxModel.get("show")) {
return;
}
var itemSize = +toolboxModel.get("itemSize");
var isVertical = toolboxModel.get("orient") === "vertical";
var featureOpts = toolboxModel.get("feature") || {};
var features2 = this._features || (this._features = {});
var featureNames = [];
each$f(featureOpts, function(opt, name) {
featureNames.push(name);
});
new DataDiffer(this._featureNames || [], featureNames).add(processFeature).update(processFeature).remove(curry$1(processFeature, null)).execute();
this._featureNames = featureNames;
function processFeature(newIndex, oldIndex) {
var featureName = featureNames[newIndex];
var oldName = featureNames[oldIndex];
var featureOpt = featureOpts[featureName];
var featureModel = new Model(featureOpt, toolboxModel, toolboxModel.ecModel);
var feature;
if (payload && payload.newTitle != null && payload.featureName === featureName) {
featureOpt.title = payload.newTitle;
}
if (featureName && !oldName) {
if (isUserFeatureName(featureName)) {
feature = {
onclick: featureModel.option.onclick,
featureName
};
} else {
var Feature = getFeature(featureName);
if (!Feature) {
return;
}
feature = new Feature();
}
features2[featureName] = feature;
} else {
feature = features2[oldName];
if (!feature) {
return;
}
}
feature.uid = getUID("toolbox-feature");
feature.model = featureModel;
feature.ecModel = ecModel;
feature.api = api;
var isToolboxFeature = feature instanceof ToolboxFeature;
if (!featureName && oldName) {
isToolboxFeature && feature.dispose && feature.dispose(ecModel, api);
return;
}
if (!featureModel.get("show") || isToolboxFeature && feature.unusable) {
isToolboxFeature && feature.remove && feature.remove(ecModel, api);
return;
}
createIconPaths(featureModel, feature, featureName);
featureModel.setIconStatus = function(iconName, status) {
var option = this.option;
var iconPaths = this.iconPaths;
option.iconStatus = option.iconStatus || {};
option.iconStatus[iconName] = status;
if (iconPaths[iconName]) {
(status === "emphasis" ? enterEmphasis : leaveEmphasis)(iconPaths[iconName]);
}
};
if (feature instanceof ToolboxFeature) {
if (feature.render) {
feature.render(featureModel, ecModel, api, payload);
}
}
}
function createIconPaths(featureModel, feature, featureName) {
var iconStyleModel = featureModel.getModel("iconStyle");
var iconStyleEmphasisModel = featureModel.getModel(["emphasis", "iconStyle"]);
var icons = feature instanceof ToolboxFeature && feature.getIcons ? feature.getIcons() : featureModel.get("icon");
var titles = featureModel.get("title") || {};
var iconsMap;
var titlesMap;
if (isString$1(icons)) {
iconsMap = {};
iconsMap[featureName] = icons;
} else {
iconsMap = icons;
}
if (isString$1(titles)) {
titlesMap = {};
titlesMap[featureName] = titles;
} else {
titlesMap = titles;
}
var iconPaths = featureModel.iconPaths = {};
each$f(iconsMap, function(iconStr, iconName) {
var path = createIcon(iconStr, {}, {
x: -itemSize / 2,
y: -itemSize / 2,
width: itemSize,
height: itemSize
});
path.setStyle(iconStyleModel.getItemStyle());
var pathEmphasisState = path.ensureState("emphasis");
pathEmphasisState.style = iconStyleEmphasisModel.getItemStyle();
var textContent = new ZRText({
style: {
text: titlesMap[iconName],
align: iconStyleEmphasisModel.get("textAlign"),
borderRadius: iconStyleEmphasisModel.get("textBorderRadius"),
padding: iconStyleEmphasisModel.get("textPadding"),
fill: null,
font: getFont({
fontStyle: iconStyleEmphasisModel.get("textFontStyle"),
fontFamily: iconStyleEmphasisModel.get("textFontFamily"),
fontSize: iconStyleEmphasisModel.get("textFontSize"),
fontWeight: iconStyleEmphasisModel.get("textFontWeight")
}, ecModel)
},
ignore: true
});
path.setTextContent(textContent);
setTooltipConfig({
el: path,
componentModel: toolboxModel,
itemName: iconName,
formatterParamsExtra: {
title: titlesMap[iconName]
}
});
path.__title = titlesMap[iconName];
path.on("mouseover", function() {
var hoverStyle = iconStyleEmphasisModel.getItemStyle();
var defaultTextPosition = isVertical ? toolboxModel.get("right") == null && toolboxModel.get("left") !== "right" ? "right" : "left" : toolboxModel.get("bottom") == null && toolboxModel.get("top") !== "bottom" ? "bottom" : "top";
textContent.setStyle({
fill: iconStyleEmphasisModel.get("textFill") || hoverStyle.fill || hoverStyle.stroke || "#000",
backgroundColor: iconStyleEmphasisModel.get("textBackgroundColor")
});
path.setTextConfig({
position: iconStyleEmphasisModel.get("textPosition") || defaultTextPosition
});
textContent.ignore = !toolboxModel.get("showTitle");
api.enterEmphasis(this);
}).on("mouseout", function() {
if (featureModel.get(["iconStatus", iconName]) !== "emphasis") {
api.leaveEmphasis(this);
}
textContent.hide();
});
(featureModel.get(["iconStatus", iconName]) === "emphasis" ? enterEmphasis : leaveEmphasis)(path);
group.add(path);
path.on("click", bind$2(feature.onclick, feature, ecModel, api, iconName));
iconPaths[iconName] = path;
});
}
layout(group, toolboxModel, api);
group.add(makeBackground(group.getBoundingRect(), toolboxModel));
isVertical || group.eachChild(function(icon) {
var titleText = icon.__title;
var emphasisState = icon.ensureState("emphasis");
var emphasisTextConfig = emphasisState.textConfig || (emphasisState.textConfig = {});
var textContent = icon.getTextContent();
var emphasisTextState = textContent && textContent.ensureState("emphasis");
if (emphasisTextState && !isFunction$1(emphasisTextState) && titleText) {
var emphasisTextStyle = emphasisTextState.style || (emphasisTextState.style = {});
var rect = getBoundingRect(titleText, ZRText.makeFont(emphasisTextStyle));
var offsetX = icon.x + group.x;
var offsetY = icon.y + group.y + itemSize;
var needPutOnTop = false;
if (offsetY + rect.height > api.getHeight()) {
emphasisTextConfig.position = "top";
needPutOnTop = true;
}
var topOffset = needPutOnTop ? -5 - rect.height : itemSize + 10;
if (offsetX + rect.width / 2 > api.getWidth()) {
emphasisTextConfig.position = ["100%", topOffset];
emphasisTextStyle.align = "right";
} else if (offsetX - rect.width / 2 < 0) {
emphasisTextConfig.position = [0, topOffset];
emphasisTextStyle.align = "left";
}
}
});
};
ToolboxView2.prototype.updateView = function(toolboxModel, ecModel, api, payload) {
each$f(this._features, function(feature) {
feature instanceof ToolboxFeature && feature.updateView && feature.updateView(feature.model, ecModel, api, payload);
});
};
ToolboxView2.prototype.remove = function(ecModel, api) {
each$f(this._features, function(feature) {
feature instanceof ToolboxFeature && feature.remove && feature.remove(ecModel, api);
});
this.group.removeAll();
};
ToolboxView2.prototype.dispose = function(ecModel, api) {
each$f(this._features, function(feature) {
feature instanceof ToolboxFeature && feature.dispose && feature.dispose(ecModel, api);
});
};
ToolboxView2.type = "toolbox";
return ToolboxView2;
}(ComponentView)
);
function isUserFeatureName(featureName) {
return featureName.indexOf("my") === 0;
}
var SaveAsImage = (
/** @class */
function(_super) {
__extends(SaveAsImage2, _super);
function SaveAsImage2() {
return _super !== null && _super.apply(this, arguments) || this;
}
SaveAsImage2.prototype.onclick = function(ecModel, api) {
var model = this.model;
var title = model.get("name") || ecModel.get("title.0.text") || "echarts";
var isSvg = api.getZr().painter.getType() === "svg";
var type4 = isSvg ? "svg" : model.get("type", true) || "png";
var url2 = api.getConnectedDataURL({
type: type4,
backgroundColor: model.get("backgroundColor", true) || ecModel.get("backgroundColor") || "#fff",
connectedBackgroundColor: model.get("connectedBackgroundColor"),
excludeComponents: model.get("excludeComponents"),
pixelRatio: model.get("pixelRatio")
});
var browser = env.browser;
if (typeof MouseEvent === "function" && (browser.newEdge || !browser.ie && !browser.edge)) {
var $a = document.createElement("a");
$a.download = title + "." + type4;
$a.target = "_blank";
$a.href = url2;
var evt = new MouseEvent("click", {
// some micro front-end framework, window maybe is a Proxy
view: document.defaultView,
bubbles: true,
cancelable: false
});
$a.dispatchEvent(evt);
} else {
if (window.navigator.msSaveOrOpenBlob || isSvg) {
var parts = url2.split(",");
var base64Encoded = parts[0].indexOf("base64") > -1;
var bstr = isSvg ? decodeURIComponent(parts[1]) : parts[1];
base64Encoded && (bstr = window.atob(bstr));
var filename = title + "." + type4;
if (window.navigator.msSaveOrOpenBlob) {
var n2 = bstr.length;
var u8arr = new Uint8Array(n2);
while (n2--) {
u8arr[n2] = bstr.charCodeAt(n2);
}
var blob = new Blob([u8arr]);
window.navigator.msSaveOrOpenBlob(blob, filename);
} else {
var frame = document.createElement("iframe");
document.body.appendChild(frame);
var cw = frame.contentWindow;
var doc = cw.document;
doc.open("image/svg+xml", "replace");
doc.write(bstr);
doc.close();
cw.focus();
doc.execCommand("SaveAs", true, filename);
document.body.removeChild(frame);
}
} else {
var lang = model.get("lang");
var html = '<body style="margin:0;"><img src="' + url2 + '" style="max-width:100%;" title="' + (lang && lang[0] || "") + '" /></body>';
var tab = window.open();
tab.document.write(html);
tab.document.title = title;
}
}
};
SaveAsImage2.getDefaultOption = function(ecModel) {
var defaultOption2 = {
show: true,
icon: "M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0",
title: ecModel.getLocaleModel().get(["toolbox", "saveAsImage", "title"]),
type: "png",
// Default use option.backgroundColor
// backgroundColor: '#fff',
connectedBackgroundColor: "#fff",
name: "",
excludeComponents: ["toolbox"],
// use current pixel ratio of device by default
// pixelRatio: 1,
lang: ecModel.getLocaleModel().get(["toolbox", "saveAsImage", "lang"])
};
return defaultOption2;
};
return SaveAsImage2;
}(ToolboxFeature)
);
var INNER_STACK_KEYWORD = "__ec_magicType_stack__";
var radioTypes = [["line", "bar"], ["stack"]];
var MagicType = (
/** @class */
function(_super) {
__extends(MagicType2, _super);
function MagicType2() {
return _super !== null && _super.apply(this, arguments) || this;
}
MagicType2.prototype.getIcons = function() {
var model = this.model;
var availableIcons = model.get("icon");
var icons = {};
each$f(model.get("type"), function(type4) {
if (availableIcons[type4]) {
icons[type4] = availableIcons[type4];
}
});
return icons;
};
MagicType2.getDefaultOption = function(ecModel) {
var defaultOption2 = {
show: true,
type: [],
// Icon group
icon: {
line: "M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4",
bar: "M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7",
// eslint-disable-next-line
stack: "M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z"
// jshint ignore:line
},
// `line`, `bar`, `stack`, `tiled`
title: ecModel.getLocaleModel().get(["toolbox", "magicType", "title"]),
option: {},
seriesIndex: {}
};
return defaultOption2;
};
MagicType2.prototype.onclick = function(ecModel, api, type4) {
var model = this.model;
var seriesIndex = model.get(["seriesIndex", type4]);
if (!seriesOptGenreator[type4]) {
return;
}
var newOption = {
series: []
};
var generateNewSeriesTypes = function(seriesModel) {
var seriesType2 = seriesModel.subType;
var seriesId = seriesModel.id;
var newSeriesOpt = seriesOptGenreator[type4](seriesType2, seriesId, seriesModel, model);
if (newSeriesOpt) {
defaults(newSeriesOpt, seriesModel.option);
newOption.series.push(newSeriesOpt);
}
var coordSys = seriesModel.coordinateSystem;
if (coordSys && coordSys.type === "cartesian2d" && (type4 === "line" || type4 === "bar")) {
var categoryAxis2 = coordSys.getAxesByScale("ordinal")[0];
if (categoryAxis2) {
var axisDim = categoryAxis2.dim;
var axisType = axisDim + "Axis";
var axisModel = seriesModel.getReferringComponents(axisType, SINGLE_REFERRING).models[0];
var axisIndex = axisModel.componentIndex;
newOption[axisType] = newOption[axisType] || [];
for (var i = 0; i <= axisIndex; i++) {
newOption[axisType][axisIndex] = newOption[axisType][axisIndex] || {};
}
newOption[axisType][axisIndex].boundaryGap = type4 === "bar";
}
}
};
each$f(radioTypes, function(radio) {
if (indexOf(radio, type4) >= 0) {
each$f(radio, function(item) {
model.setIconStatus(item, "normal");
});
}
});
model.setIconStatus(type4, "emphasis");
ecModel.eachComponent({
mainType: "series",
query: seriesIndex == null ? null : {
seriesIndex
}
}, generateNewSeriesTypes);
var newTitle;
var currentType = type4;
if (type4 === "stack") {
newTitle = merge({
stack: model.option.title.tiled,
tiled: model.option.title.stack
}, model.option.title);
if (model.get(["iconStatus", type4]) !== "emphasis") {
currentType = "tiled";
}
}
api.dispatchAction({
type: "changeMagicType",
currentType,
newOption,
newTitle,
featureName: "magicType"
});
};
return MagicType2;
}(ToolboxFeature)
);
var seriesOptGenreator = {
"line": function(seriesType2, seriesId, seriesModel, model) {
if (seriesType2 === "bar") {
return merge({
id: seriesId,
type: "line",
// Preserve data related option
data: seriesModel.get("data"),
stack: seriesModel.get("stack"),
markPoint: seriesModel.get("markPoint"),
markLine: seriesModel.get("markLine")
}, model.get(["option", "line"]) || {}, true);
}
},
"bar": function(seriesType2, seriesId, seriesModel, model) {
if (seriesType2 === "line") {
return merge({
id: seriesId,
type: "bar",
// Preserve data related option
data: seriesModel.get("data"),
stack: seriesModel.get("stack"),
markPoint: seriesModel.get("markPoint"),
markLine: seriesModel.get("markLine")
}, model.get(["option", "bar"]) || {}, true);
}
},
"stack": function(seriesType2, seriesId, seriesModel, model) {
var isStack = seriesModel.get("stack") === INNER_STACK_KEYWORD;
if (seriesType2 === "line" || seriesType2 === "bar") {
model.setIconStatus("stack", isStack ? "normal" : "emphasis");
return merge({
id: seriesId,
stack: isStack ? "" : INNER_STACK_KEYWORD
}, model.get(["option", "stack"]) || {}, true);
}
}
};
registerAction({
type: "changeMagicType",
event: "magicTypeChanged",
update: "prepareAndUpdate"
}, function(payload, ecModel) {
ecModel.mergeOption(payload.newOption);
});
var BLOCK_SPLITER = new Array(60).join("-");
var ITEM_SPLITER = " ";
function groupSeries(ecModel) {
var seriesGroupByCategoryAxis = {};
var otherSeries = [];
var meta = [];
ecModel.eachRawSeries(function(seriesModel) {
var coordSys = seriesModel.coordinateSystem;
if (coordSys && (coordSys.type === "cartesian2d" || coordSys.type === "polar")) {
var baseAxis = coordSys.getBaseAxis();
if (baseAxis.type === "category") {
var key = baseAxis.dim + "_" + baseAxis.index;
if (!seriesGroupByCategoryAxis[key]) {
seriesGroupByCategoryAxis[key] = {
categoryAxis: baseAxis,
valueAxis: coordSys.getOtherAxis(baseAxis),
series: []
};
meta.push({
axisDim: baseAxis.dim,
axisIndex: baseAxis.index
});
}
seriesGroupByCategoryAxis[key].series.push(seriesModel);
} else {
otherSeries.push(seriesModel);
}
} else {
otherSeries.push(seriesModel);
}
});
return {
seriesGroupByCategoryAxis,
other: otherSeries,
meta
};
}
function assembleSeriesWithCategoryAxis(groups) {
var tables = [];
each$f(groups, function(group, key) {
var categoryAxis2 = group.categoryAxis;
var valueAxis2 = group.valueAxis;
var valueAxisDim = valueAxis2.dim;
var headers = [" "].concat(map$1(group.series, function(series) {
return series.name;
}));
var columns = [categoryAxis2.model.getCategories()];
each$f(group.series, function(series) {
var rawData = series.getRawData();
columns.push(series.getRawData().mapArray(rawData.mapDimension(valueAxisDim), function(val) {
return val;
}));
});
var lines = [headers.join(ITEM_SPLITER)];
for (var i = 0; i < columns[0].length; i++) {
var items = [];
for (var j = 0; j < columns.length; j++) {
items.push(columns[j][i]);
}
lines.push(items.join(ITEM_SPLITER));
}
tables.push(lines.join("\n"));
});
return tables.join("\n\n" + BLOCK_SPLITER + "\n\n");
}
function assembleOtherSeries(series) {
return map$1(series, function(series2) {
var data = series2.getRawData();
var lines = [series2.name];
var vals = [];
data.each(data.dimensions, function() {
var argLen = arguments.length;
var dataIndex = arguments[argLen - 1];
var name = data.getName(dataIndex);
for (var i = 0; i < argLen - 1; i++) {
vals[i] = arguments[i];
}
lines.push((name ? name + ITEM_SPLITER : "") + vals.join(ITEM_SPLITER));
});
return lines.join("\n");
}).join("\n\n" + BLOCK_SPLITER + "\n\n");
}
function getContentFromModel(ecModel) {
var result = groupSeries(ecModel);
return {
value: filter([assembleSeriesWithCategoryAxis(result.seriesGroupByCategoryAxis), assembleOtherSeries(result.other)], function(str) {
return !!str.replace(/[\n\t\s]/g, "");
}).join("\n\n" + BLOCK_SPLITER + "\n\n"),
meta: result.meta
};
}
function trim(str) {
return str.replace(/^\s\s*/, "").replace(/\s\s*$/, "");
}
function isTSVFormat(block) {
var firstLine = block.slice(0, block.indexOf("\n"));
if (firstLine.indexOf(ITEM_SPLITER) >= 0) {
return true;
}
}
var itemSplitRegex = new RegExp("[" + ITEM_SPLITER + "]+", "g");
function parseTSVContents(tsv) {
var tsvLines = tsv.split(/\n+/g);
var headers = trim(tsvLines.shift()).split(itemSplitRegex);
var categories = [];
var series = map$1(headers, function(header) {
return {
name: header,
data: []
};
});
for (var i = 0; i < tsvLines.length; i++) {
var items = trim(tsvLines[i]).split(itemSplitRegex);
categories.push(items.shift());
for (var j = 0; j < items.length; j++) {
series[j] && (series[j].data[i] = items[j]);
}
}
return {
series,
categories
};
}
function parseListContents(str) {
var lines = str.split(/\n+/g);
var seriesName = trim(lines.shift());
var data = [];
for (var i = 0; i < lines.length; i++) {
var line2 = trim(lines[i]);
if (!line2) {
continue;
}
var items = line2.split(itemSplitRegex);
var name_1 = "";
var value = void 0;
var hasName = false;
if (isNaN(items[0])) {
hasName = true;
name_1 = items[0];
items = items.slice(1);
data[i] = {
name: name_1,
value: []
};
value = data[i].value;
} else {
value = data[i] = [];
}
for (var j = 0; j < items.length; j++) {
value.push(+items[j]);
}
if (value.length === 1) {
hasName ? data[i].value = value[0] : data[i] = value[0];
}
}
return {
name: seriesName,
data
};
}
function parseContents(str, blockMetaList) {
var blocks = str.split(new RegExp("\n*" + BLOCK_SPLITER + "\n*", "g"));
var newOption = {
series: []
};
each$f(blocks, function(block, idx) {
if (isTSVFormat(block)) {
var result = parseTSVContents(block);
var blockMeta = blockMetaList[idx];
var axisKey = blockMeta.axisDim + "Axis";
if (blockMeta) {
newOption[axisKey] = newOption[axisKey] || [];
newOption[axisKey][blockMeta.axisIndex] = {
data: result.categories
};
newOption.series = newOption.series.concat(result.series);
}
} else {
var result = parseListContents(block);
newOption.series.push(result);
}
});
return newOption;
}
var DataView = (
/** @class */
function(_super) {
__extends(DataView2, _super);
function DataView2() {
return _super !== null && _super.apply(this, arguments) || this;
}
DataView2.prototype.onclick = function(ecModel, api) {
setTimeout(function() {
api.dispatchAction({
type: "hideTip"
});
});
var container = api.getDom();
var model = this.model;
if (this._dom) {
container.removeChild(this._dom);
}
var root = document.createElement("div");
root.style.cssText = "position:absolute;top:0;bottom:0;left:0;right:0;padding:5px";
root.style.backgroundColor = model.get("backgroundColor") || "#fff";
var header = document.createElement("h4");
var lang = model.get("lang") || [];
header.innerHTML = lang[0] || model.get("title");
header.style.cssText = "margin:10px 20px";
header.style.color = model.get("textColor");
var viewMain = document.createElement("div");
var textarea = document.createElement("textarea");
viewMain.style.cssText = "overflow:auto";
var optionToContent = model.get("optionToContent");
var contentToOption = model.get("contentToOption");
var result = getContentFromModel(ecModel);
if (isFunction$1(optionToContent)) {
var htmlOrDom = optionToContent(api.getOption());
if (isString$1(htmlOrDom)) {
viewMain.innerHTML = htmlOrDom;
} else if (isDom(htmlOrDom)) {
viewMain.appendChild(htmlOrDom);
}
} else {
textarea.readOnly = model.get("readOnly");
var style2 = textarea.style;
style2.cssText = "display:block;width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;resize:none;box-sizing:border-box;outline:none";
style2.color = model.get("textColor");
style2.borderColor = model.get("textareaBorderColor");
style2.backgroundColor = model.get("textareaColor");
textarea.value = result.value;
viewMain.appendChild(textarea);
}
var blockMetaList = result.meta;
var buttonContainer = document.createElement("div");
buttonContainer.style.cssText = "position:absolute;bottom:5px;left:0;right:0";
var buttonStyle = "float:right;margin-right:20px;border:none;cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px";
var closeButton = document.createElement("div");
var refreshButton = document.createElement("div");
buttonStyle += ";background-color:" + model.get("buttonColor");
buttonStyle += ";color:" + model.get("buttonTextColor");
var self2 = this;
function close() {
container.removeChild(root);
self2._dom = null;
}
addEventListener(closeButton, "click", close);
addEventListener(refreshButton, "click", function() {
if (contentToOption == null && optionToContent != null || contentToOption != null && optionToContent == null) {
close();
return;
}
var newOption;
try {
if (isFunction$1(contentToOption)) {
newOption = contentToOption(viewMain, api.getOption());
} else {
newOption = parseContents(textarea.value, blockMetaList);
}
} catch (e2) {
close();
throw new Error("Data view format error " + e2);
}
if (newOption) {
api.dispatchAction({
type: "changeDataView",
newOption
});
}
close();
});
closeButton.innerHTML = lang[1];
refreshButton.innerHTML = lang[2];
refreshButton.style.cssText = closeButton.style.cssText = buttonStyle;
!model.get("readOnly") && buttonContainer.appendChild(refreshButton);
buttonContainer.appendChild(closeButton);
root.appendChild(header);
root.appendChild(viewMain);
root.appendChild(buttonContainer);
viewMain.style.height = container.clientHeight - 80 + "px";
container.appendChild(root);
this._dom = root;
};
DataView2.prototype.remove = function(ecModel, api) {
this._dom && api.getDom().removeChild(this._dom);
};
DataView2.prototype.dispose = function(ecModel, api) {
this.remove(ecModel, api);
};
DataView2.getDefaultOption = function(ecModel) {
var defaultOption2 = {
show: true,
readOnly: false,
optionToContent: null,
contentToOption: null,
// eslint-disable-next-line
icon: "M17.5,17.3H33 M17.5,17.3H33 M45.4,29.5h-28 M11.5,2v56H51V14.8L38.4,2H11.5z M38.4,2.2v12.7H51 M45.4,41.7h-28",
title: ecModel.getLocaleModel().get(["toolbox", "dataView", "title"]),
lang: ecModel.getLocaleModel().get(["toolbox", "dataView", "lang"]),
backgroundColor: "#fff",
textColor: "#000",
textareaColor: "#fff",
textareaBorderColor: "#333",
buttonColor: "#c23531",
buttonTextColor: "#fff"
};
return defaultOption2;
};
return DataView2;
}(ToolboxFeature)
);
function tryMergeDataOption(newData, originalData) {
return map$1(newData, function(newVal, idx) {
var original = originalData && originalData[idx];
if (isObject$3(original) && !isArray$1(original)) {
var newValIsObject = isObject$3(newVal) && !isArray$1(newVal);
if (!newValIsObject) {
newVal = {
value: newVal
};
}
var shouldDeleteName = original.name != null && newVal.name == null;
newVal = defaults(newVal, original);
shouldDeleteName && delete newVal.name;
return newVal;
} else {
return newVal;
}
});
}
registerAction({
type: "changeDataView",
event: "dataViewChanged",
update: "prepareAndUpdate"
}, function(payload, ecModel) {
var newSeriesOptList = [];
each$f(payload.newOption.series, function(seriesOpt) {
var seriesModel = ecModel.getSeriesByName(seriesOpt.name)[0];
if (!seriesModel) {
newSeriesOptList.push(extend({
// Default is scatter
type: "scatter"
}, seriesOpt));
} else {
var originalData = seriesModel.get("data");
newSeriesOptList.push({
name: seriesOpt.name,
data: tryMergeDataOption(seriesOpt.data, originalData)
});
}
});
ecModel.mergeOption(defaults({
series: newSeriesOptList
}, payload.newOption));
});
var each$6 = each$f;
var inner$6 = makeInner();
function push(ecModel, newSnapshot) {
var storedSnapshots = getStoreSnapshots(ecModel);
each$6(newSnapshot, function(batchItem, dataZoomId) {
var i = storedSnapshots.length - 1;
for (; i >= 0; i--) {
var snapshot = storedSnapshots[i];
if (snapshot[dataZoomId]) {
break;
}
}
if (i < 0) {
var dataZoomModel = ecModel.queryComponents({
mainType: "dataZoom",
subType: "select",
id: dataZoomId
})[0];
if (dataZoomModel) {
var percentRange = dataZoomModel.getPercentRange();
storedSnapshots[0][dataZoomId] = {
dataZoomId,
start: percentRange[0],
end: percentRange[1]
};
}
}
});
storedSnapshots.push(newSnapshot);
}
function pop(ecModel) {
var storedSnapshots = getStoreSnapshots(ecModel);
var head = storedSnapshots[storedSnapshots.length - 1];
storedSnapshots.length > 1 && storedSnapshots.pop();
var snapshot = {};
each$6(head, function(batchItem, dataZoomId) {
for (var i = storedSnapshots.length - 1; i >= 0; i--) {
batchItem = storedSnapshots[i][dataZoomId];
if (batchItem) {
snapshot[dataZoomId] = batchItem;
break;
}
}
});
return snapshot;
}
function clear$1(ecModel) {
inner$6(ecModel).snapshots = null;
}
function count(ecModel) {
return getStoreSnapshots(ecModel).length;
}
function getStoreSnapshots(ecModel) {
var store = inner$6(ecModel);
if (!store.snapshots) {
store.snapshots = [{}];
}
return store.snapshots;
}
var RestoreOption = (
/** @class */
function(_super) {
__extends(RestoreOption2, _super);
function RestoreOption2() {
return _super !== null && _super.apply(this, arguments) || this;
}
RestoreOption2.prototype.onclick = function(ecModel, api) {
clear$1(ecModel);
api.dispatchAction({
type: "restore",
from: this.uid
});
};
RestoreOption2.getDefaultOption = function(ecModel) {
var defaultOption2 = {
show: true,
// eslint-disable-next-line
icon: "M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5",
title: ecModel.getLocaleModel().get(["toolbox", "restore", "title"])
};
return defaultOption2;
};
return RestoreOption2;
}(ToolboxFeature)
);
registerAction({
type: "restore",
event: "restore",
update: "prepareAndUpdate"
}, function(payload, ecModel) {
ecModel.resetOption("recreate");
});
var INCLUDE_FINDER_MAIN_TYPES = ["grid", "xAxis", "yAxis", "geo", "graph", "polar", "radiusAxis", "angleAxis", "bmap"];
var BrushTargetManager = (
/** @class */
function() {
function BrushTargetManager2(finder, ecModel, opt) {
var _this = this;
this._targetInfoList = [];
var foundCpts = parseFinder(ecModel, finder);
each$f(targetInfoBuilders, function(builder, type4) {
if (!opt || !opt.include || indexOf(opt.include, type4) >= 0) {
builder(foundCpts, _this._targetInfoList);
}
});
}
BrushTargetManager2.prototype.setOutputRanges = function(areas, ecModel) {
this.matchOutputRanges(areas, ecModel, function(area, coordRange, coordSys) {
(area.coordRanges || (area.coordRanges = [])).push(coordRange);
if (!area.coordRange) {
area.coordRange = coordRange;
var result = coordConvert[area.brushType](0, coordSys, coordRange);
area.__rangeOffset = {
offset: diffProcessor[area.brushType](result.values, area.range, [1, 1]),
xyMinMax: result.xyMinMax
};
}
});
return areas;
};
BrushTargetManager2.prototype.matchOutputRanges = function(areas, ecModel, cb2) {
each$f(areas, function(area) {
var targetInfo = this.findTargetInfo(area, ecModel);
if (targetInfo && targetInfo !== true) {
each$f(targetInfo.coordSyses, function(coordSys) {
var result = coordConvert[area.brushType](1, coordSys, area.range, true);
cb2(area, result.values, coordSys, ecModel);
});
}
}, this);
};
BrushTargetManager2.prototype.setInputRanges = function(areas, ecModel) {
each$f(areas, function(area) {
var targetInfo = this.findTargetInfo(area, ecModel);
area.range = area.range || [];
if (targetInfo && targetInfo !== true) {
area.panelId = targetInfo.panelId;
var result = coordConvert[area.brushType](0, targetInfo.coordSys, area.coordRange);
var rangeOffset = area.__rangeOffset;
area.range = rangeOffset ? diffProcessor[area.brushType](result.values, rangeOffset.offset, getScales(result.xyMinMax, rangeOffset.xyMinMax)) : result.values;
}
}, this);
};
BrushTargetManager2.prototype.makePanelOpts = function(api, getDefaultBrushType) {
return map$1(this._targetInfoList, function(targetInfo) {
var rect = targetInfo.getPanelRect();
return {
panelId: targetInfo.panelId,
defaultBrushType: getDefaultBrushType ? getDefaultBrushType(targetInfo) : null,
clipPath: makeRectPanelClipPath(rect),
isTargetByCursor: makeRectIsTargetByCursor(rect, api, targetInfo.coordSysModel),
getLinearBrushOtherExtent: makeLinearBrushOtherExtent(rect)
};
});
};
BrushTargetManager2.prototype.controlSeries = function(area, seriesModel, ecModel) {
var targetInfo = this.findTargetInfo(area, ecModel);
return targetInfo === true || targetInfo && indexOf(targetInfo.coordSyses, seriesModel.coordinateSystem) >= 0;
};
BrushTargetManager2.prototype.findTargetInfo = function(area, ecModel) {
var targetInfoList = this._targetInfoList;
var foundCpts = parseFinder(ecModel, area);
for (var i = 0; i < targetInfoList.length; i++) {
var targetInfo = targetInfoList[i];
var areaPanelId = area.panelId;
if (areaPanelId) {
if (targetInfo.panelId === areaPanelId) {
return targetInfo;
}
} else {
for (var j = 0; j < targetInfoMatchers.length; j++) {
if (targetInfoMatchers[j](foundCpts, targetInfo)) {
return targetInfo;
}
}
}
}
return true;
};
return BrushTargetManager2;
}()
);
function formatMinMax(minMax) {
minMax[0] > minMax[1] && minMax.reverse();
return minMax;
}
function parseFinder(ecModel, finder) {
return parseFinder$1(ecModel, finder, {
includeMainTypes: INCLUDE_FINDER_MAIN_TYPES
});
}
var targetInfoBuilders = {
grid: function(foundCpts, targetInfoList) {
var xAxisModels = foundCpts.xAxisModels;
var yAxisModels = foundCpts.yAxisModels;
var gridModels = foundCpts.gridModels;
var gridModelMap = createHashMap();
var xAxesHas = {};
var yAxesHas = {};
if (!xAxisModels && !yAxisModels && !gridModels) {
return;
}
each$f(xAxisModels, function(axisModel) {
var gridModel = axisModel.axis.grid.model;
gridModelMap.set(gridModel.id, gridModel);
xAxesHas[gridModel.id] = true;
});
each$f(yAxisModels, function(axisModel) {
var gridModel = axisModel.axis.grid.model;
gridModelMap.set(gridModel.id, gridModel);
yAxesHas[gridModel.id] = true;
});
each$f(gridModels, function(gridModel) {
gridModelMap.set(gridModel.id, gridModel);
xAxesHas[gridModel.id] = true;
yAxesHas[gridModel.id] = true;
});
gridModelMap.each(function(gridModel) {
var grid = gridModel.coordinateSystem;
var cartesians = [];
each$f(grid.getCartesians(), function(cartesian, index2) {
if (indexOf(xAxisModels, cartesian.getAxis("x").model) >= 0 || indexOf(yAxisModels, cartesian.getAxis("y").model) >= 0) {
cartesians.push(cartesian);
}
});
targetInfoList.push({
panelId: "grid--" + gridModel.id,
gridModel,
coordSysModel: gridModel,
// Use the first one as the representitive coordSys.
coordSys: cartesians[0],
coordSyses: cartesians,
getPanelRect: panelRectBuilders.grid,
xAxisDeclared: xAxesHas[gridModel.id],
yAxisDeclared: yAxesHas[gridModel.id]
});
});
},
geo: function(foundCpts, targetInfoList) {
each$f(foundCpts.geoModels, function(geoModel) {
var coordSys = geoModel.coordinateSystem;
targetInfoList.push({
panelId: "geo--" + geoModel.id,
geoModel,
coordSysModel: geoModel,
coordSys,
coordSyses: [coordSys],
getPanelRect: panelRectBuilders.geo
});
});
}
};
var targetInfoMatchers = [
// grid
function(foundCpts, targetInfo) {
var xAxisModel = foundCpts.xAxisModel;
var yAxisModel = foundCpts.yAxisModel;
var gridModel = foundCpts.gridModel;
!gridModel && xAxisModel && (gridModel = xAxisModel.axis.grid.model);
!gridModel && yAxisModel && (gridModel = yAxisModel.axis.grid.model);
return gridModel && gridModel === targetInfo.gridModel;
},
// geo
function(foundCpts, targetInfo) {
var geoModel = foundCpts.geoModel;
return geoModel && geoModel === targetInfo.geoModel;
}
];
var panelRectBuilders = {
grid: function() {
return this.coordSys.master.getRect().clone();
},
geo: function() {
var coordSys = this.coordSys;
var rect = coordSys.getBoundingRect().clone();
rect.applyTransform(getTransform$1(coordSys));
return rect;
}
};
var coordConvert = {
lineX: curry$1(axisConvert, 0),
lineY: curry$1(axisConvert, 1),
rect: function(to, coordSys, rangeOrCoordRange, clamp2) {
var xminymin = to ? coordSys.pointToData([rangeOrCoordRange[0][0], rangeOrCoordRange[1][0]], clamp2) : coordSys.dataToPoint([rangeOrCoordRange[0][0], rangeOrCoordRange[1][0]], clamp2);
var xmaxymax = to ? coordSys.pointToData([rangeOrCoordRange[0][1], rangeOrCoordRange[1][1]], clamp2) : coordSys.dataToPoint([rangeOrCoordRange[0][1], rangeOrCoordRange[1][1]], clamp2);
var values = [formatMinMax([xminymin[0], xmaxymax[0]]), formatMinMax([xminymin[1], xmaxymax[1]])];
return {
values,
xyMinMax: values
};
},
polygon: function(to, coordSys, rangeOrCoordRange, clamp2) {
var xyMinMax = [[Infinity, -Infinity], [Infinity, -Infinity]];
var values = map$1(rangeOrCoordRange, function(item) {
var p2 = to ? coordSys.pointToData(item, clamp2) : coordSys.dataToPoint(item, clamp2);
xyMinMax[0][0] = Math.min(xyMinMax[0][0], p2[0]);
xyMinMax[1][0] = Math.min(xyMinMax[1][0], p2[1]);
xyMinMax[0][1] = Math.max(xyMinMax[0][1], p2[0]);
xyMinMax[1][1] = Math.max(xyMinMax[1][1], p2[1]);
return p2;
});
return {
values,
xyMinMax
};
}
};
function axisConvert(axisNameIndex, to, coordSys, rangeOrCoordRange) {
var axis = coordSys.getAxis(["x", "y"][axisNameIndex]);
var values = formatMinMax(map$1([0, 1], function(i) {
return to ? axis.coordToData(axis.toLocalCoord(rangeOrCoordRange[i]), true) : axis.toGlobalCoord(axis.dataToCoord(rangeOrCoordRange[i]));
}));
var xyMinMax = [];
xyMinMax[axisNameIndex] = values;
xyMinMax[1 - axisNameIndex] = [NaN, NaN];
return {
values,
xyMinMax
};
}
var diffProcessor = {
lineX: curry$1(axisDiffProcessor, 0),
lineY: curry$1(axisDiffProcessor, 1),
rect: function(values, refer, scales) {
return [[values[0][0] - scales[0] * refer[0][0], values[0][1] - scales[0] * refer[0][1]], [values[1][0] - scales[1] * refer[1][0], values[1][1] - scales[1] * refer[1][1]]];
},
polygon: function(values, refer, scales) {
return map$1(values, function(item, idx) {
return [item[0] - scales[0] * refer[idx][0], item[1] - scales[1] * refer[idx][1]];
});
}
};
function axisDiffProcessor(axisNameIndex, values, refer, scales) {
return [values[0] - scales[axisNameIndex] * refer[0], values[1] - scales[axisNameIndex] * refer[1]];
}
function getScales(xyMinMaxCurr, xyMinMaxOrigin) {
var sizeCurr = getSize(xyMinMaxCurr);
var sizeOrigin = getSize(xyMinMaxOrigin);
var scales = [sizeCurr[0] / sizeOrigin[0], sizeCurr[1] / sizeOrigin[1]];
isNaN(scales[0]) && (scales[0] = 1);
isNaN(scales[1]) && (scales[1] = 1);
return scales;
}
function getSize(xyMinMax) {
return xyMinMax ? [xyMinMax[0][1] - xyMinMax[0][0], xyMinMax[1][1] - xyMinMax[1][0]] : [NaN, NaN];
}
var each$5 = each$f;
var DATA_ZOOM_ID_BASE = makeInternalComponentId("toolbox-dataZoom_");
var DataZoomFeature = (
/** @class */
function(_super) {
__extends(DataZoomFeature2, _super);
function DataZoomFeature2() {
return _super !== null && _super.apply(this, arguments) || this;
}
DataZoomFeature2.prototype.render = function(featureModel, ecModel, api, payload) {
if (!this._brushController) {
this._brushController = new BrushController(api.getZr());
this._brushController.on("brush", bind$2(this._onBrush, this)).mount();
}
updateZoomBtnStatus(featureModel, ecModel, this, payload, api);
updateBackBtnStatus(featureModel, ecModel);
};
DataZoomFeature2.prototype.onclick = function(ecModel, api, type4) {
handlers[type4].call(this);
};
DataZoomFeature2.prototype.remove = function(ecModel, api) {
this._brushController && this._brushController.unmount();
};
DataZoomFeature2.prototype.dispose = function(ecModel, api) {
this._brushController && this._brushController.dispose();
};
DataZoomFeature2.prototype._onBrush = function(eventParam) {
var areas = eventParam.areas;
if (!eventParam.isEnd || !areas.length) {
return;
}
var snapshot = {};
var ecModel = this.ecModel;
this._brushController.updateCovers([]);
var brushTargetManager = new BrushTargetManager(makeAxisFinder(this.model), ecModel, {
include: ["grid"]
});
brushTargetManager.matchOutputRanges(areas, ecModel, function(area, coordRange, coordSys) {
if (coordSys.type !== "cartesian2d") {
return;
}
var brushType = area.brushType;
if (brushType === "rect") {
setBatch("x", coordSys, coordRange[0]);
setBatch("y", coordSys, coordRange[1]);
} else {
setBatch({
lineX: "x",
lineY: "y"
}[brushType], coordSys, coordRange);
}
});
push(ecModel, snapshot);
this._dispatchZoomAction(snapshot);
function setBatch(dimName, coordSys, minMax) {
var axis = coordSys.getAxis(dimName);
var axisModel = axis.model;
var dataZoomModel = findDataZoom(dimName, axisModel, ecModel);
var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy(axisModel).getMinMaxSpan();
if (minMaxSpan.minValueSpan != null || minMaxSpan.maxValueSpan != null) {
minMax = sliderMove(0, minMax.slice(), axis.scale.getExtent(), 0, minMaxSpan.minValueSpan, minMaxSpan.maxValueSpan);
}
dataZoomModel && (snapshot[dataZoomModel.id] = {
dataZoomId: dataZoomModel.id,
startValue: minMax[0],
endValue: minMax[1]
});
}
function findDataZoom(dimName, axisModel, ecModel2) {
var found;
ecModel2.eachComponent({
mainType: "dataZoom",
subType: "select"
}, function(dzModel) {
var has2 = dzModel.getAxisModel(dimName, axisModel.componentIndex);
has2 && (found = dzModel);
});
return found;
}
};
DataZoomFeature2.prototype._dispatchZoomAction = function(snapshot) {
var batch = [];
each$5(snapshot, function(batchItem, dataZoomId) {
batch.push(clone$4(batchItem));
});
batch.length && this.api.dispatchAction({
type: "dataZoom",
from: this.uid,
batch
});
};
DataZoomFeature2.getDefaultOption = function(ecModel) {
var defaultOption2 = {
show: true,
filterMode: "filter",
// Icon group
icon: {
zoom: "M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1",
back: "M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26"
},
// `zoom`, `back`
title: ecModel.getLocaleModel().get(["toolbox", "dataZoom", "title"]),
brushStyle: {
borderWidth: 0,
color: "rgba(210,219,238,0.2)"
}
};
return defaultOption2;
};
return DataZoomFeature2;
}(ToolboxFeature)
);
var handlers = {
zoom: function() {
var nextActive = !this._isZoomActive;
this.api.dispatchAction({
type: "takeGlobalCursor",
key: "dataZoomSelect",
dataZoomSelectActive: nextActive
});
},
back: function() {
this._dispatchZoomAction(pop(this.ecModel));
}
};
function makeAxisFinder(dzFeatureModel) {
var setting = {
xAxisIndex: dzFeatureModel.get("xAxisIndex", true),
yAxisIndex: dzFeatureModel.get("yAxisIndex", true),
xAxisId: dzFeatureModel.get("xAxisId", true),
yAxisId: dzFeatureModel.get("yAxisId", true)
};
if (setting.xAxisIndex == null && setting.xAxisId == null) {
setting.xAxisIndex = "all";
}
if (setting.yAxisIndex == null && setting.yAxisId == null) {
setting.yAxisIndex = "all";
}
return setting;
}
function updateBackBtnStatus(featureModel, ecModel) {
featureModel.setIconStatus("back", count(ecModel) > 1 ? "emphasis" : "normal");
}
function updateZoomBtnStatus(featureModel, ecModel, view, payload, api) {
var zoomActive = view._isZoomActive;
if (payload && payload.type === "takeGlobalCursor") {
zoomActive = payload.key === "dataZoomSelect" ? payload.dataZoomSelectActive : false;
}
view._isZoomActive = zoomActive;
featureModel.setIconStatus("zoom", zoomActive ? "emphasis" : "normal");
var brushTargetManager = new BrushTargetManager(makeAxisFinder(featureModel), ecModel, {
include: ["grid"]
});
var panels = brushTargetManager.makePanelOpts(api, function(targetInfo) {
return targetInfo.xAxisDeclared && !targetInfo.yAxisDeclared ? "lineX" : !targetInfo.xAxisDeclared && targetInfo.yAxisDeclared ? "lineY" : "rect";
});
view._brushController.setPanels(panels).enableBrush(zoomActive && panels.length ? {
brushType: "auto",
brushStyle: featureModel.getModel("brushStyle").getItemStyle()
} : false);
}
registerInternalOptionCreator("dataZoom", function(ecModel) {
var toolboxModel = ecModel.getComponent("toolbox", 0);
var featureDataZoomPath = ["feature", "dataZoom"];
if (!toolboxModel || toolboxModel.get(featureDataZoomPath) == null) {
return;
}
var dzFeatureModel = toolboxModel.getModel(featureDataZoomPath);
var dzOptions = [];
var finder = makeAxisFinder(dzFeatureModel);
var finderResult = parseFinder$1(ecModel, finder);
each$5(finderResult.xAxisModels, function(axisModel) {
return buildInternalOptions(axisModel, "xAxis", "xAxisIndex");
});
each$5(finderResult.yAxisModels, function(axisModel) {
return buildInternalOptions(axisModel, "yAxis", "yAxisIndex");
});
function buildInternalOptions(axisModel, axisMainType, axisIndexPropName) {
var axisIndex = axisModel.componentIndex;
var newOpt = {
type: "select",
$fromToolbox: true,
// Default to be filter
filterMode: dzFeatureModel.get("filterMode", true) || "filter",
// Id for merge mapping.
id: DATA_ZOOM_ID_BASE + axisMainType + axisIndex
};
newOpt[axisIndexPropName] = axisIndex;
dzOptions.push(newOpt);
}
return dzOptions;
});
function install$j(registers) {
registers.registerComponentModel(ToolboxModel);
registers.registerComponentView(ToolboxView);
registerFeature("saveAsImage", SaveAsImage);
registerFeature("magicType", MagicType);
registerFeature("dataView", DataView);
registerFeature("dataZoom", DataZoomFeature);
registerFeature("restore", RestoreOption);
use(install$k);
}
var TooltipModel = (
/** @class */
function(_super) {
__extends(TooltipModel2, _super);
function TooltipModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = TooltipModel2.type;
return _this;
}
TooltipModel2.type = "tooltip";
TooltipModel2.dependencies = ["axisPointer"];
TooltipModel2.defaultOption = {
// zlevel: 0,
z: 60,
show: true,
// tooltip main content
showContent: true,
// 'trigger' only works on coordinate system.
// 'item' | 'axis' | 'none'
trigger: "item",
// 'click' | 'mousemove' | 'none'
triggerOn: "mousemove|click",
alwaysShowContent: false,
displayMode: "single",
renderMode: "auto",
// whether restraint content inside viewRect.
// If renderMode: 'richText', default true.
// If renderMode: 'html', defaut false (for backward compat).
confine: null,
showDelay: 0,
hideDelay: 100,
// Animation transition time, unit is second
transitionDuration: 0.4,
enterable: false,
backgroundColor: "#fff",
// box shadow
shadowBlur: 10,
shadowColor: "rgba(0, 0, 0, .2)",
shadowOffsetX: 1,
shadowOffsetY: 2,
// tooltip border radius, unit is px, default is 4
borderRadius: 4,
// tooltip border width, unit is px, default is 0 (no border)
borderWidth: 1,
// Tooltip inside padding, default is 5 for all direction
// Array is allowed to set up, right, bottom, left, same with css
// The default value: See `tooltip/tooltipMarkup.ts#getPaddingFromTooltipModel`.
padding: null,
// Extra css text
extraCssText: "",
// axis indicator, trigger by axis
axisPointer: {
// default is line
// legal values: 'line' | 'shadow' | 'cross'
type: "line",
// Valid when type is line, appoint tooltip line locate on which line. Optional
// legal values: 'x' | 'y' | 'angle' | 'radius' | 'auto'
// default is 'auto', chose the axis which type is category.
// for multiply y axis, cartesian coord chose x axis, polar chose angle axis
axis: "auto",
animation: "auto",
animationDurationUpdate: 200,
animationEasingUpdate: "exponentialOut",
crossStyle: {
color: "#999",
width: 1,
type: "dashed",
// TODO formatter
textStyle: {}
}
// lineStyle and shadowStyle should not be specified here,
// otherwise it will always override those styles on option.axisPointer.
},
textStyle: {
color: "#666",
fontSize: 14
}
};
return TooltipModel2;
}(ComponentModel)
);
function shouldTooltipConfine(tooltipModel) {
var confineOption = tooltipModel.get("confine");
return confineOption != null ? !!confineOption : tooltipModel.get("renderMode") === "richText";
}
function testStyle(styleProps) {
if (!env.domSupported) {
return;
}
var style2 = document.documentElement.style;
for (var i = 0, len2 = styleProps.length; i < len2; i++) {
if (styleProps[i] in style2) {
return styleProps[i];
}
}
}
var TRANSFORM_VENDOR = testStyle(["transform", "webkitTransform", "OTransform", "MozTransform", "msTransform"]);
var TRANSITION_VENDOR = testStyle(["webkitTransition", "transition", "OTransition", "MozTransition", "msTransition"]);
function toCSSVendorPrefix(styleVendor, styleProp) {
if (!styleVendor) {
return styleProp;
}
styleProp = toCamelCase(styleProp, true);
var idx = styleVendor.indexOf(styleProp);
styleVendor = idx === -1 ? styleProp : "-" + styleVendor.slice(0, idx) + "-" + styleProp;
return styleVendor.toLowerCase();
}
function getComputedStyle$1(el2, style2) {
var stl = el2.currentStyle || document.defaultView && document.defaultView.getComputedStyle(el2);
return stl ? stl[style2] : null;
}
var CSS_TRANSITION_VENDOR = toCSSVendorPrefix(TRANSITION_VENDOR, "transition");
var CSS_TRANSFORM_VENDOR = toCSSVendorPrefix(TRANSFORM_VENDOR, "transform");
var gCssText = "position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;" + (env.transform3dSupported ? "will-change:transform;" : "");
function mirrorPos(pos) {
pos = pos === "left" ? "right" : pos === "right" ? "left" : pos === "top" ? "bottom" : "top";
return pos;
}
function assembleArrow(tooltipModel, borderColor, arrowPosition) {
if (!isString$1(arrowPosition) || arrowPosition === "inside") {
return "";
}
var backgroundColor2 = tooltipModel.get("backgroundColor");
var borderWidth2 = tooltipModel.get("borderWidth");
borderColor = convertToColorString(borderColor);
var arrowPos = mirrorPos(arrowPosition);
var arrowSize = Math.max(Math.round(borderWidth2) * 1.5, 6);
var positionStyle = "";
var transformStyle = CSS_TRANSFORM_VENDOR + ":";
var rotateDeg;
if (indexOf(["left", "right"], arrowPos) > -1) {
positionStyle += "top:50%";
transformStyle += "translateY(-50%) rotate(" + (rotateDeg = arrowPos === "left" ? -225 : -45) + "deg)";
} else {
positionStyle += "left:50%";
transformStyle += "translateX(-50%) rotate(" + (rotateDeg = arrowPos === "top" ? 225 : 45) + "deg)";
}
var rotateRadian = rotateDeg * Math.PI / 180;
var arrowWH = arrowSize + borderWidth2;
var rotatedWH = arrowWH * Math.abs(Math.cos(rotateRadian)) + arrowWH * Math.abs(Math.sin(rotateRadian));
var arrowOffset = Math.round(((rotatedWH - Math.SQRT2 * borderWidth2) / 2 + Math.SQRT2 * borderWidth2 - (rotatedWH - arrowWH) / 2) * 100) / 100;
positionStyle += ";" + arrowPos + ":-" + arrowOffset + "px";
var borderStyle = borderColor + " solid " + borderWidth2 + "px;";
var styleCss = ["position:absolute;width:" + arrowSize + "px;height:" + arrowSize + "px;z-index:-1;", positionStyle + ";" + transformStyle + ";", "border-bottom:" + borderStyle, "border-right:" + borderStyle, "background-color:" + backgroundColor2 + ";"];
return '<div style="' + styleCss.join("") + '"></div>';
}
function assembleTransition(duration, onlyFade) {
var transitionCurve = "cubic-bezier(0.23,1,0.32,1)";
var transitionOption = " " + duration / 2 + "s " + transitionCurve;
var transitionText = "opacity" + transitionOption + ",visibility" + transitionOption;
if (!onlyFade) {
transitionOption = " " + duration + "s " + transitionCurve;
transitionText += env.transformSupported ? "," + CSS_TRANSFORM_VENDOR + transitionOption : ",left" + transitionOption + ",top" + transitionOption;
}
return CSS_TRANSITION_VENDOR + ":" + transitionText;
}
function assembleTransform(x2, y2, toString2) {
var x0 = x2.toFixed(0) + "px";
var y0 = y2.toFixed(0) + "px";
if (!env.transformSupported) {
return toString2 ? "top:" + y0 + ";left:" + x0 + ";" : [["top", y0], ["left", x0]];
}
var is3d = env.transform3dSupported;
var translate2 = "translate" + (is3d ? "3d" : "") + "(" + x0 + "," + y0 + (is3d ? ",0" : "") + ")";
return toString2 ? "top:0;left:0;" + CSS_TRANSFORM_VENDOR + ":" + translate2 + ";" : [["top", 0], ["left", 0], [TRANSFORM_VENDOR, translate2]];
}
function assembleFont(textStyleModel) {
var cssText = [];
var fontSize = textStyleModel.get("fontSize");
var color2 = textStyleModel.getTextColor();
color2 && cssText.push("color:" + color2);
cssText.push("font:" + textStyleModel.getFont());
fontSize && cssText.push("line-height:" + Math.round(fontSize * 3 / 2) + "px");
var shadowColor = textStyleModel.get("textShadowColor");
var shadowBlur = textStyleModel.get("textShadowBlur") || 0;
var shadowOffsetX = textStyleModel.get("textShadowOffsetX") || 0;
var shadowOffsetY = textStyleModel.get("textShadowOffsetY") || 0;
shadowColor && shadowBlur && cssText.push("text-shadow:" + shadowOffsetX + "px " + shadowOffsetY + "px " + shadowBlur + "px " + shadowColor);
each$f(["decoration", "align"], function(name) {
var val = textStyleModel.get(name);
val && cssText.push("text-" + name + ":" + val);
});
return cssText.join(";");
}
function assembleCssText(tooltipModel, enableTransition, onlyFade) {
var cssText = [];
var transitionDuration = tooltipModel.get("transitionDuration");
var backgroundColor2 = tooltipModel.get("backgroundColor");
var shadowBlur = tooltipModel.get("shadowBlur");
var shadowColor = tooltipModel.get("shadowColor");
var shadowOffsetX = tooltipModel.get("shadowOffsetX");
var shadowOffsetY = tooltipModel.get("shadowOffsetY");
var textStyleModel = tooltipModel.getModel("textStyle");
var padding = getPaddingFromTooltipModel(tooltipModel, "html");
var boxShadow = shadowOffsetX + "px " + shadowOffsetY + "px " + shadowBlur + "px " + shadowColor;
cssText.push("box-shadow:" + boxShadow);
enableTransition && transitionDuration && cssText.push(assembleTransition(transitionDuration, onlyFade));
if (backgroundColor2) {
cssText.push("background-color:" + backgroundColor2);
}
each$f(["width", "color", "radius"], function(name) {
var borderName = "border-" + name;
var camelCase2 = toCamelCase(borderName);
var val = tooltipModel.get(camelCase2);
val != null && cssText.push(borderName + ":" + val + (name === "color" ? "" : "px"));
});
cssText.push(assembleFont(textStyleModel));
if (padding != null) {
cssText.push("padding:" + normalizeCssArray(padding).join("px ") + "px");
}
return cssText.join(";") + ";";
}
function makeStyleCoord$1(out2, zr, container, zrX, zrY) {
var zrPainter = zr && zr.painter;
if (container) {
var zrViewportRoot = zrPainter && zrPainter.getViewportRoot();
if (zrViewportRoot) {
transformLocalCoord(out2, zrViewportRoot, container, zrX, zrY);
}
} else {
out2[0] = zrX;
out2[1] = zrY;
var viewportRootOffset = zrPainter && zrPainter.getViewportRootOffset();
if (viewportRootOffset) {
out2[0] += viewportRootOffset.offsetLeft;
out2[1] += viewportRootOffset.offsetTop;
}
}
out2[2] = out2[0] / zr.getWidth();
out2[3] = out2[1] / zr.getHeight();
}
var TooltipHTMLContent = (
/** @class */
function() {
function TooltipHTMLContent2(api, opt) {
this._show = false;
this._styleCoord = [0, 0, 0, 0];
this._enterable = true;
this._alwaysShowContent = false;
this._firstShow = true;
this._longHide = true;
if (env.wxa) {
return null;
}
var el2 = document.createElement("div");
el2.domBelongToZr = true;
this.el = el2;
var zr = this._zr = api.getZr();
var appendTo = opt.appendTo;
var container = appendTo && (isString$1(appendTo) ? document.querySelector(appendTo) : isDom(appendTo) ? appendTo : isFunction$1(appendTo) && appendTo(api.getDom()));
makeStyleCoord$1(this._styleCoord, zr, container, api.getWidth() / 2, api.getHeight() / 2);
(container || api.getDom()).appendChild(el2);
this._api = api;
this._container = container;
var self2 = this;
el2.onmouseenter = function() {
if (self2._enterable) {
clearTimeout(self2._hideTimeout);
self2._show = true;
}
self2._inContent = true;
};
el2.onmousemove = function(e2) {
e2 = e2 || window.event;
if (!self2._enterable) {
var handler = zr.handler;
var zrViewportRoot = zr.painter.getViewportRoot();
normalizeEvent(zrViewportRoot, e2, true);
handler.dispatch("mousemove", e2);
}
};
el2.onmouseleave = function() {
self2._inContent = false;
if (self2._enterable) {
if (self2._show) {
self2.hideLater(self2._hideDelay);
}
}
};
}
TooltipHTMLContent2.prototype.update = function(tooltipModel) {
if (!this._container) {
var container = this._api.getDom();
var position2 = getComputedStyle$1(container, "position");
var domStyle = container.style;
if (domStyle.position !== "absolute" && position2 !== "absolute") {
domStyle.position = "relative";
}
}
var alwaysShowContent = tooltipModel.get("alwaysShowContent");
alwaysShowContent && this._moveIfResized();
this._alwaysShowContent = alwaysShowContent;
this.el.className = tooltipModel.get("className") || "";
};
TooltipHTMLContent2.prototype.show = function(tooltipModel, nearPointColor) {
clearTimeout(this._hideTimeout);
clearTimeout(this._longHideTimeout);
var el2 = this.el;
var style2 = el2.style;
var styleCoord = this._styleCoord;
if (!el2.innerHTML) {
style2.display = "none";
} else {
style2.cssText = gCssText + assembleCssText(tooltipModel, !this._firstShow, this._longHide) + assembleTransform(styleCoord[0], styleCoord[1], true) + ("border-color:" + convertToColorString(nearPointColor) + ";") + (tooltipModel.get("extraCssText") || "") + (";pointer-events:" + (this._enterable ? "auto" : "none"));
}
this._show = true;
this._firstShow = false;
this._longHide = false;
};
TooltipHTMLContent2.prototype.setContent = function(content, markers, tooltipModel, borderColor, arrowPosition) {
var el2 = this.el;
if (content == null) {
el2.innerHTML = "";
return;
}
var arrow = "";
if (isString$1(arrowPosition) && tooltipModel.get("trigger") === "item" && !shouldTooltipConfine(tooltipModel)) {
arrow = assembleArrow(tooltipModel, borderColor, arrowPosition);
}
if (isString$1(content)) {
el2.innerHTML = content + arrow;
} else if (content) {
el2.innerHTML = "";
if (!isArray$1(content)) {
content = [content];
}
for (var i = 0; i < content.length; i++) {
if (isDom(content[i]) && content[i].parentNode !== el2) {
el2.appendChild(content[i]);
}
}
if (arrow && el2.childNodes.length) {
var arrowEl = document.createElement("div");
arrowEl.innerHTML = arrow;
el2.appendChild(arrowEl);
}
}
};
TooltipHTMLContent2.prototype.setEnterable = function(enterable) {
this._enterable = enterable;
};
TooltipHTMLContent2.prototype.getSize = function() {
var el2 = this.el;
return [el2.offsetWidth, el2.offsetHeight];
};
TooltipHTMLContent2.prototype.moveTo = function(zrX, zrY) {
var styleCoord = this._styleCoord;
makeStyleCoord$1(styleCoord, this._zr, this._container, zrX, zrY);
if (styleCoord[0] != null && styleCoord[1] != null) {
var style_1 = this.el.style;
var transforms = assembleTransform(styleCoord[0], styleCoord[1]);
each$f(transforms, function(transform2) {
style_1[transform2[0]] = transform2[1];
});
}
};
TooltipHTMLContent2.prototype._moveIfResized = function() {
var ratioX = this._styleCoord[2];
var ratioY = this._styleCoord[3];
this.moveTo(ratioX * this._zr.getWidth(), ratioY * this._zr.getHeight());
};
TooltipHTMLContent2.prototype.hide = function() {
var _this = this;
var style2 = this.el.style;
style2.visibility = "hidden";
style2.opacity = "0";
env.transform3dSupported && (style2.willChange = "");
this._show = false;
this._longHideTimeout = setTimeout(function() {
return _this._longHide = true;
}, 500);
};
TooltipHTMLContent2.prototype.hideLater = function(time2) {
if (this._show && !(this._inContent && this._enterable) && !this._alwaysShowContent) {
if (time2) {
this._hideDelay = time2;
this._show = false;
this._hideTimeout = setTimeout(bind$2(this.hide, this), time2);
} else {
this.hide();
}
}
};
TooltipHTMLContent2.prototype.isShow = function() {
return this._show;
};
TooltipHTMLContent2.prototype.dispose = function() {
clearTimeout(this._hideTimeout);
clearTimeout(this._longHideTimeout);
var parentNode2 = this.el.parentNode;
parentNode2 && parentNode2.removeChild(this.el);
this.el = this._container = null;
};
return TooltipHTMLContent2;
}()
);
var TooltipRichContent = (
/** @class */
function() {
function TooltipRichContent2(api) {
this._show = false;
this._styleCoord = [0, 0, 0, 0];
this._alwaysShowContent = false;
this._enterable = true;
this._zr = api.getZr();
makeStyleCoord(this._styleCoord, this._zr, api.getWidth() / 2, api.getHeight() / 2);
}
TooltipRichContent2.prototype.update = function(tooltipModel) {
var alwaysShowContent = tooltipModel.get("alwaysShowContent");
alwaysShowContent && this._moveIfResized();
this._alwaysShowContent = alwaysShowContent;
};
TooltipRichContent2.prototype.show = function() {
if (this._hideTimeout) {
clearTimeout(this._hideTimeout);
}
this.el.show();
this._show = true;
};
TooltipRichContent2.prototype.setContent = function(content, markupStyleCreator, tooltipModel, borderColor, arrowPosition) {
var _this = this;
if (isObject$3(content)) {
throwError("");
}
if (this.el) {
this._zr.remove(this.el);
}
var textStyleModel = tooltipModel.getModel("textStyle");
this.el = new ZRText({
style: {
rich: markupStyleCreator.richTextStyles,
text: content,
lineHeight: 22,
borderWidth: 1,
borderColor,
textShadowColor: textStyleModel.get("textShadowColor"),
fill: tooltipModel.get(["textStyle", "color"]),
padding: getPaddingFromTooltipModel(tooltipModel, "richText"),
verticalAlign: "top",
align: "left"
},
z: tooltipModel.get("z")
});
each$f(["backgroundColor", "borderRadius", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY"], function(propName) {
_this.el.style[propName] = tooltipModel.get(propName);
});
each$f(["textShadowBlur", "textShadowOffsetX", "textShadowOffsetY"], function(propName) {
_this.el.style[propName] = textStyleModel.get(propName) || 0;
});
this._zr.add(this.el);
var self2 = this;
this.el.on("mouseover", function() {
if (self2._enterable) {
clearTimeout(self2._hideTimeout);
self2._show = true;
}
self2._inContent = true;
});
this.el.on("mouseout", function() {
if (self2._enterable) {
if (self2._show) {
self2.hideLater(self2._hideDelay);
}
}
self2._inContent = false;
});
};
TooltipRichContent2.prototype.setEnterable = function(enterable) {
this._enterable = enterable;
};
TooltipRichContent2.prototype.getSize = function() {
var el2 = this.el;
var bounding = this.el.getBoundingRect();
var shadowOuterSize = calcShadowOuterSize(el2.style);
return [bounding.width + shadowOuterSize.left + shadowOuterSize.right, bounding.height + shadowOuterSize.top + shadowOuterSize.bottom];
};
TooltipRichContent2.prototype.moveTo = function(x2, y2) {
var el2 = this.el;
if (el2) {
var styleCoord = this._styleCoord;
makeStyleCoord(styleCoord, this._zr, x2, y2);
x2 = styleCoord[0];
y2 = styleCoord[1];
var style2 = el2.style;
var borderWidth2 = mathMaxWith0(style2.borderWidth || 0);
var shadowOuterSize = calcShadowOuterSize(style2);
el2.x = x2 + borderWidth2 + shadowOuterSize.left;
el2.y = y2 + borderWidth2 + shadowOuterSize.top;
el2.markRedraw();
}
};
TooltipRichContent2.prototype._moveIfResized = function() {
var ratioX = this._styleCoord[2];
var ratioY = this._styleCoord[3];
this.moveTo(ratioX * this._zr.getWidth(), ratioY * this._zr.getHeight());
};
TooltipRichContent2.prototype.hide = function() {
if (this.el) {
this.el.hide();
}
this._show = false;
};
TooltipRichContent2.prototype.hideLater = function(time2) {
if (this._show && !(this._inContent && this._enterable) && !this._alwaysShowContent) {
if (time2) {
this._hideDelay = time2;
this._show = false;
this._hideTimeout = setTimeout(bind$2(this.hide, this), time2);
} else {
this.hide();
}
}
};
TooltipRichContent2.prototype.isShow = function() {
return this._show;
};
TooltipRichContent2.prototype.dispose = function() {
this._zr.remove(this.el);
};
return TooltipRichContent2;
}()
);
function mathMaxWith0(val) {
return Math.max(0, val);
}
function calcShadowOuterSize(style2) {
var shadowBlur = mathMaxWith0(style2.shadowBlur || 0);
var shadowOffsetX = mathMaxWith0(style2.shadowOffsetX || 0);
var shadowOffsetY = mathMaxWith0(style2.shadowOffsetY || 0);
return {
left: mathMaxWith0(shadowBlur - shadowOffsetX),
right: mathMaxWith0(shadowBlur + shadowOffsetX),
top: mathMaxWith0(shadowBlur - shadowOffsetY),
bottom: mathMaxWith0(shadowBlur + shadowOffsetY)
};
}
function makeStyleCoord(out2, zr, zrX, zrY) {
out2[0] = zrX;
out2[1] = zrY;
out2[2] = out2[0] / zr.getWidth();
out2[3] = out2[1] / zr.getHeight();
}
var proxyRect = new Rect$2({
shape: {
x: -1,
y: -1,
width: 2,
height: 2
}
});
var TooltipView = (
/** @class */
function(_super) {
__extends(TooltipView2, _super);
function TooltipView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = TooltipView2.type;
return _this;
}
TooltipView2.prototype.init = function(ecModel, api) {
if (env.node || !api.getDom()) {
return;
}
var tooltipModel = ecModel.getComponent("tooltip");
var renderMode = this._renderMode = getTooltipRenderMode(tooltipModel.get("renderMode"));
this._tooltipContent = renderMode === "richText" ? new TooltipRichContent(api) : new TooltipHTMLContent(api, {
appendTo: tooltipModel.get("appendToBody", true) ? "body" : tooltipModel.get("appendTo", true)
});
};
TooltipView2.prototype.render = function(tooltipModel, ecModel, api) {
if (env.node || !api.getDom()) {
return;
}
this.group.removeAll();
this._tooltipModel = tooltipModel;
this._ecModel = ecModel;
this._api = api;
var tooltipContent = this._tooltipContent;
tooltipContent.update(tooltipModel);
tooltipContent.setEnterable(tooltipModel.get("enterable"));
this._initGlobalListener();
this._keepShow();
if (this._renderMode !== "richText" && tooltipModel.get("transitionDuration")) {
createOrUpdate(this, "_updatePosition", 50, "fixRate");
} else {
clear$2(this, "_updatePosition");
}
};
TooltipView2.prototype._initGlobalListener = function() {
var tooltipModel = this._tooltipModel;
var triggerOn = tooltipModel.get("triggerOn");
register2("itemTooltip", this._api, bind$2(function(currTrigger, e2, dispatchAction2) {
if (triggerOn !== "none") {
if (triggerOn.indexOf(currTrigger) >= 0) {
this._tryShow(e2, dispatchAction2);
} else if (currTrigger === "leave") {
this._hide(dispatchAction2);
}
}
}, this));
};
TooltipView2.prototype._keepShow = function() {
var tooltipModel = this._tooltipModel;
var ecModel = this._ecModel;
var api = this._api;
var triggerOn = tooltipModel.get("triggerOn");
if (this._lastX != null && this._lastY != null && triggerOn !== "none" && triggerOn !== "click") {
var self_1 = this;
clearTimeout(this._refreshUpdateTimeout);
this._refreshUpdateTimeout = setTimeout(function() {
!api.isDisposed() && self_1.manuallyShowTip(tooltipModel, ecModel, api, {
x: self_1._lastX,
y: self_1._lastY,
dataByCoordSys: self_1._lastDataByCoordSys
});
});
}
};
TooltipView2.prototype.manuallyShowTip = function(tooltipModel, ecModel, api, payload) {
if (payload.from === this.uid || env.node || !api.getDom()) {
return;
}
var dispatchAction2 = makeDispatchAction(payload, api);
this._ticket = "";
var dataByCoordSys = payload.dataByCoordSys;
var cmptRef = findComponentReference(payload, ecModel, api);
if (cmptRef) {
var rect = cmptRef.el.getBoundingRect().clone();
rect.applyTransform(cmptRef.el.transform);
this._tryShow({
offsetX: rect.x + rect.width / 2,
offsetY: rect.y + rect.height / 2,
target: cmptRef.el,
position: payload.position,
// When manully trigger, the mouse is not on the el, so we'd better to
// position tooltip on the bottom of the el and display arrow is possible.
positionDefault: "bottom"
}, dispatchAction2);
} else if (payload.tooltip && payload.x != null && payload.y != null) {
var el2 = proxyRect;
el2.x = payload.x;
el2.y = payload.y;
el2.update();
getECData(el2).tooltipConfig = {
name: null,
option: payload.tooltip
};
this._tryShow({
offsetX: payload.x,
offsetY: payload.y,
target: el2
}, dispatchAction2);
} else if (dataByCoordSys) {
this._tryShow({
offsetX: payload.x,
offsetY: payload.y,
position: payload.position,
dataByCoordSys,
tooltipOption: payload.tooltipOption
}, dispatchAction2);
} else if (payload.seriesIndex != null) {
if (this._manuallyAxisShowTip(tooltipModel, ecModel, api, payload)) {
return;
}
var pointInfo = findPointFromSeries(payload, ecModel);
var cx = pointInfo.point[0];
var cy = pointInfo.point[1];
if (cx != null && cy != null) {
this._tryShow({
offsetX: cx,
offsetY: cy,
target: pointInfo.el,
position: payload.position,
// When manully trigger, the mouse is not on the el, so we'd better to
// position tooltip on the bottom of the el and display arrow is possible.
positionDefault: "bottom"
}, dispatchAction2);
}
} else if (payload.x != null && payload.y != null) {
api.dispatchAction({
type: "updateAxisPointer",
x: payload.x,
y: payload.y
});
this._tryShow({
offsetX: payload.x,
offsetY: payload.y,
position: payload.position,
target: api.getZr().findHover(payload.x, payload.y).target
}, dispatchAction2);
}
};
TooltipView2.prototype.manuallyHideTip = function(tooltipModel, ecModel, api, payload) {
var tooltipContent = this._tooltipContent;
if (this._tooltipModel) {
tooltipContent.hideLater(this._tooltipModel.get("hideDelay"));
}
this._lastX = this._lastY = this._lastDataByCoordSys = null;
if (payload.from !== this.uid) {
this._hide(makeDispatchAction(payload, api));
}
};
TooltipView2.prototype._manuallyAxisShowTip = function(tooltipModel, ecModel, api, payload) {
var seriesIndex = payload.seriesIndex;
var dataIndex = payload.dataIndex;
var coordSysAxesInfo = ecModel.getComponent("axisPointer").coordSysAxesInfo;
if (seriesIndex == null || dataIndex == null || coordSysAxesInfo == null) {
return;
}
var seriesModel = ecModel.getSeriesByIndex(seriesIndex);
if (!seriesModel) {
return;
}
var data = seriesModel.getData();
var tooltipCascadedModel = buildTooltipModel([data.getItemModel(dataIndex), seriesModel, (seriesModel.coordinateSystem || {}).model], this._tooltipModel);
if (tooltipCascadedModel.get("trigger") !== "axis") {
return;
}
api.dispatchAction({
type: "updateAxisPointer",
seriesIndex,
dataIndex,
position: payload.position
});
return true;
};
TooltipView2.prototype._tryShow = function(e2, dispatchAction2) {
var el2 = e2.target;
var tooltipModel = this._tooltipModel;
if (!tooltipModel) {
return;
}
this._lastX = e2.offsetX;
this._lastY = e2.offsetY;
var dataByCoordSys = e2.dataByCoordSys;
if (dataByCoordSys && dataByCoordSys.length) {
this._showAxisTooltip(dataByCoordSys, e2);
} else if (el2) {
var ecData = getECData(el2);
if (ecData.ssrType === "legend") {
return;
}
this._lastDataByCoordSys = null;
var seriesDispatcher_1;
var cmptDispatcher_1;
findEventDispatcher(el2, function(target) {
if (getECData(target).dataIndex != null) {
seriesDispatcher_1 = target;
return true;
}
if (getECData(target).tooltipConfig != null) {
cmptDispatcher_1 = target;
return true;
}
}, true);
if (seriesDispatcher_1) {
this._showSeriesItemTooltip(e2, seriesDispatcher_1, dispatchAction2);
} else if (cmptDispatcher_1) {
this._showComponentItemTooltip(e2, cmptDispatcher_1, dispatchAction2);
} else {
this._hide(dispatchAction2);
}
} else {
this._lastDataByCoordSys = null;
this._hide(dispatchAction2);
}
};
TooltipView2.prototype._showOrMove = function(tooltipModel, cb2) {
var delay = tooltipModel.get("showDelay");
cb2 = bind$2(cb2, this);
clearTimeout(this._showTimout);
delay > 0 ? this._showTimout = setTimeout(cb2, delay) : cb2();
};
TooltipView2.prototype._showAxisTooltip = function(dataByCoordSys, e2) {
var ecModel = this._ecModel;
var globalTooltipModel = this._tooltipModel;
var point = [e2.offsetX, e2.offsetY];
var singleTooltipModel = buildTooltipModel([e2.tooltipOption], globalTooltipModel);
var renderMode = this._renderMode;
var cbParamsList = [];
var articleMarkup = createTooltipMarkup("section", {
blocks: [],
noHeader: true
});
var markupTextArrLegacy = [];
var markupStyleCreator = new TooltipMarkupStyleCreator();
each$f(dataByCoordSys, function(itemCoordSys) {
each$f(itemCoordSys.dataByAxis, function(axisItem) {
var axisModel = ecModel.getComponent(axisItem.axisDim + "Axis", axisItem.axisIndex);
var axisValue = axisItem.value;
if (!axisModel || axisValue == null) {
return;
}
var axisValueLabel = getValueLabel(axisValue, axisModel.axis, ecModel, axisItem.seriesDataIndices, axisItem.valueLabelOpt);
var axisSectionMarkup = createTooltipMarkup("section", {
header: axisValueLabel,
noHeader: !trim$1(axisValueLabel),
sortBlocks: true,
blocks: []
});
articleMarkup.blocks.push(axisSectionMarkup);
each$f(axisItem.seriesDataIndices, function(idxItem) {
var series = ecModel.getSeriesByIndex(idxItem.seriesIndex);
var dataIndex = idxItem.dataIndexInside;
var cbParams = series.getDataParams(dataIndex);
if (cbParams.dataIndex < 0) {
return;
}
cbParams.axisDim = axisItem.axisDim;
cbParams.axisIndex = axisItem.axisIndex;
cbParams.axisType = axisItem.axisType;
cbParams.axisId = axisItem.axisId;
cbParams.axisValue = getAxisRawValue(axisModel.axis, {
value: axisValue
});
cbParams.axisValueLabel = axisValueLabel;
cbParams.marker = markupStyleCreator.makeTooltipMarker("item", convertToColorString(cbParams.color), renderMode);
var seriesTooltipResult = normalizeTooltipFormatResult(series.formatTooltip(dataIndex, true, null));
var frag = seriesTooltipResult.frag;
if (frag) {
var valueFormatter = buildTooltipModel([series], globalTooltipModel).get("valueFormatter");
axisSectionMarkup.blocks.push(valueFormatter ? extend({
valueFormatter
}, frag) : frag);
}
if (seriesTooltipResult.text) {
markupTextArrLegacy.push(seriesTooltipResult.text);
}
cbParamsList.push(cbParams);
});
});
});
articleMarkup.blocks.reverse();
markupTextArrLegacy.reverse();
var positionExpr = e2.position;
var orderMode = singleTooltipModel.get("order");
var builtMarkupText = buildTooltipMarkup(articleMarkup, markupStyleCreator, renderMode, orderMode, ecModel.get("useUTC"), singleTooltipModel.get("textStyle"));
builtMarkupText && markupTextArrLegacy.unshift(builtMarkupText);
var blockBreak = renderMode === "richText" ? "\n\n" : "<br/>";
var allMarkupText = markupTextArrLegacy.join(blockBreak);
this._showOrMove(singleTooltipModel, function() {
if (this._updateContentNotChangedOnAxis(dataByCoordSys, cbParamsList)) {
this._updatePosition(singleTooltipModel, positionExpr, point[0], point[1], this._tooltipContent, cbParamsList);
} else {
this._showTooltipContent(singleTooltipModel, allMarkupText, cbParamsList, Math.random() + "", point[0], point[1], positionExpr, null, markupStyleCreator);
}
});
};
TooltipView2.prototype._showSeriesItemTooltip = function(e2, dispatcher, dispatchAction2) {
var ecModel = this._ecModel;
var ecData = getECData(dispatcher);
var seriesIndex = ecData.seriesIndex;
var seriesModel = ecModel.getSeriesByIndex(seriesIndex);
var dataModel = ecData.dataModel || seriesModel;
var dataIndex = ecData.dataIndex;
var dataType = ecData.dataType;
var data = dataModel.getData(dataType);
var renderMode = this._renderMode;
var positionDefault = e2.positionDefault;
var tooltipModel = buildTooltipModel([data.getItemModel(dataIndex), dataModel, seriesModel && (seriesModel.coordinateSystem || {}).model], this._tooltipModel, positionDefault ? {
position: positionDefault
} : null);
var tooltipTrigger = tooltipModel.get("trigger");
if (tooltipTrigger != null && tooltipTrigger !== "item") {
return;
}
var params = dataModel.getDataParams(dataIndex, dataType);
var markupStyleCreator = new TooltipMarkupStyleCreator();
params.marker = markupStyleCreator.makeTooltipMarker("item", convertToColorString(params.color), renderMode);
var seriesTooltipResult = normalizeTooltipFormatResult(dataModel.formatTooltip(dataIndex, false, dataType));
var orderMode = tooltipModel.get("order");
var valueFormatter = tooltipModel.get("valueFormatter");
var frag = seriesTooltipResult.frag;
var markupText = frag ? buildTooltipMarkup(valueFormatter ? extend({
valueFormatter
}, frag) : frag, markupStyleCreator, renderMode, orderMode, ecModel.get("useUTC"), tooltipModel.get("textStyle")) : seriesTooltipResult.text;
var asyncTicket = "item_" + dataModel.name + "_" + dataIndex;
this._showOrMove(tooltipModel, function() {
this._showTooltipContent(tooltipModel, markupText, params, asyncTicket, e2.offsetX, e2.offsetY, e2.position, e2.target, markupStyleCreator);
});
dispatchAction2({
type: "showTip",
dataIndexInside: dataIndex,
dataIndex: data.getRawIndex(dataIndex),
seriesIndex,
from: this.uid
});
};
TooltipView2.prototype._showComponentItemTooltip = function(e2, el2, dispatchAction2) {
var isHTMLRenderMode = this._renderMode === "html";
var ecData = getECData(el2);
var tooltipConfig = ecData.tooltipConfig;
var tooltipOpt = tooltipConfig.option || {};
var encodeHTMLContent = tooltipOpt.encodeHTMLContent;
if (isString$1(tooltipOpt)) {
var content = tooltipOpt;
tooltipOpt = {
content,
// Fixed formatter
formatter: content
};
encodeHTMLContent = true;
}
if (encodeHTMLContent && isHTMLRenderMode && tooltipOpt.content) {
tooltipOpt = clone$4(tooltipOpt);
tooltipOpt.content = encodeHTML(tooltipOpt.content);
}
var tooltipModelCascade = [tooltipOpt];
var cmpt = this._ecModel.getComponent(ecData.componentMainType, ecData.componentIndex);
if (cmpt) {
tooltipModelCascade.push(cmpt);
}
tooltipModelCascade.push({
formatter: tooltipOpt.content
});
var positionDefault = e2.positionDefault;
var subTooltipModel = buildTooltipModel(tooltipModelCascade, this._tooltipModel, positionDefault ? {
position: positionDefault
} : null);
var defaultHtml = subTooltipModel.get("content");
var asyncTicket = Math.random() + "";
var markupStyleCreator = new TooltipMarkupStyleCreator();
this._showOrMove(subTooltipModel, function() {
var formatterParams = clone$4(subTooltipModel.get("formatterParams") || {});
this._showTooltipContent(subTooltipModel, defaultHtml, formatterParams, asyncTicket, e2.offsetX, e2.offsetY, e2.position, el2, markupStyleCreator);
});
dispatchAction2({
type: "showTip",
from: this.uid
});
};
TooltipView2.prototype._showTooltipContent = function(tooltipModel, defaultHtml, params, asyncTicket, x2, y2, positionExpr, el2, markupStyleCreator) {
this._ticket = "";
if (!tooltipModel.get("showContent") || !tooltipModel.get("show")) {
return;
}
var tooltipContent = this._tooltipContent;
tooltipContent.setEnterable(tooltipModel.get("enterable"));
var formatter = tooltipModel.get("formatter");
positionExpr = positionExpr || tooltipModel.get("position");
var html = defaultHtml;
var nearPoint = this._getNearestPoint([x2, y2], params, tooltipModel.get("trigger"), tooltipModel.get("borderColor"));
var nearPointColor = nearPoint.color;
if (formatter) {
if (isString$1(formatter)) {
var useUTC = tooltipModel.ecModel.get("useUTC");
var params0 = isArray$1(params) ? params[0] : params;
var isTimeAxis = params0 && params0.axisType && params0.axisType.indexOf("time") >= 0;
html = formatter;
if (isTimeAxis) {
html = format$1(params0.axisValue, html, useUTC);
}
html = formatTpl(html, params, true);
} else if (isFunction$1(formatter)) {
var callback = bind$2(function(cbTicket, html2) {
if (cbTicket === this._ticket) {
tooltipContent.setContent(html2, markupStyleCreator, tooltipModel, nearPointColor, positionExpr);
this._updatePosition(tooltipModel, positionExpr, x2, y2, tooltipContent, params, el2);
}
}, this);
this._ticket = asyncTicket;
html = formatter(params, asyncTicket, callback);
} else {
html = formatter;
}
}
tooltipContent.setContent(html, markupStyleCreator, tooltipModel, nearPointColor, positionExpr);
tooltipContent.show(tooltipModel, nearPointColor);
this._updatePosition(tooltipModel, positionExpr, x2, y2, tooltipContent, params, el2);
};
TooltipView2.prototype._getNearestPoint = function(point, tooltipDataParams, trigger2, borderColor) {
if (trigger2 === "axis" || isArray$1(tooltipDataParams)) {
return {
color: borderColor || (this._renderMode === "html" ? "#fff" : "none")
};
}
if (!isArray$1(tooltipDataParams)) {
return {
color: borderColor || tooltipDataParams.color || tooltipDataParams.borderColor
};
}
};
TooltipView2.prototype._updatePosition = function(tooltipModel, positionExpr, x2, y2, content, params, el2) {
var viewWidth = this._api.getWidth();
var viewHeight = this._api.getHeight();
positionExpr = positionExpr || tooltipModel.get("position");
var contentSize = content.getSize();
var align = tooltipModel.get("align");
var vAlign = tooltipModel.get("verticalAlign");
var rect = el2 && el2.getBoundingRect().clone();
el2 && rect.applyTransform(el2.transform);
if (isFunction$1(positionExpr)) {
positionExpr = positionExpr([x2, y2], params, content.el, rect, {
viewSize: [viewWidth, viewHeight],
contentSize: contentSize.slice()
});
}
if (isArray$1(positionExpr)) {
x2 = parsePercent(positionExpr[0], viewWidth);
y2 = parsePercent(positionExpr[1], viewHeight);
} else if (isObject$3(positionExpr)) {
var boxLayoutPosition = positionExpr;
boxLayoutPosition.width = contentSize[0];
boxLayoutPosition.height = contentSize[1];
var layoutRect = getLayoutRect(boxLayoutPosition, {
width: viewWidth,
height: viewHeight
});
x2 = layoutRect.x;
y2 = layoutRect.y;
align = null;
vAlign = null;
} else if (isString$1(positionExpr) && el2) {
var pos = calcTooltipPosition(positionExpr, rect, contentSize, tooltipModel.get("borderWidth"));
x2 = pos[0];
y2 = pos[1];
} else {
var pos = refixTooltipPosition(x2, y2, content, viewWidth, viewHeight, align ? null : 20, vAlign ? null : 20);
x2 = pos[0];
y2 = pos[1];
}
align && (x2 -= isCenterAlign(align) ? contentSize[0] / 2 : align === "right" ? contentSize[0] : 0);
vAlign && (y2 -= isCenterAlign(vAlign) ? contentSize[1] / 2 : vAlign === "bottom" ? contentSize[1] : 0);
if (shouldTooltipConfine(tooltipModel)) {
var pos = confineTooltipPosition(x2, y2, content, viewWidth, viewHeight);
x2 = pos[0];
y2 = pos[1];
}
content.moveTo(x2, y2);
};
TooltipView2.prototype._updateContentNotChangedOnAxis = function(dataByCoordSys, cbParamsList) {
var lastCoordSys = this._lastDataByCoordSys;
var lastCbParamsList = this._cbParamsList;
var contentNotChanged = !!lastCoordSys && lastCoordSys.length === dataByCoordSys.length;
contentNotChanged && each$f(lastCoordSys, function(lastItemCoordSys, indexCoordSys) {
var lastDataByAxis = lastItemCoordSys.dataByAxis || [];
var thisItemCoordSys = dataByCoordSys[indexCoordSys] || {};
var thisDataByAxis = thisItemCoordSys.dataByAxis || [];
contentNotChanged = contentNotChanged && lastDataByAxis.length === thisDataByAxis.length;
contentNotChanged && each$f(lastDataByAxis, function(lastItem, indexAxis) {
var thisItem = thisDataByAxis[indexAxis] || {};
var lastIndices = lastItem.seriesDataIndices || [];
var newIndices = thisItem.seriesDataIndices || [];
contentNotChanged = contentNotChanged && lastItem.value === thisItem.value && lastItem.axisType === thisItem.axisType && lastItem.axisId === thisItem.axisId && lastIndices.length === newIndices.length;
contentNotChanged && each$f(lastIndices, function(lastIdxItem, j) {
var newIdxItem = newIndices[j];
contentNotChanged = contentNotChanged && lastIdxItem.seriesIndex === newIdxItem.seriesIndex && lastIdxItem.dataIndex === newIdxItem.dataIndex;
});
lastCbParamsList && each$f(lastItem.seriesDataIndices, function(idxItem) {
var seriesIdx = idxItem.seriesIndex;
var cbParams = cbParamsList[seriesIdx];
var lastCbParams = lastCbParamsList[seriesIdx];
if (cbParams && lastCbParams && lastCbParams.data !== cbParams.data) {
contentNotChanged = false;
}
});
});
});
this._lastDataByCoordSys = dataByCoordSys;
this._cbParamsList = cbParamsList;
return !!contentNotChanged;
};
TooltipView2.prototype._hide = function(dispatchAction2) {
this._lastDataByCoordSys = null;
dispatchAction2({
type: "hideTip",
from: this.uid
});
};
TooltipView2.prototype.dispose = function(ecModel, api) {
if (env.node || !api.getDom()) {
return;
}
clear$2(this, "_updatePosition");
this._tooltipContent.dispose();
unregister("itemTooltip", api);
};
TooltipView2.type = "tooltip";
return TooltipView2;
}(ComponentView)
);
function buildTooltipModel(modelCascade, globalTooltipModel, defaultTooltipOption) {
var ecModel = globalTooltipModel.ecModel;
var resultModel;
if (defaultTooltipOption) {
resultModel = new Model(defaultTooltipOption, ecModel, ecModel);
resultModel = new Model(globalTooltipModel.option, resultModel, ecModel);
} else {
resultModel = globalTooltipModel;
}
for (var i = modelCascade.length - 1; i >= 0; i--) {
var tooltipOpt = modelCascade[i];
if (tooltipOpt) {
if (tooltipOpt instanceof Model) {
tooltipOpt = tooltipOpt.get("tooltip", true);
}
if (isString$1(tooltipOpt)) {
tooltipOpt = {
formatter: tooltipOpt
};
}
if (tooltipOpt) {
resultModel = new Model(tooltipOpt, resultModel, ecModel);
}
}
}
return resultModel;
}
function makeDispatchAction(payload, api) {
return payload.dispatchAction || bind$2(api.dispatchAction, api);
}
function refixTooltipPosition(x2, y2, content, viewWidth, viewHeight, gapH, gapV) {
var size = content.getSize();
var width = size[0];
var height = size[1];
if (gapH != null) {
if (x2 + width + gapH + 2 > viewWidth) {
x2 -= width + gapH;
} else {
x2 += gapH;
}
}
if (gapV != null) {
if (y2 + height + gapV > viewHeight) {
y2 -= height + gapV;
} else {
y2 += gapV;
}
}
return [x2, y2];
}
function confineTooltipPosition(x2, y2, content, viewWidth, viewHeight) {
var size = content.getSize();
var width = size[0];
var height = size[1];
x2 = Math.min(x2 + width, viewWidth) - width;
y2 = Math.min(y2 + height, viewHeight) - height;
x2 = Math.max(x2, 0);
y2 = Math.max(y2, 0);
return [x2, y2];
}
function calcTooltipPosition(position2, rect, contentSize, borderWidth2) {
var domWidth = contentSize[0];
var domHeight = contentSize[1];
var offset2 = Math.ceil(Math.SQRT2 * borderWidth2) + 8;
var x2 = 0;
var y2 = 0;
var rectWidth = rect.width;
var rectHeight = rect.height;
switch (position2) {
case "inside":
x2 = rect.x + rectWidth / 2 - domWidth / 2;
y2 = rect.y + rectHeight / 2 - domHeight / 2;
break;
case "top":
x2 = rect.x + rectWidth / 2 - domWidth / 2;
y2 = rect.y - domHeight - offset2;
break;
case "bottom":
x2 = rect.x + rectWidth / 2 - domWidth / 2;
y2 = rect.y + rectHeight + offset2;
break;
case "left":
x2 = rect.x - domWidth - offset2;
y2 = rect.y + rectHeight / 2 - domHeight / 2;
break;
case "right":
x2 = rect.x + rectWidth + offset2;
y2 = rect.y + rectHeight / 2 - domHeight / 2;
}
return [x2, y2];
}
function isCenterAlign(align) {
return align === "center" || align === "middle";
}
function findComponentReference(payload, ecModel, api) {
var queryOptionMap = preParseFinder(payload).queryOptionMap;
var componentMainType = queryOptionMap.keys()[0];
if (!componentMainType || componentMainType === "series") {
return;
}
var queryResult = queryReferringComponents(ecModel, componentMainType, queryOptionMap.get(componentMainType), {
useDefault: false,
enableAll: false,
enableNone: false
});
var model = queryResult.models[0];
if (!model) {
return;
}
var view = api.getViewOfComponentModel(model);
var el2;
view.group.traverse(function(subEl) {
var tooltipConfig = getECData(subEl).tooltipConfig;
if (tooltipConfig && tooltipConfig.name === payload.name) {
el2 = subEl;
return true;
}
});
if (el2) {
return {
componentMainType,
componentIndex: model.componentIndex,
el: el2
};
}
}
function install$i(registers) {
use(install$q);
registers.registerComponentModel(TooltipModel);
registers.registerComponentView(TooltipView);
registers.registerAction({
type: "showTip",
event: "showTip",
update: "tooltip:manuallyShowTip"
}, noop2);
registers.registerAction({
type: "hideTip",
event: "hideTip",
update: "tooltip:manuallyHideTip"
}, noop2);
}
var DEFAULT_TOOLBOX_BTNS = ["rect", "polygon", "keep", "clear"];
function brushPreprocessor(option, isNew) {
var brushComponents = normalizeToArray(option ? option.brush : []);
if (!brushComponents.length) {
return;
}
var brushComponentSpecifiedBtns = [];
each$f(brushComponents, function(brushOpt) {
var tbs = brushOpt.hasOwnProperty("toolbox") ? brushOpt.toolbox : [];
if (tbs instanceof Array) {
brushComponentSpecifiedBtns = brushComponentSpecifiedBtns.concat(tbs);
}
});
var toolbox = option && option.toolbox;
if (isArray$1(toolbox)) {
toolbox = toolbox[0];
}
if (!toolbox) {
toolbox = {
feature: {}
};
option.toolbox = [toolbox];
}
var toolboxFeature = toolbox.feature || (toolbox.feature = {});
var toolboxBrush = toolboxFeature.brush || (toolboxFeature.brush = {});
var brushTypes = toolboxBrush.type || (toolboxBrush.type = []);
brushTypes.push.apply(brushTypes, brushComponentSpecifiedBtns);
removeDuplicate(brushTypes);
if (isNew && !brushTypes.length) {
brushTypes.push.apply(brushTypes, DEFAULT_TOOLBOX_BTNS);
}
}
function removeDuplicate(arr) {
var map2 = {};
each$f(arr, function(val) {
map2[val] = 1;
});
arr.length = 0;
each$f(map2, function(flag, val) {
arr.push(val);
});
}
var each$4 = each$f;
function hasKeys(obj) {
if (obj) {
for (var name_1 in obj) {
if (obj.hasOwnProperty(name_1)) {
return true;
}
}
}
}
function createVisualMappings(option, stateList, supplementVisualOption) {
var visualMappings = {};
each$4(stateList, function(state) {
var mappings = visualMappings[state] = createMappings();
each$4(option[state], function(visualData, visualType) {
if (!VisualMapping.isValidType(visualType)) {
return;
}
var mappingOption = {
type: visualType,
visual: visualData
};
supplementVisualOption && supplementVisualOption(mappingOption, state);
mappings[visualType] = new VisualMapping(mappingOption);
if (visualType === "opacity") {
mappingOption = clone$4(mappingOption);
mappingOption.type = "colorAlpha";
mappings.__hidden.__alphaForOpacity = new VisualMapping(mappingOption);
}
});
});
return visualMappings;
function createMappings() {
var Creater = function() {
};
Creater.prototype.__hidden = Creater.prototype;
var obj = new Creater();
return obj;
}
}
function replaceVisualOption(thisOption, newOption, keys2) {
var has2;
each$f(keys2, function(key) {
if (newOption.hasOwnProperty(key) && hasKeys(newOption[key])) {
has2 = true;
}
});
has2 && each$f(keys2, function(key) {
if (newOption.hasOwnProperty(key) && hasKeys(newOption[key])) {
thisOption[key] = clone$4(newOption[key]);
} else {
delete thisOption[key];
}
});
}
function applyVisual(stateList, visualMappings, data, getValueState, scope, dimension) {
var visualTypesMap = {};
each$f(stateList, function(state) {
var visualTypes = VisualMapping.prepareVisualTypes(visualMappings[state]);
visualTypesMap[state] = visualTypes;
});
var dataIndex;
function getVisual(key) {
return getItemVisualFromData(data, dataIndex, key);
}
function setVisual(key, value) {
setItemVisualFromData(data, dataIndex, key, value);
}
{
data.each(eachItem);
}
function eachItem(valueOrIndex, index2) {
dataIndex = valueOrIndex;
var rawDataItem = data.getRawDataItem(dataIndex);
if (rawDataItem && rawDataItem.visualMap === false) {
return;
}
var valueState = getValueState.call(scope, valueOrIndex);
var mappings = visualMappings[valueState];
var visualTypes = visualTypesMap[valueState];
for (var i = 0, len2 = visualTypes.length; i < len2; i++) {
var type4 = visualTypes[i];
mappings[type4] && mappings[type4].applyVisual(valueOrIndex, getVisual, setVisual);
}
}
}
function incrementalApplyVisual(stateList, visualMappings, getValueState, dim) {
var visualTypesMap = {};
each$f(stateList, function(state) {
var visualTypes = VisualMapping.prepareVisualTypes(visualMappings[state]);
visualTypesMap[state] = visualTypes;
});
return {
progress: function progress(params, data) {
var dimIndex;
if (dim != null) {
dimIndex = data.getDimensionIndex(dim);
}
function getVisual(key) {
return getItemVisualFromData(data, dataIndex, key);
}
function setVisual(key, value2) {
setItemVisualFromData(data, dataIndex, key, value2);
}
var dataIndex;
var store = data.getStore();
while ((dataIndex = params.next()) != null) {
var rawDataItem = data.getRawDataItem(dataIndex);
if (rawDataItem && rawDataItem.visualMap === false) {
continue;
}
var value = dim != null ? store.get(dimIndex, dataIndex) : dataIndex;
var valueState = getValueState(value);
var mappings = visualMappings[valueState];
var visualTypes = visualTypesMap[valueState];
for (var i = 0, len2 = visualTypes.length; i < len2; i++) {
var type4 = visualTypes[i];
mappings[type4] && mappings[type4].applyVisual(value, getVisual, setVisual);
}
}
}
};
}
function makeBrushCommonSelectorForSeries(area) {
var brushType = area.brushType;
var selectors = {
point: function(itemLayout) {
return selector[brushType].point(itemLayout, selectors, area);
},
rect: function(itemLayout) {
return selector[brushType].rect(itemLayout, selectors, area);
}
};
return selectors;
}
var selector = {
lineX: getLineSelectors(0),
lineY: getLineSelectors(1),
rect: {
point: function(itemLayout, selectors, area) {
return itemLayout && area.boundingRect.contain(itemLayout[0], itemLayout[1]);
},
rect: function(itemLayout, selectors, area) {
return itemLayout && area.boundingRect.intersect(itemLayout);
}
},
polygon: {
point: function(itemLayout, selectors, area) {
return itemLayout && area.boundingRect.contain(itemLayout[0], itemLayout[1]) && contain(area.range, itemLayout[0], itemLayout[1]);
},
rect: function(itemLayout, selectors, area) {
var points2 = area.range;
if (!itemLayout || points2.length <= 1) {
return false;
}
var x2 = itemLayout.x;
var y2 = itemLayout.y;
var width = itemLayout.width;
var height = itemLayout.height;
var p2 = points2[0];
if (contain(points2, x2, y2) || contain(points2, x2 + width, y2) || contain(points2, x2, y2 + height) || contain(points2, x2 + width, y2 + height) || BoundingRect.create(itemLayout).contain(p2[0], p2[1]) || linePolygonIntersect(x2, y2, x2 + width, y2, points2) || linePolygonIntersect(x2, y2, x2, y2 + height, points2) || linePolygonIntersect(x2 + width, y2, x2 + width, y2 + height, points2) || linePolygonIntersect(x2, y2 + height, x2 + width, y2 + height, points2)) {
return true;
}
}
}
};
function getLineSelectors(xyIndex) {
var xy = ["x", "y"];
var wh2 = ["width", "height"];
return {
point: function(itemLayout, selectors, area) {
if (itemLayout) {
var range3 = area.range;
var p2 = itemLayout[xyIndex];
return inLineRange(p2, range3);
}
},
rect: function(itemLayout, selectors, area) {
if (itemLayout) {
var range3 = area.range;
var layoutRange = [itemLayout[xy[xyIndex]], itemLayout[xy[xyIndex]] + itemLayout[wh2[xyIndex]]];
layoutRange[1] < layoutRange[0] && layoutRange.reverse();
return inLineRange(layoutRange[0], range3) || inLineRange(layoutRange[1], range3) || inLineRange(range3[0], layoutRange) || inLineRange(range3[1], layoutRange);
}
}
};
}
function inLineRange(p2, range3) {
return range3[0] <= p2 && p2 <= range3[1];
}
var STATE_LIST = ["inBrush", "outOfBrush"];
var DISPATCH_METHOD = "__ecBrushSelect";
var DISPATCH_FLAG = "__ecInBrushSelectEvent";
function layoutCovers(ecModel) {
ecModel.eachComponent({
mainType: "brush"
}, function(brushModel) {
var brushTargetManager = brushModel.brushTargetManager = new BrushTargetManager(brushModel.option, ecModel);
brushTargetManager.setInputRanges(brushModel.areas, ecModel);
});
}
function brushVisual(ecModel, api, payload) {
var brushSelected = [];
var throttleType;
var throttleDelay;
ecModel.eachComponent({
mainType: "brush"
}, function(brushModel) {
payload && payload.type === "takeGlobalCursor" && brushModel.setBrushOption(payload.key === "brush" ? payload.brushOption : {
brushType: false
});
});
layoutCovers(ecModel);
ecModel.eachComponent({
mainType: "brush"
}, function(brushModel, brushIndex) {
var thisBrushSelected = {
brushId: brushModel.id,
brushIndex,
brushName: brushModel.name,
areas: clone$4(brushModel.areas),
selected: []
};
brushSelected.push(thisBrushSelected);
var brushOption = brushModel.option;
var brushLink = brushOption.brushLink;
var linkedSeriesMap = [];
var selectedDataIndexForLink = [];
var rangeInfoBySeries = [];
var hasBrushExists = false;
if (!brushIndex) {
throttleType = brushOption.throttleType;
throttleDelay = brushOption.throttleDelay;
}
var areas = map$1(brushModel.areas, function(area) {
var builder = boundingRectBuilders[area.brushType];
var selectableArea = defaults({
boundingRect: builder ? builder(area) : void 0
}, area);
selectableArea.selectors = makeBrushCommonSelectorForSeries(selectableArea);
return selectableArea;
});
var visualMappings = createVisualMappings(brushModel.option, STATE_LIST, function(mappingOption) {
mappingOption.mappingMethod = "fixed";
});
isArray$1(brushLink) && each$f(brushLink, function(seriesIndex) {
linkedSeriesMap[seriesIndex] = 1;
});
function linkOthers(seriesIndex) {
return brushLink === "all" || !!linkedSeriesMap[seriesIndex];
}
function brushed(rangeInfoList) {
return !!rangeInfoList.length;
}
ecModel.eachSeries(function(seriesModel, seriesIndex) {
var rangeInfoList = rangeInfoBySeries[seriesIndex] = [];
seriesModel.subType === "parallel" ? stepAParallel(seriesModel, seriesIndex) : stepAOthers(seriesModel, seriesIndex, rangeInfoList);
});
function stepAParallel(seriesModel, seriesIndex) {
var coordSys = seriesModel.coordinateSystem;
hasBrushExists = hasBrushExists || coordSys.hasAxisBrushed();
linkOthers(seriesIndex) && coordSys.eachActiveState(seriesModel.getData(), function(activeState, dataIndex) {
activeState === "active" && (selectedDataIndexForLink[dataIndex] = 1);
});
}
function stepAOthers(seriesModel, seriesIndex, rangeInfoList) {
if (!seriesModel.brushSelector || brushModelNotControll(brushModel, seriesIndex)) {
return;
}
each$f(areas, function(area) {
if (brushModel.brushTargetManager.controlSeries(area, seriesModel, ecModel)) {
rangeInfoList.push(area);
}
hasBrushExists = hasBrushExists || brushed(rangeInfoList);
});
if (linkOthers(seriesIndex) && brushed(rangeInfoList)) {
var data_1 = seriesModel.getData();
data_1.each(function(dataIndex) {
if (checkInRange(seriesModel, rangeInfoList, data_1, dataIndex)) {
selectedDataIndexForLink[dataIndex] = 1;
}
});
}
}
ecModel.eachSeries(function(seriesModel, seriesIndex) {
var seriesBrushSelected = {
seriesId: seriesModel.id,
seriesIndex,
seriesName: seriesModel.name,
dataIndex: []
};
thisBrushSelected.selected.push(seriesBrushSelected);
var rangeInfoList = rangeInfoBySeries[seriesIndex];
var data = seriesModel.getData();
var getValueState = linkOthers(seriesIndex) ? function(dataIndex) {
return selectedDataIndexForLink[dataIndex] ? (seriesBrushSelected.dataIndex.push(data.getRawIndex(dataIndex)), "inBrush") : "outOfBrush";
} : function(dataIndex) {
return checkInRange(seriesModel, rangeInfoList, data, dataIndex) ? (seriesBrushSelected.dataIndex.push(data.getRawIndex(dataIndex)), "inBrush") : "outOfBrush";
};
(linkOthers(seriesIndex) ? hasBrushExists : brushed(rangeInfoList)) && applyVisual(STATE_LIST, visualMappings, data, getValueState);
});
});
dispatchAction$1(api, throttleType, throttleDelay, brushSelected, payload);
}
function dispatchAction$1(api, throttleType, throttleDelay, brushSelected, payload) {
if (!payload) {
return;
}
var zr = api.getZr();
if (zr[DISPATCH_FLAG]) {
return;
}
if (!zr[DISPATCH_METHOD]) {
zr[DISPATCH_METHOD] = doDispatch;
}
var fn = createOrUpdate(zr, DISPATCH_METHOD, throttleDelay, throttleType);
fn(api, brushSelected);
}
function doDispatch(api, brushSelected) {
if (!api.isDisposed()) {
var zr = api.getZr();
zr[DISPATCH_FLAG] = true;
api.dispatchAction({
type: "brushSelect",
batch: brushSelected
});
zr[DISPATCH_FLAG] = false;
}
}
function checkInRange(seriesModel, rangeInfoList, data, dataIndex) {
for (var i = 0, len2 = rangeInfoList.length; i < len2; i++) {
var area = rangeInfoList[i];
if (seriesModel.brushSelector(dataIndex, data, area.selectors, area)) {
return true;
}
}
}
function brushModelNotControll(brushModel, seriesIndex) {
var seriesIndices = brushModel.option.seriesIndex;
return seriesIndices != null && seriesIndices !== "all" && (isArray$1(seriesIndices) ? indexOf(seriesIndices, seriesIndex) < 0 : seriesIndex !== seriesIndices);
}
var boundingRectBuilders = {
rect: function(area) {
return getBoundingRectFromMinMax(area.range);
},
polygon: function(area) {
var minMax;
var range3 = area.range;
for (var i = 0, len2 = range3.length; i < len2; i++) {
minMax = minMax || [[Infinity, -Infinity], [Infinity, -Infinity]];
var rg2 = range3[i];
rg2[0] < minMax[0][0] && (minMax[0][0] = rg2[0]);
rg2[0] > minMax[0][1] && (minMax[0][1] = rg2[0]);
rg2[1] < minMax[1][0] && (minMax[1][0] = rg2[1]);
rg2[1] > minMax[1][1] && (minMax[1][1] = rg2[1]);
}
return minMax && getBoundingRectFromMinMax(minMax);
}
};
function getBoundingRectFromMinMax(minMax) {
return new BoundingRect(minMax[0][0], minMax[1][0], minMax[0][1] - minMax[0][0], minMax[1][1] - minMax[1][0]);
}
var BrushView = (
/** @class */
function(_super) {
__extends(BrushView2, _super);
function BrushView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = BrushView2.type;
return _this;
}
BrushView2.prototype.init = function(ecModel, api) {
this.ecModel = ecModel;
this.api = api;
this.model;
(this._brushController = new BrushController(api.getZr())).on("brush", bind$2(this._onBrush, this)).mount();
};
BrushView2.prototype.render = function(brushModel, ecModel, api, payload) {
this.model = brushModel;
this._updateController(brushModel, ecModel, api, payload);
};
BrushView2.prototype.updateTransform = function(brushModel, ecModel, api, payload) {
layoutCovers(ecModel);
this._updateController(brushModel, ecModel, api, payload);
};
BrushView2.prototype.updateVisual = function(brushModel, ecModel, api, payload) {
this.updateTransform(brushModel, ecModel, api, payload);
};
BrushView2.prototype.updateView = function(brushModel, ecModel, api, payload) {
this._updateController(brushModel, ecModel, api, payload);
};
BrushView2.prototype._updateController = function(brushModel, ecModel, api, payload) {
(!payload || payload.$from !== brushModel.id) && this._brushController.setPanels(brushModel.brushTargetManager.makePanelOpts(api)).enableBrush(brushModel.brushOption).updateCovers(brushModel.areas.slice());
};
BrushView2.prototype.dispose = function() {
this._brushController.dispose();
};
BrushView2.prototype._onBrush = function(eventParam) {
var modelId = this.model.id;
var areas = this.model.brushTargetManager.setOutputRanges(eventParam.areas, this.ecModel);
(!eventParam.isEnd || eventParam.removeOnClick) && this.api.dispatchAction({
type: "brush",
brushId: modelId,
areas: clone$4(areas),
$from: modelId
});
eventParam.isEnd && this.api.dispatchAction({
type: "brushEnd",
brushId: modelId,
areas: clone$4(areas),
$from: modelId
});
};
BrushView2.type = "brush";
return BrushView2;
}(ComponentView)
);
var DEFAULT_OUT_OF_BRUSH_COLOR = "#ddd";
var BrushModel = (
/** @class */
function(_super) {
__extends(BrushModel2, _super);
function BrushModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = BrushModel2.type;
_this.areas = [];
_this.brushOption = {};
return _this;
}
BrushModel2.prototype.optionUpdated = function(newOption, isInit) {
var thisOption = this.option;
!isInit && replaceVisualOption(thisOption, newOption, ["inBrush", "outOfBrush"]);
var inBrush = thisOption.inBrush = thisOption.inBrush || {};
thisOption.outOfBrush = thisOption.outOfBrush || {
color: DEFAULT_OUT_OF_BRUSH_COLOR
};
if (!inBrush.hasOwnProperty("liftZ")) {
inBrush.liftZ = 5;
}
};
BrushModel2.prototype.setAreas = function(areas) {
if (!areas) {
return;
}
this.areas = map$1(areas, function(area) {
return generateBrushOption(this.option, area);
}, this);
};
BrushModel2.prototype.setBrushOption = function(brushOption) {
this.brushOption = generateBrushOption(this.option, brushOption);
this.brushType = this.brushOption.brushType;
};
BrushModel2.type = "brush";
BrushModel2.dependencies = ["geo", "grid", "xAxis", "yAxis", "parallel", "series"];
BrushModel2.defaultOption = {
seriesIndex: "all",
brushType: "rect",
brushMode: "single",
transformable: true,
brushStyle: {
borderWidth: 1,
color: "rgba(210,219,238,0.3)",
borderColor: "#D2DBEE"
},
throttleType: "fixRate",
throttleDelay: 0,
removeOnClick: true,
z: 1e4
};
return BrushModel2;
}(ComponentModel)
);
function generateBrushOption(option, brushOption) {
return merge({
brushType: option.brushType,
brushMode: option.brushMode,
transformable: option.transformable,
brushStyle: new Model(option.brushStyle).getItemStyle(),
removeOnClick: option.removeOnClick,
z: option.z
}, brushOption, true);
}
var ICON_TYPES = ["rect", "polygon", "lineX", "lineY", "keep", "clear"];
var BrushFeature = (
/** @class */
function(_super) {
__extends(BrushFeature2, _super);
function BrushFeature2() {
return _super !== null && _super.apply(this, arguments) || this;
}
BrushFeature2.prototype.render = function(featureModel, ecModel, api) {
var brushType;
var brushMode;
var isBrushed;
ecModel.eachComponent({
mainType: "brush"
}, function(brushModel) {
brushType = brushModel.brushType;
brushMode = brushModel.brushOption.brushMode || "single";
isBrushed = isBrushed || !!brushModel.areas.length;
});
this._brushType = brushType;
this._brushMode = brushMode;
each$f(featureModel.get("type", true), function(type4) {
featureModel.setIconStatus(type4, (type4 === "keep" ? brushMode === "multiple" : type4 === "clear" ? isBrushed : type4 === brushType) ? "emphasis" : "normal");
});
};
BrushFeature2.prototype.updateView = function(featureModel, ecModel, api) {
this.render(featureModel, ecModel, api);
};
BrushFeature2.prototype.getIcons = function() {
var model = this.model;
var availableIcons = model.get("icon", true);
var icons = {};
each$f(model.get("type", true), function(type4) {
if (availableIcons[type4]) {
icons[type4] = availableIcons[type4];
}
});
return icons;
};
BrushFeature2.prototype.onclick = function(ecModel, api, type4) {
var brushType = this._brushType;
var brushMode = this._brushMode;
if (type4 === "clear") {
api.dispatchAction({
type: "axisAreaSelect",
intervals: []
});
api.dispatchAction({
type: "brush",
command: "clear",
// Clear all areas of all brush components.
areas: []
});
} else {
api.dispatchAction({
type: "takeGlobalCursor",
key: "brush",
brushOption: {
brushType: type4 === "keep" ? brushType : brushType === type4 ? false : type4,
brushMode: type4 === "keep" ? brushMode === "multiple" ? "single" : "multiple" : brushMode
}
});
}
};
BrushFeature2.getDefaultOption = function(ecModel) {
var defaultOption2 = {
show: true,
type: ICON_TYPES.slice(),
icon: {
/* eslint-disable */
rect: "M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13",
polygon: "M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2",
lineX: "M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4",
lineY: "M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4",
keep: "M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z",
clear: "M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2"
// jshint ignore:line
/* eslint-enable */
},
// `rect`, `polygon`, `lineX`, `lineY`, `keep`, `clear`
title: ecModel.getLocaleModel().get(["toolbox", "brush", "title"])
};
return defaultOption2;
};
return BrushFeature2;
}(ToolboxFeature)
);
function install$h(registers) {
registers.registerComponentView(BrushView);
registers.registerComponentModel(BrushModel);
registers.registerPreprocessor(brushPreprocessor);
registers.registerVisual(registers.PRIORITY.VISUAL.BRUSH, brushVisual);
registers.registerAction({
type: "brush",
event: "brush",
update: "updateVisual"
}, function(payload, ecModel) {
ecModel.eachComponent({
mainType: "brush",
query: payload
}, function(brushModel) {
brushModel.setAreas(payload.areas);
});
});
registers.registerAction({
type: "brushSelect",
event: "brushSelected",
update: "none"
}, noop2);
registers.registerAction({
type: "brushEnd",
event: "brushEnd",
update: "none"
}, noop2);
registerFeature("brush", BrushFeature);
}
var TitleModel = (
/** @class */
function(_super) {
__extends(TitleModel2, _super);
function TitleModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = TitleModel2.type;
_this.layoutMode = {
type: "box",
ignoreSize: true
};
return _this;
}
TitleModel2.type = "title";
TitleModel2.defaultOption = {
// zlevel: 0,
z: 6,
show: true,
text: "",
target: "blank",
subtext: "",
subtarget: "blank",
left: 0,
top: 0,
backgroundColor: "rgba(0,0,0,0)",
borderColor: "#ccc",
borderWidth: 0,
padding: 5,
itemGap: 10,
textStyle: {
fontSize: 18,
fontWeight: "bold",
color: "#464646"
},
subtextStyle: {
fontSize: 12,
color: "#6E7079"
}
};
return TitleModel2;
}(ComponentModel)
);
var TitleView = (
/** @class */
function(_super) {
__extends(TitleView2, _super);
function TitleView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = TitleView2.type;
return _this;
}
TitleView2.prototype.render = function(titleModel, ecModel, api) {
this.group.removeAll();
if (!titleModel.get("show")) {
return;
}
var group = this.group;
var textStyleModel = titleModel.getModel("textStyle");
var subtextStyleModel = titleModel.getModel("subtextStyle");
var textAlign = titleModel.get("textAlign");
var textVerticalAlign = retrieve2(titleModel.get("textBaseline"), titleModel.get("textVerticalAlign"));
var textEl = new ZRText({
style: createTextStyle$1(textStyleModel, {
text: titleModel.get("text"),
fill: textStyleModel.getTextColor()
}, {
disableBox: true
}),
z2: 10
});
var textRect = textEl.getBoundingRect();
var subText = titleModel.get("subtext");
var subTextEl = new ZRText({
style: createTextStyle$1(subtextStyleModel, {
text: subText,
fill: subtextStyleModel.getTextColor(),
y: textRect.height + titleModel.get("itemGap"),
verticalAlign: "top"
}, {
disableBox: true
}),
z2: 10
});
var link = titleModel.get("link");
var sublink = titleModel.get("sublink");
var triggerEvent = titleModel.get("triggerEvent", true);
textEl.silent = !link && !triggerEvent;
subTextEl.silent = !sublink && !triggerEvent;
if (link) {
textEl.on("click", function() {
windowOpen(link, "_" + titleModel.get("target"));
});
}
if (sublink) {
subTextEl.on("click", function() {
windowOpen(sublink, "_" + titleModel.get("subtarget"));
});
}
getECData(textEl).eventData = getECData(subTextEl).eventData = triggerEvent ? {
componentType: "title",
componentIndex: titleModel.componentIndex
} : null;
group.add(textEl);
subText && group.add(subTextEl);
var groupRect = group.getBoundingRect();
var layoutOption = titleModel.getBoxLayoutParams();
layoutOption.width = groupRect.width;
layoutOption.height = groupRect.height;
var layoutRect = getLayoutRect(layoutOption, {
width: api.getWidth(),
height: api.getHeight()
}, titleModel.get("padding"));
if (!textAlign) {
textAlign = titleModel.get("left") || titleModel.get("right");
if (textAlign === "middle") {
textAlign = "center";
}
if (textAlign === "right") {
layoutRect.x += layoutRect.width;
} else if (textAlign === "center") {
layoutRect.x += layoutRect.width / 2;
}
}
if (!textVerticalAlign) {
textVerticalAlign = titleModel.get("top") || titleModel.get("bottom");
if (textVerticalAlign === "center") {
textVerticalAlign = "middle";
}
if (textVerticalAlign === "bottom") {
layoutRect.y += layoutRect.height;
} else if (textVerticalAlign === "middle") {
layoutRect.y += layoutRect.height / 2;
}
textVerticalAlign = textVerticalAlign || "top";
}
group.x = layoutRect.x;
group.y = layoutRect.y;
group.markRedraw();
var alignStyle = {
align: textAlign,
verticalAlign: textVerticalAlign
};
textEl.setStyle(alignStyle);
subTextEl.setStyle(alignStyle);
groupRect = group.getBoundingRect();
var padding = layoutRect.margin;
var style2 = titleModel.getItemStyle(["color", "opacity"]);
style2.fill = titleModel.get("backgroundColor");
var rect = new Rect$2({
shape: {
x: groupRect.x - padding[3],
y: groupRect.y - padding[0],
width: groupRect.width + padding[1] + padding[3],
height: groupRect.height + padding[0] + padding[2],
r: titleModel.get("borderRadius")
},
style: style2,
subPixelOptimize: true,
silent: true
});
group.add(rect);
};
TitleView2.type = "title";
return TitleView2;
}(ComponentView)
);
function install$g(registers) {
registers.registerComponentModel(TitleModel);
registers.registerComponentView(TitleView);
}
var TimelineModel = (
/** @class */
function(_super) {
__extends(TimelineModel2, _super);
function TimelineModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = TimelineModel2.type;
_this.layoutMode = "box";
return _this;
}
TimelineModel2.prototype.init = function(option, parentModel, ecModel) {
this.mergeDefaultAndTheme(option, ecModel);
this._initData();
};
TimelineModel2.prototype.mergeOption = function(option) {
_super.prototype.mergeOption.apply(this, arguments);
this._initData();
};
TimelineModel2.prototype.setCurrentIndex = function(currentIndex) {
if (currentIndex == null) {
currentIndex = this.option.currentIndex;
}
var count2 = this._data.count();
if (this.option.loop) {
currentIndex = (currentIndex % count2 + count2) % count2;
} else {
currentIndex >= count2 && (currentIndex = count2 - 1);
currentIndex < 0 && (currentIndex = 0);
}
this.option.currentIndex = currentIndex;
};
TimelineModel2.prototype.getCurrentIndex = function() {
return this.option.currentIndex;
};
TimelineModel2.prototype.isIndexMax = function() {
return this.getCurrentIndex() >= this._data.count() - 1;
};
TimelineModel2.prototype.setPlayState = function(state) {
this.option.autoPlay = !!state;
};
TimelineModel2.prototype.getPlayState = function() {
return !!this.option.autoPlay;
};
TimelineModel2.prototype._initData = function() {
var thisOption = this.option;
var dataArr = thisOption.data || [];
var axisType = thisOption.axisType;
var names2 = this._names = [];
var processedDataArr;
if (axisType === "category") {
processedDataArr = [];
each$f(dataArr, function(item, index2) {
var value = convertOptionIdName(getDataItemValue(item), "");
var newItem;
if (isObject$3(item)) {
newItem = clone$4(item);
newItem.value = index2;
} else {
newItem = index2;
}
processedDataArr.push(newItem);
names2.push(value);
});
} else {
processedDataArr = dataArr;
}
var dimType = {
category: "ordinal",
time: "time",
value: "number"
}[axisType] || "number";
var data = this._data = new SeriesData([{
name: "value",
type: dimType
}], this);
data.initData(processedDataArr, names2);
};
TimelineModel2.prototype.getData = function() {
return this._data;
};
TimelineModel2.prototype.getCategories = function() {
if (this.get("axisType") === "category") {
return this._names.slice();
}
};
TimelineModel2.type = "timeline";
TimelineModel2.defaultOption = {
// zlevel: 0, // 一级层叠
z: 4,
show: true,
axisType: "time",
realtime: true,
left: "20%",
top: null,
right: "20%",
bottom: 0,
width: null,
height: 40,
padding: 5,
controlPosition: "left",
autoPlay: false,
rewind: false,
loop: true,
playInterval: 2e3,
currentIndex: 0,
itemStyle: {},
label: {
color: "#000"
},
data: []
};
return TimelineModel2;
}(ComponentModel)
);
var SliderTimelineModel = (
/** @class */
function(_super) {
__extends(SliderTimelineModel2, _super);
function SliderTimelineModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = SliderTimelineModel2.type;
return _this;
}
SliderTimelineModel2.type = "timeline.slider";
SliderTimelineModel2.defaultOption = inheritDefaultOption(TimelineModel.defaultOption, {
backgroundColor: "rgba(0,0,0,0)",
borderColor: "#ccc",
borderWidth: 0,
orient: "horizontal",
inverse: false,
tooltip: {
trigger: "item"
// data item may also have tootip attr.
},
symbol: "circle",
symbolSize: 12,
lineStyle: {
show: true,
width: 2,
color: "#DAE1F5"
},
label: {
position: "auto",
// When using number, label position is not
// restricted by viewRect.
// positive: right/bottom, negative: left/top
show: true,
interval: "auto",
rotate: 0,
// formatter: null,
// 其余属性默认使用全局文本样式,详见TEXTSTYLE
color: "#A4B1D7"
},
itemStyle: {
color: "#A4B1D7",
borderWidth: 1
},
checkpointStyle: {
symbol: "circle",
symbolSize: 15,
color: "#316bf3",
borderColor: "#fff",
borderWidth: 2,
shadowBlur: 2,
shadowOffsetX: 1,
shadowOffsetY: 1,
shadowColor: "rgba(0, 0, 0, 0.3)",
// borderColor: 'rgba(194,53,49, 0.5)',
animation: true,
animationDuration: 300,
animationEasing: "quinticInOut"
},
controlStyle: {
show: true,
showPlayBtn: true,
showPrevBtn: true,
showNextBtn: true,
itemSize: 24,
itemGap: 12,
position: "left",
playIcon: "path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z",
stopIcon: "path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z",
// eslint-disable-next-line max-len
nextIcon: "M2,18.5A1.52,1.52,0,0,1,.92,18a1.49,1.49,0,0,1,0-2.12L7.81,9.36,1,3.11A1.5,1.5,0,1,1,3,.89l8,7.34a1.48,1.48,0,0,1,.49,1.09,1.51,1.51,0,0,1-.46,1.1L3,18.08A1.5,1.5,0,0,1,2,18.5Z",
// eslint-disable-next-line max-len
prevIcon: "M10,.5A1.52,1.52,0,0,1,11.08,1a1.49,1.49,0,0,1,0,2.12L4.19,9.64,11,15.89a1.5,1.5,0,1,1-2,2.22L1,10.77A1.48,1.48,0,0,1,.5,9.68,1.51,1.51,0,0,1,1,8.58L9,.92A1.5,1.5,0,0,1,10,.5Z",
prevBtnSize: 18,
nextBtnSize: 18,
color: "#A4B1D7",
borderColor: "#A4B1D7",
borderWidth: 1
},
emphasis: {
label: {
show: true,
// 其余属性默认使用全局文本样式,详见TEXTSTYLE
color: "#6f778d"
},
itemStyle: {
color: "#316BF3"
},
controlStyle: {
color: "#316BF3",
borderColor: "#316BF3",
borderWidth: 2
}
},
progress: {
lineStyle: {
color: "#316BF3"
},
itemStyle: {
color: "#316BF3"
},
label: {
color: "#6f778d"
}
},
data: []
});
return SliderTimelineModel2;
}(TimelineModel)
);
mixin(SliderTimelineModel, DataFormatMixin.prototype);
var TimelineView = (
/** @class */
function(_super) {
__extends(TimelineView2, _super);
function TimelineView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = TimelineView2.type;
return _this;
}
TimelineView2.type = "timeline";
return TimelineView2;
}(ComponentView)
);
var TimelineAxis = (
/** @class */
function(_super) {
__extends(TimelineAxis2, _super);
function TimelineAxis2(dim, scale2, coordExtent, axisType) {
var _this = _super.call(this, dim, scale2, coordExtent) || this;
_this.type = axisType || "value";
return _this;
}
TimelineAxis2.prototype.getLabelModel = function() {
return this.model.getModel("label");
};
TimelineAxis2.prototype.isHorizontal = function() {
return this.model.get("orient") === "horizontal";
};
return TimelineAxis2;
}(Axis)
);
var PI = Math.PI;
var labelDataIndexStore = makeInner();
var SliderTimelineView = (
/** @class */
function(_super) {
__extends(SliderTimelineView2, _super);
function SliderTimelineView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = SliderTimelineView2.type;
return _this;
}
SliderTimelineView2.prototype.init = function(ecModel, api) {
this.api = api;
};
SliderTimelineView2.prototype.render = function(timelineModel, ecModel, api) {
this.model = timelineModel;
this.api = api;
this.ecModel = ecModel;
this.group.removeAll();
if (timelineModel.get("show", true)) {
var layoutInfo_1 = this._layout(timelineModel, api);
var mainGroup_1 = this._createGroup("_mainGroup");
var labelGroup = this._createGroup("_labelGroup");
var axis_1 = this._axis = this._createAxis(layoutInfo_1, timelineModel);
timelineModel.formatTooltip = function(dataIndex) {
var name = axis_1.scale.getLabel({
value: dataIndex
});
return createTooltipMarkup("nameValue", {
noName: true,
value: name
});
};
each$f(["AxisLine", "AxisTick", "Control", "CurrentPointer"], function(name) {
this["_render" + name](layoutInfo_1, mainGroup_1, axis_1, timelineModel);
}, this);
this._renderAxisLabel(layoutInfo_1, labelGroup, axis_1, timelineModel);
this._position(layoutInfo_1, timelineModel);
}
this._doPlayStop();
this._updateTicksStatus();
};
SliderTimelineView2.prototype.remove = function() {
this._clearTimer();
this.group.removeAll();
};
SliderTimelineView2.prototype.dispose = function() {
this._clearTimer();
};
SliderTimelineView2.prototype._layout = function(timelineModel, api) {
var labelPosOpt = timelineModel.get(["label", "position"]);
var orient = timelineModel.get("orient");
var viewRect2 = getViewRect(timelineModel, api);
var parsedLabelPos;
if (labelPosOpt == null || labelPosOpt === "auto") {
parsedLabelPos = orient === "horizontal" ? viewRect2.y + viewRect2.height / 2 < api.getHeight() / 2 ? "-" : "+" : viewRect2.x + viewRect2.width / 2 < api.getWidth() / 2 ? "+" : "-";
} else if (isString$1(labelPosOpt)) {
parsedLabelPos = {
horizontal: {
top: "-",
bottom: "+"
},
vertical: {
left: "-",
right: "+"
}
}[orient][labelPosOpt];
} else {
parsedLabelPos = labelPosOpt;
}
var labelAlignMap = {
horizontal: "center",
vertical: parsedLabelPos >= 0 || parsedLabelPos === "+" ? "left" : "right"
};
var labelBaselineMap = {
horizontal: parsedLabelPos >= 0 || parsedLabelPos === "+" ? "top" : "bottom",
vertical: "middle"
};
var rotationMap = {
horizontal: 0,
vertical: PI / 2
};
var mainLength = orient === "vertical" ? viewRect2.height : viewRect2.width;
var controlModel = timelineModel.getModel("controlStyle");
var showControl = controlModel.get("show", true);
var controlSize = showControl ? controlModel.get("itemSize") : 0;
var controlGap = showControl ? controlModel.get("itemGap") : 0;
var sizePlusGap = controlSize + controlGap;
var labelRotation = timelineModel.get(["label", "rotate"]) || 0;
labelRotation = labelRotation * PI / 180;
var playPosition;
var prevBtnPosition;
var nextBtnPosition;
var controlPosition = controlModel.get("position", true);
var showPlayBtn = showControl && controlModel.get("showPlayBtn", true);
var showPrevBtn = showControl && controlModel.get("showPrevBtn", true);
var showNextBtn = showControl && controlModel.get("showNextBtn", true);
var xLeft = 0;
var xRight = mainLength;
if (controlPosition === "left" || controlPosition === "bottom") {
showPlayBtn && (playPosition = [0, 0], xLeft += sizePlusGap);
showPrevBtn && (prevBtnPosition = [xLeft, 0], xLeft += sizePlusGap);
showNextBtn && (nextBtnPosition = [xRight - controlSize, 0], xRight -= sizePlusGap);
} else {
showPlayBtn && (playPosition = [xRight - controlSize, 0], xRight -= sizePlusGap);
showPrevBtn && (prevBtnPosition = [0, 0], xLeft += sizePlusGap);
showNextBtn && (nextBtnPosition = [xRight - controlSize, 0], xRight -= sizePlusGap);
}
var axisExtent = [xLeft, xRight];
if (timelineModel.get("inverse")) {
axisExtent.reverse();
}
return {
viewRect: viewRect2,
mainLength,
orient,
rotation: rotationMap[orient],
labelRotation,
labelPosOpt: parsedLabelPos,
labelAlign: timelineModel.get(["label", "align"]) || labelAlignMap[orient],
labelBaseline: timelineModel.get(["label", "verticalAlign"]) || timelineModel.get(["label", "baseline"]) || labelBaselineMap[orient],
// Based on mainGroup.
playPosition,
prevBtnPosition,
nextBtnPosition,
axisExtent,
controlSize,
controlGap
};
};
SliderTimelineView2.prototype._position = function(layoutInfo, timelineModel) {
var mainGroup = this._mainGroup;
var labelGroup = this._labelGroup;
var viewRect2 = layoutInfo.viewRect;
if (layoutInfo.orient === "vertical") {
var m2 = create$1();
var rotateOriginX = viewRect2.x;
var rotateOriginY = viewRect2.y + viewRect2.height;
translate(m2, m2, [-rotateOriginX, -rotateOriginY]);
rotate(m2, m2, -PI / 2);
translate(m2, m2, [rotateOriginX, rotateOriginY]);
viewRect2 = viewRect2.clone();
viewRect2.applyTransform(m2);
}
var viewBound = getBound(viewRect2);
var mainBound = getBound(mainGroup.getBoundingRect());
var labelBound = getBound(labelGroup.getBoundingRect());
var mainPosition = [mainGroup.x, mainGroup.y];
var labelsPosition = [labelGroup.x, labelGroup.y];
labelsPosition[0] = mainPosition[0] = viewBound[0][0];
var labelPosOpt = layoutInfo.labelPosOpt;
if (labelPosOpt == null || isString$1(labelPosOpt)) {
var mainBoundIdx = labelPosOpt === "+" ? 0 : 1;
toBound(mainPosition, mainBound, viewBound, 1, mainBoundIdx);
toBound(labelsPosition, labelBound, viewBound, 1, 1 - mainBoundIdx);
} else {
var mainBoundIdx = labelPosOpt >= 0 ? 0 : 1;
toBound(mainPosition, mainBound, viewBound, 1, mainBoundIdx);
labelsPosition[1] = mainPosition[1] + labelPosOpt;
}
mainGroup.setPosition(mainPosition);
labelGroup.setPosition(labelsPosition);
mainGroup.rotation = labelGroup.rotation = layoutInfo.rotation;
setOrigin(mainGroup);
setOrigin(labelGroup);
function setOrigin(targetGroup) {
targetGroup.originX = viewBound[0][0] - targetGroup.x;
targetGroup.originY = viewBound[1][0] - targetGroup.y;
}
function getBound(rect) {
return [[rect.x, rect.x + rect.width], [rect.y, rect.y + rect.height]];
}
function toBound(fromPos, from2, to, dimIdx, boundIdx) {
fromPos[dimIdx] += to[dimIdx][boundIdx] - from2[dimIdx][boundIdx];
}
};
SliderTimelineView2.prototype._createAxis = function(layoutInfo, timelineModel) {
var data = timelineModel.getData();
var axisType = timelineModel.get("axisType");
var scale2 = createScaleByModel(timelineModel, axisType);
scale2.getTicks = function() {
return data.mapArray(["value"], function(value) {
return {
value
};
});
};
var dataExtent = data.getDataExtent("value");
scale2.setExtent(dataExtent[0], dataExtent[1]);
scale2.calcNiceTicks();
var axis = new TimelineAxis("value", scale2, layoutInfo.axisExtent, axisType);
axis.model = timelineModel;
return axis;
};
SliderTimelineView2.prototype._createGroup = function(key) {
var newGroup = this[key] = new Group$3();
this.group.add(newGroup);
return newGroup;
};
SliderTimelineView2.prototype._renderAxisLine = function(layoutInfo, group, axis, timelineModel) {
var axisExtent = axis.getExtent();
if (!timelineModel.get(["lineStyle", "show"])) {
return;
}
var line2 = new Line$1({
shape: {
x1: axisExtent[0],
y1: 0,
x2: axisExtent[1],
y2: 0
},
style: extend({
lineCap: "round"
}, timelineModel.getModel("lineStyle").getLineStyle()),
silent: true,
z2: 1
});
group.add(line2);
var progressLine = this._progressLine = new Line$1({
shape: {
x1: axisExtent[0],
x2: this._currentPointer ? this._currentPointer.x : axisExtent[0],
y1: 0,
y2: 0
},
style: defaults({
lineCap: "round",
lineWidth: line2.style.lineWidth
}, timelineModel.getModel(["progress", "lineStyle"]).getLineStyle()),
silent: true,
z2: 1
});
group.add(progressLine);
};
SliderTimelineView2.prototype._renderAxisTick = function(layoutInfo, group, axis, timelineModel) {
var _this = this;
var data = timelineModel.getData();
var ticks = axis.scale.getTicks();
this._tickSymbols = [];
each$f(ticks, function(tick) {
var tickCoord = axis.dataToCoord(tick.value);
var itemModel = data.getItemModel(tick.value);
var itemStyleModel = itemModel.getModel("itemStyle");
var hoverStyleModel = itemModel.getModel(["emphasis", "itemStyle"]);
var progressStyleModel = itemModel.getModel(["progress", "itemStyle"]);
var symbolOpt = {
x: tickCoord,
y: 0,
onclick: bind$2(_this._changeTimeline, _this, tick.value)
};
var el2 = giveSymbol(itemModel, itemStyleModel, group, symbolOpt);
el2.ensureState("emphasis").style = hoverStyleModel.getItemStyle();
el2.ensureState("progress").style = progressStyleModel.getItemStyle();
enableHoverEmphasis(el2);
var ecData = getECData(el2);
if (itemModel.get("tooltip")) {
ecData.dataIndex = tick.value;
ecData.dataModel = timelineModel;
} else {
ecData.dataIndex = ecData.dataModel = null;
}
_this._tickSymbols.push(el2);
});
};
SliderTimelineView2.prototype._renderAxisLabel = function(layoutInfo, group, axis, timelineModel) {
var _this = this;
var labelModel = axis.getLabelModel();
if (!labelModel.get("show")) {
return;
}
var data = timelineModel.getData();
var labels = axis.getViewLabels();
this._tickLabels = [];
each$f(labels, function(labelItem) {
var dataIndex = labelItem.tickValue;
var itemModel = data.getItemModel(dataIndex);
var normalLabelModel = itemModel.getModel("label");
var hoverLabelModel = itemModel.getModel(["emphasis", "label"]);
var progressLabelModel = itemModel.getModel(["progress", "label"]);
var tickCoord = axis.dataToCoord(labelItem.tickValue);
var textEl = new ZRText({
x: tickCoord,
y: 0,
rotation: layoutInfo.labelRotation - layoutInfo.rotation,
onclick: bind$2(_this._changeTimeline, _this, dataIndex),
silent: false,
style: createTextStyle$1(normalLabelModel, {
text: labelItem.formattedLabel,
align: layoutInfo.labelAlign,
verticalAlign: layoutInfo.labelBaseline
})
});
textEl.ensureState("emphasis").style = createTextStyle$1(hoverLabelModel);
textEl.ensureState("progress").style = createTextStyle$1(progressLabelModel);
group.add(textEl);
enableHoverEmphasis(textEl);
labelDataIndexStore(textEl).dataIndex = dataIndex;
_this._tickLabels.push(textEl);
});
};
SliderTimelineView2.prototype._renderControl = function(layoutInfo, group, axis, timelineModel) {
var controlSize = layoutInfo.controlSize;
var rotation = layoutInfo.rotation;
var itemStyle = timelineModel.getModel("controlStyle").getItemStyle();
var hoverStyle = timelineModel.getModel(["emphasis", "controlStyle"]).getItemStyle();
var playState = timelineModel.getPlayState();
var inverse = timelineModel.get("inverse", true);
makeBtn(layoutInfo.nextBtnPosition, "next", bind$2(this._changeTimeline, this, inverse ? "-" : "+"));
makeBtn(layoutInfo.prevBtnPosition, "prev", bind$2(this._changeTimeline, this, inverse ? "+" : "-"));
makeBtn(layoutInfo.playPosition, playState ? "stop" : "play", bind$2(this._handlePlayClick, this, !playState), true);
function makeBtn(position2, iconName, onclick, willRotate) {
if (!position2) {
return;
}
var iconSize = parsePercent$1(retrieve2(timelineModel.get(["controlStyle", iconName + "BtnSize"]), controlSize), controlSize);
var rect = [0, -iconSize / 2, iconSize, iconSize];
var btn = makeControlIcon(timelineModel, iconName + "Icon", rect, {
x: position2[0],
y: position2[1],
originX: controlSize / 2,
originY: 0,
rotation: willRotate ? -rotation : 0,
rectHover: true,
style: itemStyle,
onclick
});
btn.ensureState("emphasis").style = hoverStyle;
group.add(btn);
enableHoverEmphasis(btn);
}
};
SliderTimelineView2.prototype._renderCurrentPointer = function(layoutInfo, group, axis, timelineModel) {
var data = timelineModel.getData();
var currentIndex = timelineModel.getCurrentIndex();
var pointerModel = data.getItemModel(currentIndex).getModel("checkpointStyle");
var me2 = this;
var callback = {
onCreate: function(pointer) {
pointer.draggable = true;
pointer.drift = bind$2(me2._handlePointerDrag, me2);
pointer.ondragend = bind$2(me2._handlePointerDragend, me2);
pointerMoveTo(pointer, me2._progressLine, currentIndex, axis, timelineModel, true);
},
onUpdate: function(pointer) {
pointerMoveTo(pointer, me2._progressLine, currentIndex, axis, timelineModel);
}
};
this._currentPointer = giveSymbol(pointerModel, pointerModel, this._mainGroup, {}, this._currentPointer, callback);
};
SliderTimelineView2.prototype._handlePlayClick = function(nextState) {
this._clearTimer();
this.api.dispatchAction({
type: "timelinePlayChange",
playState: nextState,
from: this.uid
});
};
SliderTimelineView2.prototype._handlePointerDrag = function(dx, dy, e2) {
this._clearTimer();
this._pointerChangeTimeline([e2.offsetX, e2.offsetY]);
};
SliderTimelineView2.prototype._handlePointerDragend = function(e2) {
this._pointerChangeTimeline([e2.offsetX, e2.offsetY], true);
};
SliderTimelineView2.prototype._pointerChangeTimeline = function(mousePos, trigger2) {
var toCoord = this._toAxisCoord(mousePos)[0];
var axis = this._axis;
var axisExtent = asc$2(axis.getExtent().slice());
toCoord > axisExtent[1] && (toCoord = axisExtent[1]);
toCoord < axisExtent[0] && (toCoord = axisExtent[0]);
this._currentPointer.x = toCoord;
this._currentPointer.markRedraw();
var progressLine = this._progressLine;
if (progressLine) {
progressLine.shape.x2 = toCoord;
progressLine.dirty();
}
var targetDataIndex = this._findNearestTick(toCoord);
var timelineModel = this.model;
if (trigger2 || targetDataIndex !== timelineModel.getCurrentIndex() && timelineModel.get("realtime")) {
this._changeTimeline(targetDataIndex);
}
};
SliderTimelineView2.prototype._doPlayStop = function() {
var _this = this;
this._clearTimer();
if (this.model.getPlayState()) {
this._timer = setTimeout(function() {
var timelineModel = _this.model;
_this._changeTimeline(timelineModel.getCurrentIndex() + (timelineModel.get("rewind", true) ? -1 : 1));
}, this.model.get("playInterval"));
}
};
SliderTimelineView2.prototype._toAxisCoord = function(vertex) {
var trans = this._mainGroup.getLocalTransform();
return applyTransform(vertex, trans, true);
};
SliderTimelineView2.prototype._findNearestTick = function(axisCoord) {
var data = this.model.getData();
var dist2 = Infinity;
var targetDataIndex;
var axis = this._axis;
data.each(["value"], function(value, dataIndex) {
var coord = axis.dataToCoord(value);
var d2 = Math.abs(coord - axisCoord);
if (d2 < dist2) {
dist2 = d2;
targetDataIndex = dataIndex;
}
});
return targetDataIndex;
};
SliderTimelineView2.prototype._clearTimer = function() {
if (this._timer) {
clearTimeout(this._timer);
this._timer = null;
}
};
SliderTimelineView2.prototype._changeTimeline = function(nextIndex) {
var currentIndex = this.model.getCurrentIndex();
if (nextIndex === "+") {
nextIndex = currentIndex + 1;
} else if (nextIndex === "-") {
nextIndex = currentIndex - 1;
}
this.api.dispatchAction({
type: "timelineChange",
currentIndex: nextIndex,
from: this.uid
});
};
SliderTimelineView2.prototype._updateTicksStatus = function() {
var currentIndex = this.model.getCurrentIndex();
var tickSymbols = this._tickSymbols;
var tickLabels = this._tickLabels;
if (tickSymbols) {
for (var i = 0; i < tickSymbols.length; i++) {
tickSymbols && tickSymbols[i] && tickSymbols[i].toggleState("progress", i < currentIndex);
}
}
if (tickLabels) {
for (var i = 0; i < tickLabels.length; i++) {
tickLabels && tickLabels[i] && tickLabels[i].toggleState("progress", labelDataIndexStore(tickLabels[i]).dataIndex <= currentIndex);
}
}
};
SliderTimelineView2.type = "timeline.slider";
return SliderTimelineView2;
}(TimelineView)
);
function createScaleByModel(model, axisType) {
axisType = axisType || model.get("type");
if (axisType) {
switch (axisType) {
case "category":
return new OrdinalScale({
ordinalMeta: model.getCategories(),
extent: [Infinity, -Infinity]
});
case "time":
return new TimeScale({
locale: model.ecModel.getLocaleModel(),
useUTC: model.ecModel.get("useUTC")
});
default:
return new IntervalScale();
}
}
}
function getViewRect(model, api) {
return getLayoutRect(model.getBoxLayoutParams(), {
width: api.getWidth(),
height: api.getHeight()
}, model.get("padding"));
}
function makeControlIcon(timelineModel, objPath, rect, opts) {
var style2 = opts.style;
var icon = createIcon(timelineModel.get(["controlStyle", objPath]), opts || {}, new BoundingRect(rect[0], rect[1], rect[2], rect[3]));
if (style2) {
icon.setStyle(style2);
}
return icon;
}
function giveSymbol(hostModel, itemStyleModel, group, opt, symbol, callback) {
var color2 = itemStyleModel.get("color");
if (!symbol) {
var symbolType = hostModel.get("symbol");
symbol = createSymbol$1(symbolType, -1, -1, 2, 2, color2);
symbol.setStyle("strokeNoScale", true);
group.add(symbol);
callback && callback.onCreate(symbol);
} else {
symbol.setColor(color2);
group.add(symbol);
callback && callback.onUpdate(symbol);
}
var itemStyle = itemStyleModel.getItemStyle(["color"]);
symbol.setStyle(itemStyle);
opt = merge({
rectHover: true,
z2: 100
}, opt, true);
var symbolSize = normalizeSymbolSize(hostModel.get("symbolSize"));
opt.scaleX = symbolSize[0] / 2;
opt.scaleY = symbolSize[1] / 2;
var symbolOffset = normalizeSymbolOffset(hostModel.get("symbolOffset"), symbolSize);
if (symbolOffset) {
opt.x = (opt.x || 0) + symbolOffset[0];
opt.y = (opt.y || 0) + symbolOffset[1];
}
var symbolRotate = hostModel.get("symbolRotate");
opt.rotation = (symbolRotate || 0) * Math.PI / 180 || 0;
symbol.attr(opt);
symbol.updateTransform();
return symbol;
}
function pointerMoveTo(pointer, progressLine, dataIndex, axis, timelineModel, noAnimation) {
if (pointer.dragging) {
return;
}
var pointerModel = timelineModel.getModel("checkpointStyle");
var toCoord = axis.dataToCoord(timelineModel.getData().get("value", dataIndex));
if (noAnimation || !pointerModel.get("animation", true)) {
pointer.attr({
x: toCoord,
y: 0
});
progressLine && progressLine.attr({
shape: {
x2: toCoord
}
});
} else {
var animationCfg = {
duration: pointerModel.get("animationDuration", true),
easing: pointerModel.get("animationEasing", true)
};
pointer.stopAnimation(null, true);
pointer.animateTo({
x: toCoord,
y: 0
}, animationCfg);
progressLine && progressLine.animateTo({
shape: {
x2: toCoord
}
}, animationCfg);
}
}
function installTimelineAction(registers) {
registers.registerAction({
type: "timelineChange",
event: "timelineChanged",
update: "prepareAndUpdate"
}, function(payload, ecModel, api) {
var timelineModel = ecModel.getComponent("timeline");
if (timelineModel && payload.currentIndex != null) {
timelineModel.setCurrentIndex(payload.currentIndex);
if (!timelineModel.get("loop", true) && timelineModel.isIndexMax() && timelineModel.getPlayState()) {
timelineModel.setPlayState(false);
api.dispatchAction({
type: "timelinePlayChange",
playState: false,
from: payload.from
});
}
}
ecModel.resetOption("timeline", {
replaceMerge: timelineModel.get("replaceMerge", true)
});
return defaults({
currentIndex: timelineModel.option.currentIndex
}, payload);
});
registers.registerAction({
type: "timelinePlayChange",
event: "timelinePlayChanged",
update: "update"
}, function(payload, ecModel) {
var timelineModel = ecModel.getComponent("timeline");
if (timelineModel && payload.playState != null) {
timelineModel.setPlayState(payload.playState);
}
});
}
function timelinePreprocessor(option) {
var timelineOpt = option && option.timeline;
if (!isArray$1(timelineOpt)) {
timelineOpt = timelineOpt ? [timelineOpt] : [];
}
each$f(timelineOpt, function(opt) {
if (!opt) {
return;
}
compatibleEC2(opt);
});
}
function compatibleEC2(opt) {
var type4 = opt.type;
var ec2Types = {
"number": "value",
"time": "time"
};
if (ec2Types[type4]) {
opt.axisType = ec2Types[type4];
delete opt.type;
}
transferItem(opt);
if (has$1(opt, "controlPosition")) {
var controlStyle = opt.controlStyle || (opt.controlStyle = {});
if (!has$1(controlStyle, "position")) {
controlStyle.position = opt.controlPosition;
}
if (controlStyle.position === "none" && !has$1(controlStyle, "show")) {
controlStyle.show = false;
delete controlStyle.position;
}
delete opt.controlPosition;
}
each$f(opt.data || [], function(dataItem) {
if (isObject$3(dataItem) && !isArray$1(dataItem)) {
if (!has$1(dataItem, "value") && has$1(dataItem, "name")) {
dataItem.value = dataItem.name;
}
transferItem(dataItem);
}
});
}
function transferItem(opt) {
var itemStyle = opt.itemStyle || (opt.itemStyle = {});
var itemStyleEmphasis = itemStyle.emphasis || (itemStyle.emphasis = {});
var label = opt.label || opt.label || {};
var labelNormal = label.normal || (label.normal = {});
var excludeLabelAttr = {
normal: 1,
emphasis: 1
};
each$f(label, function(value, name) {
if (!excludeLabelAttr[name] && !has$1(labelNormal, name)) {
labelNormal[name] = value;
}
});
if (itemStyleEmphasis.label && !has$1(label, "emphasis")) {
label.emphasis = itemStyleEmphasis.label;
delete itemStyleEmphasis.label;
}
}
function has$1(obj, attr) {
return obj.hasOwnProperty(attr);
}
function install$f(registers) {
registers.registerComponentModel(SliderTimelineModel);
registers.registerComponentView(SliderTimelineView);
registers.registerSubTypeDefaulter("timeline", function() {
return "slider";
});
installTimelineAction(registers);
registers.registerPreprocessor(timelinePreprocessor);
}
function checkMarkerInSeries(seriesOpts, markerType) {
if (!seriesOpts) {
return false;
}
var seriesOptArr = isArray$1(seriesOpts) ? seriesOpts : [seriesOpts];
for (var idx = 0; idx < seriesOptArr.length; idx++) {
if (seriesOptArr[idx] && seriesOptArr[idx][markerType]) {
return true;
}
}
return false;
}
function fillLabel(opt) {
defaultEmphasis(opt, "label", ["show"]);
}
var inner$5 = makeInner();
var MarkerModel = (
/** @class */
function(_super) {
__extends(MarkerModel2, _super);
function MarkerModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = MarkerModel2.type;
_this.createdBySelf = false;
return _this;
}
MarkerModel2.prototype.init = function(option, parentModel, ecModel) {
this.mergeDefaultAndTheme(option, ecModel);
this._mergeOption(option, ecModel, false, true);
};
MarkerModel2.prototype.isAnimationEnabled = function() {
if (env.node) {
return false;
}
var hostSeries = this.__hostSeries;
return this.getShallow("animation") && hostSeries && hostSeries.isAnimationEnabled();
};
MarkerModel2.prototype.mergeOption = function(newOpt, ecModel) {
this._mergeOption(newOpt, ecModel, false, false);
};
MarkerModel2.prototype._mergeOption = function(newOpt, ecModel, createdBySelf, isInit) {
var componentType = this.mainType;
if (!createdBySelf) {
ecModel.eachSeries(function(seriesModel) {
var markerOpt = seriesModel.get(this.mainType, true);
var markerModel = inner$5(seriesModel)[componentType];
if (!markerOpt || !markerOpt.data) {
inner$5(seriesModel)[componentType] = null;
return;
}
if (!markerModel) {
if (isInit) {
fillLabel(markerOpt);
}
each$f(markerOpt.data, function(item) {
if (item instanceof Array) {
fillLabel(item[0]);
fillLabel(item[1]);
} else {
fillLabel(item);
}
});
markerModel = this.createMarkerModelFromSeries(markerOpt, this, ecModel);
extend(markerModel, {
mainType: this.mainType,
// Use the same series index and name
seriesIndex: seriesModel.seriesIndex,
name: seriesModel.name,
createdBySelf: true
});
markerModel.__hostSeries = seriesModel;
} else {
markerModel._mergeOption(markerOpt, ecModel, true);
}
inner$5(seriesModel)[componentType] = markerModel;
}, this);
}
};
MarkerModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) {
var data = this.getData();
var value = this.getRawValue(dataIndex);
var itemName = data.getName(dataIndex);
return createTooltipMarkup("section", {
header: this.name,
blocks: [createTooltipMarkup("nameValue", {
name: itemName,
value,
noName: !itemName,
noValue: value == null
})]
});
};
MarkerModel2.prototype.getData = function() {
return this._data;
};
MarkerModel2.prototype.setData = function(data) {
this._data = data;
};
MarkerModel2.prototype.getDataParams = function(dataIndex, dataType) {
var params = DataFormatMixin.prototype.getDataParams.call(this, dataIndex, dataType);
var hostSeries = this.__hostSeries;
if (hostSeries) {
params.seriesId = hostSeries.id;
params.seriesName = hostSeries.name;
params.seriesType = hostSeries.subType;
}
return params;
};
MarkerModel2.getMarkerModelFromSeries = function(seriesModel, componentType) {
return inner$5(seriesModel)[componentType];
};
MarkerModel2.type = "marker";
MarkerModel2.dependencies = ["series", "grid", "polar", "geo"];
return MarkerModel2;
}(ComponentModel)
);
mixin(MarkerModel, DataFormatMixin.prototype);
var MarkPointModel = (
/** @class */
function(_super) {
__extends(MarkPointModel2, _super);
function MarkPointModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = MarkPointModel2.type;
return _this;
}
MarkPointModel2.prototype.createMarkerModelFromSeries = function(markerOpt, masterMarkerModel, ecModel) {
return new MarkPointModel2(markerOpt, masterMarkerModel, ecModel);
};
MarkPointModel2.type = "markPoint";
MarkPointModel2.defaultOption = {
// zlevel: 0,
z: 5,
symbol: "pin",
symbolSize: 50,
// symbolRotate: 0,
// symbolOffset: [0, 0]
tooltip: {
trigger: "item"
},
label: {
show: true,
position: "inside"
},
itemStyle: {
borderWidth: 2
},
emphasis: {
label: {
show: true
}
}
};
return MarkPointModel2;
}(MarkerModel)
);
function hasXOrY(item) {
return !(isNaN(parseFloat(item.x)) && isNaN(parseFloat(item.y)));
}
function hasXAndY(item) {
return !isNaN(parseFloat(item.x)) && !isNaN(parseFloat(item.y));
}
function markerTypeCalculatorWithExtent(markerType, data, otherDataDim, targetDataDim, otherCoordIndex, targetCoordIndex) {
var coordArr = [];
var stacked = isDimensionStacked(
data,
targetDataDim
/* , otherDataDim */
);
var calcDataDim = stacked ? data.getCalculationInfo("stackResultDimension") : targetDataDim;
var value = numCalculate(data, calcDataDim, markerType);
var dataIndex = data.indicesOfNearest(calcDataDim, value)[0];
coordArr[otherCoordIndex] = data.get(otherDataDim, dataIndex);
coordArr[targetCoordIndex] = data.get(calcDataDim, dataIndex);
var coordArrValue = data.get(targetDataDim, dataIndex);
var precision = getPrecision(data.get(targetDataDim, dataIndex));
precision = Math.min(precision, 20);
if (precision >= 0) {
coordArr[targetCoordIndex] = +coordArr[targetCoordIndex].toFixed(precision);
}
return [coordArr, coordArrValue];
}
var markerTypeCalculator = {
min: curry$1(markerTypeCalculatorWithExtent, "min"),
max: curry$1(markerTypeCalculatorWithExtent, "max"),
average: curry$1(markerTypeCalculatorWithExtent, "average"),
median: curry$1(markerTypeCalculatorWithExtent, "median")
};
function dataTransform(seriesModel, item) {
if (!item) {
return;
}
var data = seriesModel.getData();
var coordSys = seriesModel.coordinateSystem;
var dims = coordSys && coordSys.dimensions;
if (!hasXAndY(item) && !isArray$1(item.coord) && isArray$1(dims)) {
var axisInfo = getAxisInfo(item, data, coordSys, seriesModel);
item = clone$4(item);
if (item.type && markerTypeCalculator[item.type] && axisInfo.baseAxis && axisInfo.valueAxis) {
var otherCoordIndex = indexOf(dims, axisInfo.baseAxis.dim);
var targetCoordIndex = indexOf(dims, axisInfo.valueAxis.dim);
var coordInfo = markerTypeCalculator[item.type](data, axisInfo.baseDataDim, axisInfo.valueDataDim, otherCoordIndex, targetCoordIndex);
item.coord = coordInfo[0];
item.value = coordInfo[1];
} else {
item.coord = [item.xAxis != null ? item.xAxis : item.radiusAxis, item.yAxis != null ? item.yAxis : item.angleAxis];
}
}
if (item.coord == null || !isArray$1(dims)) {
item.coord = [];
} else {
var coord = item.coord;
for (var i = 0; i < 2; i++) {
if (markerTypeCalculator[coord[i]]) {
coord[i] = numCalculate(data, data.mapDimension(dims[i]), coord[i]);
}
}
}
return item;
}
function getAxisInfo(item, data, coordSys, seriesModel) {
var ret = {};
if (item.valueIndex != null || item.valueDim != null) {
ret.valueDataDim = item.valueIndex != null ? data.getDimension(item.valueIndex) : item.valueDim;
ret.valueAxis = coordSys.getAxis(dataDimToCoordDim(seriesModel, ret.valueDataDim));
ret.baseAxis = coordSys.getOtherAxis(ret.valueAxis);
ret.baseDataDim = data.mapDimension(ret.baseAxis.dim);
} else {
ret.baseAxis = seriesModel.getBaseAxis();
ret.valueAxis = coordSys.getOtherAxis(ret.baseAxis);
ret.baseDataDim = data.mapDimension(ret.baseAxis.dim);
ret.valueDataDim = data.mapDimension(ret.valueAxis.dim);
}
return ret;
}
function dataDimToCoordDim(seriesModel, dataDim) {
var dimItem = seriesModel.getData().getDimensionInfo(dataDim);
return dimItem && dimItem.coordDim;
}
function dataFilter(coordSys, item) {
return coordSys && coordSys.containData && item.coord && !hasXOrY(item) ? coordSys.containData(item.coord) : true;
}
function zoneFilter(coordSys, item1, item2) {
return coordSys && coordSys.containZone && item1.coord && item2.coord && !hasXOrY(item1) && !hasXOrY(item2) ? coordSys.containZone(item1.coord, item2.coord) : true;
}
function createMarkerDimValueGetter(inCoordSys, dims) {
return inCoordSys ? function(item, dimName, dataIndex, dimIndex) {
var rawVal = dimIndex < 2 ? item.coord && item.coord[dimIndex] : item.value;
return parseDataValue(rawVal, dims[dimIndex]);
} : function(item, dimName, dataIndex, dimIndex) {
return parseDataValue(item.value, dims[dimIndex]);
};
}
function numCalculate(data, valueDataDim, type4) {
if (type4 === "average") {
var sum_1 = 0;
var count_1 = 0;
data.each(valueDataDim, function(val, idx) {
if (!isNaN(val)) {
sum_1 += val;
count_1++;
}
});
return sum_1 / count_1;
} else if (type4 === "median") {
return data.getMedian(valueDataDim);
} else {
return data.getDataExtent(valueDataDim)[type4 === "max" ? 1 : 0];
}
}
var inner$4 = makeInner();
var MarkerView = (
/** @class */
function(_super) {
__extends(MarkerView2, _super);
function MarkerView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = MarkerView2.type;
return _this;
}
MarkerView2.prototype.init = function() {
this.markerGroupMap = createHashMap();
};
MarkerView2.prototype.render = function(markerModel, ecModel, api) {
var _this = this;
var markerGroupMap = this.markerGroupMap;
markerGroupMap.each(function(item) {
inner$4(item).keep = false;
});
ecModel.eachSeries(function(seriesModel) {
var markerModel2 = MarkerModel.getMarkerModelFromSeries(seriesModel, _this.type);
markerModel2 && _this.renderSeries(seriesModel, markerModel2, ecModel, api);
});
markerGroupMap.each(function(item) {
!inner$4(item).keep && _this.group.remove(item.group);
});
};
MarkerView2.prototype.markKeep = function(drawGroup) {
inner$4(drawGroup).keep = true;
};
MarkerView2.prototype.toggleBlurSeries = function(seriesModelList, isBlur) {
var _this = this;
each$f(seriesModelList, function(seriesModel) {
var markerModel = MarkerModel.getMarkerModelFromSeries(seriesModel, _this.type);
if (markerModel) {
var data = markerModel.getData();
data.eachItemGraphicEl(function(el2) {
if (el2) {
isBlur ? enterBlur(el2) : leaveBlur(el2);
}
});
}
});
};
MarkerView2.type = "marker";
return MarkerView2;
}(ComponentView)
);
function updateMarkerLayout(mpData, seriesModel, api) {
var coordSys = seriesModel.coordinateSystem;
mpData.each(function(idx) {
var itemModel = mpData.getItemModel(idx);
var point;
var xPx = parsePercent(itemModel.get("x"), api.getWidth());
var yPx = parsePercent(itemModel.get("y"), api.getHeight());
if (!isNaN(xPx) && !isNaN(yPx)) {
point = [xPx, yPx];
} else if (seriesModel.getMarkerPosition) {
point = seriesModel.getMarkerPosition(mpData.getValues(mpData.dimensions, idx));
} else if (coordSys) {
var x2 = mpData.get(coordSys.dimensions[0], idx);
var y2 = mpData.get(coordSys.dimensions[1], idx);
point = coordSys.dataToPoint([x2, y2]);
}
if (!isNaN(xPx)) {
point[0] = xPx;
}
if (!isNaN(yPx)) {
point[1] = yPx;
}
mpData.setItemLayout(idx, point);
});
}
var MarkPointView = (
/** @class */
function(_super) {
__extends(MarkPointView2, _super);
function MarkPointView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = MarkPointView2.type;
return _this;
}
MarkPointView2.prototype.updateTransform = function(markPointModel, ecModel, api) {
ecModel.eachSeries(function(seriesModel) {
var mpModel = MarkerModel.getMarkerModelFromSeries(seriesModel, "markPoint");
if (mpModel) {
updateMarkerLayout(mpModel.getData(), seriesModel, api);
this.markerGroupMap.get(seriesModel.id).updateLayout();
}
}, this);
};
MarkPointView2.prototype.renderSeries = function(seriesModel, mpModel, ecModel, api) {
var coordSys = seriesModel.coordinateSystem;
var seriesId = seriesModel.id;
var seriesData = seriesModel.getData();
var symbolDrawMap = this.markerGroupMap;
var symbolDraw = symbolDrawMap.get(seriesId) || symbolDrawMap.set(seriesId, new SymbolDraw());
var mpData = createData(coordSys, seriesModel, mpModel);
mpModel.setData(mpData);
updateMarkerLayout(mpModel.getData(), seriesModel, api);
mpData.each(function(idx) {
var itemModel = mpData.getItemModel(idx);
var symbol = itemModel.getShallow("symbol");
var symbolSize = itemModel.getShallow("symbolSize");
var symbolRotate = itemModel.getShallow("symbolRotate");
var symbolOffset = itemModel.getShallow("symbolOffset");
var symbolKeepAspect = itemModel.getShallow("symbolKeepAspect");
if (isFunction$1(symbol) || isFunction$1(symbolSize) || isFunction$1(symbolRotate) || isFunction$1(symbolOffset)) {
var rawIdx = mpModel.getRawValue(idx);
var dataParams = mpModel.getDataParams(idx);
if (isFunction$1(symbol)) {
symbol = symbol(rawIdx, dataParams);
}
if (isFunction$1(symbolSize)) {
symbolSize = symbolSize(rawIdx, dataParams);
}
if (isFunction$1(symbolRotate)) {
symbolRotate = symbolRotate(rawIdx, dataParams);
}
if (isFunction$1(symbolOffset)) {
symbolOffset = symbolOffset(rawIdx, dataParams);
}
}
var style2 = itemModel.getModel("itemStyle").getItemStyle();
var color2 = getVisualFromData(seriesData, "color");
if (!style2.fill) {
style2.fill = color2;
}
mpData.setItemVisual(idx, {
symbol,
symbolSize,
symbolRotate,
symbolOffset,
symbolKeepAspect,
style: style2
});
});
symbolDraw.updateData(mpData);
this.group.add(symbolDraw.group);
mpData.eachItemGraphicEl(function(el2) {
el2.traverse(function(child) {
getECData(child).dataModel = mpModel;
});
});
this.markKeep(symbolDraw);
symbolDraw.group.silent = mpModel.get("silent") || seriesModel.get("silent");
};
MarkPointView2.type = "markPoint";
return MarkPointView2;
}(MarkerView)
);
function createData(coordSys, seriesModel, mpModel) {
var coordDimsInfos;
if (coordSys) {
coordDimsInfos = map$1(coordSys && coordSys.dimensions, function(coordDim) {
var info = seriesModel.getData().getDimensionInfo(seriesModel.getData().mapDimension(coordDim)) || {};
return extend(extend({}, info), {
name: coordDim,
// DON'T use ordinalMeta to parse and collect ordinal.
ordinalMeta: null
});
});
} else {
coordDimsInfos = [{
name: "value",
type: "float"
}];
}
var mpData = new SeriesData(coordDimsInfos, mpModel);
var dataOpt = map$1(mpModel.get("data"), curry$1(dataTransform, seriesModel));
if (coordSys) {
dataOpt = filter(dataOpt, curry$1(dataFilter, coordSys));
}
var dimValueGetter = createMarkerDimValueGetter(!!coordSys, coordDimsInfos);
mpData.initData(dataOpt, null, dimValueGetter);
return mpData;
}
function install$e(registers) {
registers.registerComponentModel(MarkPointModel);
registers.registerComponentView(MarkPointView);
registers.registerPreprocessor(function(opt) {
if (checkMarkerInSeries(opt.series, "markPoint")) {
opt.markPoint = opt.markPoint || {};
}
});
}
var MarkLineModel = (
/** @class */
function(_super) {
__extends(MarkLineModel2, _super);
function MarkLineModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = MarkLineModel2.type;
return _this;
}
MarkLineModel2.prototype.createMarkerModelFromSeries = function(markerOpt, masterMarkerModel, ecModel) {
return new MarkLineModel2(markerOpt, masterMarkerModel, ecModel);
};
MarkLineModel2.type = "markLine";
MarkLineModel2.defaultOption = {
// zlevel: 0,
z: 5,
symbol: ["circle", "arrow"],
symbolSize: [8, 16],
// symbolRotate: 0,
symbolOffset: 0,
precision: 2,
tooltip: {
trigger: "item"
},
label: {
show: true,
position: "end",
distance: 5
},
lineStyle: {
type: "dashed"
},
emphasis: {
label: {
show: true
},
lineStyle: {
width: 3
}
},
animationEasing: "linear"
};
return MarkLineModel2;
}(MarkerModel)
);
var inner$3 = makeInner();
var markLineTransform = function(seriesModel, coordSys, mlModel, item) {
var data = seriesModel.getData();
var itemArray;
if (!isArray$1(item)) {
var mlType = item.type;
if (mlType === "min" || mlType === "max" || mlType === "average" || mlType === "median" || item.xAxis != null || item.yAxis != null) {
var valueAxis2 = void 0;
var value = void 0;
if (item.yAxis != null || item.xAxis != null) {
valueAxis2 = coordSys.getAxis(item.yAxis != null ? "y" : "x");
value = retrieve(item.yAxis, item.xAxis);
} else {
var axisInfo = getAxisInfo(item, data, coordSys, seriesModel);
valueAxis2 = axisInfo.valueAxis;
var valueDataDim = getStackedDimension(data, axisInfo.valueDataDim);
value = numCalculate(data, valueDataDim, mlType);
}
var valueIndex = valueAxis2.dim === "x" ? 0 : 1;
var baseIndex = 1 - valueIndex;
var mlFrom = clone$4(item);
var mlTo = {
coord: []
};
mlFrom.type = null;
mlFrom.coord = [];
mlFrom.coord[baseIndex] = -Infinity;
mlTo.coord[baseIndex] = Infinity;
var precision = mlModel.get("precision");
if (precision >= 0 && isNumber(value)) {
value = +value.toFixed(Math.min(precision, 20));
}
mlFrom.coord[valueIndex] = mlTo.coord[valueIndex] = value;
itemArray = [mlFrom, mlTo, {
type: mlType,
valueIndex: item.valueIndex,
// Force to use the value of calculated value.
value
}];
} else {
itemArray = [];
}
} else {
itemArray = item;
}
var normalizedItem = [dataTransform(seriesModel, itemArray[0]), dataTransform(seriesModel, itemArray[1]), extend({}, itemArray[2])];
normalizedItem[2].type = normalizedItem[2].type || null;
merge(normalizedItem[2], normalizedItem[0]);
merge(normalizedItem[2], normalizedItem[1]);
return normalizedItem;
};
function isInfinity$1(val) {
return !isNaN(val) && !isFinite(val);
}
function ifMarkLineHasOnlyDim(dimIndex, fromCoord, toCoord, coordSys) {
var otherDimIndex = 1 - dimIndex;
var dimName = coordSys.dimensions[dimIndex];
return isInfinity$1(fromCoord[otherDimIndex]) && isInfinity$1(toCoord[otherDimIndex]) && fromCoord[dimIndex] === toCoord[dimIndex] && coordSys.getAxis(dimName).containData(fromCoord[dimIndex]);
}
function markLineFilter(coordSys, item) {
if (coordSys.type === "cartesian2d") {
var fromCoord = item[0].coord;
var toCoord = item[1].coord;
if (fromCoord && toCoord && (ifMarkLineHasOnlyDim(1, fromCoord, toCoord, coordSys) || ifMarkLineHasOnlyDim(0, fromCoord, toCoord, coordSys))) {
return true;
}
}
return dataFilter(coordSys, item[0]) && dataFilter(coordSys, item[1]);
}
function updateSingleMarkerEndLayout(data, idx, isFrom, seriesModel, api) {
var coordSys = seriesModel.coordinateSystem;
var itemModel = data.getItemModel(idx);
var point;
var xPx = parsePercent(itemModel.get("x"), api.getWidth());
var yPx = parsePercent(itemModel.get("y"), api.getHeight());
if (!isNaN(xPx) && !isNaN(yPx)) {
point = [xPx, yPx];
} else {
if (seriesModel.getMarkerPosition) {
point = seriesModel.getMarkerPosition(data.getValues(data.dimensions, idx));
} else {
var dims = coordSys.dimensions;
var x2 = data.get(dims[0], idx);
var y2 = data.get(dims[1], idx);
point = coordSys.dataToPoint([x2, y2]);
}
if (isCoordinateSystemType(coordSys, "cartesian2d")) {
var xAxis = coordSys.getAxis("x");
var yAxis = coordSys.getAxis("y");
var dims = coordSys.dimensions;
if (isInfinity$1(data.get(dims[0], idx))) {
point[0] = xAxis.toGlobalCoord(xAxis.getExtent()[isFrom ? 0 : 1]);
} else if (isInfinity$1(data.get(dims[1], idx))) {
point[1] = yAxis.toGlobalCoord(yAxis.getExtent()[isFrom ? 0 : 1]);
}
}
if (!isNaN(xPx)) {
point[0] = xPx;
}
if (!isNaN(yPx)) {
point[1] = yPx;
}
}
data.setItemLayout(idx, point);
}
var MarkLineView = (
/** @class */
function(_super) {
__extends(MarkLineView2, _super);
function MarkLineView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = MarkLineView2.type;
return _this;
}
MarkLineView2.prototype.updateTransform = function(markLineModel, ecModel, api) {
ecModel.eachSeries(function(seriesModel) {
var mlModel = MarkerModel.getMarkerModelFromSeries(seriesModel, "markLine");
if (mlModel) {
var mlData_1 = mlModel.getData();
var fromData_1 = inner$3(mlModel).from;
var toData_1 = inner$3(mlModel).to;
fromData_1.each(function(idx) {
updateSingleMarkerEndLayout(fromData_1, idx, true, seriesModel, api);
updateSingleMarkerEndLayout(toData_1, idx, false, seriesModel, api);
});
mlData_1.each(function(idx) {
mlData_1.setItemLayout(idx, [fromData_1.getItemLayout(idx), toData_1.getItemLayout(idx)]);
});
this.markerGroupMap.get(seriesModel.id).updateLayout();
}
}, this);
};
MarkLineView2.prototype.renderSeries = function(seriesModel, mlModel, ecModel, api) {
var coordSys = seriesModel.coordinateSystem;
var seriesId = seriesModel.id;
var seriesData = seriesModel.getData();
var lineDrawMap = this.markerGroupMap;
var lineDraw = lineDrawMap.get(seriesId) || lineDrawMap.set(seriesId, new LineDraw());
this.group.add(lineDraw.group);
var mlData = createList$1(coordSys, seriesModel, mlModel);
var fromData = mlData.from;
var toData = mlData.to;
var lineData = mlData.line;
inner$3(mlModel).from = fromData;
inner$3(mlModel).to = toData;
mlModel.setData(lineData);
var symbolType = mlModel.get("symbol");
var symbolSize = mlModel.get("symbolSize");
var symbolRotate = mlModel.get("symbolRotate");
var symbolOffset = mlModel.get("symbolOffset");
if (!isArray$1(symbolType)) {
symbolType = [symbolType, symbolType];
}
if (!isArray$1(symbolSize)) {
symbolSize = [symbolSize, symbolSize];
}
if (!isArray$1(symbolRotate)) {
symbolRotate = [symbolRotate, symbolRotate];
}
if (!isArray$1(symbolOffset)) {
symbolOffset = [symbolOffset, symbolOffset];
}
mlData.from.each(function(idx) {
updateDataVisualAndLayout(fromData, idx, true);
updateDataVisualAndLayout(toData, idx, false);
});
lineData.each(function(idx) {
var lineStyle = lineData.getItemModel(idx).getModel("lineStyle").getLineStyle();
lineData.setItemLayout(idx, [fromData.getItemLayout(idx), toData.getItemLayout(idx)]);
if (lineStyle.stroke == null) {
lineStyle.stroke = fromData.getItemVisual(idx, "style").fill;
}
lineData.setItemVisual(idx, {
fromSymbolKeepAspect: fromData.getItemVisual(idx, "symbolKeepAspect"),
fromSymbolOffset: fromData.getItemVisual(idx, "symbolOffset"),
fromSymbolRotate: fromData.getItemVisual(idx, "symbolRotate"),
fromSymbolSize: fromData.getItemVisual(idx, "symbolSize"),
fromSymbol: fromData.getItemVisual(idx, "symbol"),
toSymbolKeepAspect: toData.getItemVisual(idx, "symbolKeepAspect"),
toSymbolOffset: toData.getItemVisual(idx, "symbolOffset"),
toSymbolRotate: toData.getItemVisual(idx, "symbolRotate"),
toSymbolSize: toData.getItemVisual(idx, "symbolSize"),
toSymbol: toData.getItemVisual(idx, "symbol"),
style: lineStyle
});
});
lineDraw.updateData(lineData);
mlData.line.eachItemGraphicEl(function(el2) {
getECData(el2).dataModel = mlModel;
el2.traverse(function(child) {
getECData(child).dataModel = mlModel;
});
});
function updateDataVisualAndLayout(data, idx, isFrom) {
var itemModel = data.getItemModel(idx);
updateSingleMarkerEndLayout(data, idx, isFrom, seriesModel, api);
var style2 = itemModel.getModel("itemStyle").getItemStyle();
if (style2.fill == null) {
style2.fill = getVisualFromData(seriesData, "color");
}
data.setItemVisual(idx, {
symbolKeepAspect: itemModel.get("symbolKeepAspect"),
// `0` should be considered as a valid value, so use `retrieve2` instead of `||`
symbolOffset: retrieve2(itemModel.get("symbolOffset", true), symbolOffset[isFrom ? 0 : 1]),
symbolRotate: retrieve2(itemModel.get("symbolRotate", true), symbolRotate[isFrom ? 0 : 1]),
// TODO: when 2d array is supported, it should ignore parent
symbolSize: retrieve2(itemModel.get("symbolSize"), symbolSize[isFrom ? 0 : 1]),
symbol: retrieve2(itemModel.get("symbol", true), symbolType[isFrom ? 0 : 1]),
style: style2
});
}
this.markKeep(lineDraw);
lineDraw.group.silent = mlModel.get("silent") || seriesModel.get("silent");
};
MarkLineView2.type = "markLine";
return MarkLineView2;
}(MarkerView)
);
function createList$1(coordSys, seriesModel, mlModel) {
var coordDimsInfos;
if (coordSys) {
coordDimsInfos = map$1(coordSys && coordSys.dimensions, function(coordDim) {
var info = seriesModel.getData().getDimensionInfo(seriesModel.getData().mapDimension(coordDim)) || {};
return extend(extend({}, info), {
name: coordDim,
// DON'T use ordinalMeta to parse and collect ordinal.
ordinalMeta: null
});
});
} else {
coordDimsInfos = [{
name: "value",
type: "float"
}];
}
var fromData = new SeriesData(coordDimsInfos, mlModel);
var toData = new SeriesData(coordDimsInfos, mlModel);
var lineData = new SeriesData([], mlModel);
var optData = map$1(mlModel.get("data"), curry$1(markLineTransform, seriesModel, coordSys, mlModel));
if (coordSys) {
optData = filter(optData, curry$1(markLineFilter, coordSys));
}
var dimValueGetter = createMarkerDimValueGetter(!!coordSys, coordDimsInfos);
fromData.initData(map$1(optData, function(item) {
return item[0];
}), null, dimValueGetter);
toData.initData(map$1(optData, function(item) {
return item[1];
}), null, dimValueGetter);
lineData.initData(map$1(optData, function(item) {
return item[2];
}));
lineData.hasItemOption = true;
return {
from: fromData,
to: toData,
line: lineData
};
}
function install$d(registers) {
registers.registerComponentModel(MarkLineModel);
registers.registerComponentView(MarkLineView);
registers.registerPreprocessor(function(opt) {
if (checkMarkerInSeries(opt.series, "markLine")) {
opt.markLine = opt.markLine || {};
}
});
}
var MarkAreaModel = (
/** @class */
function(_super) {
__extends(MarkAreaModel2, _super);
function MarkAreaModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = MarkAreaModel2.type;
return _this;
}
MarkAreaModel2.prototype.createMarkerModelFromSeries = function(markerOpt, masterMarkerModel, ecModel) {
return new MarkAreaModel2(markerOpt, masterMarkerModel, ecModel);
};
MarkAreaModel2.type = "markArea";
MarkAreaModel2.defaultOption = {
// zlevel: 0,
// PENDING
z: 1,
tooltip: {
trigger: "item"
},
// markArea should fixed on the coordinate system
animation: false,
label: {
show: true,
position: "top"
},
itemStyle: {
// color and borderColor default to use color from series
// color: 'auto'
// borderColor: 'auto'
borderWidth: 0
},
emphasis: {
label: {
show: true,
position: "top"
}
}
};
return MarkAreaModel2;
}(MarkerModel)
);
var inner$2 = makeInner();
var markAreaTransform = function(seriesModel, coordSys, maModel, item) {
var item0 = item[0];
var item1 = item[1];
if (!item0 || !item1) {
return;
}
var lt2 = dataTransform(seriesModel, item0);
var rb2 = dataTransform(seriesModel, item1);
var ltCoord = lt2.coord;
var rbCoord = rb2.coord;
ltCoord[0] = retrieve(ltCoord[0], -Infinity);
ltCoord[1] = retrieve(ltCoord[1], -Infinity);
rbCoord[0] = retrieve(rbCoord[0], Infinity);
rbCoord[1] = retrieve(rbCoord[1], Infinity);
var result = mergeAll([{}, lt2, rb2]);
result.coord = [lt2.coord, rb2.coord];
result.x0 = lt2.x;
result.y0 = lt2.y;
result.x1 = rb2.x;
result.y1 = rb2.y;
return result;
};
function isInfinity(val) {
return !isNaN(val) && !isFinite(val);
}
function ifMarkAreaHasOnlyDim(dimIndex, fromCoord, toCoord, coordSys) {
var otherDimIndex = 1 - dimIndex;
return isInfinity(fromCoord[otherDimIndex]) && isInfinity(toCoord[otherDimIndex]);
}
function markAreaFilter(coordSys, item) {
var fromCoord = item.coord[0];
var toCoord = item.coord[1];
var item0 = {
coord: fromCoord,
x: item.x0,
y: item.y0
};
var item1 = {
coord: toCoord,
x: item.x1,
y: item.y1
};
if (isCoordinateSystemType(coordSys, "cartesian2d")) {
if (fromCoord && toCoord && (ifMarkAreaHasOnlyDim(1, fromCoord, toCoord) || ifMarkAreaHasOnlyDim(0, fromCoord, toCoord))) {
return true;
}
return zoneFilter(coordSys, item0, item1);
}
return dataFilter(coordSys, item0) || dataFilter(coordSys, item1);
}
function getSingleMarkerEndPoint(data, idx, dims, seriesModel, api) {
var coordSys = seriesModel.coordinateSystem;
var itemModel = data.getItemModel(idx);
var point;
var xPx = parsePercent(itemModel.get(dims[0]), api.getWidth());
var yPx = parsePercent(itemModel.get(dims[1]), api.getHeight());
if (!isNaN(xPx) && !isNaN(yPx)) {
point = [xPx, yPx];
} else {
if (seriesModel.getMarkerPosition) {
var pointValue0 = data.getValues(["x0", "y0"], idx);
var pointValue1 = data.getValues(["x1", "y1"], idx);
var clampPointValue0 = coordSys.clampData(pointValue0);
var clampPointValue1 = coordSys.clampData(pointValue1);
var pointValue = [];
if (dims[0] === "x0") {
pointValue[0] = clampPointValue0[0] > clampPointValue1[0] ? pointValue1[0] : pointValue0[0];
} else {
pointValue[0] = clampPointValue0[0] > clampPointValue1[0] ? pointValue0[0] : pointValue1[0];
}
if (dims[1] === "y0") {
pointValue[1] = clampPointValue0[1] > clampPointValue1[1] ? pointValue1[1] : pointValue0[1];
} else {
pointValue[1] = clampPointValue0[1] > clampPointValue1[1] ? pointValue0[1] : pointValue1[1];
}
point = seriesModel.getMarkerPosition(pointValue, dims, true);
} else {
var x2 = data.get(dims[0], idx);
var y2 = data.get(dims[1], idx);
var pt = [x2, y2];
coordSys.clampData && coordSys.clampData(pt, pt);
point = coordSys.dataToPoint(pt, true);
}
if (isCoordinateSystemType(coordSys, "cartesian2d")) {
var xAxis = coordSys.getAxis("x");
var yAxis = coordSys.getAxis("y");
var x2 = data.get(dims[0], idx);
var y2 = data.get(dims[1], idx);
if (isInfinity(x2)) {
point[0] = xAxis.toGlobalCoord(xAxis.getExtent()[dims[0] === "x0" ? 0 : 1]);
} else if (isInfinity(y2)) {
point[1] = yAxis.toGlobalCoord(yAxis.getExtent()[dims[1] === "y0" ? 0 : 1]);
}
}
if (!isNaN(xPx)) {
point[0] = xPx;
}
if (!isNaN(yPx)) {
point[1] = yPx;
}
}
return point;
}
var dimPermutations = [["x0", "y0"], ["x1", "y0"], ["x1", "y1"], ["x0", "y1"]];
var MarkAreaView = (
/** @class */
function(_super) {
__extends(MarkAreaView2, _super);
function MarkAreaView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = MarkAreaView2.type;
return _this;
}
MarkAreaView2.prototype.updateTransform = function(markAreaModel, ecModel, api) {
ecModel.eachSeries(function(seriesModel) {
var maModel = MarkerModel.getMarkerModelFromSeries(seriesModel, "markArea");
if (maModel) {
var areaData_1 = maModel.getData();
areaData_1.each(function(idx) {
var points2 = map$1(dimPermutations, function(dim) {
return getSingleMarkerEndPoint(areaData_1, idx, dim, seriesModel, api);
});
areaData_1.setItemLayout(idx, points2);
var el2 = areaData_1.getItemGraphicEl(idx);
el2.setShape("points", points2);
});
}
}, this);
};
MarkAreaView2.prototype.renderSeries = function(seriesModel, maModel, ecModel, api) {
var coordSys = seriesModel.coordinateSystem;
var seriesId = seriesModel.id;
var seriesData = seriesModel.getData();
var areaGroupMap = this.markerGroupMap;
var polygonGroup = areaGroupMap.get(seriesId) || areaGroupMap.set(seriesId, {
group: new Group$3()
});
this.group.add(polygonGroup.group);
this.markKeep(polygonGroup);
var areaData = createList(coordSys, seriesModel, maModel);
maModel.setData(areaData);
areaData.each(function(idx) {
var points2 = map$1(dimPermutations, function(dim) {
return getSingleMarkerEndPoint(areaData, idx, dim, seriesModel, api);
});
var xAxisScale = coordSys.getAxis("x").scale;
var yAxisScale = coordSys.getAxis("y").scale;
var xAxisExtent = xAxisScale.getExtent();
var yAxisExtent = yAxisScale.getExtent();
var xPointExtent = [xAxisScale.parse(areaData.get("x0", idx)), xAxisScale.parse(areaData.get("x1", idx))];
var yPointExtent = [yAxisScale.parse(areaData.get("y0", idx)), yAxisScale.parse(areaData.get("y1", idx))];
asc$2(xPointExtent);
asc$2(yPointExtent);
var overlapped = !(xAxisExtent[0] > xPointExtent[1] || xAxisExtent[1] < xPointExtent[0] || yAxisExtent[0] > yPointExtent[1] || yAxisExtent[1] < yPointExtent[0]);
var allClipped = !overlapped;
areaData.setItemLayout(idx, {
points: points2,
allClipped
});
var style2 = areaData.getItemModel(idx).getModel("itemStyle").getItemStyle();
var color$1 = getVisualFromData(seriesData, "color");
if (!style2.fill) {
style2.fill = color$1;
if (isString$1(style2.fill)) {
style2.fill = modifyAlpha(style2.fill, 0.4);
}
}
if (!style2.stroke) {
style2.stroke = color$1;
}
areaData.setItemVisual(idx, "style", style2);
});
areaData.diff(inner$2(polygonGroup).data).add(function(idx) {
var layout2 = areaData.getItemLayout(idx);
if (!layout2.allClipped) {
var polygon = new Polygon({
shape: {
points: layout2.points
}
});
areaData.setItemGraphicEl(idx, polygon);
polygonGroup.group.add(polygon);
}
}).update(function(newIdx, oldIdx) {
var polygon = inner$2(polygonGroup).data.getItemGraphicEl(oldIdx);
var layout2 = areaData.getItemLayout(newIdx);
if (!layout2.allClipped) {
if (polygon) {
updateProps$1(polygon, {
shape: {
points: layout2.points
}
}, maModel, newIdx);
} else {
polygon = new Polygon({
shape: {
points: layout2.points
}
});
}
areaData.setItemGraphicEl(newIdx, polygon);
polygonGroup.group.add(polygon);
} else if (polygon) {
polygonGroup.group.remove(polygon);
}
}).remove(function(idx) {
var polygon = inner$2(polygonGroup).data.getItemGraphicEl(idx);
polygonGroup.group.remove(polygon);
}).execute();
areaData.eachItemGraphicEl(function(polygon, idx) {
var itemModel = areaData.getItemModel(idx);
var style2 = areaData.getItemVisual(idx, "style");
polygon.useStyle(areaData.getItemVisual(idx, "style"));
setLabelStyle(polygon, getLabelStatesModels(itemModel), {
labelFetcher: maModel,
labelDataIndex: idx,
defaultText: areaData.getName(idx) || "",
inheritColor: isString$1(style2.fill) ? modifyAlpha(style2.fill, 1) : "#000"
});
setStatesStylesFromModel(polygon, itemModel);
toggleHoverEmphasis(polygon, null, null, itemModel.get(["emphasis", "disabled"]));
getECData(polygon).dataModel = maModel;
});
inner$2(polygonGroup).data = areaData;
polygonGroup.group.silent = maModel.get("silent") || seriesModel.get("silent");
};
MarkAreaView2.type = "markArea";
return MarkAreaView2;
}(MarkerView)
);
function createList(coordSys, seriesModel, maModel) {
var areaData;
var dataDims;
var dims = ["x0", "y0", "x1", "y1"];
if (coordSys) {
var coordDimsInfos_1 = map$1(coordSys && coordSys.dimensions, function(coordDim) {
var data = seriesModel.getData();
var info = data.getDimensionInfo(data.mapDimension(coordDim)) || {};
return extend(extend({}, info), {
name: coordDim,
// DON'T use ordinalMeta to parse and collect ordinal.
ordinalMeta: null
});
});
dataDims = map$1(dims, function(dim, idx) {
return {
name: dim,
type: coordDimsInfos_1[idx % 2].type
};
});
areaData = new SeriesData(dataDims, maModel);
} else {
dataDims = [{
name: "value",
type: "float"
}];
areaData = new SeriesData(dataDims, maModel);
}
var optData = map$1(maModel.get("data"), curry$1(markAreaTransform, seriesModel, coordSys, maModel));
if (coordSys) {
optData = filter(optData, curry$1(markAreaFilter, coordSys));
}
var dimValueGetter = coordSys ? function(item, dimName, dataIndex, dimIndex) {
var rawVal = item.coord[Math.floor(dimIndex / 2)][dimIndex % 2];
return parseDataValue(rawVal, dataDims[dimIndex]);
} : function(item, dimName, dataIndex, dimIndex) {
return parseDataValue(item.value, dataDims[dimIndex]);
};
areaData.initData(optData, null, dimValueGetter);
areaData.hasItemOption = true;
return areaData;
}
function install$c(registers) {
registers.registerComponentModel(MarkAreaModel);
registers.registerComponentView(MarkAreaView);
registers.registerPreprocessor(function(opt) {
if (checkMarkerInSeries(opt.series, "markArea")) {
opt.markArea = opt.markArea || {};
}
});
}
var getDefaultSelectorOptions = function(ecModel, type4) {
if (type4 === "all") {
return {
type: "all",
title: ecModel.getLocaleModel().get(["legend", "selector", "all"])
};
} else if (type4 === "inverse") {
return {
type: "inverse",
title: ecModel.getLocaleModel().get(["legend", "selector", "inverse"])
};
}
};
var LegendModel = (
/** @class */
function(_super) {
__extends(LegendModel2, _super);
function LegendModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = LegendModel2.type;
_this.layoutMode = {
type: "box",
// legend.width/height are maxWidth/maxHeight actually,
// whereas real width/height is calculated by its content.
// (Setting {left: 10, right: 10} does not make sense).
// So consider the case:
// `setOption({legend: {left: 10});`
// then `setOption({legend: {right: 10});`
// The previous `left` should be cleared by setting `ignoreSize`.
ignoreSize: true
};
return _this;
}
LegendModel2.prototype.init = function(option, parentModel, ecModel) {
this.mergeDefaultAndTheme(option, ecModel);
option.selected = option.selected || {};
this._updateSelector(option);
};
LegendModel2.prototype.mergeOption = function(option, ecModel) {
_super.prototype.mergeOption.call(this, option, ecModel);
this._updateSelector(option);
};
LegendModel2.prototype._updateSelector = function(option) {
var selector2 = option.selector;
var ecModel = this.ecModel;
if (selector2 === true) {
selector2 = option.selector = ["all", "inverse"];
}
if (isArray$1(selector2)) {
each$f(selector2, function(item, index2) {
isString$1(item) && (item = {
type: item
});
selector2[index2] = merge(item, getDefaultSelectorOptions(ecModel, item.type));
});
}
};
LegendModel2.prototype.optionUpdated = function() {
this._updateData(this.ecModel);
var legendData = this._data;
if (legendData[0] && this.get("selectedMode") === "single") {
var hasSelected = false;
for (var i = 0; i < legendData.length; i++) {
var name_1 = legendData[i].get("name");
if (this.isSelected(name_1)) {
this.select(name_1);
hasSelected = true;
break;
}
}
!hasSelected && this.select(legendData[0].get("name"));
}
};
LegendModel2.prototype._updateData = function(ecModel) {
var potentialData = [];
var availableNames = [];
ecModel.eachRawSeries(function(seriesModel) {
var seriesName = seriesModel.name;
availableNames.push(seriesName);
var isPotential;
if (seriesModel.legendVisualProvider) {
var provider = seriesModel.legendVisualProvider;
var names2 = provider.getAllNames();
if (!ecModel.isSeriesFiltered(seriesModel)) {
availableNames = availableNames.concat(names2);
}
if (names2.length) {
potentialData = potentialData.concat(names2);
} else {
isPotential = true;
}
} else {
isPotential = true;
}
if (isPotential && isNameSpecified(seriesModel)) {
potentialData.push(seriesModel.name);
}
});
this._availableNames = availableNames;
var rawData = this.get("data") || potentialData;
var legendNameMap = createHashMap();
var legendData = map$1(rawData, function(dataItem) {
if (isString$1(dataItem) || isNumber(dataItem)) {
dataItem = {
name: dataItem
};
}
if (legendNameMap.get(dataItem.name)) {
return null;
}
legendNameMap.set(dataItem.name, true);
return new Model(dataItem, this, this.ecModel);
}, this);
this._data = filter(legendData, function(item) {
return !!item;
});
};
LegendModel2.prototype.getData = function() {
return this._data;
};
LegendModel2.prototype.select = function(name) {
var selected = this.option.selected;
var selectedMode = this.get("selectedMode");
if (selectedMode === "single") {
var data = this._data;
each$f(data, function(dataItem) {
selected[dataItem.get("name")] = false;
});
}
selected[name] = true;
};
LegendModel2.prototype.unSelect = function(name) {
if (this.get("selectedMode") !== "single") {
this.option.selected[name] = false;
}
};
LegendModel2.prototype.toggleSelected = function(name) {
var selected = this.option.selected;
if (!selected.hasOwnProperty(name)) {
selected[name] = true;
}
this[selected[name] ? "unSelect" : "select"](name);
};
LegendModel2.prototype.allSelect = function() {
var data = this._data;
var selected = this.option.selected;
each$f(data, function(dataItem) {
selected[dataItem.get("name", true)] = true;
});
};
LegendModel2.prototype.inverseSelect = function() {
var data = this._data;
var selected = this.option.selected;
each$f(data, function(dataItem) {
var name = dataItem.get("name", true);
if (!selected.hasOwnProperty(name)) {
selected[name] = true;
}
selected[name] = !selected[name];
});
};
LegendModel2.prototype.isSelected = function(name) {
var selected = this.option.selected;
return !(selected.hasOwnProperty(name) && !selected[name]) && indexOf(this._availableNames, name) >= 0;
};
LegendModel2.prototype.getOrient = function() {
return this.get("orient") === "vertical" ? {
index: 1,
name: "vertical"
} : {
index: 0,
name: "horizontal"
};
};
LegendModel2.type = "legend.plain";
LegendModel2.dependencies = ["series"];
LegendModel2.defaultOption = {
// zlevel: 0,
z: 4,
show: true,
orient: "horizontal",
left: "center",
// right: 'center',
top: 0,
// bottom: null,
align: "auto",
backgroundColor: "rgba(0,0,0,0)",
borderColor: "#ccc",
borderRadius: 0,
borderWidth: 0,
padding: 5,
itemGap: 10,
itemWidth: 25,
itemHeight: 14,
symbolRotate: "inherit",
symbolKeepAspect: true,
inactiveColor: "#ccc",
inactiveBorderColor: "#ccc",
inactiveBorderWidth: "auto",
itemStyle: {
color: "inherit",
opacity: "inherit",
borderColor: "inherit",
borderWidth: "auto",
borderCap: "inherit",
borderJoin: "inherit",
borderDashOffset: "inherit",
borderMiterLimit: "inherit"
},
lineStyle: {
width: "auto",
color: "inherit",
inactiveColor: "#ccc",
inactiveWidth: 2,
opacity: "inherit",
type: "inherit",
cap: "inherit",
join: "inherit",
dashOffset: "inherit",
miterLimit: "inherit"
},
textStyle: {
color: "#333"
},
selectedMode: true,
selector: false,
selectorLabel: {
show: true,
borderRadius: 10,
padding: [3, 5, 3, 5],
fontSize: 12,
fontFamily: "sans-serif",
color: "#666",
borderWidth: 1,
borderColor: "#666"
},
emphasis: {
selectorLabel: {
show: true,
color: "#eee",
backgroundColor: "#666"
}
},
selectorPosition: "auto",
selectorItemGap: 7,
selectorButtonGap: 10,
tooltip: {
show: false
}
};
return LegendModel2;
}(ComponentModel)
);
var curry = curry$1;
var each$3 = each$f;
var Group$1 = Group$3;
var LegendView = (
/** @class */
function(_super) {
__extends(LegendView2, _super);
function LegendView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = LegendView2.type;
_this.newlineDisabled = false;
return _this;
}
LegendView2.prototype.init = function() {
this.group.add(this._contentGroup = new Group$1());
this.group.add(this._selectorGroup = new Group$1());
this._isFirstRender = true;
};
LegendView2.prototype.getContentGroup = function() {
return this._contentGroup;
};
LegendView2.prototype.getSelectorGroup = function() {
return this._selectorGroup;
};
LegendView2.prototype.render = function(legendModel, ecModel, api) {
var isFirstRender = this._isFirstRender;
this._isFirstRender = false;
this.resetInner();
if (!legendModel.get("show", true)) {
return;
}
var itemAlign = legendModel.get("align");
var orient = legendModel.get("orient");
if (!itemAlign || itemAlign === "auto") {
itemAlign = legendModel.get("left") === "right" && orient === "vertical" ? "right" : "left";
}
var selector2 = legendModel.get("selector", true);
var selectorPosition = legendModel.get("selectorPosition", true);
if (selector2 && (!selectorPosition || selectorPosition === "auto")) {
selectorPosition = orient === "horizontal" ? "end" : "start";
}
this.renderInner(itemAlign, legendModel, ecModel, api, selector2, orient, selectorPosition);
var positionInfo = legendModel.getBoxLayoutParams();
var viewportSize = {
width: api.getWidth(),
height: api.getHeight()
};
var padding = legendModel.get("padding");
var maxSize = getLayoutRect(positionInfo, viewportSize, padding);
var mainRect = this.layoutInner(legendModel, itemAlign, maxSize, isFirstRender, selector2, selectorPosition);
var layoutRect = getLayoutRect(defaults({
width: mainRect.width,
height: mainRect.height
}, positionInfo), viewportSize, padding);
this.group.x = layoutRect.x - mainRect.x;
this.group.y = layoutRect.y - mainRect.y;
this.group.markRedraw();
this.group.add(this._backgroundEl = makeBackground(mainRect, legendModel));
};
LegendView2.prototype.resetInner = function() {
this.getContentGroup().removeAll();
this._backgroundEl && this.group.remove(this._backgroundEl);
this.getSelectorGroup().removeAll();
};
LegendView2.prototype.renderInner = function(itemAlign, legendModel, ecModel, api, selector2, orient, selectorPosition) {
var contentGroup = this.getContentGroup();
var legendDrawnMap = createHashMap();
var selectMode = legendModel.get("selectedMode");
var excludeSeriesId = [];
ecModel.eachRawSeries(function(seriesModel) {
!seriesModel.get("legendHoverLink") && excludeSeriesId.push(seriesModel.id);
});
each$3(legendModel.getData(), function(legendItemModel, dataIndex) {
var name = legendItemModel.get("name");
if (!this.newlineDisabled && (name === "" || name === "\n")) {
var g2 = new Group$1();
g2.newline = true;
contentGroup.add(g2);
return;
}
var seriesModel = ecModel.getSeriesByName(name)[0];
if (legendDrawnMap.get(name)) {
return;
}
if (seriesModel) {
var data = seriesModel.getData();
var lineVisualStyle = data.getVisual("legendLineStyle") || {};
var legendIcon = data.getVisual("legendIcon");
var style2 = data.getVisual("style");
var itemGroup = this._createItem(seriesModel, name, dataIndex, legendItemModel, legendModel, itemAlign, lineVisualStyle, style2, legendIcon, selectMode, api);
itemGroup.on("click", curry(dispatchSelectAction, name, null, api, excludeSeriesId)).on("mouseover", curry(dispatchHighlightAction, seriesModel.name, null, api, excludeSeriesId)).on("mouseout", curry(dispatchDownplayAction, seriesModel.name, null, api, excludeSeriesId));
if (ecModel.ssr) {
itemGroup.eachChild(function(child) {
var ecData = getECData(child);
ecData.seriesIndex = seriesModel.seriesIndex;
ecData.dataIndex = dataIndex;
ecData.ssrType = "legend";
});
}
legendDrawnMap.set(name, true);
} else {
ecModel.eachRawSeries(function(seriesModel2) {
if (legendDrawnMap.get(name)) {
return;
}
if (seriesModel2.legendVisualProvider) {
var provider = seriesModel2.legendVisualProvider;
if (!provider.containName(name)) {
return;
}
var idx = provider.indexOfName(name);
var style22 = provider.getItemVisual(idx, "style");
var legendIcon2 = provider.getItemVisual(idx, "legendIcon");
var colorArr = parse$1(style22.fill);
if (colorArr && colorArr[3] === 0) {
colorArr[3] = 0.2;
style22 = extend(extend({}, style22), {
fill: stringify(colorArr, "rgba")
});
}
var itemGroup2 = this._createItem(seriesModel2, name, dataIndex, legendItemModel, legendModel, itemAlign, {}, style22, legendIcon2, selectMode, api);
itemGroup2.on("click", curry(dispatchSelectAction, null, name, api, excludeSeriesId)).on("mouseover", curry(dispatchHighlightAction, null, name, api, excludeSeriesId)).on("mouseout", curry(dispatchDownplayAction, null, name, api, excludeSeriesId));
if (ecModel.ssr) {
itemGroup2.eachChild(function(child) {
var ecData = getECData(child);
ecData.seriesIndex = seriesModel2.seriesIndex;
ecData.dataIndex = dataIndex;
ecData.ssrType = "legend";
});
}
legendDrawnMap.set(name, true);
}
}, this);
}
}, this);
if (selector2) {
this._createSelector(selector2, legendModel, api, orient, selectorPosition);
}
};
LegendView2.prototype._createSelector = function(selector2, legendModel, api, orient, selectorPosition) {
var selectorGroup = this.getSelectorGroup();
each$3(selector2, function createSelectorButton(selectorItem) {
var type4 = selectorItem.type;
var labelText = new ZRText({
style: {
x: 0,
y: 0,
align: "center",
verticalAlign: "middle"
},
onclick: function() {
api.dispatchAction({
type: type4 === "all" ? "legendAllSelect" : "legendInverseSelect"
});
}
});
selectorGroup.add(labelText);
var labelModel = legendModel.getModel("selectorLabel");
var emphasisLabelModel = legendModel.getModel(["emphasis", "selectorLabel"]);
setLabelStyle(labelText, {
normal: labelModel,
emphasis: emphasisLabelModel
}, {
defaultText: selectorItem.title
});
enableHoverEmphasis(labelText);
});
};
LegendView2.prototype._createItem = function(seriesModel, name, dataIndex, legendItemModel, legendModel, itemAlign, lineVisualStyle, itemVisualStyle, legendIcon, selectMode, api) {
var drawType = seriesModel.visualDrawType;
var itemWidth = legendModel.get("itemWidth");
var itemHeight = legendModel.get("itemHeight");
var isSelected = legendModel.isSelected(name);
var iconRotate = legendItemModel.get("symbolRotate");
var symbolKeepAspect = legendItemModel.get("symbolKeepAspect");
var legendIconType = legendItemModel.get("icon");
legendIcon = legendIconType || legendIcon || "roundRect";
var style2 = getLegendStyle(legendIcon, legendItemModel, lineVisualStyle, itemVisualStyle, drawType, isSelected, api);
var itemGroup = new Group$1();
var textStyleModel = legendItemModel.getModel("textStyle");
if (isFunction$1(seriesModel.getLegendIcon) && (!legendIconType || legendIconType === "inherit")) {
itemGroup.add(seriesModel.getLegendIcon({
itemWidth,
itemHeight,
icon: legendIcon,
iconRotate,
itemStyle: style2.itemStyle,
lineStyle: style2.lineStyle,
symbolKeepAspect
}));
} else {
var rotate2 = legendIconType === "inherit" && seriesModel.getData().getVisual("symbol") ? iconRotate === "inherit" ? seriesModel.getData().getVisual("symbolRotate") : iconRotate : 0;
itemGroup.add(getDefaultLegendIcon({
itemWidth,
itemHeight,
icon: legendIcon,
iconRotate: rotate2,
itemStyle: style2.itemStyle,
lineStyle: style2.lineStyle,
symbolKeepAspect
}));
}
var textX = itemAlign === "left" ? itemWidth + 5 : -5;
var textAlign = itemAlign;
var formatter = legendModel.get("formatter");
var content = name;
if (isString$1(formatter) && formatter) {
content = formatter.replace("{name}", name != null ? name : "");
} else if (isFunction$1(formatter)) {
content = formatter(name);
}
var textColor = isSelected ? textStyleModel.getTextColor() : legendItemModel.get("inactiveColor");
itemGroup.add(new ZRText({
style: createTextStyle$1(textStyleModel, {
text: content,
x: textX,
y: itemHeight / 2,
fill: textColor,
align: textAlign,
verticalAlign: "middle"
}, {
inheritColor: textColor
})
}));
var hitRect = new Rect$2({
shape: itemGroup.getBoundingRect(),
style: {
// Cannot use 'invisible' because SVG SSR will miss the node
fill: "transparent"
}
});
var tooltipModel = legendItemModel.getModel("tooltip");
if (tooltipModel.get("show")) {
setTooltipConfig({
el: hitRect,
componentModel: legendModel,
itemName: name,
itemTooltipOption: tooltipModel.option
});
}
itemGroup.add(hitRect);
itemGroup.eachChild(function(child) {
child.silent = true;
});
hitRect.silent = !selectMode;
this.getContentGroup().add(itemGroup);
enableHoverEmphasis(itemGroup);
itemGroup.__legendDataIndex = dataIndex;
return itemGroup;
};
LegendView2.prototype.layoutInner = function(legendModel, itemAlign, maxSize, isFirstRender, selector2, selectorPosition) {
var contentGroup = this.getContentGroup();
var selectorGroup = this.getSelectorGroup();
box(legendModel.get("orient"), contentGroup, legendModel.get("itemGap"), maxSize.width, maxSize.height);
var contentRect = contentGroup.getBoundingRect();
var contentPos = [-contentRect.x, -contentRect.y];
selectorGroup.markRedraw();
contentGroup.markRedraw();
if (selector2) {
box(
// Buttons in selectorGroup always layout horizontally
"horizontal",
selectorGroup,
legendModel.get("selectorItemGap", true)
);
var selectorRect = selectorGroup.getBoundingRect();
var selectorPos = [-selectorRect.x, -selectorRect.y];
var selectorButtonGap = legendModel.get("selectorButtonGap", true);
var orientIdx = legendModel.getOrient().index;
var wh2 = orientIdx === 0 ? "width" : "height";
var hw = orientIdx === 0 ? "height" : "width";
var yx = orientIdx === 0 ? "y" : "x";
if (selectorPosition === "end") {
selectorPos[orientIdx] += contentRect[wh2] + selectorButtonGap;
} else {
contentPos[orientIdx] += selectorRect[wh2] + selectorButtonGap;
}
selectorPos[1 - orientIdx] += contentRect[hw] / 2 - selectorRect[hw] / 2;
selectorGroup.x = selectorPos[0];
selectorGroup.y = selectorPos[1];
contentGroup.x = contentPos[0];
contentGroup.y = contentPos[1];
var mainRect = {
x: 0,
y: 0
};
mainRect[wh2] = contentRect[wh2] + selectorButtonGap + selectorRect[wh2];
mainRect[hw] = Math.max(contentRect[hw], selectorRect[hw]);
mainRect[yx] = Math.min(0, selectorRect[yx] + selectorPos[1 - orientIdx]);
return mainRect;
} else {
contentGroup.x = contentPos[0];
contentGroup.y = contentPos[1];
return this.group.getBoundingRect();
}
};
LegendView2.prototype.remove = function() {
this.getContentGroup().removeAll();
this._isFirstRender = true;
};
LegendView2.type = "legend.plain";
return LegendView2;
}(ComponentView)
);
function getLegendStyle(iconType, legendItemModel, lineVisualStyle, itemVisualStyle, drawType, isSelected, api) {
function handleCommonProps(style2, visualStyle) {
if (style2.lineWidth === "auto") {
style2.lineWidth = visualStyle.lineWidth > 0 ? 2 : 0;
}
each$3(style2, function(propVal, propName) {
style2[propName] === "inherit" && (style2[propName] = visualStyle[propName]);
});
}
var itemStyleModel = legendItemModel.getModel("itemStyle");
var itemStyle = itemStyleModel.getItemStyle();
var iconBrushType = iconType.lastIndexOf("empty", 0) === 0 ? "fill" : "stroke";
var decalStyle = itemStyleModel.getShallow("decal");
itemStyle.decal = !decalStyle || decalStyle === "inherit" ? itemVisualStyle.decal : createOrUpdatePatternFromDecal(decalStyle, api);
if (itemStyle.fill === "inherit") {
itemStyle.fill = itemVisualStyle[drawType];
}
if (itemStyle.stroke === "inherit") {
itemStyle.stroke = itemVisualStyle[iconBrushType];
}
if (itemStyle.opacity === "inherit") {
itemStyle.opacity = (drawType === "fill" ? itemVisualStyle : lineVisualStyle).opacity;
}
handleCommonProps(itemStyle, itemVisualStyle);
var legendLineModel = legendItemModel.getModel("lineStyle");
var lineStyle = legendLineModel.getLineStyle();
handleCommonProps(lineStyle, lineVisualStyle);
itemStyle.fill === "auto" && (itemStyle.fill = itemVisualStyle.fill);
itemStyle.stroke === "auto" && (itemStyle.stroke = itemVisualStyle.fill);
lineStyle.stroke === "auto" && (lineStyle.stroke = itemVisualStyle.fill);
if (!isSelected) {
var borderWidth2 = legendItemModel.get("inactiveBorderWidth");
var visualHasBorder = itemStyle[iconBrushType];
itemStyle.lineWidth = borderWidth2 === "auto" ? itemVisualStyle.lineWidth > 0 && visualHasBorder ? 2 : 0 : itemStyle.lineWidth;
itemStyle.fill = legendItemModel.get("inactiveColor");
itemStyle.stroke = legendItemModel.get("inactiveBorderColor");
lineStyle.stroke = legendLineModel.get("inactiveColor");
lineStyle.lineWidth = legendLineModel.get("inactiveWidth");
}
return {
itemStyle,
lineStyle
};
}
function getDefaultLegendIcon(opt) {
var symboType = opt.icon || "roundRect";
var icon = createSymbol$1(symboType, 0, 0, opt.itemWidth, opt.itemHeight, opt.itemStyle.fill, opt.symbolKeepAspect);
icon.setStyle(opt.itemStyle);
icon.rotation = (opt.iconRotate || 0) * Math.PI / 180;
icon.setOrigin([opt.itemWidth / 2, opt.itemHeight / 2]);
if (symboType.indexOf("empty") > -1) {
icon.style.stroke = icon.style.fill;
icon.style.fill = "#fff";
icon.style.lineWidth = 2;
}
return icon;
}
function dispatchSelectAction(seriesName, dataName, api, excludeSeriesId) {
dispatchDownplayAction(seriesName, dataName, api, excludeSeriesId);
api.dispatchAction({
type: "legendToggleSelect",
name: seriesName != null ? seriesName : dataName
});
dispatchHighlightAction(seriesName, dataName, api, excludeSeriesId);
}
function isUseHoverLayer(api) {
var list = api.getZr().storage.getDisplayList();
var emphasisState;
var i = 0;
var len2 = list.length;
while (i < len2 && !(emphasisState = list[i].states.emphasis)) {
i++;
}
return emphasisState && emphasisState.hoverLayer;
}
function dispatchHighlightAction(seriesName, dataName, api, excludeSeriesId) {
if (!isUseHoverLayer(api)) {
api.dispatchAction({
type: "highlight",
seriesName,
name: dataName,
excludeSeriesId
});
}
}
function dispatchDownplayAction(seriesName, dataName, api, excludeSeriesId) {
if (!isUseHoverLayer(api)) {
api.dispatchAction({
type: "downplay",
seriesName,
name: dataName,
excludeSeriesId
});
}
}
function legendFilter(ecModel) {
var legendModels = ecModel.findComponents({
mainType: "legend"
});
if (legendModels && legendModels.length) {
ecModel.filterSeries(function(series) {
for (var i = 0; i < legendModels.length; i++) {
if (!legendModels[i].isSelected(series.name)) {
return false;
}
}
return true;
});
}
}
function legendSelectActionHandler(methodName, payload, ecModel) {
var selectedMap = {};
var isToggleSelect = methodName === "toggleSelected";
var isSelected;
ecModel.eachComponent("legend", function(legendModel) {
if (isToggleSelect && isSelected != null) {
legendModel[isSelected ? "select" : "unSelect"](payload.name);
} else if (methodName === "allSelect" || methodName === "inverseSelect") {
legendModel[methodName]();
} else {
legendModel[methodName](payload.name);
isSelected = legendModel.isSelected(payload.name);
}
var legendData = legendModel.getData();
each$f(legendData, function(model) {
var name = model.get("name");
if (name === "\n" || name === "") {
return;
}
var isItemSelected = legendModel.isSelected(name);
if (selectedMap.hasOwnProperty(name)) {
selectedMap[name] = selectedMap[name] && isItemSelected;
} else {
selectedMap[name] = isItemSelected;
}
});
});
return methodName === "allSelect" || methodName === "inverseSelect" ? {
selected: selectedMap
} : {
name: payload.name,
selected: selectedMap
};
}
function installLegendAction(registers) {
registers.registerAction("legendToggleSelect", "legendselectchanged", curry$1(legendSelectActionHandler, "toggleSelected"));
registers.registerAction("legendAllSelect", "legendselectall", curry$1(legendSelectActionHandler, "allSelect"));
registers.registerAction("legendInverseSelect", "legendinverseselect", curry$1(legendSelectActionHandler, "inverseSelect"));
registers.registerAction("legendSelect", "legendselected", curry$1(legendSelectActionHandler, "select"));
registers.registerAction("legendUnSelect", "legendunselected", curry$1(legendSelectActionHandler, "unSelect"));
}
function install$b(registers) {
registers.registerComponentModel(LegendModel);
registers.registerComponentView(LegendView);
registers.registerProcessor(registers.PRIORITY.PROCESSOR.SERIES_FILTER, legendFilter);
registers.registerSubTypeDefaulter("legend", function() {
return "plain";
});
installLegendAction(registers);
}
var ScrollableLegendModel = (
/** @class */
function(_super) {
__extends(ScrollableLegendModel2, _super);
function ScrollableLegendModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = ScrollableLegendModel2.type;
return _this;
}
ScrollableLegendModel2.prototype.setScrollDataIndex = function(scrollDataIndex) {
this.option.scrollDataIndex = scrollDataIndex;
};
ScrollableLegendModel2.prototype.init = function(option, parentModel, ecModel) {
var inputPositionParams = getLayoutParams(option);
_super.prototype.init.call(this, option, parentModel, ecModel);
mergeAndNormalizeLayoutParams(this, option, inputPositionParams);
};
ScrollableLegendModel2.prototype.mergeOption = function(option, ecModel) {
_super.prototype.mergeOption.call(this, option, ecModel);
mergeAndNormalizeLayoutParams(this, this.option, option);
};
ScrollableLegendModel2.type = "legend.scroll";
ScrollableLegendModel2.defaultOption = inheritDefaultOption(LegendModel.defaultOption, {
scrollDataIndex: 0,
pageButtonItemGap: 5,
pageButtonGap: null,
pageButtonPosition: "end",
pageFormatter: "{current}/{total}",
pageIcons: {
horizontal: ["M0,0L12,-10L12,10z", "M0,0L-12,-10L-12,10z"],
vertical: ["M0,0L20,0L10,-20z", "M0,0L20,0L10,20z"]
},
pageIconColor: "#2f4554",
pageIconInactiveColor: "#aaa",
pageIconSize: 15,
pageTextStyle: {
color: "#333"
},
animationDurationUpdate: 800
});
return ScrollableLegendModel2;
}(LegendModel)
);
function mergeAndNormalizeLayoutParams(legendModel, target, raw) {
var orient = legendModel.getOrient();
var ignoreSize = [1, 1];
ignoreSize[orient.index] = 0;
mergeLayoutParam(target, raw, {
type: "box",
ignoreSize: !!ignoreSize
});
}
var Group = Group$3;
var WH = ["width", "height"];
var XY = ["x", "y"];
var ScrollableLegendView = (
/** @class */
function(_super) {
__extends(ScrollableLegendView2, _super);
function ScrollableLegendView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = ScrollableLegendView2.type;
_this.newlineDisabled = true;
_this._currentIndex = 0;
return _this;
}
ScrollableLegendView2.prototype.init = function() {
_super.prototype.init.call(this);
this.group.add(this._containerGroup = new Group());
this._containerGroup.add(this.getContentGroup());
this.group.add(this._controllerGroup = new Group());
};
ScrollableLegendView2.prototype.resetInner = function() {
_super.prototype.resetInner.call(this);
this._controllerGroup.removeAll();
this._containerGroup.removeClipPath();
this._containerGroup.__rectSize = null;
};
ScrollableLegendView2.prototype.renderInner = function(itemAlign, legendModel, ecModel, api, selector2, orient, selectorPosition) {
var self2 = this;
_super.prototype.renderInner.call(this, itemAlign, legendModel, ecModel, api, selector2, orient, selectorPosition);
var controllerGroup = this._controllerGroup;
var pageIconSize = legendModel.get("pageIconSize", true);
var pageIconSizeArr = isArray$1(pageIconSize) ? pageIconSize : [pageIconSize, pageIconSize];
createPageButton("pagePrev", 0);
var pageTextStyleModel = legendModel.getModel("pageTextStyle");
controllerGroup.add(new ZRText({
name: "pageText",
style: {
// Placeholder to calculate a proper layout.
text: "xx/xx",
fill: pageTextStyleModel.getTextColor(),
font: pageTextStyleModel.getFont(),
verticalAlign: "middle",
align: "center"
},
silent: true
}));
createPageButton("pageNext", 1);
function createPageButton(name, iconIdx) {
var pageDataIndexName = name + "DataIndex";
var icon = createIcon(legendModel.get("pageIcons", true)[legendModel.getOrient().name][iconIdx], {
// Buttons will be created in each render, so we do not need
// to worry about avoiding using legendModel kept in scope.
onclick: bind$2(self2._pageGo, self2, pageDataIndexName, legendModel, api)
}, {
x: -pageIconSizeArr[0] / 2,
y: -pageIconSizeArr[1] / 2,
width: pageIconSizeArr[0],
height: pageIconSizeArr[1]
});
icon.name = name;
controllerGroup.add(icon);
}
};
ScrollableLegendView2.prototype.layoutInner = function(legendModel, itemAlign, maxSize, isFirstRender, selector2, selectorPosition) {
var selectorGroup = this.getSelectorGroup();
var orientIdx = legendModel.getOrient().index;
var wh2 = WH[orientIdx];
var xy = XY[orientIdx];
var hw = WH[1 - orientIdx];
var yx = XY[1 - orientIdx];
selector2 && box(
// Buttons in selectorGroup always layout horizontally
"horizontal",
selectorGroup,
legendModel.get("selectorItemGap", true)
);
var selectorButtonGap = legendModel.get("selectorButtonGap", true);
var selectorRect = selectorGroup.getBoundingRect();
var selectorPos = [-selectorRect.x, -selectorRect.y];
var processMaxSize = clone$4(maxSize);
selector2 && (processMaxSize[wh2] = maxSize[wh2] - selectorRect[wh2] - selectorButtonGap);
var mainRect = this._layoutContentAndController(legendModel, isFirstRender, processMaxSize, orientIdx, wh2, hw, yx, xy);
if (selector2) {
if (selectorPosition === "end") {
selectorPos[orientIdx] += mainRect[wh2] + selectorButtonGap;
} else {
var offset2 = selectorRect[wh2] + selectorButtonGap;
selectorPos[orientIdx] -= offset2;
mainRect[xy] -= offset2;
}
mainRect[wh2] += selectorRect[wh2] + selectorButtonGap;
selectorPos[1 - orientIdx] += mainRect[yx] + mainRect[hw] / 2 - selectorRect[hw] / 2;
mainRect[hw] = Math.max(mainRect[hw], selectorRect[hw]);
mainRect[yx] = Math.min(mainRect[yx], selectorRect[yx] + selectorPos[1 - orientIdx]);
selectorGroup.x = selectorPos[0];
selectorGroup.y = selectorPos[1];
selectorGroup.markRedraw();
}
return mainRect;
};
ScrollableLegendView2.prototype._layoutContentAndController = function(legendModel, isFirstRender, maxSize, orientIdx, wh2, hw, yx, xy) {
var contentGroup = this.getContentGroup();
var containerGroup = this._containerGroup;
var controllerGroup = this._controllerGroup;
box(legendModel.get("orient"), contentGroup, legendModel.get("itemGap"), !orientIdx ? null : maxSize.width, orientIdx ? null : maxSize.height);
box(
// Buttons in controller are layout always horizontally.
"horizontal",
controllerGroup,
legendModel.get("pageButtonItemGap", true)
);
var contentRect = contentGroup.getBoundingRect();
var controllerRect = controllerGroup.getBoundingRect();
var showController = this._showController = contentRect[wh2] > maxSize[wh2];
var contentPos = [-contentRect.x, -contentRect.y];
if (!isFirstRender) {
contentPos[orientIdx] = contentGroup[xy];
}
var containerPos = [0, 0];
var controllerPos = [-controllerRect.x, -controllerRect.y];
var pageButtonGap = retrieve2(legendModel.get("pageButtonGap", true), legendModel.get("itemGap", true));
if (showController) {
var pageButtonPosition = legendModel.get("pageButtonPosition", true);
if (pageButtonPosition === "end") {
controllerPos[orientIdx] += maxSize[wh2] - controllerRect[wh2];
} else {
containerPos[orientIdx] += controllerRect[wh2] + pageButtonGap;
}
}
controllerPos[1 - orientIdx] += contentRect[hw] / 2 - controllerRect[hw] / 2;
contentGroup.setPosition(contentPos);
containerGroup.setPosition(containerPos);
controllerGroup.setPosition(controllerPos);
var mainRect = {
x: 0,
y: 0
};
mainRect[wh2] = showController ? maxSize[wh2] : contentRect[wh2];
mainRect[hw] = Math.max(contentRect[hw], controllerRect[hw]);
mainRect[yx] = Math.min(0, controllerRect[yx] + controllerPos[1 - orientIdx]);
containerGroup.__rectSize = maxSize[wh2];
if (showController) {
var clipShape = {
x: 0,
y: 0
};
clipShape[wh2] = Math.max(maxSize[wh2] - controllerRect[wh2] - pageButtonGap, 0);
clipShape[hw] = mainRect[hw];
containerGroup.setClipPath(new Rect$2({
shape: clipShape
}));
containerGroup.__rectSize = clipShape[wh2];
} else {
controllerGroup.eachChild(function(child) {
child.attr({
invisible: true,
silent: true
});
});
}
var pageInfo = this._getPageInfo(legendModel);
pageInfo.pageIndex != null && updateProps$1(
contentGroup,
{
x: pageInfo.contentPosition[0],
y: pageInfo.contentPosition[1]
},
// When switch from "show controller" to "not show controller", view should be
// updated immediately without animation, otherwise causes weird effect.
showController ? legendModel : null
);
this._updatePageInfoView(legendModel, pageInfo);
return mainRect;
};
ScrollableLegendView2.prototype._pageGo = function(to, legendModel, api) {
var scrollDataIndex = this._getPageInfo(legendModel)[to];
scrollDataIndex != null && api.dispatchAction({
type: "legendScroll",
scrollDataIndex,
legendId: legendModel.id
});
};
ScrollableLegendView2.prototype._updatePageInfoView = function(legendModel, pageInfo) {
var controllerGroup = this._controllerGroup;
each$f(["pagePrev", "pageNext"], function(name) {
var key = name + "DataIndex";
var canJump = pageInfo[key] != null;
var icon = controllerGroup.childOfName(name);
if (icon) {
icon.setStyle("fill", canJump ? legendModel.get("pageIconColor", true) : legendModel.get("pageIconInactiveColor", true));
icon.cursor = canJump ? "pointer" : "default";
}
});
var pageText = controllerGroup.childOfName("pageText");
var pageFormatter = legendModel.get("pageFormatter");
var pageIndex = pageInfo.pageIndex;
var current = pageIndex != null ? pageIndex + 1 : 0;
var total = pageInfo.pageCount;
pageText && pageFormatter && pageText.setStyle("text", isString$1(pageFormatter) ? pageFormatter.replace("{current}", current == null ? "" : current + "").replace("{total}", total == null ? "" : total + "") : pageFormatter({
current,
total
}));
};
ScrollableLegendView2.prototype._getPageInfo = function(legendModel) {
var scrollDataIndex = legendModel.get("scrollDataIndex", true);
var contentGroup = this.getContentGroup();
var containerRectSize = this._containerGroup.__rectSize;
var orientIdx = legendModel.getOrient().index;
var wh2 = WH[orientIdx];
var xy = XY[orientIdx];
var targetItemIndex = this._findTargetItemIndex(scrollDataIndex);
var children = contentGroup.children();
var targetItem = children[targetItemIndex];
var itemCount = children.length;
var pCount = !itemCount ? 0 : 1;
var result = {
contentPosition: [contentGroup.x, contentGroup.y],
pageCount: pCount,
pageIndex: pCount - 1,
pagePrevDataIndex: null,
pageNextDataIndex: null
};
if (!targetItem) {
return result;
}
var targetItemInfo = getItemInfo(targetItem);
result.contentPosition[orientIdx] = -targetItemInfo.s;
for (var i = targetItemIndex + 1, winStartItemInfo = targetItemInfo, winEndItemInfo = targetItemInfo, currItemInfo = null; i <= itemCount; ++i) {
currItemInfo = getItemInfo(children[i]);
if (
// Half of the last item is out of the window.
!currItemInfo && winEndItemInfo.e > winStartItemInfo.s + containerRectSize || currItemInfo && !intersect2(currItemInfo, winStartItemInfo.s)
) {
if (winEndItemInfo.i > winStartItemInfo.i) {
winStartItemInfo = winEndItemInfo;
} else {
winStartItemInfo = currItemInfo;
}
if (winStartItemInfo) {
if (result.pageNextDataIndex == null) {
result.pageNextDataIndex = winStartItemInfo.i;
}
++result.pageCount;
}
}
winEndItemInfo = currItemInfo;
}
for (var i = targetItemIndex - 1, winStartItemInfo = targetItemInfo, winEndItemInfo = targetItemInfo, currItemInfo = null; i >= -1; --i) {
currItemInfo = getItemInfo(children[i]);
if (
// If the the end item does not intersect with the window started
// from the current item, a page can be settled.
(!currItemInfo || !intersect2(winEndItemInfo, currItemInfo.s)) && winStartItemInfo.i < winEndItemInfo.i
) {
winEndItemInfo = winStartItemInfo;
if (result.pagePrevDataIndex == null) {
result.pagePrevDataIndex = winStartItemInfo.i;
}
++result.pageCount;
++result.pageIndex;
}
winStartItemInfo = currItemInfo;
}
return result;
function getItemInfo(el2) {
if (el2) {
var itemRect = el2.getBoundingRect();
var start2 = itemRect[xy] + el2[xy];
return {
s: start2,
e: start2 + itemRect[wh2],
i: el2.__legendDataIndex
};
}
}
function intersect2(itemInfo, winStart) {
return itemInfo.e >= winStart && itemInfo.s <= winStart + containerRectSize;
}
};
ScrollableLegendView2.prototype._findTargetItemIndex = function(targetDataIndex) {
if (!this._showController) {
return 0;
}
var index2;
var contentGroup = this.getContentGroup();
var defaultIndex;
contentGroup.eachChild(function(child, idx) {
var legendDataIdx = child.__legendDataIndex;
if (defaultIndex == null && legendDataIdx != null) {
defaultIndex = idx;
}
if (legendDataIdx === targetDataIndex) {
index2 = idx;
}
});
return index2 != null ? index2 : defaultIndex;
};
ScrollableLegendView2.type = "legend.scroll";
return ScrollableLegendView2;
}(LegendView)
);
function installScrollableLegendAction(registers) {
registers.registerAction("legendScroll", "legendscroll", function(payload, ecModel) {
var scrollDataIndex = payload.scrollDataIndex;
scrollDataIndex != null && ecModel.eachComponent({
mainType: "legend",
subType: "scroll",
query: payload
}, function(legendModel) {
legendModel.setScrollDataIndex(scrollDataIndex);
});
});
}
function install$a(registers) {
use(install$b);
registers.registerComponentModel(ScrollableLegendModel);
registers.registerComponentView(ScrollableLegendView);
installScrollableLegendAction(registers);
}
function install$9(registers) {
use(install$b);
use(install$a);
}
var InsideZoomModel = (
/** @class */
function(_super) {
__extends(InsideZoomModel2, _super);
function InsideZoomModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = InsideZoomModel2.type;
return _this;
}
InsideZoomModel2.type = "dataZoom.inside";
InsideZoomModel2.defaultOption = inheritDefaultOption(DataZoomModel.defaultOption, {
disabled: false,
zoomLock: false,
zoomOnMouseWheel: true,
moveOnMouseMove: true,
moveOnMouseWheel: false,
preventDefaultMouseMove: true
});
return InsideZoomModel2;
}(DataZoomModel)
);
var inner$1 = makeInner();
function setViewInfoToCoordSysRecord(api, dataZoomModel, getRange) {
inner$1(api).coordSysRecordMap.each(function(coordSysRecord) {
var dzInfo = coordSysRecord.dataZoomInfoMap.get(dataZoomModel.uid);
if (dzInfo) {
dzInfo.getRange = getRange;
}
});
}
function disposeCoordSysRecordIfNeeded(api, dataZoomModel) {
var coordSysRecordMap = inner$1(api).coordSysRecordMap;
var coordSysKeyArr = coordSysRecordMap.keys();
for (var i = 0; i < coordSysKeyArr.length; i++) {
var coordSysKey = coordSysKeyArr[i];
var coordSysRecord = coordSysRecordMap.get(coordSysKey);
var dataZoomInfoMap = coordSysRecord.dataZoomInfoMap;
if (dataZoomInfoMap) {
var dzUid = dataZoomModel.uid;
var dzInfo = dataZoomInfoMap.get(dzUid);
if (dzInfo) {
dataZoomInfoMap.removeKey(dzUid);
if (!dataZoomInfoMap.keys().length) {
disposeCoordSysRecord(coordSysRecordMap, coordSysRecord);
}
}
}
}
}
function disposeCoordSysRecord(coordSysRecordMap, coordSysRecord) {
if (coordSysRecord) {
coordSysRecordMap.removeKey(coordSysRecord.model.uid);
var controller = coordSysRecord.controller;
controller && controller.dispose();
}
}
function createCoordSysRecord(api, coordSysModel) {
var coordSysRecord = {
model: coordSysModel,
containsPoint: curry$1(containsPoint, coordSysModel),
dispatchAction: curry$1(dispatchAction, api),
dataZoomInfoMap: null,
controller: null
};
var controller = coordSysRecord.controller = new RoamController(api.getZr());
each$f(["pan", "zoom", "scrollMove"], function(eventName) {
controller.on(eventName, function(event) {
var batch = [];
coordSysRecord.dataZoomInfoMap.each(function(dzInfo) {
if (!event.isAvailableBehavior(dzInfo.model.option)) {
return;
}
var method4 = (dzInfo.getRange || {})[eventName];
var range3 = method4 && method4(dzInfo.dzReferCoordSysInfo, coordSysRecord.model.mainType, coordSysRecord.controller, event);
!dzInfo.model.get("disabled", true) && range3 && batch.push({
dataZoomId: dzInfo.model.id,
start: range3[0],
end: range3[1]
});
});
batch.length && coordSysRecord.dispatchAction(batch);
});
});
return coordSysRecord;
}
function dispatchAction(api, batch) {
if (!api.isDisposed()) {
api.dispatchAction({
type: "dataZoom",
animation: {
easing: "cubicOut",
duration: 100
},
batch
});
}
}
function containsPoint(coordSysModel, e2, x2, y2) {
return coordSysModel.coordinateSystem.containPoint([x2, y2]);
}
function mergeControllerParams(dataZoomInfoMap) {
var controlType;
var prefix = "type_";
var typePriority = {
"type_true": 2,
"type_move": 1,
"type_false": 0,
"type_undefined": -1
};
var preventDefaultMouseMove = true;
dataZoomInfoMap.each(function(dataZoomInfo) {
var dataZoomModel = dataZoomInfo.model;
var oneType = dataZoomModel.get("disabled", true) ? false : dataZoomModel.get("zoomLock", true) ? "move" : true;
if (typePriority[prefix + oneType] > typePriority[prefix + controlType]) {
controlType = oneType;
}
preventDefaultMouseMove = preventDefaultMouseMove && dataZoomModel.get("preventDefaultMouseMove", true);
});
return {
controlType,
opt: {
// RoamController will enable all of these functionalities,
// and the final behavior is determined by its event listener
// provided by each inside zoom.
zoomOnMouseWheel: true,
moveOnMouseMove: true,
moveOnMouseWheel: true,
preventDefaultMouseMove: !!preventDefaultMouseMove
}
};
}
function installDataZoomRoamProcessor(registers) {
registers.registerProcessor(registers.PRIORITY.PROCESSOR.FILTER, function(ecModel, api) {
var apiInner = inner$1(api);
var coordSysRecordMap = apiInner.coordSysRecordMap || (apiInner.coordSysRecordMap = createHashMap());
coordSysRecordMap.each(function(coordSysRecord) {
coordSysRecord.dataZoomInfoMap = null;
});
ecModel.eachComponent({
mainType: "dataZoom",
subType: "inside"
}, function(dataZoomModel) {
var dzReferCoordSysWrap = collectReferCoordSysModelInfo(dataZoomModel);
each$f(dzReferCoordSysWrap.infoList, function(dzCoordSysInfo) {
var coordSysUid = dzCoordSysInfo.model.uid;
var coordSysRecord = coordSysRecordMap.get(coordSysUid) || coordSysRecordMap.set(coordSysUid, createCoordSysRecord(api, dzCoordSysInfo.model));
var dataZoomInfoMap = coordSysRecord.dataZoomInfoMap || (coordSysRecord.dataZoomInfoMap = createHashMap());
dataZoomInfoMap.set(dataZoomModel.uid, {
dzReferCoordSysInfo: dzCoordSysInfo,
model: dataZoomModel,
getRange: null
});
});
});
coordSysRecordMap.each(function(coordSysRecord) {
var controller = coordSysRecord.controller;
var firstDzInfo;
var dataZoomInfoMap = coordSysRecord.dataZoomInfoMap;
if (dataZoomInfoMap) {
var firstDzKey = dataZoomInfoMap.keys()[0];
if (firstDzKey != null) {
firstDzInfo = dataZoomInfoMap.get(firstDzKey);
}
}
if (!firstDzInfo) {
disposeCoordSysRecord(coordSysRecordMap, coordSysRecord);
return;
}
var controllerParams = mergeControllerParams(dataZoomInfoMap);
controller.enable(controllerParams.controlType, controllerParams.opt);
controller.setPointerChecker(coordSysRecord.containsPoint);
createOrUpdate(coordSysRecord, "dispatchAction", firstDzInfo.model.get("throttle", true), "fixRate");
});
});
}
var InsideZoomView = (
/** @class */
function(_super) {
__extends(InsideZoomView2, _super);
function InsideZoomView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = "dataZoom.inside";
return _this;
}
InsideZoomView2.prototype.render = function(dataZoomModel, ecModel, api) {
_super.prototype.render.apply(this, arguments);
if (dataZoomModel.noTarget()) {
this._clear();
return;
}
this.range = dataZoomModel.getPercentRange();
setViewInfoToCoordSysRecord(api, dataZoomModel, {
pan: bind$2(getRangeHandlers.pan, this),
zoom: bind$2(getRangeHandlers.zoom, this),
scrollMove: bind$2(getRangeHandlers.scrollMove, this)
});
};
InsideZoomView2.prototype.dispose = function() {
this._clear();
_super.prototype.dispose.apply(this, arguments);
};
InsideZoomView2.prototype._clear = function() {
disposeCoordSysRecordIfNeeded(this.api, this.dataZoomModel);
this.range = null;
};
InsideZoomView2.type = "dataZoom.inside";
return InsideZoomView2;
}(DataZoomView)
);
var getRangeHandlers = {
zoom: function(coordSysInfo, coordSysMainType, controller, e2) {
var lastRange = this.range;
var range3 = lastRange.slice();
var axisModel = coordSysInfo.axisModels[0];
if (!axisModel) {
return;
}
var directionInfo = getDirectionInfo[coordSysMainType](null, [e2.originX, e2.originY], axisModel, controller, coordSysInfo);
var percentPoint = (directionInfo.signal > 0 ? directionInfo.pixelStart + directionInfo.pixelLength - directionInfo.pixel : directionInfo.pixel - directionInfo.pixelStart) / directionInfo.pixelLength * (range3[1] - range3[0]) + range3[0];
var scale2 = Math.max(1 / e2.scale, 0);
range3[0] = (range3[0] - percentPoint) * scale2 + percentPoint;
range3[1] = (range3[1] - percentPoint) * scale2 + percentPoint;
var minMaxSpan = this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();
sliderMove(0, range3, [0, 100], 0, minMaxSpan.minSpan, minMaxSpan.maxSpan);
this.range = range3;
if (lastRange[0] !== range3[0] || lastRange[1] !== range3[1]) {
return range3;
}
},
pan: makeMover(function(range3, axisModel, coordSysInfo, coordSysMainType, controller, e2) {
var directionInfo = getDirectionInfo[coordSysMainType]([e2.oldX, e2.oldY], [e2.newX, e2.newY], axisModel, controller, coordSysInfo);
return directionInfo.signal * (range3[1] - range3[0]) * directionInfo.pixel / directionInfo.pixelLength;
}),
scrollMove: makeMover(function(range3, axisModel, coordSysInfo, coordSysMainType, controller, e2) {
var directionInfo = getDirectionInfo[coordSysMainType]([0, 0], [e2.scrollDelta, e2.scrollDelta], axisModel, controller, coordSysInfo);
return directionInfo.signal * (range3[1] - range3[0]) * e2.scrollDelta;
})
};
function makeMover(getPercentDelta) {
return function(coordSysInfo, coordSysMainType, controller, e2) {
var lastRange = this.range;
var range3 = lastRange.slice();
var axisModel = coordSysInfo.axisModels[0];
if (!axisModel) {
return;
}
var percentDelta = getPercentDelta(range3, axisModel, coordSysInfo, coordSysMainType, controller, e2);
sliderMove(percentDelta, range3, [0, 100], "all");
this.range = range3;
if (lastRange[0] !== range3[0] || lastRange[1] !== range3[1]) {
return range3;
}
};
}
var getDirectionInfo = {
grid: function(oldPoint, newPoint, axisModel, controller, coordSysInfo) {
var axis = axisModel.axis;
var ret = {};
var rect = coordSysInfo.model.coordinateSystem.getRect();
oldPoint = oldPoint || [0, 0];
if (axis.dim === "x") {
ret.pixel = newPoint[0] - oldPoint[0];
ret.pixelLength = rect.width;
ret.pixelStart = rect.x;
ret.signal = axis.inverse ? 1 : -1;
} else {
ret.pixel = newPoint[1] - oldPoint[1];
ret.pixelLength = rect.height;
ret.pixelStart = rect.y;
ret.signal = axis.inverse ? -1 : 1;
}
return ret;
},
polar: function(oldPoint, newPoint, axisModel, controller, coordSysInfo) {
var axis = axisModel.axis;
var ret = {};
var polar = coordSysInfo.model.coordinateSystem;
var radiusExtent = polar.getRadiusAxis().getExtent();
var angleExtent = polar.getAngleAxis().getExtent();
oldPoint = oldPoint ? polar.pointToCoord(oldPoint) : [0, 0];
newPoint = polar.pointToCoord(newPoint);
if (axisModel.mainType === "radiusAxis") {
ret.pixel = newPoint[0] - oldPoint[0];
ret.pixelLength = radiusExtent[1] - radiusExtent[0];
ret.pixelStart = radiusExtent[0];
ret.signal = axis.inverse ? 1 : -1;
} else {
ret.pixel = newPoint[1] - oldPoint[1];
ret.pixelLength = angleExtent[1] - angleExtent[0];
ret.pixelStart = angleExtent[0];
ret.signal = axis.inverse ? -1 : 1;
}
return ret;
},
singleAxis: function(oldPoint, newPoint, axisModel, controller, coordSysInfo) {
var axis = axisModel.axis;
var rect = coordSysInfo.model.coordinateSystem.getRect();
var ret = {};
oldPoint = oldPoint || [0, 0];
if (axis.orient === "horizontal") {
ret.pixel = newPoint[0] - oldPoint[0];
ret.pixelLength = rect.width;
ret.pixelStart = rect.x;
ret.signal = axis.inverse ? 1 : -1;
} else {
ret.pixel = newPoint[1] - oldPoint[1];
ret.pixelLength = rect.height;
ret.pixelStart = rect.y;
ret.signal = axis.inverse ? -1 : 1;
}
return ret;
}
};
function install$8(registers) {
installCommon$1(registers);
registers.registerComponentModel(InsideZoomModel);
registers.registerComponentView(InsideZoomView);
installDataZoomRoamProcessor(registers);
}
var SliderZoomModel = (
/** @class */
function(_super) {
__extends(SliderZoomModel2, _super);
function SliderZoomModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = SliderZoomModel2.type;
return _this;
}
SliderZoomModel2.type = "dataZoom.slider";
SliderZoomModel2.layoutMode = "box";
SliderZoomModel2.defaultOption = inheritDefaultOption(DataZoomModel.defaultOption, {
show: true,
// deault value can only be drived in view stage.
right: "ph",
top: "ph",
width: "ph",
height: "ph",
left: null,
bottom: null,
borderColor: "#d2dbee",
borderRadius: 3,
backgroundColor: "rgba(47,69,84,0)",
// dataBackgroundColor: '#ddd',
dataBackground: {
lineStyle: {
color: "#d2dbee",
width: 0.5
},
areaStyle: {
color: "#d2dbee",
opacity: 0.2
}
},
selectedDataBackground: {
lineStyle: {
color: "#8fb0f7",
width: 0.5
},
areaStyle: {
color: "#8fb0f7",
opacity: 0.2
}
},
// Color of selected window.
fillerColor: "rgba(135,175,274,0.2)",
handleIcon: "path://M-9.35,34.56V42m0-40V9.5m-2,0h4a2,2,0,0,1,2,2v21a2,2,0,0,1-2,2h-4a2,2,0,0,1-2-2v-21A2,2,0,0,1-11.35,9.5Z",
// Percent of the slider height
handleSize: "100%",
handleStyle: {
color: "#fff",
borderColor: "#ACB8D1"
},
moveHandleSize: 7,
moveHandleIcon: "path://M-320.9-50L-320.9-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-348-41-339-50-320.9-50z M-212.3-50L-212.3-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-239.4-41-230.4-50-212.3-50z M-103.7-50L-103.7-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-130.9-41-121.8-50-103.7-50z",
moveHandleStyle: {
color: "#D2DBEE",
opacity: 0.7
},
showDetail: true,
showDataShadow: "auto",
realtime: true,
zoomLock: false,
textStyle: {
color: "#6E7079"
},
brushSelect: true,
brushStyle: {
color: "rgba(135,175,274,0.15)"
},
emphasis: {
handleStyle: {
borderColor: "#8FB0F7"
},
moveHandleStyle: {
color: "#8FB0F7"
}
}
});
return SliderZoomModel2;
}(DataZoomModel)
);
var Rect = Rect$2;
var DEFAULT_LOCATION_EDGE_GAP = 7;
var DEFAULT_FRAME_BORDER_WIDTH = 1;
var DEFAULT_FILLER_SIZE = 30;
var DEFAULT_MOVE_HANDLE_SIZE = 7;
var HORIZONTAL = "horizontal";
var VERTICAL = "vertical";
var LABEL_GAP = 5;
var SHOW_DATA_SHADOW_SERIES_TYPE = ["line", "bar", "candlestick", "scatter"];
var REALTIME_ANIMATION_CONFIG = {
easing: "cubicOut",
duration: 100,
delay: 0
};
var SliderZoomView = (
/** @class */
function(_super) {
__extends(SliderZoomView2, _super);
function SliderZoomView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = SliderZoomView2.type;
_this._displayables = {};
return _this;
}
SliderZoomView2.prototype.init = function(ecModel, api) {
this.api = api;
this._onBrush = bind$2(this._onBrush, this);
this._onBrushEnd = bind$2(this._onBrushEnd, this);
};
SliderZoomView2.prototype.render = function(dataZoomModel, ecModel, api, payload) {
_super.prototype.render.apply(this, arguments);
createOrUpdate(this, "_dispatchZoomAction", dataZoomModel.get("throttle"), "fixRate");
this._orient = dataZoomModel.getOrient();
if (dataZoomModel.get("show") === false) {
this.group.removeAll();
return;
}
if (dataZoomModel.noTarget()) {
this._clear();
this.group.removeAll();
return;
}
if (!payload || payload.type !== "dataZoom" || payload.from !== this.uid) {
this._buildView();
}
this._updateView();
};
SliderZoomView2.prototype.dispose = function() {
this._clear();
_super.prototype.dispose.apply(this, arguments);
};
SliderZoomView2.prototype._clear = function() {
clear$2(this, "_dispatchZoomAction");
var zr = this.api.getZr();
zr.off("mousemove", this._onBrush);
zr.off("mouseup", this._onBrushEnd);
};
SliderZoomView2.prototype._buildView = function() {
var thisGroup = this.group;
thisGroup.removeAll();
this._brushing = false;
this._displayables.brushRect = null;
this._resetLocation();
this._resetInterval();
var barGroup = this._displayables.sliderGroup = new Group$3();
this._renderBackground();
this._renderHandle();
this._renderDataShadow();
thisGroup.add(barGroup);
this._positionGroup();
};
SliderZoomView2.prototype._resetLocation = function() {
var dataZoomModel = this.dataZoomModel;
var api = this.api;
var showMoveHandle = dataZoomModel.get("brushSelect");
var moveHandleSize = showMoveHandle ? DEFAULT_MOVE_HANDLE_SIZE : 0;
var coordRect = this._findCoordRect();
var ecSize = {
width: api.getWidth(),
height: api.getHeight()
};
var positionInfo = this._orient === HORIZONTAL ? {
// Why using 'right', because right should be used in vertical,
// and it is better to be consistent for dealing with position param merge.
right: ecSize.width - coordRect.x - coordRect.width,
top: ecSize.height - DEFAULT_FILLER_SIZE - DEFAULT_LOCATION_EDGE_GAP - moveHandleSize,
width: coordRect.width,
height: DEFAULT_FILLER_SIZE
} : {
right: DEFAULT_LOCATION_EDGE_GAP,
top: coordRect.y,
width: DEFAULT_FILLER_SIZE,
height: coordRect.height
};
var layoutParams = getLayoutParams(dataZoomModel.option);
each$f(["right", "top", "width", "height"], function(name) {
if (layoutParams[name] === "ph") {
layoutParams[name] = positionInfo[name];
}
});
var layoutRect = getLayoutRect(layoutParams, ecSize);
this._location = {
x: layoutRect.x,
y: layoutRect.y
};
this._size = [layoutRect.width, layoutRect.height];
this._orient === VERTICAL && this._size.reverse();
};
SliderZoomView2.prototype._positionGroup = function() {
var thisGroup = this.group;
var location = this._location;
var orient = this._orient;
var targetAxisModel = this.dataZoomModel.getFirstTargetAxisModel();
var inverse = targetAxisModel && targetAxisModel.get("inverse");
var sliderGroup = this._displayables.sliderGroup;
var otherAxisInverse = (this._dataShadowInfo || {}).otherAxisInverse;
sliderGroup.attr(orient === HORIZONTAL && !inverse ? {
scaleY: otherAxisInverse ? 1 : -1,
scaleX: 1
} : orient === HORIZONTAL && inverse ? {
scaleY: otherAxisInverse ? 1 : -1,
scaleX: -1
} : orient === VERTICAL && !inverse ? {
scaleY: otherAxisInverse ? -1 : 1,
scaleX: 1,
rotation: Math.PI / 2
} : {
scaleY: otherAxisInverse ? -1 : 1,
scaleX: -1,
rotation: Math.PI / 2
});
var rect = thisGroup.getBoundingRect([sliderGroup]);
thisGroup.x = location.x - rect.x;
thisGroup.y = location.y - rect.y;
thisGroup.markRedraw();
};
SliderZoomView2.prototype._getViewExtent = function() {
return [0, this._size[0]];
};
SliderZoomView2.prototype._renderBackground = function() {
var dataZoomModel = this.dataZoomModel;
var size = this._size;
var barGroup = this._displayables.sliderGroup;
var brushSelect = dataZoomModel.get("brushSelect");
barGroup.add(new Rect({
silent: true,
shape: {
x: 0,
y: 0,
width: size[0],
height: size[1]
},
style: {
fill: dataZoomModel.get("backgroundColor")
},
z2: -40
}));
var clickPanel = new Rect({
shape: {
x: 0,
y: 0,
width: size[0],
height: size[1]
},
style: {
fill: "transparent"
},
z2: 0,
onclick: bind$2(this._onClickPanel, this)
});
var zr = this.api.getZr();
if (brushSelect) {
clickPanel.on("mousedown", this._onBrushStart, this);
clickPanel.cursor = "crosshair";
zr.on("mousemove", this._onBrush);
zr.on("mouseup", this._onBrushEnd);
} else {
zr.off("mousemove", this._onBrush);
zr.off("mouseup", this._onBrushEnd);
}
barGroup.add(clickPanel);
};
SliderZoomView2.prototype._renderDataShadow = function() {
var info = this._dataShadowInfo = this._prepareDataShadowInfo();
this._displayables.dataShadowSegs = [];
if (!info) {
return;
}
var size = this._size;
var oldSize = this._shadowSize || [];
var seriesModel = info.series;
var data = seriesModel.getRawData();
var candlestickDim = seriesModel.getShadowDim && seriesModel.getShadowDim();
var otherDim = candlestickDim && data.getDimensionInfo(candlestickDim) ? seriesModel.getShadowDim() : info.otherDim;
if (otherDim == null) {
return;
}
var polygonPts = this._shadowPolygonPts;
var polylinePts = this._shadowPolylinePts;
if (data !== this._shadowData || otherDim !== this._shadowDim || size[0] !== oldSize[0] || size[1] !== oldSize[1]) {
var otherDataExtent_1 = data.getDataExtent(otherDim);
var otherOffset = (otherDataExtent_1[1] - otherDataExtent_1[0]) * 0.3;
otherDataExtent_1 = [otherDataExtent_1[0] - otherOffset, otherDataExtent_1[1] + otherOffset];
var otherShadowExtent_1 = [0, size[1]];
var thisShadowExtent = [0, size[0]];
var areaPoints_1 = [[size[0], 0], [0, 0]];
var linePoints_1 = [];
var step_1 = thisShadowExtent[1] / (data.count() - 1);
var thisCoord_1 = 0;
var stride_1 = Math.round(data.count() / size[0]);
var lastIsEmpty_1;
data.each([otherDim], function(value, index2) {
if (stride_1 > 0 && index2 % stride_1) {
thisCoord_1 += step_1;
return;
}
var isEmpty = value == null || isNaN(value) || value === "";
var otherCoord = isEmpty ? 0 : linearMap$2(value, otherDataExtent_1, otherShadowExtent_1, true);
if (isEmpty && !lastIsEmpty_1 && index2) {
areaPoints_1.push([areaPoints_1[areaPoints_1.length - 1][0], 0]);
linePoints_1.push([linePoints_1[linePoints_1.length - 1][0], 0]);
} else if (!isEmpty && lastIsEmpty_1) {
areaPoints_1.push([thisCoord_1, 0]);
linePoints_1.push([thisCoord_1, 0]);
}
areaPoints_1.push([thisCoord_1, otherCoord]);
linePoints_1.push([thisCoord_1, otherCoord]);
thisCoord_1 += step_1;
lastIsEmpty_1 = isEmpty;
});
polygonPts = this._shadowPolygonPts = areaPoints_1;
polylinePts = this._shadowPolylinePts = linePoints_1;
}
this._shadowData = data;
this._shadowDim = otherDim;
this._shadowSize = [size[0], size[1]];
var dataZoomModel = this.dataZoomModel;
function createDataShadowGroup(isSelectedArea) {
var model = dataZoomModel.getModel(isSelectedArea ? "selectedDataBackground" : "dataBackground");
var group2 = new Group$3();
var polygon = new Polygon({
shape: {
points: polygonPts
},
segmentIgnoreThreshold: 1,
style: model.getModel("areaStyle").getAreaStyle(),
silent: true,
z2: -20
});
var polyline = new Polyline$1({
shape: {
points: polylinePts
},
segmentIgnoreThreshold: 1,
style: model.getModel("lineStyle").getLineStyle(),
silent: true,
z2: -19
});
group2.add(polygon);
group2.add(polyline);
return group2;
}
for (var i = 0; i < 3; i++) {
var group = createDataShadowGroup(i === 1);
this._displayables.sliderGroup.add(group);
this._displayables.dataShadowSegs.push(group);
}
};
SliderZoomView2.prototype._prepareDataShadowInfo = function() {
var dataZoomModel = this.dataZoomModel;
var showDataShadow = dataZoomModel.get("showDataShadow");
if (showDataShadow === false) {
return;
}
var result;
var ecModel = this.ecModel;
dataZoomModel.eachTargetAxis(function(axisDim, axisIndex) {
var seriesModels = dataZoomModel.getAxisProxy(axisDim, axisIndex).getTargetSeriesModels();
each$f(seriesModels, function(seriesModel) {
if (result) {
return;
}
if (showDataShadow !== true && indexOf(SHOW_DATA_SHADOW_SERIES_TYPE, seriesModel.get("type")) < 0) {
return;
}
var thisAxis = ecModel.getComponent(getAxisMainType(axisDim), axisIndex).axis;
var otherDim = getOtherDim(axisDim);
var otherAxisInverse;
var coordSys = seriesModel.coordinateSystem;
if (otherDim != null && coordSys.getOtherAxis) {
otherAxisInverse = coordSys.getOtherAxis(thisAxis).inverse;
}
otherDim = seriesModel.getData().mapDimension(otherDim);
result = {
thisAxis,
series: seriesModel,
thisDim: axisDim,
otherDim,
otherAxisInverse
};
}, this);
}, this);
return result;
};
SliderZoomView2.prototype._renderHandle = function() {
var thisGroup = this.group;
var displayables = this._displayables;
var handles = displayables.handles = [null, null];
var handleLabels = displayables.handleLabels = [null, null];
var sliderGroup = this._displayables.sliderGroup;
var size = this._size;
var dataZoomModel = this.dataZoomModel;
var api = this.api;
var borderRadius = dataZoomModel.get("borderRadius") || 0;
var brushSelect = dataZoomModel.get("brushSelect");
var filler = displayables.filler = new Rect({
silent: brushSelect,
style: {
fill: dataZoomModel.get("fillerColor")
},
textConfig: {
position: "inside"
}
});
sliderGroup.add(filler);
sliderGroup.add(new Rect({
silent: true,
subPixelOptimize: true,
shape: {
x: 0,
y: 0,
width: size[0],
height: size[1],
r: borderRadius
},
style: {
// deprecated option
stroke: dataZoomModel.get("dataBackgroundColor") || dataZoomModel.get("borderColor"),
lineWidth: DEFAULT_FRAME_BORDER_WIDTH,
fill: "rgba(0,0,0,0)"
}
}));
each$f([0, 1], function(handleIndex) {
var iconStr = dataZoomModel.get("handleIcon");
if (!symbolBuildProxies[iconStr] && iconStr.indexOf("path://") < 0 && iconStr.indexOf("image://") < 0) {
iconStr = "path://" + iconStr;
}
var path = createSymbol$1(iconStr, -1, 0, 2, 2, null, true);
path.attr({
cursor: getCursor$1(this._orient),
draggable: true,
drift: bind$2(this._onDragMove, this, handleIndex),
ondragend: bind$2(this._onDragEnd, this),
onmouseover: bind$2(this._showDataInfo, this, true),
onmouseout: bind$2(this._showDataInfo, this, false),
z2: 5
});
var bRect = path.getBoundingRect();
var handleSize = dataZoomModel.get("handleSize");
this._handleHeight = parsePercent(handleSize, this._size[1]);
this._handleWidth = bRect.width / bRect.height * this._handleHeight;
path.setStyle(dataZoomModel.getModel("handleStyle").getItemStyle());
path.style.strokeNoScale = true;
path.rectHover = true;
path.ensureState("emphasis").style = dataZoomModel.getModel(["emphasis", "handleStyle"]).getItemStyle();
enableHoverEmphasis(path);
var handleColor = dataZoomModel.get("handleColor");
if (handleColor != null) {
path.style.fill = handleColor;
}
sliderGroup.add(handles[handleIndex] = path);
var textStyleModel = dataZoomModel.getModel("textStyle");
thisGroup.add(handleLabels[handleIndex] = new ZRText({
silent: true,
invisible: true,
style: createTextStyle$1(textStyleModel, {
x: 0,
y: 0,
text: "",
verticalAlign: "middle",
align: "center",
fill: textStyleModel.getTextColor(),
font: textStyleModel.getFont()
}),
z2: 10
}));
}, this);
var actualMoveZone = filler;
if (brushSelect) {
var moveHandleHeight = parsePercent(dataZoomModel.get("moveHandleSize"), size[1]);
var moveHandle_1 = displayables.moveHandle = new Rect$2({
style: dataZoomModel.getModel("moveHandleStyle").getItemStyle(),
silent: true,
shape: {
r: [0, 0, 2, 2],
y: size[1] - 0.5,
height: moveHandleHeight
}
});
var iconSize = moveHandleHeight * 0.8;
var moveHandleIcon = displayables.moveHandleIcon = createSymbol$1(dataZoomModel.get("moveHandleIcon"), -iconSize / 2, -iconSize / 2, iconSize, iconSize, "#fff", true);
moveHandleIcon.silent = true;
moveHandleIcon.y = size[1] + moveHandleHeight / 2 - 0.5;
moveHandle_1.ensureState("emphasis").style = dataZoomModel.getModel(["emphasis", "moveHandleStyle"]).getItemStyle();
var moveZoneExpandSize = Math.min(size[1] / 2, Math.max(moveHandleHeight, 10));
actualMoveZone = displayables.moveZone = new Rect$2({
invisible: true,
shape: {
y: size[1] - moveZoneExpandSize,
height: moveHandleHeight + moveZoneExpandSize
}
});
actualMoveZone.on("mouseover", function() {
api.enterEmphasis(moveHandle_1);
}).on("mouseout", function() {
api.leaveEmphasis(moveHandle_1);
});
sliderGroup.add(moveHandle_1);
sliderGroup.add(moveHandleIcon);
sliderGroup.add(actualMoveZone);
}
actualMoveZone.attr({
draggable: true,
cursor: getCursor$1(this._orient),
drift: bind$2(this._onDragMove, this, "all"),
ondragstart: bind$2(this._showDataInfo, this, true),
ondragend: bind$2(this._onDragEnd, this),
onmouseover: bind$2(this._showDataInfo, this, true),
onmouseout: bind$2(this._showDataInfo, this, false)
});
};
SliderZoomView2.prototype._resetInterval = function() {
var range3 = this._range = this.dataZoomModel.getPercentRange();
var viewExtent = this._getViewExtent();
this._handleEnds = [linearMap$2(range3[0], [0, 100], viewExtent, true), linearMap$2(range3[1], [0, 100], viewExtent, true)];
};
SliderZoomView2.prototype._updateInterval = function(handleIndex, delta) {
var dataZoomModel = this.dataZoomModel;
var handleEnds = this._handleEnds;
var viewExtend = this._getViewExtent();
var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();
var percentExtent = [0, 100];
sliderMove(delta, handleEnds, viewExtend, dataZoomModel.get("zoomLock") ? "all" : handleIndex, minMaxSpan.minSpan != null ? linearMap$2(minMaxSpan.minSpan, percentExtent, viewExtend, true) : null, minMaxSpan.maxSpan != null ? linearMap$2(minMaxSpan.maxSpan, percentExtent, viewExtend, true) : null);
var lastRange = this._range;
var range3 = this._range = asc$2([linearMap$2(handleEnds[0], viewExtend, percentExtent, true), linearMap$2(handleEnds[1], viewExtend, percentExtent, true)]);
return !lastRange || lastRange[0] !== range3[0] || lastRange[1] !== range3[1];
};
SliderZoomView2.prototype._updateView = function(nonRealtime) {
var displaybles = this._displayables;
var handleEnds = this._handleEnds;
var handleInterval = asc$2(handleEnds.slice());
var size = this._size;
each$f([0, 1], function(handleIndex) {
var handle = displaybles.handles[handleIndex];
var handleHeight = this._handleHeight;
handle.attr({
scaleX: handleHeight / 2,
scaleY: handleHeight / 2,
// This is a trick, by adding an extra tiny offset to let the default handle's end point align to the drag window.
// NOTE: It may affect some custom shapes a bit. But we prefer to have better result by default.
x: handleEnds[handleIndex] + (handleIndex ? -1 : 1),
y: size[1] / 2 - handleHeight / 2
});
}, this);
displaybles.filler.setShape({
x: handleInterval[0],
y: 0,
width: handleInterval[1] - handleInterval[0],
height: size[1]
});
var viewExtent = {
x: handleInterval[0],
width: handleInterval[1] - handleInterval[0]
};
if (displaybles.moveHandle) {
displaybles.moveHandle.setShape(viewExtent);
displaybles.moveZone.setShape(viewExtent);
displaybles.moveZone.getBoundingRect();
displaybles.moveHandleIcon && displaybles.moveHandleIcon.attr("x", viewExtent.x + viewExtent.width / 2);
}
var dataShadowSegs = displaybles.dataShadowSegs;
var segIntervals = [0, handleInterval[0], handleInterval[1], size[0]];
for (var i = 0; i < dataShadowSegs.length; i++) {
var segGroup = dataShadowSegs[i];
var clipPath = segGroup.getClipPath();
if (!clipPath) {
clipPath = new Rect$2();
segGroup.setClipPath(clipPath);
}
clipPath.setShape({
x: segIntervals[i],
y: 0,
width: segIntervals[i + 1] - segIntervals[i],
height: size[1]
});
}
this._updateDataInfo(nonRealtime);
};
SliderZoomView2.prototype._updateDataInfo = function(nonRealtime) {
var dataZoomModel = this.dataZoomModel;
var displaybles = this._displayables;
var handleLabels = displaybles.handleLabels;
var orient = this._orient;
var labelTexts = ["", ""];
if (dataZoomModel.get("showDetail")) {
var axisProxy = dataZoomModel.findRepresentativeAxisProxy();
if (axisProxy) {
var axis = axisProxy.getAxisModel().axis;
var range3 = this._range;
var dataInterval = nonRealtime ? axisProxy.calculateDataWindow({
start: range3[0],
end: range3[1]
}).valueWindow : axisProxy.getDataValueWindow();
labelTexts = [this._formatLabel(dataInterval[0], axis), this._formatLabel(dataInterval[1], axis)];
}
}
var orderedHandleEnds = asc$2(this._handleEnds.slice());
setLabel.call(this, 0);
setLabel.call(this, 1);
function setLabel(handleIndex) {
var barTransform = getTransform$1(displaybles.handles[handleIndex].parent, this.group);
var direction = transformDirection(handleIndex === 0 ? "right" : "left", barTransform);
var offset2 = this._handleWidth / 2 + LABEL_GAP;
var textPoint = applyTransform([orderedHandleEnds[handleIndex] + (handleIndex === 0 ? -offset2 : offset2), this._size[1] / 2], barTransform);
handleLabels[handleIndex].setStyle({
x: textPoint[0],
y: textPoint[1],
verticalAlign: orient === HORIZONTAL ? "middle" : direction,
align: orient === HORIZONTAL ? direction : "center",
text: labelTexts[handleIndex]
});
}
};
SliderZoomView2.prototype._formatLabel = function(value, axis) {
var dataZoomModel = this.dataZoomModel;
var labelFormatter = dataZoomModel.get("labelFormatter");
var labelPrecision = dataZoomModel.get("labelPrecision");
if (labelPrecision == null || labelPrecision === "auto") {
labelPrecision = axis.getPixelPrecision();
}
var valueStr = value == null || isNaN(value) ? "" : axis.type === "category" || axis.type === "time" ? axis.scale.getLabel({
value: Math.round(value)
}) : value.toFixed(Math.min(labelPrecision, 20));
return isFunction$1(labelFormatter) ? labelFormatter(value, valueStr) : isString$1(labelFormatter) ? labelFormatter.replace("{value}", valueStr) : valueStr;
};
SliderZoomView2.prototype._showDataInfo = function(showOrHide) {
showOrHide = this._dragging || showOrHide;
var displayables = this._displayables;
var handleLabels = displayables.handleLabels;
handleLabels[0].attr("invisible", !showOrHide);
handleLabels[1].attr("invisible", !showOrHide);
displayables.moveHandle && this.api[showOrHide ? "enterEmphasis" : "leaveEmphasis"](displayables.moveHandle, 1);
};
SliderZoomView2.prototype._onDragMove = function(handleIndex, dx, dy, event) {
this._dragging = true;
stop(event.event);
var barTransform = this._displayables.sliderGroup.getLocalTransform();
var vertex = applyTransform([dx, dy], barTransform, true);
var changed = this._updateInterval(handleIndex, vertex[0]);
var realtime = this.dataZoomModel.get("realtime");
this._updateView(!realtime);
changed && realtime && this._dispatchZoomAction(true);
};
SliderZoomView2.prototype._onDragEnd = function() {
this._dragging = false;
this._showDataInfo(false);
var realtime = this.dataZoomModel.get("realtime");
!realtime && this._dispatchZoomAction(false);
};
SliderZoomView2.prototype._onClickPanel = function(e2) {
var size = this._size;
var localPoint = this._displayables.sliderGroup.transformCoordToLocal(e2.offsetX, e2.offsetY);
if (localPoint[0] < 0 || localPoint[0] > size[0] || localPoint[1] < 0 || localPoint[1] > size[1]) {
return;
}
var handleEnds = this._handleEnds;
var center2 = (handleEnds[0] + handleEnds[1]) / 2;
var changed = this._updateInterval("all", localPoint[0] - center2);
this._updateView();
changed && this._dispatchZoomAction(false);
};
SliderZoomView2.prototype._onBrushStart = function(e2) {
var x2 = e2.offsetX;
var y2 = e2.offsetY;
this._brushStart = new Point(x2, y2);
this._brushing = true;
this._brushStartTime = +/* @__PURE__ */ new Date();
};
SliderZoomView2.prototype._onBrushEnd = function(e2) {
if (!this._brushing) {
return;
}
var brushRect = this._displayables.brushRect;
this._brushing = false;
if (!brushRect) {
return;
}
brushRect.attr("ignore", true);
var brushShape = brushRect.shape;
var brushEndTime = +/* @__PURE__ */ new Date();
if (brushEndTime - this._brushStartTime < 200 && Math.abs(brushShape.width) < 5) {
return;
}
var viewExtend = this._getViewExtent();
var percentExtent = [0, 100];
this._range = asc$2([linearMap$2(brushShape.x, viewExtend, percentExtent, true), linearMap$2(brushShape.x + brushShape.width, viewExtend, percentExtent, true)]);
this._handleEnds = [brushShape.x, brushShape.x + brushShape.width];
this._updateView();
this._dispatchZoomAction(false);
};
SliderZoomView2.prototype._onBrush = function(e2) {
if (this._brushing) {
stop(e2.event);
this._updateBrushRect(e2.offsetX, e2.offsetY);
}
};
SliderZoomView2.prototype._updateBrushRect = function(mouseX, mouseY) {
var displayables = this._displayables;
var dataZoomModel = this.dataZoomModel;
var brushRect = displayables.brushRect;
if (!brushRect) {
brushRect = displayables.brushRect = new Rect({
silent: true,
style: dataZoomModel.getModel("brushStyle").getItemStyle()
});
displayables.sliderGroup.add(brushRect);
}
brushRect.attr("ignore", false);
var brushStart = this._brushStart;
var sliderGroup = this._displayables.sliderGroup;
var endPoint = sliderGroup.transformCoordToLocal(mouseX, mouseY);
var startPoint = sliderGroup.transformCoordToLocal(brushStart.x, brushStart.y);
var size = this._size;
endPoint[0] = Math.max(Math.min(size[0], endPoint[0]), 0);
brushRect.setShape({
x: startPoint[0],
y: 0,
width: endPoint[0] - startPoint[0],
height: size[1]
});
};
SliderZoomView2.prototype._dispatchZoomAction = function(realtime) {
var range3 = this._range;
this.api.dispatchAction({
type: "dataZoom",
from: this.uid,
dataZoomId: this.dataZoomModel.id,
animation: realtime ? REALTIME_ANIMATION_CONFIG : null,
start: range3[0],
end: range3[1]
});
};
SliderZoomView2.prototype._findCoordRect = function() {
var rect;
var coordSysInfoList = collectReferCoordSysModelInfo(this.dataZoomModel).infoList;
if (!rect && coordSysInfoList.length) {
var coordSys = coordSysInfoList[0].model.coordinateSystem;
rect = coordSys.getRect && coordSys.getRect();
}
if (!rect) {
var width = this.api.getWidth();
var height = this.api.getHeight();
rect = {
x: width * 0.2,
y: height * 0.2,
width: width * 0.6,
height: height * 0.6
};
}
return rect;
};
SliderZoomView2.type = "dataZoom.slider";
return SliderZoomView2;
}(DataZoomView)
);
function getOtherDim(thisDim) {
var map2 = {
x: "y",
y: "x",
radius: "angle",
angle: "radius"
};
return map2[thisDim];
}
function getCursor$1(orient) {
return orient === "vertical" ? "ns-resize" : "ew-resize";
}
function install$7(registers) {
registers.registerComponentModel(SliderZoomModel);
registers.registerComponentView(SliderZoomView);
installCommon$1(registers);
}
function install$6(registers) {
use(install$8);
use(install$7);
}
var visualDefault = {
/**
* @public
*/
get: function(visualType, key, isCategory2) {
var value = clone$4((defaultOption[visualType] || {})[key]);
return isCategory2 ? isArray$1(value) ? value[value.length - 1] : value : value;
}
};
var defaultOption = {
color: {
active: ["#006edd", "#e0ffff"],
inactive: ["rgba(0,0,0,0)"]
},
colorHue: {
active: [0, 360],
inactive: [0, 0]
},
colorSaturation: {
active: [0.3, 1],
inactive: [0, 0]
},
colorLightness: {
active: [0.9, 0.5],
inactive: [0, 0]
},
colorAlpha: {
active: [0.3, 1],
inactive: [0, 0]
},
opacity: {
active: [0.3, 1],
inactive: [0, 0]
},
symbol: {
active: ["circle", "roundRect", "diamond"],
inactive: ["none"]
},
symbolSize: {
active: [10, 50],
inactive: [0, 0]
}
};
var mapVisual = VisualMapping.mapVisual;
var eachVisual = VisualMapping.eachVisual;
var isArray = isArray$1;
var each$2 = each$f;
var asc = asc$2;
var linearMap$1 = linearMap$2;
var VisualMapModel = (
/** @class */
function(_super) {
__extends(VisualMapModel2, _super);
function VisualMapModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = VisualMapModel2.type;
_this.stateList = ["inRange", "outOfRange"];
_this.replacableOptionKeys = ["inRange", "outOfRange", "target", "controller", "color"];
_this.layoutMode = {
type: "box",
ignoreSize: true
};
_this.dataBound = [-Infinity, Infinity];
_this.targetVisuals = {};
_this.controllerVisuals = {};
return _this;
}
VisualMapModel2.prototype.init = function(option, parentModel, ecModel) {
this.mergeDefaultAndTheme(option, ecModel);
};
VisualMapModel2.prototype.optionUpdated = function(newOption, isInit) {
var thisOption = this.option;
!isInit && replaceVisualOption(thisOption, newOption, this.replacableOptionKeys);
this.textStyleModel = this.getModel("textStyle");
this.resetItemSize();
this.completeVisualOption();
};
VisualMapModel2.prototype.resetVisual = function(supplementVisualOption) {
var stateList = this.stateList;
supplementVisualOption = bind$2(supplementVisualOption, this);
this.controllerVisuals = createVisualMappings(this.option.controller, stateList, supplementVisualOption);
this.targetVisuals = createVisualMappings(this.option.target, stateList, supplementVisualOption);
};
VisualMapModel2.prototype.getItemSymbol = function() {
return null;
};
VisualMapModel2.prototype.getTargetSeriesIndices = function() {
var optionSeriesIndex = this.option.seriesIndex;
var seriesIndices = [];
if (optionSeriesIndex == null || optionSeriesIndex === "all") {
this.ecModel.eachSeries(function(seriesModel, index2) {
seriesIndices.push(index2);
});
} else {
seriesIndices = normalizeToArray(optionSeriesIndex);
}
return seriesIndices;
};
VisualMapModel2.prototype.eachTargetSeries = function(callback, context) {
each$f(this.getTargetSeriesIndices(), function(seriesIndex) {
var seriesModel = this.ecModel.getSeriesByIndex(seriesIndex);
if (seriesModel) {
callback.call(context, seriesModel);
}
}, this);
};
VisualMapModel2.prototype.isTargetSeries = function(seriesModel) {
var is = false;
this.eachTargetSeries(function(model) {
model === seriesModel && (is = true);
});
return is;
};
VisualMapModel2.prototype.formatValueText = function(value, isCategory2, edgeSymbols) {
var option = this.option;
var precision = option.precision;
var dataBound = this.dataBound;
var formatter = option.formatter;
var isMinMax;
edgeSymbols = edgeSymbols || ["<", ">"];
if (isArray$1(value)) {
value = value.slice();
isMinMax = true;
}
var textValue = isCategory2 ? value : isMinMax ? [toFixed(value[0]), toFixed(value[1])] : toFixed(value);
if (isString$1(formatter)) {
return formatter.replace("{value}", isMinMax ? textValue[0] : textValue).replace("{value2}", isMinMax ? textValue[1] : textValue);
} else if (isFunction$1(formatter)) {
return isMinMax ? formatter(value[0], value[1]) : formatter(value);
}
if (isMinMax) {
if (value[0] === dataBound[0]) {
return edgeSymbols[0] + " " + textValue[1];
} else if (value[1] === dataBound[1]) {
return edgeSymbols[1] + " " + textValue[0];
} else {
return textValue[0] + " - " + textValue[1];
}
} else {
return textValue;
}
function toFixed(val) {
return val === dataBound[0] ? "min" : val === dataBound[1] ? "max" : (+val).toFixed(Math.min(precision, 20));
}
};
VisualMapModel2.prototype.resetExtent = function() {
var thisOption = this.option;
var extent3 = asc([thisOption.min, thisOption.max]);
this._dataExtent = extent3;
};
VisualMapModel2.prototype.getDataDimensionIndex = function(data) {
var optDim = this.option.dimension;
if (optDim != null) {
return data.getDimensionIndex(optDim);
}
var dimNames = data.dimensions;
for (var i = dimNames.length - 1; i >= 0; i--) {
var dimName = dimNames[i];
var dimInfo = data.getDimensionInfo(dimName);
if (!dimInfo.isCalculationCoord) {
return dimInfo.storeDimIndex;
}
}
};
VisualMapModel2.prototype.getExtent = function() {
return this._dataExtent.slice();
};
VisualMapModel2.prototype.completeVisualOption = function() {
var ecModel = this.ecModel;
var thisOption = this.option;
var base2 = {
inRange: thisOption.inRange,
outOfRange: thisOption.outOfRange
};
var target = thisOption.target || (thisOption.target = {});
var controller = thisOption.controller || (thisOption.controller = {});
merge(target, base2);
merge(controller, base2);
var isCategory2 = this.isCategory();
completeSingle.call(this, target);
completeSingle.call(this, controller);
completeInactive.call(this, target, "inRange", "outOfRange");
completeController.call(this, controller);
function completeSingle(base3) {
if (isArray(thisOption.color) && !base3.inRange) {
base3.inRange = {
color: thisOption.color.slice().reverse()
};
}
base3.inRange = base3.inRange || {
color: ecModel.get("gradientColor")
};
}
function completeInactive(base3, stateExist, stateAbsent) {
var optExist = base3[stateExist];
var optAbsent = base3[stateAbsent];
if (optExist && !optAbsent) {
optAbsent = base3[stateAbsent] = {};
each$2(optExist, function(visualData, visualType) {
if (!VisualMapping.isValidType(visualType)) {
return;
}
var defa = visualDefault.get(visualType, "inactive", isCategory2);
if (defa != null) {
optAbsent[visualType] = defa;
if (visualType === "color" && !optAbsent.hasOwnProperty("opacity") && !optAbsent.hasOwnProperty("colorAlpha")) {
optAbsent.opacity = [0, 0];
}
}
});
}
}
function completeController(controller2) {
var symbolExists = (controller2.inRange || {}).symbol || (controller2.outOfRange || {}).symbol;
var symbolSizeExists = (controller2.inRange || {}).symbolSize || (controller2.outOfRange || {}).symbolSize;
var inactiveColor = this.get("inactiveColor");
var itemSymbol = this.getItemSymbol();
var defaultSymbol = itemSymbol || "roundRect";
each$2(this.stateList, function(state) {
var itemSize = this.itemSize;
var visuals = controller2[state];
if (!visuals) {
visuals = controller2[state] = {
color: isCategory2 ? inactiveColor : [inactiveColor]
};
}
if (visuals.symbol == null) {
visuals.symbol = symbolExists && clone$4(symbolExists) || (isCategory2 ? defaultSymbol : [defaultSymbol]);
}
if (visuals.symbolSize == null) {
visuals.symbolSize = symbolSizeExists && clone$4(symbolSizeExists) || (isCategory2 ? itemSize[0] : [itemSize[0], itemSize[0]]);
}
visuals.symbol = mapVisual(visuals.symbol, function(symbol) {
return symbol === "none" ? defaultSymbol : symbol;
});
var symbolSize = visuals.symbolSize;
if (symbolSize != null) {
var max_1 = -Infinity;
eachVisual(symbolSize, function(value) {
value > max_1 && (max_1 = value);
});
visuals.symbolSize = mapVisual(symbolSize, function(value) {
return linearMap$1(value, [0, max_1], [0, itemSize[0]], true);
});
}
}, this);
}
};
VisualMapModel2.prototype.resetItemSize = function() {
this.itemSize = [parseFloat(this.get("itemWidth")), parseFloat(this.get("itemHeight"))];
};
VisualMapModel2.prototype.isCategory = function() {
return !!this.option.categories;
};
VisualMapModel2.prototype.setSelected = function(selected) {
};
VisualMapModel2.prototype.getSelected = function() {
return null;
};
VisualMapModel2.prototype.getValueState = function(value) {
return null;
};
VisualMapModel2.prototype.getVisualMeta = function(getColorVisual2) {
return null;
};
VisualMapModel2.type = "visualMap";
VisualMapModel2.dependencies = ["series"];
VisualMapModel2.defaultOption = {
show: true,
// zlevel: 0,
z: 4,
seriesIndex: "all",
min: 0,
max: 200,
left: 0,
right: null,
top: null,
bottom: 0,
itemWidth: null,
itemHeight: null,
inverse: false,
orient: "vertical",
backgroundColor: "rgba(0,0,0,0)",
borderColor: "#ccc",
contentColor: "#5793f3",
inactiveColor: "#aaa",
borderWidth: 0,
padding: 5,
// 接受数组分别设定上右下左边距,同css
textGap: 10,
precision: 0,
textStyle: {
color: "#333"
// 值域文字颜色
}
};
return VisualMapModel2;
}(ComponentModel)
);
var DEFAULT_BAR_BOUND = [20, 140];
var ContinuousModel = (
/** @class */
function(_super) {
__extends(ContinuousModel2, _super);
function ContinuousModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = ContinuousModel2.type;
return _this;
}
ContinuousModel2.prototype.optionUpdated = function(newOption, isInit) {
_super.prototype.optionUpdated.apply(this, arguments);
this.resetExtent();
this.resetVisual(function(mappingOption) {
mappingOption.mappingMethod = "linear";
mappingOption.dataExtent = this.getExtent();
});
this._resetRange();
};
ContinuousModel2.prototype.resetItemSize = function() {
_super.prototype.resetItemSize.apply(this, arguments);
var itemSize = this.itemSize;
(itemSize[0] == null || isNaN(itemSize[0])) && (itemSize[0] = DEFAULT_BAR_BOUND[0]);
(itemSize[1] == null || isNaN(itemSize[1])) && (itemSize[1] = DEFAULT_BAR_BOUND[1]);
};
ContinuousModel2.prototype._resetRange = function() {
var dataExtent = this.getExtent();
var range3 = this.option.range;
if (!range3 || range3.auto) {
dataExtent.auto = 1;
this.option.range = dataExtent;
} else if (isArray$1(range3)) {
if (range3[0] > range3[1]) {
range3.reverse();
}
range3[0] = Math.max(range3[0], dataExtent[0]);
range3[1] = Math.min(range3[1], dataExtent[1]);
}
};
ContinuousModel2.prototype.completeVisualOption = function() {
_super.prototype.completeVisualOption.apply(this, arguments);
each$f(this.stateList, function(state) {
var symbolSize = this.option.controller[state].symbolSize;
if (symbolSize && symbolSize[0] !== symbolSize[1]) {
symbolSize[0] = symbolSize[1] / 3;
}
}, this);
};
ContinuousModel2.prototype.setSelected = function(selected) {
this.option.range = selected.slice();
this._resetRange();
};
ContinuousModel2.prototype.getSelected = function() {
var dataExtent = this.getExtent();
var dataInterval = asc$2((this.get("range") || []).slice());
dataInterval[0] > dataExtent[1] && (dataInterval[0] = dataExtent[1]);
dataInterval[1] > dataExtent[1] && (dataInterval[1] = dataExtent[1]);
dataInterval[0] < dataExtent[0] && (dataInterval[0] = dataExtent[0]);
dataInterval[1] < dataExtent[0] && (dataInterval[1] = dataExtent[0]);
return dataInterval;
};
ContinuousModel2.prototype.getValueState = function(value) {
var range3 = this.option.range;
var dataExtent = this.getExtent();
return (range3[0] <= dataExtent[0] || range3[0] <= value) && (range3[1] >= dataExtent[1] || value <= range3[1]) ? "inRange" : "outOfRange";
};
ContinuousModel2.prototype.findTargetDataIndices = function(range3) {
var result = [];
this.eachTargetSeries(function(seriesModel) {
var dataIndices = [];
var data = seriesModel.getData();
data.each(this.getDataDimensionIndex(data), function(value, dataIndex) {
range3[0] <= value && value <= range3[1] && dataIndices.push(dataIndex);
}, this);
result.push({
seriesId: seriesModel.id,
dataIndex: dataIndices
});
}, this);
return result;
};
ContinuousModel2.prototype.getVisualMeta = function(getColorVisual2) {
var oVals = getColorStopValues(this, "outOfRange", this.getExtent());
var iVals = getColorStopValues(this, "inRange", this.option.range.slice());
var stops = [];
function setStop(value, valueState) {
stops.push({
value,
color: getColorVisual2(value, valueState)
});
}
var iIdx = 0;
var oIdx = 0;
var iLen = iVals.length;
var oLen = oVals.length;
for (; oIdx < oLen && (!iVals.length || oVals[oIdx] <= iVals[0]); oIdx++) {
if (oVals[oIdx] < iVals[iIdx]) {
setStop(oVals[oIdx], "outOfRange");
}
}
for (var first = 1; iIdx < iLen; iIdx++, first = 0) {
first && stops.length && setStop(iVals[iIdx], "outOfRange");
setStop(iVals[iIdx], "inRange");
}
for (var first = 1; oIdx < oLen; oIdx++) {
if (!iVals.length || iVals[iVals.length - 1] < oVals[oIdx]) {
if (first) {
stops.length && setStop(stops[stops.length - 1].value, "outOfRange");
first = 0;
}
setStop(oVals[oIdx], "outOfRange");
}
}
var stopsLen = stops.length;
return {
stops,
outerColors: [stopsLen ? stops[0].color : "transparent", stopsLen ? stops[stopsLen - 1].color : "transparent"]
};
};
ContinuousModel2.type = "visualMap.continuous";
ContinuousModel2.defaultOption = inheritDefaultOption(VisualMapModel.defaultOption, {
align: "auto",
calculable: false,
hoverLink: true,
realtime: true,
handleIcon: "path://M-11.39,9.77h0a3.5,3.5,0,0,1-3.5,3.5h-22a3.5,3.5,0,0,1-3.5-3.5h0a3.5,3.5,0,0,1,3.5-3.5h22A3.5,3.5,0,0,1-11.39,9.77Z",
handleSize: "120%",
handleStyle: {
borderColor: "#fff",
borderWidth: 1
},
indicatorIcon: "circle",
indicatorSize: "50%",
indicatorStyle: {
borderColor: "#fff",
borderWidth: 2,
shadowBlur: 2,
shadowOffsetX: 1,
shadowOffsetY: 1,
shadowColor: "rgba(0,0,0,0.2)"
}
// emphasis: {
// handleStyle: {
// shadowBlur: 3,
// shadowOffsetX: 1,
// shadowOffsetY: 1,
// shadowColor: 'rgba(0,0,0,0.2)'
// }
// }
});
return ContinuousModel2;
}(VisualMapModel)
);
function getColorStopValues(visualMapModel, valueState, dataExtent) {
if (dataExtent[0] === dataExtent[1]) {
return dataExtent.slice();
}
var count2 = 200;
var step = (dataExtent[1] - dataExtent[0]) / count2;
var value = dataExtent[0];
var stopValues = [];
for (var i = 0; i <= count2 && value < dataExtent[1]; i++) {
stopValues.push(value);
value += step;
}
stopValues.push(dataExtent[1]);
return stopValues;
}
var VisualMapView = (
/** @class */
function(_super) {
__extends(VisualMapView2, _super);
function VisualMapView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = VisualMapView2.type;
_this.autoPositionValues = {
left: 1,
right: 1,
top: 1,
bottom: 1
};
return _this;
}
VisualMapView2.prototype.init = function(ecModel, api) {
this.ecModel = ecModel;
this.api = api;
};
VisualMapView2.prototype.render = function(visualMapModel, ecModel, api, payload) {
this.visualMapModel = visualMapModel;
if (visualMapModel.get("show") === false) {
this.group.removeAll();
return;
}
this.doRender(visualMapModel, ecModel, api, payload);
};
VisualMapView2.prototype.renderBackground = function(group) {
var visualMapModel = this.visualMapModel;
var padding = normalizeCssArray(visualMapModel.get("padding") || 0);
var rect = group.getBoundingRect();
group.add(new Rect$2({
z2: -1,
silent: true,
shape: {
x: rect.x - padding[3],
y: rect.y - padding[0],
width: rect.width + padding[3] + padding[1],
height: rect.height + padding[0] + padding[2]
},
style: {
fill: visualMapModel.get("backgroundColor"),
stroke: visualMapModel.get("borderColor"),
lineWidth: visualMapModel.get("borderWidth")
}
}));
};
VisualMapView2.prototype.getControllerVisual = function(targetValue, visualCluster, opts) {
opts = opts || {};
var forceState = opts.forceState;
var visualMapModel = this.visualMapModel;
var visualObj = {};
if (visualCluster === "color") {
var defaultColor = visualMapModel.get("contentColor");
visualObj.color = defaultColor;
}
function getter(key) {
return visualObj[key];
}
function setter(key, value) {
visualObj[key] = value;
}
var mappings = visualMapModel.controllerVisuals[forceState || visualMapModel.getValueState(targetValue)];
var visualTypes = VisualMapping.prepareVisualTypes(mappings);
each$f(visualTypes, function(type4) {
var visualMapping = mappings[type4];
if (opts.convertOpacityToAlpha && type4 === "opacity") {
type4 = "colorAlpha";
visualMapping = mappings.__alphaForOpacity;
}
if (VisualMapping.dependsOn(type4, visualCluster)) {
visualMapping && visualMapping.applyVisual(targetValue, getter, setter);
}
});
return visualObj[visualCluster];
};
VisualMapView2.prototype.positionGroup = function(group) {
var model = this.visualMapModel;
var api = this.api;
positionElement(group, model.getBoxLayoutParams(), {
width: api.getWidth(),
height: api.getHeight()
});
};
VisualMapView2.prototype.doRender = function(visualMapModel, ecModel, api, payload) {
};
VisualMapView2.type = "visualMap";
return VisualMapView2;
}(ComponentView)
);
var paramsSet = [["left", "right", "width"], ["top", "bottom", "height"]];
function getItemAlign(visualMapModel, api, itemSize) {
var modelOption = visualMapModel.option;
var itemAlign = modelOption.align;
if (itemAlign != null && itemAlign !== "auto") {
return itemAlign;
}
var ecSize = {
width: api.getWidth(),
height: api.getHeight()
};
var realIndex = modelOption.orient === "horizontal" ? 1 : 0;
var reals = paramsSet[realIndex];
var fakeValue = [0, null, 10];
var layoutInput = {};
for (var i = 0; i < 3; i++) {
layoutInput[paramsSet[1 - realIndex][i]] = fakeValue[i];
layoutInput[reals[i]] = i === 2 ? itemSize[0] : modelOption[reals[i]];
}
var rParam = [["x", "width", 3], ["y", "height", 0]][realIndex];
var rect = getLayoutRect(layoutInput, ecSize, modelOption.padding);
return reals[(rect.margin[rParam[2]] || 0) + rect[rParam[0]] + rect[rParam[1]] * 0.5 < ecSize[rParam[1]] * 0.5 ? 0 : 1];
}
function makeHighDownBatch(batch, visualMapModel) {
each$f(batch || [], function(batchItem) {
if (batchItem.dataIndex != null) {
batchItem.dataIndexInside = batchItem.dataIndex;
batchItem.dataIndex = null;
}
batchItem.highlightKey = "visualMap" + (visualMapModel ? visualMapModel.componentIndex : "");
});
return batch;
}
var linearMap = linearMap$2;
var each$1 = each$f;
var mathMin = Math.min;
var mathMax = Math.max;
var HOVER_LINK_SIZE = 12;
var HOVER_LINK_OUT = 6;
var ContinuousView = (
/** @class */
function(_super) {
__extends(ContinuousView2, _super);
function ContinuousView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = ContinuousView2.type;
_this._shapes = {};
_this._dataInterval = [];
_this._handleEnds = [];
_this._hoverLinkDataIndices = [];
return _this;
}
ContinuousView2.prototype.init = function(ecModel, api) {
_super.prototype.init.call(this, ecModel, api);
this._hoverLinkFromSeriesMouseOver = bind$2(this._hoverLinkFromSeriesMouseOver, this);
this._hideIndicator = bind$2(this._hideIndicator, this);
};
ContinuousView2.prototype.doRender = function(visualMapModel, ecModel, api, payload) {
if (!payload || payload.type !== "selectDataRange" || payload.from !== this.uid) {
this._buildView();
}
};
ContinuousView2.prototype._buildView = function() {
this.group.removeAll();
var visualMapModel = this.visualMapModel;
var thisGroup = this.group;
this._orient = visualMapModel.get("orient");
this._useHandle = visualMapModel.get("calculable");
this._resetInterval();
this._renderBar(thisGroup);
var dataRangeText = visualMapModel.get("text");
this._renderEndsText(thisGroup, dataRangeText, 0);
this._renderEndsText(thisGroup, dataRangeText, 1);
this._updateView(true);
this.renderBackground(thisGroup);
this._updateView();
this._enableHoverLinkToSeries();
this._enableHoverLinkFromSeries();
this.positionGroup(thisGroup);
};
ContinuousView2.prototype._renderEndsText = function(group, dataRangeText, endsIndex) {
if (!dataRangeText) {
return;
}
var text = dataRangeText[1 - endsIndex];
text = text != null ? text + "" : "";
var visualMapModel = this.visualMapModel;
var textGap = visualMapModel.get("textGap");
var itemSize = visualMapModel.itemSize;
var barGroup = this._shapes.mainGroup;
var position2 = this._applyTransform([itemSize[0] / 2, endsIndex === 0 ? -textGap : itemSize[1] + textGap], barGroup);
var align = this._applyTransform(endsIndex === 0 ? "bottom" : "top", barGroup);
var orient = this._orient;
var textStyleModel = this.visualMapModel.textStyleModel;
this.group.add(new ZRText({
style: createTextStyle$1(textStyleModel, {
x: position2[0],
y: position2[1],
verticalAlign: orient === "horizontal" ? "middle" : align,
align: orient === "horizontal" ? align : "center",
text
})
}));
};
ContinuousView2.prototype._renderBar = function(targetGroup) {
var visualMapModel = this.visualMapModel;
var shapes = this._shapes;
var itemSize = visualMapModel.itemSize;
var orient = this._orient;
var useHandle = this._useHandle;
var itemAlign = getItemAlign(visualMapModel, this.api, itemSize);
var mainGroup = shapes.mainGroup = this._createBarGroup(itemAlign);
var gradientBarGroup = new Group$3();
mainGroup.add(gradientBarGroup);
gradientBarGroup.add(shapes.outOfRange = createPolygon());
gradientBarGroup.add(shapes.inRange = createPolygon(null, useHandle ? getCursor(this._orient) : null, bind$2(this._dragHandle, this, "all", false), bind$2(this._dragHandle, this, "all", true)));
gradientBarGroup.setClipPath(new Rect$2({
shape: {
x: 0,
y: 0,
width: itemSize[0],
height: itemSize[1],
r: 3
}
}));
var textRect = visualMapModel.textStyleModel.getTextRect("国");
var textSize = mathMax(textRect.width, textRect.height);
if (useHandle) {
shapes.handleThumbs = [];
shapes.handleLabels = [];
shapes.handleLabelPoints = [];
this._createHandle(visualMapModel, mainGroup, 0, itemSize, textSize, orient);
this._createHandle(visualMapModel, mainGroup, 1, itemSize, textSize, orient);
}
this._createIndicator(visualMapModel, mainGroup, itemSize, textSize, orient);
targetGroup.add(mainGroup);
};
ContinuousView2.prototype._createHandle = function(visualMapModel, mainGroup, handleIndex, itemSize, textSize, orient) {
var onDrift = bind$2(this._dragHandle, this, handleIndex, false);
var onDragEnd = bind$2(this._dragHandle, this, handleIndex, true);
var handleSize = parsePercent$1(visualMapModel.get("handleSize"), itemSize[0]);
var handleThumb = createSymbol$1(visualMapModel.get("handleIcon"), -handleSize / 2, -handleSize / 2, handleSize, handleSize, null, true);
var cursor = getCursor(this._orient);
handleThumb.attr({
cursor,
draggable: true,
drift: onDrift,
ondragend: onDragEnd,
onmousemove: function(e2) {
stop(e2.event);
}
});
handleThumb.x = itemSize[0] / 2;
handleThumb.useStyle(visualMapModel.getModel("handleStyle").getItemStyle());
handleThumb.setStyle({
strokeNoScale: true,
strokeFirst: true
});
handleThumb.style.lineWidth *= 2;
handleThumb.ensureState("emphasis").style = visualMapModel.getModel(["emphasis", "handleStyle"]).getItemStyle();
setAsHighDownDispatcher(handleThumb, true);
mainGroup.add(handleThumb);
var textStyleModel = this.visualMapModel.textStyleModel;
var handleLabel = new ZRText({
cursor,
draggable: true,
drift: onDrift,
onmousemove: function(e2) {
stop(e2.event);
},
ondragend: onDragEnd,
style: createTextStyle$1(textStyleModel, {
x: 0,
y: 0,
text: ""
})
});
handleLabel.ensureState("blur").style = {
opacity: 0.1
};
handleLabel.stateTransition = {
duration: 200
};
this.group.add(handleLabel);
var handleLabelPoint = [handleSize, 0];
var shapes = this._shapes;
shapes.handleThumbs[handleIndex] = handleThumb;
shapes.handleLabelPoints[handleIndex] = handleLabelPoint;
shapes.handleLabels[handleIndex] = handleLabel;
};
ContinuousView2.prototype._createIndicator = function(visualMapModel, mainGroup, itemSize, textSize, orient) {
var scale2 = parsePercent$1(visualMapModel.get("indicatorSize"), itemSize[0]);
var indicator = createSymbol$1(visualMapModel.get("indicatorIcon"), -scale2 / 2, -scale2 / 2, scale2, scale2, null, true);
indicator.attr({
cursor: "move",
invisible: true,
silent: true,
x: itemSize[0] / 2
});
var indicatorStyle = visualMapModel.getModel("indicatorStyle").getItemStyle();
if (indicator instanceof ZRImage) {
var pathStyle = indicator.style;
indicator.useStyle(extend({
// TODO other properties like x, y ?
image: pathStyle.image,
x: pathStyle.x,
y: pathStyle.y,
width: pathStyle.width,
height: pathStyle.height
}, indicatorStyle));
} else {
indicator.useStyle(indicatorStyle);
}
mainGroup.add(indicator);
var textStyleModel = this.visualMapModel.textStyleModel;
var indicatorLabel = new ZRText({
silent: true,
invisible: true,
style: createTextStyle$1(textStyleModel, {
x: 0,
y: 0,
text: ""
})
});
this.group.add(indicatorLabel);
var indicatorLabelPoint = [(orient === "horizontal" ? textSize / 2 : HOVER_LINK_OUT) + itemSize[0] / 2, 0];
var shapes = this._shapes;
shapes.indicator = indicator;
shapes.indicatorLabel = indicatorLabel;
shapes.indicatorLabelPoint = indicatorLabelPoint;
this._firstShowIndicator = true;
};
ContinuousView2.prototype._dragHandle = function(handleIndex, isEnd, dx, dy) {
if (!this._useHandle) {
return;
}
this._dragging = !isEnd;
if (!isEnd) {
var vertex = this._applyTransform([dx, dy], this._shapes.mainGroup, true);
this._updateInterval(handleIndex, vertex[1]);
this._hideIndicator();
this._updateView();
}
if (isEnd === !this.visualMapModel.get("realtime")) {
this.api.dispatchAction({
type: "selectDataRange",
from: this.uid,
visualMapId: this.visualMapModel.id,
selected: this._dataInterval.slice()
});
}
if (isEnd) {
!this._hovering && this._clearHoverLinkToSeries();
} else if (useHoverLinkOnHandle(this.visualMapModel)) {
this._doHoverLinkToSeries(this._handleEnds[handleIndex], false);
}
};
ContinuousView2.prototype._resetInterval = function() {
var visualMapModel = this.visualMapModel;
var dataInterval = this._dataInterval = visualMapModel.getSelected();
var dataExtent = visualMapModel.getExtent();
var sizeExtent = [0, visualMapModel.itemSize[1]];
this._handleEnds = [linearMap(dataInterval[0], dataExtent, sizeExtent, true), linearMap(dataInterval[1], dataExtent, sizeExtent, true)];
};
ContinuousView2.prototype._updateInterval = function(handleIndex, delta) {
delta = delta || 0;
var visualMapModel = this.visualMapModel;
var handleEnds = this._handleEnds;
var sizeExtent = [0, visualMapModel.itemSize[1]];
sliderMove(
delta,
handleEnds,
sizeExtent,
handleIndex,
// cross is forbidden
0
);
var dataExtent = visualMapModel.getExtent();
this._dataInterval = [linearMap(handleEnds[0], sizeExtent, dataExtent, true), linearMap(handleEnds[1], sizeExtent, dataExtent, true)];
};
ContinuousView2.prototype._updateView = function(forSketch) {
var visualMapModel = this.visualMapModel;
var dataExtent = visualMapModel.getExtent();
var shapes = this._shapes;
var outOfRangeHandleEnds = [0, visualMapModel.itemSize[1]];
var inRangeHandleEnds = forSketch ? outOfRangeHandleEnds : this._handleEnds;
var visualInRange = this._createBarVisual(this._dataInterval, dataExtent, inRangeHandleEnds, "inRange");
var visualOutOfRange = this._createBarVisual(dataExtent, dataExtent, outOfRangeHandleEnds, "outOfRange");
shapes.inRange.setStyle({
fill: visualInRange.barColor
// opacity: visualInRange.opacity
}).setShape("points", visualInRange.barPoints);
shapes.outOfRange.setStyle({
fill: visualOutOfRange.barColor
// opacity: visualOutOfRange.opacity
}).setShape("points", visualOutOfRange.barPoints);
this._updateHandle(inRangeHandleEnds, visualInRange);
};
ContinuousView2.prototype._createBarVisual = function(dataInterval, dataExtent, handleEnds, forceState) {
var opts = {
forceState,
convertOpacityToAlpha: true
};
var colorStops = this._makeColorGradient(dataInterval, opts);
var symbolSizes = [this.getControllerVisual(dataInterval[0], "symbolSize", opts), this.getControllerVisual(dataInterval[1], "symbolSize", opts)];
var barPoints = this._createBarPoints(handleEnds, symbolSizes);
return {
barColor: new LinearGradient(0, 0, 0, 1, colorStops),
barPoints,
handlesColor: [colorStops[0].color, colorStops[colorStops.length - 1].color]
};
};
ContinuousView2.prototype._makeColorGradient = function(dataInterval, opts) {
var sampleNumber = 100;
var colorStops = [];
var step = (dataInterval[1] - dataInterval[0]) / sampleNumber;
colorStops.push({
color: this.getControllerVisual(dataInterval[0], "color", opts),
offset: 0
});
for (var i = 1; i < sampleNumber; i++) {
var currValue = dataInterval[0] + step * i;
if (currValue > dataInterval[1]) {
break;
}
colorStops.push({
color: this.getControllerVisual(currValue, "color", opts),
offset: i / sampleNumber
});
}
colorStops.push({
color: this.getControllerVisual(dataInterval[1], "color", opts),
offset: 1
});
return colorStops;
};
ContinuousView2.prototype._createBarPoints = function(handleEnds, symbolSizes) {
var itemSize = this.visualMapModel.itemSize;
return [[itemSize[0] - symbolSizes[0], handleEnds[0]], [itemSize[0], handleEnds[0]], [itemSize[0], handleEnds[1]], [itemSize[0] - symbolSizes[1], handleEnds[1]]];
};
ContinuousView2.prototype._createBarGroup = function(itemAlign) {
var orient = this._orient;
var inverse = this.visualMapModel.get("inverse");
return new Group$3(orient === "horizontal" && !inverse ? {
scaleX: itemAlign === "bottom" ? 1 : -1,
rotation: Math.PI / 2
} : orient === "horizontal" && inverse ? {
scaleX: itemAlign === "bottom" ? -1 : 1,
rotation: -Math.PI / 2
} : orient === "vertical" && !inverse ? {
scaleX: itemAlign === "left" ? 1 : -1,
scaleY: -1
} : {
scaleX: itemAlign === "left" ? 1 : -1
});
};
ContinuousView2.prototype._updateHandle = function(handleEnds, visualInRange) {
if (!this._useHandle) {
return;
}
var shapes = this._shapes;
var visualMapModel = this.visualMapModel;
var handleThumbs = shapes.handleThumbs;
var handleLabels = shapes.handleLabels;
var itemSize = visualMapModel.itemSize;
var dataExtent = visualMapModel.getExtent();
each$1([0, 1], function(handleIndex) {
var handleThumb = handleThumbs[handleIndex];
handleThumb.setStyle("fill", visualInRange.handlesColor[handleIndex]);
handleThumb.y = handleEnds[handleIndex];
var val = linearMap(handleEnds[handleIndex], [0, itemSize[1]], dataExtent, true);
var symbolSize = this.getControllerVisual(val, "symbolSize");
handleThumb.scaleX = handleThumb.scaleY = symbolSize / itemSize[0];
handleThumb.x = itemSize[0] - symbolSize / 2;
var textPoint = applyTransform(shapes.handleLabelPoints[handleIndex], getTransform$1(handleThumb, this.group));
handleLabels[handleIndex].setStyle({
x: textPoint[0],
y: textPoint[1],
text: visualMapModel.formatValueText(this._dataInterval[handleIndex]),
verticalAlign: "middle",
align: this._orient === "vertical" ? this._applyTransform("left", shapes.mainGroup) : "center"
});
}, this);
};
ContinuousView2.prototype._showIndicator = function(cursorValue, textValue, rangeSymbol, halfHoverLinkSize) {
var visualMapModel = this.visualMapModel;
var dataExtent = visualMapModel.getExtent();
var itemSize = visualMapModel.itemSize;
var sizeExtent = [0, itemSize[1]];
var shapes = this._shapes;
var indicator = shapes.indicator;
if (!indicator) {
return;
}
indicator.attr("invisible", false);
var opts = {
convertOpacityToAlpha: true
};
var color2 = this.getControllerVisual(cursorValue, "color", opts);
var symbolSize = this.getControllerVisual(cursorValue, "symbolSize");
var y2 = linearMap(cursorValue, dataExtent, sizeExtent, true);
var x2 = itemSize[0] - symbolSize / 2;
var oldIndicatorPos = {
x: indicator.x,
y: indicator.y
};
indicator.y = y2;
indicator.x = x2;
var textPoint = applyTransform(shapes.indicatorLabelPoint, getTransform$1(indicator, this.group));
var indicatorLabel = shapes.indicatorLabel;
indicatorLabel.attr("invisible", false);
var align = this._applyTransform("left", shapes.mainGroup);
var orient = this._orient;
var isHorizontal = orient === "horizontal";
indicatorLabel.setStyle({
text: (rangeSymbol ? rangeSymbol : "") + visualMapModel.formatValueText(textValue),
verticalAlign: isHorizontal ? align : "middle",
align: isHorizontal ? "center" : align
});
var indicatorNewProps = {
x: x2,
y: y2,
style: {
fill: color2
}
};
var labelNewProps = {
style: {
x: textPoint[0],
y: textPoint[1]
}
};
if (visualMapModel.ecModel.isAnimationEnabled() && !this._firstShowIndicator) {
var animationCfg = {
duration: 100,
easing: "cubicInOut",
additive: true
};
indicator.x = oldIndicatorPos.x;
indicator.y = oldIndicatorPos.y;
indicator.animateTo(indicatorNewProps, animationCfg);
indicatorLabel.animateTo(labelNewProps, animationCfg);
} else {
indicator.attr(indicatorNewProps);
indicatorLabel.attr(labelNewProps);
}
this._firstShowIndicator = false;
var handleLabels = this._shapes.handleLabels;
if (handleLabels) {
for (var i = 0; i < handleLabels.length; i++) {
this.api.enterBlur(handleLabels[i]);
}
}
};
ContinuousView2.prototype._enableHoverLinkToSeries = function() {
var self2 = this;
this._shapes.mainGroup.on("mousemove", function(e2) {
self2._hovering = true;
if (!self2._dragging) {
var itemSize = self2.visualMapModel.itemSize;
var pos = self2._applyTransform([e2.offsetX, e2.offsetY], self2._shapes.mainGroup, true, true);
pos[1] = mathMin(mathMax(0, pos[1]), itemSize[1]);
self2._doHoverLinkToSeries(pos[1], 0 <= pos[0] && pos[0] <= itemSize[0]);
}
}).on("mouseout", function() {
self2._hovering = false;
!self2._dragging && self2._clearHoverLinkToSeries();
});
};
ContinuousView2.prototype._enableHoverLinkFromSeries = function() {
var zr = this.api.getZr();
if (this.visualMapModel.option.hoverLink) {
zr.on("mouseover", this._hoverLinkFromSeriesMouseOver, this);
zr.on("mouseout", this._hideIndicator, this);
} else {
this._clearHoverLinkFromSeries();
}
};
ContinuousView2.prototype._doHoverLinkToSeries = function(cursorPos, hoverOnBar) {
var visualMapModel = this.visualMapModel;
var itemSize = visualMapModel.itemSize;
if (!visualMapModel.option.hoverLink) {
return;
}
var sizeExtent = [0, itemSize[1]];
var dataExtent = visualMapModel.getExtent();
cursorPos = mathMin(mathMax(sizeExtent[0], cursorPos), sizeExtent[1]);
var halfHoverLinkSize = getHalfHoverLinkSize(visualMapModel, dataExtent, sizeExtent);
var hoverRange = [cursorPos - halfHoverLinkSize, cursorPos + halfHoverLinkSize];
var cursorValue = linearMap(cursorPos, sizeExtent, dataExtent, true);
var valueRange = [linearMap(hoverRange[0], sizeExtent, dataExtent, true), linearMap(hoverRange[1], sizeExtent, dataExtent, true)];
hoverRange[0] < sizeExtent[0] && (valueRange[0] = -Infinity);
hoverRange[1] > sizeExtent[1] && (valueRange[1] = Infinity);
if (hoverOnBar) {
if (valueRange[0] === -Infinity) {
this._showIndicator(cursorValue, valueRange[1], "< ", halfHoverLinkSize);
} else if (valueRange[1] === Infinity) {
this._showIndicator(cursorValue, valueRange[0], "> ", halfHoverLinkSize);
} else {
this._showIndicator(cursorValue, cursorValue, "≈ ", halfHoverLinkSize);
}
}
var oldBatch = this._hoverLinkDataIndices;
var newBatch = [];
if (hoverOnBar || useHoverLinkOnHandle(visualMapModel)) {
newBatch = this._hoverLinkDataIndices = visualMapModel.findTargetDataIndices(valueRange);
}
var resultBatches = compressBatches(oldBatch, newBatch);
this._dispatchHighDown("downplay", makeHighDownBatch(resultBatches[0], visualMapModel));
this._dispatchHighDown("highlight", makeHighDownBatch(resultBatches[1], visualMapModel));
};
ContinuousView2.prototype._hoverLinkFromSeriesMouseOver = function(e2) {
var ecData;
findEventDispatcher(e2.target, function(target) {
var currECData = getECData(target);
if (currECData.dataIndex != null) {
ecData = currECData;
return true;
}
}, true);
if (!ecData) {
return;
}
var dataModel = this.ecModel.getSeriesByIndex(ecData.seriesIndex);
var visualMapModel = this.visualMapModel;
if (!visualMapModel.isTargetSeries(dataModel)) {
return;
}
var data = dataModel.getData(ecData.dataType);
var value = data.getStore().get(visualMapModel.getDataDimensionIndex(data), ecData.dataIndex);
if (!isNaN(value)) {
this._showIndicator(value, value);
}
};
ContinuousView2.prototype._hideIndicator = function() {
var shapes = this._shapes;
shapes.indicator && shapes.indicator.attr("invisible", true);
shapes.indicatorLabel && shapes.indicatorLabel.attr("invisible", true);
var handleLabels = this._shapes.handleLabels;
if (handleLabels) {
for (var i = 0; i < handleLabels.length; i++) {
this.api.leaveBlur(handleLabels[i]);
}
}
};
ContinuousView2.prototype._clearHoverLinkToSeries = function() {
this._hideIndicator();
var indices = this._hoverLinkDataIndices;
this._dispatchHighDown("downplay", makeHighDownBatch(indices, this.visualMapModel));
indices.length = 0;
};
ContinuousView2.prototype._clearHoverLinkFromSeries = function() {
this._hideIndicator();
var zr = this.api.getZr();
zr.off("mouseover", this._hoverLinkFromSeriesMouseOver);
zr.off("mouseout", this._hideIndicator);
};
ContinuousView2.prototype._applyTransform = function(vertex, element, inverse, global2) {
var transform2 = getTransform$1(element, global2 ? null : this.group);
return isArray$1(vertex) ? applyTransform(vertex, transform2, inverse) : transformDirection(vertex, transform2, inverse);
};
ContinuousView2.prototype._dispatchHighDown = function(type4, batch) {
batch && batch.length && this.api.dispatchAction({
type: type4,
batch
});
};
ContinuousView2.prototype.dispose = function() {
this._clearHoverLinkFromSeries();
this._clearHoverLinkToSeries();
};
ContinuousView2.type = "visualMap.continuous";
return ContinuousView2;
}(VisualMapView)
);
function createPolygon(points2, cursor, onDrift, onDragEnd) {
return new Polygon({
shape: {
points: points2
},
draggable: !!onDrift,
cursor,
drift: onDrift,
onmousemove: function(e2) {
stop(e2.event);
},
ondragend: onDragEnd
});
}
function getHalfHoverLinkSize(visualMapModel, dataExtent, sizeExtent) {
var halfHoverLinkSize = HOVER_LINK_SIZE / 2;
var hoverLinkDataSize = visualMapModel.get("hoverLinkDataSize");
if (hoverLinkDataSize) {
halfHoverLinkSize = linearMap(hoverLinkDataSize, dataExtent, sizeExtent, true) / 2;
}
return halfHoverLinkSize;
}
function useHoverLinkOnHandle(visualMapModel) {
var hoverLinkOnHandle = visualMapModel.get("hoverLinkOnHandle");
return !!(hoverLinkOnHandle == null ? visualMapModel.get("realtime") : hoverLinkOnHandle);
}
function getCursor(orient) {
return orient === "vertical" ? "ns-resize" : "ew-resize";
}
var visualMapActionInfo = {
type: "selectDataRange",
event: "dataRangeSelected",
// FIXME use updateView appears wrong
update: "update"
};
var visualMapActionHander = function(payload, ecModel) {
ecModel.eachComponent({
mainType: "visualMap",
query: payload
}, function(model) {
model.setSelected(payload.selected);
});
};
var visualMapEncodingHandlers = [
{
createOnAllSeries: true,
reset: function(seriesModel, ecModel) {
var resetDefines = [];
ecModel.eachComponent("visualMap", function(visualMapModel) {
var pipelineContext = seriesModel.pipelineContext;
if (!visualMapModel.isTargetSeries(seriesModel) || pipelineContext && pipelineContext.large) {
return;
}
resetDefines.push(incrementalApplyVisual(visualMapModel.stateList, visualMapModel.targetVisuals, bind$2(visualMapModel.getValueState, visualMapModel), visualMapModel.getDataDimensionIndex(seriesModel.getData())));
});
return resetDefines;
}
},
// Only support color.
{
createOnAllSeries: true,
reset: function(seriesModel, ecModel) {
var data = seriesModel.getData();
var visualMetaList = [];
ecModel.eachComponent("visualMap", function(visualMapModel) {
if (visualMapModel.isTargetSeries(seriesModel)) {
var visualMeta = visualMapModel.getVisualMeta(bind$2(getColorVisual, null, seriesModel, visualMapModel)) || {
stops: [],
outerColors: []
};
var dimIdx = visualMapModel.getDataDimensionIndex(data);
if (dimIdx >= 0) {
visualMeta.dimension = dimIdx;
visualMetaList.push(visualMeta);
}
}
});
seriesModel.getData().setVisual("visualMeta", visualMetaList);
}
}
];
function getColorVisual(seriesModel, visualMapModel, value, valueState) {
var mappings = visualMapModel.targetVisuals[valueState];
var visualTypes = VisualMapping.prepareVisualTypes(mappings);
var resultVisual = {
color: getVisualFromData(seriesModel.getData(), "color")
// default color.
};
for (var i = 0, len2 = visualTypes.length; i < len2; i++) {
var type4 = visualTypes[i];
var mapping = mappings[type4 === "opacity" ? "__alphaForOpacity" : type4];
mapping && mapping.applyVisual(value, getVisual, setVisual);
}
return resultVisual.color;
function getVisual(key) {
return resultVisual[key];
}
function setVisual(key, value2) {
resultVisual[key] = value2;
}
}
var each = each$f;
function visualMapPreprocessor(option) {
var visualMap = option && option.visualMap;
if (!isArray$1(visualMap)) {
visualMap = visualMap ? [visualMap] : [];
}
each(visualMap, function(opt) {
if (!opt) {
return;
}
if (has(opt, "splitList") && !has(opt, "pieces")) {
opt.pieces = opt.splitList;
delete opt.splitList;
}
var pieces = opt.pieces;
if (pieces && isArray$1(pieces)) {
each(pieces, function(piece) {
if (isObject$3(piece)) {
if (has(piece, "start") && !has(piece, "min")) {
piece.min = piece.start;
}
if (has(piece, "end") && !has(piece, "max")) {
piece.max = piece.end;
}
}
});
}
});
}
function has(obj, name) {
return obj && obj.hasOwnProperty && obj.hasOwnProperty(name);
}
var installed = false;
function installCommon(registers) {
if (installed) {
return;
}
installed = true;
registers.registerSubTypeDefaulter("visualMap", function(option) {
return !option.categories && (!(option.pieces ? option.pieces.length > 0 : option.splitNumber > 0) || option.calculable) ? "continuous" : "piecewise";
});
registers.registerAction(visualMapActionInfo, visualMapActionHander);
each$f(visualMapEncodingHandlers, function(handler) {
registers.registerVisual(registers.PRIORITY.VISUAL.COMPONENT, handler);
});
registers.registerPreprocessor(visualMapPreprocessor);
}
function install$5(registers) {
registers.registerComponentModel(ContinuousModel);
registers.registerComponentView(ContinuousView);
installCommon(registers);
}
var PiecewiseModel = (
/** @class */
function(_super) {
__extends(PiecewiseModel2, _super);
function PiecewiseModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = PiecewiseModel2.type;
_this._pieceList = [];
return _this;
}
PiecewiseModel2.prototype.optionUpdated = function(newOption, isInit) {
_super.prototype.optionUpdated.apply(this, arguments);
this.resetExtent();
var mode = this._mode = this._determineMode();
this._pieceList = [];
resetMethods[this._mode].call(this, this._pieceList);
this._resetSelected(newOption, isInit);
var categories = this.option.categories;
this.resetVisual(function(mappingOption, state) {
if (mode === "categories") {
mappingOption.mappingMethod = "category";
mappingOption.categories = clone$4(categories);
} else {
mappingOption.dataExtent = this.getExtent();
mappingOption.mappingMethod = "piecewise";
mappingOption.pieceList = map$1(this._pieceList, function(piece) {
piece = clone$4(piece);
if (state !== "inRange") {
piece.visual = null;
}
return piece;
});
}
});
};
PiecewiseModel2.prototype.completeVisualOption = function() {
var option = this.option;
var visualTypesInPieces = {};
var visualTypes = VisualMapping.listVisualTypes();
var isCategory2 = this.isCategory();
each$f(option.pieces, function(piece) {
each$f(visualTypes, function(visualType) {
if (piece.hasOwnProperty(visualType)) {
visualTypesInPieces[visualType] = 1;
}
});
});
each$f(visualTypesInPieces, function(v4, visualType) {
var exists = false;
each$f(this.stateList, function(state) {
exists = exists || has2(option, state, visualType) || has2(option.target, state, visualType);
}, this);
!exists && each$f(this.stateList, function(state) {
(option[state] || (option[state] = {}))[visualType] = visualDefault.get(visualType, state === "inRange" ? "active" : "inactive", isCategory2);
});
}, this);
function has2(obj, state, visualType) {
return obj && obj[state] && obj[state].hasOwnProperty(visualType);
}
_super.prototype.completeVisualOption.apply(this, arguments);
};
PiecewiseModel2.prototype._resetSelected = function(newOption, isInit) {
var thisOption = this.option;
var pieceList = this._pieceList;
var selected = (isInit ? thisOption : newOption).selected || {};
thisOption.selected = selected;
each$f(pieceList, function(piece, index2) {
var key = this.getSelectedMapKey(piece);
if (!selected.hasOwnProperty(key)) {
selected[key] = true;
}
}, this);
if (thisOption.selectedMode === "single") {
var hasSel_1 = false;
each$f(pieceList, function(piece, index2) {
var key = this.getSelectedMapKey(piece);
if (selected[key]) {
hasSel_1 ? selected[key] = false : hasSel_1 = true;
}
}, this);
}
};
PiecewiseModel2.prototype.getItemSymbol = function() {
return this.get("itemSymbol");
};
PiecewiseModel2.prototype.getSelectedMapKey = function(piece) {
return this._mode === "categories" ? piece.value + "" : piece.index + "";
};
PiecewiseModel2.prototype.getPieceList = function() {
return this._pieceList;
};
PiecewiseModel2.prototype._determineMode = function() {
var option = this.option;
return option.pieces && option.pieces.length > 0 ? "pieces" : this.option.categories ? "categories" : "splitNumber";
};
PiecewiseModel2.prototype.setSelected = function(selected) {
this.option.selected = clone$4(selected);
};
PiecewiseModel2.prototype.getValueState = function(value) {
var index2 = VisualMapping.findPieceIndex(value, this._pieceList);
return index2 != null ? this.option.selected[this.getSelectedMapKey(this._pieceList[index2])] ? "inRange" : "outOfRange" : "outOfRange";
};
PiecewiseModel2.prototype.findTargetDataIndices = function(pieceIndex) {
var result = [];
var pieceList = this._pieceList;
this.eachTargetSeries(function(seriesModel) {
var dataIndices = [];
var data = seriesModel.getData();
data.each(this.getDataDimensionIndex(data), function(value, dataIndex) {
var pIdx = VisualMapping.findPieceIndex(value, pieceList);
pIdx === pieceIndex && dataIndices.push(dataIndex);
}, this);
result.push({
seriesId: seriesModel.id,
dataIndex: dataIndices
});
}, this);
return result;
};
PiecewiseModel2.prototype.getRepresentValue = function(piece) {
var representValue;
if (this.isCategory()) {
representValue = piece.value;
} else {
if (piece.value != null) {
representValue = piece.value;
} else {
var pieceInterval = piece.interval || [];
representValue = pieceInterval[0] === -Infinity && pieceInterval[1] === Infinity ? 0 : (pieceInterval[0] + pieceInterval[1]) / 2;
}
}
return representValue;
};
PiecewiseModel2.prototype.getVisualMeta = function(getColorVisual2) {
if (this.isCategory()) {
return;
}
var stops = [];
var outerColors = ["", ""];
var visualMapModel = this;
function setStop(interval, valueState) {
var representValue = visualMapModel.getRepresentValue({
interval
});
if (!valueState) {
valueState = visualMapModel.getValueState(representValue);
}
var color2 = getColorVisual2(representValue, valueState);
if (interval[0] === -Infinity) {
outerColors[0] = color2;
} else if (interval[1] === Infinity) {
outerColors[1] = color2;
} else {
stops.push({
value: interval[0],
color: color2
}, {
value: interval[1],
color: color2
});
}
}
var pieceList = this._pieceList.slice();
if (!pieceList.length) {
pieceList.push({
interval: [-Infinity, Infinity]
});
} else {
var edge = pieceList[0].interval[0];
edge !== -Infinity && pieceList.unshift({
interval: [-Infinity, edge]
});
edge = pieceList[pieceList.length - 1].interval[1];
edge !== Infinity && pieceList.push({
interval: [edge, Infinity]
});
}
var curr = -Infinity;
each$f(pieceList, function(piece) {
var interval = piece.interval;
if (interval) {
interval[0] > curr && setStop([curr, interval[0]], "outOfRange");
setStop(interval.slice());
curr = interval[1];
}
}, this);
return {
stops,
outerColors
};
};
PiecewiseModel2.type = "visualMap.piecewise";
PiecewiseModel2.defaultOption = inheritDefaultOption(VisualMapModel.defaultOption, {
selected: null,
minOpen: false,
maxOpen: false,
align: "auto",
itemWidth: 20,
itemHeight: 14,
itemSymbol: "roundRect",
pieces: null,
categories: null,
splitNumber: 5,
selectedMode: "multiple",
itemGap: 10,
hoverLink: true
// Enable hover highlight.
});
return PiecewiseModel2;
}(VisualMapModel)
);
var resetMethods = {
splitNumber: function(outPieceList) {
var thisOption = this.option;
var precision = Math.min(thisOption.precision, 20);
var dataExtent = this.getExtent();
var splitNumber = thisOption.splitNumber;
splitNumber = Math.max(parseInt(splitNumber, 10), 1);
thisOption.splitNumber = splitNumber;
var splitStep = (dataExtent[1] - dataExtent[0]) / splitNumber;
while (+splitStep.toFixed(precision) !== splitStep && precision < 5) {
precision++;
}
thisOption.precision = precision;
splitStep = +splitStep.toFixed(precision);
if (thisOption.minOpen) {
outPieceList.push({
interval: [-Infinity, dataExtent[0]],
close: [0, 0]
});
}
for (var index2 = 0, curr = dataExtent[0]; index2 < splitNumber; curr += splitStep, index2++) {
var max3 = index2 === splitNumber - 1 ? dataExtent[1] : curr + splitStep;
outPieceList.push({
interval: [curr, max3],
close: [1, 1]
});
}
if (thisOption.maxOpen) {
outPieceList.push({
interval: [dataExtent[1], Infinity],
close: [0, 0]
});
}
reformIntervals(outPieceList);
each$f(outPieceList, function(piece, index22) {
piece.index = index22;
piece.text = this.formatValueText(piece.interval);
}, this);
},
categories: function(outPieceList) {
var thisOption = this.option;
each$f(thisOption.categories, function(cate) {
outPieceList.push({
text: this.formatValueText(cate, true),
value: cate
});
}, this);
normalizeReverse(thisOption, outPieceList);
},
pieces: function(outPieceList) {
var thisOption = this.option;
each$f(thisOption.pieces, function(pieceListItem, index2) {
if (!isObject$3(pieceListItem)) {
pieceListItem = {
value: pieceListItem
};
}
var item = {
text: "",
index: index2
};
if (pieceListItem.label != null) {
item.text = pieceListItem.label;
}
if (pieceListItem.hasOwnProperty("value")) {
var value = item.value = pieceListItem.value;
item.interval = [value, value];
item.close = [1, 1];
} else {
var interval = item.interval = [];
var close_1 = item.close = [0, 0];
var closeList = [1, 0, 1];
var infinityList = [-Infinity, Infinity];
var useMinMax = [];
for (var lg2 = 0; lg2 < 2; lg2++) {
var names2 = [["gte", "gt", "min"], ["lte", "lt", "max"]][lg2];
for (var i = 0; i < 3 && interval[lg2] == null; i++) {
interval[lg2] = pieceListItem[names2[i]];
close_1[lg2] = closeList[i];
useMinMax[lg2] = i === 2;
}
interval[lg2] == null && (interval[lg2] = infinityList[lg2]);
}
useMinMax[0] && interval[1] === Infinity && (close_1[0] = 0);
useMinMax[1] && interval[0] === -Infinity && (close_1[1] = 0);
if (interval[0] === interval[1] && close_1[0] && close_1[1]) {
item.value = interval[0];
}
}
item.visual = VisualMapping.retrieveVisuals(pieceListItem);
outPieceList.push(item);
}, this);
normalizeReverse(thisOption, outPieceList);
reformIntervals(outPieceList);
each$f(outPieceList, function(piece) {
var close = piece.close;
var edgeSymbols = [["<", "≤"][close[1]], [">", "≥"][close[0]]];
piece.text = piece.text || this.formatValueText(piece.value != null ? piece.value : piece.interval, false, edgeSymbols);
}, this);
}
};
function normalizeReverse(thisOption, pieceList) {
var inverse = thisOption.inverse;
if (thisOption.orient === "vertical" ? !inverse : inverse) {
pieceList.reverse();
}
}
var PiecewiseVisualMapView = (
/** @class */
function(_super) {
__extends(PiecewiseVisualMapView2, _super);
function PiecewiseVisualMapView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = PiecewiseVisualMapView2.type;
return _this;
}
PiecewiseVisualMapView2.prototype.doRender = function() {
var thisGroup = this.group;
thisGroup.removeAll();
var visualMapModel = this.visualMapModel;
var textGap = visualMapModel.get("textGap");
var textStyleModel = visualMapModel.textStyleModel;
var textFont = textStyleModel.getFont();
var textFill = textStyleModel.getTextColor();
var itemAlign = this._getItemAlign();
var itemSize = visualMapModel.itemSize;
var viewData = this._getViewData();
var endsText = viewData.endsText;
var showLabel = retrieve(visualMapModel.get("showLabel", true), !endsText);
endsText && this._renderEndsText(thisGroup, endsText[0], itemSize, showLabel, itemAlign);
each$f(viewData.viewPieceList, function(item) {
var piece = item.piece;
var itemGroup = new Group$3();
itemGroup.onclick = bind$2(this._onItemClick, this, piece);
this._enableHoverLink(itemGroup, item.indexInModelPieceList);
var representValue = visualMapModel.getRepresentValue(piece);
this._createItemSymbol(itemGroup, representValue, [0, 0, itemSize[0], itemSize[1]]);
if (showLabel) {
var visualState = this.visualMapModel.getValueState(representValue);
itemGroup.add(new ZRText({
style: {
x: itemAlign === "right" ? -textGap : itemSize[0] + textGap,
y: itemSize[1] / 2,
text: piece.text,
verticalAlign: "middle",
align: itemAlign,
font: textFont,
fill: textFill,
opacity: visualState === "outOfRange" ? 0.5 : 1
}
}));
}
thisGroup.add(itemGroup);
}, this);
endsText && this._renderEndsText(thisGroup, endsText[1], itemSize, showLabel, itemAlign);
box(visualMapModel.get("orient"), thisGroup, visualMapModel.get("itemGap"));
this.renderBackground(thisGroup);
this.positionGroup(thisGroup);
};
PiecewiseVisualMapView2.prototype._enableHoverLink = function(itemGroup, pieceIndex) {
var _this = this;
itemGroup.on("mouseover", function() {
return onHoverLink("highlight");
}).on("mouseout", function() {
return onHoverLink("downplay");
});
var onHoverLink = function(method4) {
var visualMapModel = _this.visualMapModel;
visualMapModel.option.hoverLink && _this.api.dispatchAction({
type: method4,
batch: makeHighDownBatch(visualMapModel.findTargetDataIndices(pieceIndex), visualMapModel)
});
};
};
PiecewiseVisualMapView2.prototype._getItemAlign = function() {
var visualMapModel = this.visualMapModel;
var modelOption = visualMapModel.option;
if (modelOption.orient === "vertical") {
return getItemAlign(visualMapModel, this.api, visualMapModel.itemSize);
} else {
var align = modelOption.align;
if (!align || align === "auto") {
align = "left";
}
return align;
}
};
PiecewiseVisualMapView2.prototype._renderEndsText = function(group, text, itemSize, showLabel, itemAlign) {
if (!text) {
return;
}
var itemGroup = new Group$3();
var textStyleModel = this.visualMapModel.textStyleModel;
itemGroup.add(new ZRText({
style: createTextStyle$1(textStyleModel, {
x: showLabel ? itemAlign === "right" ? itemSize[0] : 0 : itemSize[0] / 2,
y: itemSize[1] / 2,
verticalAlign: "middle",
align: showLabel ? itemAlign : "center",
text
})
}));
group.add(itemGroup);
};
PiecewiseVisualMapView2.prototype._getViewData = function() {
var visualMapModel = this.visualMapModel;
var viewPieceList = map$1(visualMapModel.getPieceList(), function(piece, index2) {
return {
piece,
indexInModelPieceList: index2
};
});
var endsText = visualMapModel.get("text");
var orient = visualMapModel.get("orient");
var inverse = visualMapModel.get("inverse");
if (orient === "horizontal" ? inverse : !inverse) {
viewPieceList.reverse();
} else if (endsText) {
endsText = endsText.slice().reverse();
}
return {
viewPieceList,
endsText
};
};
PiecewiseVisualMapView2.prototype._createItemSymbol = function(group, representValue, shapeParam) {
group.add(createSymbol$1(
// symbol will be string
this.getControllerVisual(representValue, "symbol"),
shapeParam[0],
shapeParam[1],
shapeParam[2],
shapeParam[3],
// color will be string
this.getControllerVisual(representValue, "color")
));
};
PiecewiseVisualMapView2.prototype._onItemClick = function(piece) {
var visualMapModel = this.visualMapModel;
var option = visualMapModel.option;
var selectedMode = option.selectedMode;
if (!selectedMode) {
return;
}
var selected = clone$4(option.selected);
var newKey = visualMapModel.getSelectedMapKey(piece);
if (selectedMode === "single" || selectedMode === true) {
selected[newKey] = true;
each$f(selected, function(o, key) {
selected[key] = key === newKey;
});
} else {
selected[newKey] = !selected[newKey];
}
this.api.dispatchAction({
type: "selectDataRange",
from: this.uid,
visualMapId: this.visualMapModel.id,
selected
});
};
PiecewiseVisualMapView2.type = "visualMap.piecewise";
return PiecewiseVisualMapView2;
}(VisualMapView)
);
function install$4(registers) {
registers.registerComponentModel(PiecewiseModel);
registers.registerComponentView(PiecewiseVisualMapView);
installCommon(registers);
}
function install$3(registers) {
use(install$5);
use(install$4);
}
var DEFAULT_OPTION = {
label: {
enabled: true
},
decal: {
show: false
}
};
var inner = makeInner();
var decalPaletteScope = {};
function ariaVisual(ecModel, api) {
var ariaModel = ecModel.getModel("aria");
if (!ariaModel.get("enabled")) {
return;
}
var defaultOption2 = clone$4(DEFAULT_OPTION);
merge(defaultOption2.label, ecModel.getLocaleModel().get("aria"), false);
merge(ariaModel.option, defaultOption2, false);
setDecal();
setLabel();
function setDecal() {
var decalModel = ariaModel.getModel("decal");
var useDecal = decalModel.get("show");
if (useDecal) {
var paletteScopeGroupByType_1 = createHashMap();
ecModel.eachSeries(function(seriesModel) {
if (seriesModel.isColorBySeries()) {
return;
}
var decalScope = paletteScopeGroupByType_1.get(seriesModel.type);
if (!decalScope) {
decalScope = {};
paletteScopeGroupByType_1.set(seriesModel.type, decalScope);
}
inner(seriesModel).scope = decalScope;
});
ecModel.eachRawSeries(function(seriesModel) {
if (ecModel.isSeriesFiltered(seriesModel)) {
return;
}
if (isFunction$1(seriesModel.enableAriaDecal)) {
seriesModel.enableAriaDecal();
return;
}
var data = seriesModel.getData();
if (!seriesModel.isColorBySeries()) {
var dataAll_1 = seriesModel.getRawData();
var idxMap_1 = {};
var decalScope_1 = inner(seriesModel).scope;
data.each(function(idx) {
var rawIdx = data.getRawIndex(idx);
idxMap_1[rawIdx] = idx;
});
var dataCount_1 = dataAll_1.count();
dataAll_1.each(function(rawIdx) {
var idx = idxMap_1[rawIdx];
var name = dataAll_1.getName(rawIdx) || rawIdx + "";
var paletteDecal2 = getDecalFromPalette(seriesModel.ecModel, name, decalScope_1, dataCount_1);
var specifiedDecal2 = data.getItemVisual(idx, "decal");
data.setItemVisual(idx, "decal", mergeDecal(specifiedDecal2, paletteDecal2));
});
} else {
var paletteDecal = getDecalFromPalette(seriesModel.ecModel, seriesModel.name, decalPaletteScope, ecModel.getSeriesCount());
var specifiedDecal = data.getVisual("decal");
data.setVisual("decal", mergeDecal(specifiedDecal, paletteDecal));
}
function mergeDecal(specifiedDecal2, paletteDecal2) {
var resultDecal = specifiedDecal2 ? extend(extend({}, paletteDecal2), specifiedDecal2) : paletteDecal2;
resultDecal.dirty = true;
return resultDecal;
}
});
}
}
function setLabel() {
var dom = api.getZr().dom;
if (!dom) {
return;
}
var labelLocale = ecModel.getLocaleModel().get("aria");
var labelModel = ariaModel.getModel("label");
labelModel.option = defaults(labelModel.option, labelLocale);
if (!labelModel.get("enabled")) {
return;
}
if (labelModel.get("description")) {
dom.setAttribute("aria-label", labelModel.get("description"));
return;
}
var seriesCnt = ecModel.getSeriesCount();
var maxDataCnt = labelModel.get(["data", "maxCount"]) || 10;
var maxSeriesCnt = labelModel.get(["series", "maxCount"]) || 10;
var displaySeriesCnt = Math.min(seriesCnt, maxSeriesCnt);
var ariaLabel;
if (seriesCnt < 1) {
return;
} else {
var title = getTitle2();
if (title) {
var withTitle = labelModel.get(["general", "withTitle"]);
ariaLabel = replace2(withTitle, {
title
});
} else {
ariaLabel = labelModel.get(["general", "withoutTitle"]);
}
var seriesLabels_1 = [];
var prefix = seriesCnt > 1 ? labelModel.get(["series", "multiple", "prefix"]) : labelModel.get(["series", "single", "prefix"]);
ariaLabel += replace2(prefix, {
seriesCount: seriesCnt
});
ecModel.eachSeries(function(seriesModel, idx) {
if (idx < displaySeriesCnt) {
var seriesLabel = void 0;
var seriesName = seriesModel.get("name");
var withName = seriesName ? "withName" : "withoutName";
seriesLabel = seriesCnt > 1 ? labelModel.get(["series", "multiple", withName]) : labelModel.get(["series", "single", withName]);
seriesLabel = replace2(seriesLabel, {
seriesId: seriesModel.seriesIndex,
seriesName: seriesModel.get("name"),
seriesType: getSeriesTypeName(seriesModel.subType)
});
var data = seriesModel.getData();
if (data.count() > maxDataCnt) {
var partialLabel = labelModel.get(["data", "partialData"]);
seriesLabel += replace2(partialLabel, {
displayCnt: maxDataCnt
});
} else {
seriesLabel += labelModel.get(["data", "allData"]);
}
var middleSeparator_1 = labelModel.get(["data", "separator", "middle"]);
var endSeparator_1 = labelModel.get(["data", "separator", "end"]);
var dataLabels = [];
for (var i = 0; i < data.count(); i++) {
if (i < maxDataCnt) {
var name_1 = data.getName(i);
var value = data.getValues(i);
var dataLabel = labelModel.get(["data", name_1 ? "withName" : "withoutName"]);
dataLabels.push(replace2(dataLabel, {
name: name_1,
value: value.join(middleSeparator_1)
}));
}
}
seriesLabel += dataLabels.join(middleSeparator_1) + endSeparator_1;
seriesLabels_1.push(seriesLabel);
}
});
var separatorModel = labelModel.getModel(["series", "multiple", "separator"]);
var middleSeparator = separatorModel.get("middle");
var endSeparator = separatorModel.get("end");
ariaLabel += seriesLabels_1.join(middleSeparator) + endSeparator;
dom.setAttribute("aria-label", ariaLabel);
}
}
function replace2(str, keyValues) {
if (!isString$1(str)) {
return str;
}
var result = str;
each$f(keyValues, function(value, key) {
result = result.replace(new RegExp("\\{\\s*" + key + "\\s*\\}", "g"), value);
});
return result;
}
function getTitle2() {
var title = ecModel.get("title");
if (title && title.length) {
title = title[0];
}
return title && title.text;
}
function getSeriesTypeName(type4) {
var typeNames = ecModel.getLocaleModel().get(["series", "typeNames"]);
return typeNames[type4] || typeNames.chart;
}
}
function ariaPreprocessor(option) {
if (!option || !option.aria) {
return;
}
var aria = option.aria;
if (aria.show != null) {
aria.enabled = aria.show;
}
aria.label = aria.label || {};
each$f(["description", "general", "series", "data"], function(name) {
if (aria[name] != null) {
aria.label[name] = aria[name];
}
});
}
function install$2(registers) {
registers.registerPreprocessor(ariaPreprocessor);
registers.registerVisual(registers.PRIORITY.VISUAL.ARIA, ariaVisual);
}
var RELATIONAL_EXPRESSION_OP_ALIAS_MAP = {
value: "eq",
// PENDING: not good for literal semantic?
"<": "lt",
"<=": "lte",
">": "gt",
">=": "gte",
"=": "eq",
"!=": "ne",
"<>": "ne"
// Might be misleading for sake of the difference between '==' and '===',
// so don't support them.
// '==': 'eq',
// '===': 'seq',
// '!==': 'sne'
// PENDING: Whether support some common alias "ge", "le", "neq"?
// ge: 'gte',
// le: 'lte',
// neq: 'ne',
};
var RegExpEvaluator = (
/** @class */
function() {
function RegExpEvaluator2(rVal) {
var condValue = this._condVal = isString$1(rVal) ? new RegExp(rVal) : isRegExp(rVal) ? rVal : null;
if (condValue == null) {
var errMsg = "";
throwError(errMsg);
}
}
RegExpEvaluator2.prototype.evaluate = function(lVal) {
var type4 = typeof lVal;
return isString$1(type4) ? this._condVal.test(lVal) : isNumber(type4) ? this._condVal.test(lVal + "") : false;
};
return RegExpEvaluator2;
}()
);
var ConstConditionInternal = (
/** @class */
function() {
function ConstConditionInternal2() {
}
ConstConditionInternal2.prototype.evaluate = function() {
return this.value;
};
return ConstConditionInternal2;
}()
);
var AndConditionInternal = (
/** @class */
function() {
function AndConditionInternal2() {
}
AndConditionInternal2.prototype.evaluate = function() {
var children = this.children;
for (var i = 0; i < children.length; i++) {
if (!children[i].evaluate()) {
return false;
}
}
return true;
};
return AndConditionInternal2;
}()
);
var OrConditionInternal = (
/** @class */
function() {
function OrConditionInternal2() {
}
OrConditionInternal2.prototype.evaluate = function() {
var children = this.children;
for (var i = 0; i < children.length; i++) {
if (children[i].evaluate()) {
return true;
}
}
return false;
};
return OrConditionInternal2;
}()
);
var NotConditionInternal = (
/** @class */
function() {
function NotConditionInternal2() {
}
NotConditionInternal2.prototype.evaluate = function() {
return !this.child.evaluate();
};
return NotConditionInternal2;
}()
);
var RelationalConditionInternal = (
/** @class */
function() {
function RelationalConditionInternal2() {
}
RelationalConditionInternal2.prototype.evaluate = function() {
var needParse = !!this.valueParser;
var getValue2 = this.getValue;
var tarValRaw = getValue2(this.valueGetterParam);
var tarValParsed = needParse ? this.valueParser(tarValRaw) : null;
for (var i = 0; i < this.subCondList.length; i++) {
if (!this.subCondList[i].evaluate(needParse ? tarValParsed : tarValRaw)) {
return false;
}
}
return true;
};
return RelationalConditionInternal2;
}()
);
function parseOption(exprOption, getters) {
if (exprOption === true || exprOption === false) {
var cond = new ConstConditionInternal();
cond.value = exprOption;
return cond;
}
var errMsg = "";
if (!isObjectNotArray(exprOption)) {
throwError(errMsg);
}
if (exprOption.and) {
return parseAndOrOption("and", exprOption, getters);
} else if (exprOption.or) {
return parseAndOrOption("or", exprOption, getters);
} else if (exprOption.not) {
return parseNotOption(exprOption, getters);
}
return parseRelationalOption(exprOption, getters);
}
function parseAndOrOption(op, exprOption, getters) {
var subOptionArr = exprOption[op];
var errMsg = "";
if (!isArray$1(subOptionArr)) {
throwError(errMsg);
}
if (!subOptionArr.length) {
throwError(errMsg);
}
var cond = op === "and" ? new AndConditionInternal() : new OrConditionInternal();
cond.children = map$1(subOptionArr, function(subOption) {
return parseOption(subOption, getters);
});
if (!cond.children.length) {
throwError(errMsg);
}
return cond;
}
function parseNotOption(exprOption, getters) {
var subOption = exprOption.not;
var errMsg = "";
if (!isObjectNotArray(subOption)) {
throwError(errMsg);
}
var cond = new NotConditionInternal();
cond.child = parseOption(subOption, getters);
if (!cond.child) {
throwError(errMsg);
}
return cond;
}
function parseRelationalOption(exprOption, getters) {
var errMsg = "";
var valueGetterParam = getters.prepareGetValue(exprOption);
var subCondList = [];
var exprKeys = keys(exprOption);
var parserName = exprOption.parser;
var valueParser = parserName ? getRawValueParser(parserName) : null;
for (var i = 0; i < exprKeys.length; i++) {
var keyRaw = exprKeys[i];
if (keyRaw === "parser" || getters.valueGetterAttrMap.get(keyRaw)) {
continue;
}
var op = hasOwn(RELATIONAL_EXPRESSION_OP_ALIAS_MAP, keyRaw) ? RELATIONAL_EXPRESSION_OP_ALIAS_MAP[keyRaw] : keyRaw;
var condValueRaw = exprOption[keyRaw];
var condValueParsed = valueParser ? valueParser(condValueRaw) : condValueRaw;
var evaluator = createFilterComparator(op, condValueParsed) || op === "reg" && new RegExpEvaluator(condValueParsed);
if (!evaluator) {
throwError(errMsg);
}
subCondList.push(evaluator);
}
if (!subCondList.length) {
throwError(errMsg);
}
var cond = new RelationalConditionInternal();
cond.valueGetterParam = valueGetterParam;
cond.valueParser = valueParser;
cond.getValue = getters.getValue;
cond.subCondList = subCondList;
return cond;
}
function isObjectNotArray(val) {
return isObject$3(val) && !isArrayLike(val);
}
var ConditionalExpressionParsed = (
/** @class */
function() {
function ConditionalExpressionParsed2(exprOption, getters) {
this._cond = parseOption(exprOption, getters);
}
ConditionalExpressionParsed2.prototype.evaluate = function() {
return this._cond.evaluate();
};
return ConditionalExpressionParsed2;
}()
);
function parseConditionalExpression(exprOption, getters) {
return new ConditionalExpressionParsed(exprOption, getters);
}
var filterTransform = {
type: "echarts:filter",
// PENDING: enhance to filter by index rather than create new data
transform: function(params) {
var upstream = params.upstream;
var rawItem;
var condition = parseConditionalExpression(params.config, {
valueGetterAttrMap: createHashMap({
dimension: true
}),
prepareGetValue: function(exprOption) {
var errMsg = "";
var dimLoose = exprOption.dimension;
if (!hasOwn(exprOption, "dimension")) {
throwError(errMsg);
}
var dimInfo = upstream.getDimensionInfo(dimLoose);
if (!dimInfo) {
throwError(errMsg);
}
return {
dimIdx: dimInfo.index
};
},
getValue: function(param) {
return upstream.retrieveValueFromItem(rawItem, param.dimIdx);
}
});
var resultData = [];
for (var i = 0, len2 = upstream.count(); i < len2; i++) {
rawItem = upstream.getRawDataItem(i);
if (condition.evaluate()) {
resultData.push(rawItem);
}
}
return {
data: resultData
};
}
};
var sortTransform = {
type: "echarts:sort",
transform: function(params) {
var upstream = params.upstream;
var config = params.config;
var errMsg = "";
var orderExprList = normalizeToArray(config);
if (!orderExprList.length) {
throwError(errMsg);
}
var orderDefList = [];
each$f(orderExprList, function(orderExpr) {
var dimLoose = orderExpr.dimension;
var order = orderExpr.order;
var parserName = orderExpr.parser;
var incomparable = orderExpr.incomparable;
if (dimLoose == null) {
throwError(errMsg);
}
if (order !== "asc" && order !== "desc") {
throwError(errMsg);
}
if (incomparable && incomparable !== "min" && incomparable !== "max") {
var errMsg_1 = "";
throwError(errMsg_1);
}
if (order !== "asc" && order !== "desc") {
var errMsg_2 = "";
throwError(errMsg_2);
}
var dimInfo = upstream.getDimensionInfo(dimLoose);
if (!dimInfo) {
throwError(errMsg);
}
var parser = parserName ? getRawValueParser(parserName) : null;
if (parserName && !parser) {
throwError(errMsg);
}
orderDefList.push({
dimIdx: dimInfo.index,
parser,
comparator: new SortOrderComparator(order, incomparable)
});
});
var sourceFormat = upstream.sourceFormat;
if (sourceFormat !== SOURCE_FORMAT_ARRAY_ROWS && sourceFormat !== SOURCE_FORMAT_OBJECT_ROWS) {
throwError(errMsg);
}
var resultData = [];
for (var i = 0, len2 = upstream.count(); i < len2; i++) {
resultData.push(upstream.getRawDataItem(i));
}
resultData.sort(function(item0, item1) {
for (var i2 = 0; i2 < orderDefList.length; i2++) {
var orderDef = orderDefList[i2];
var val0 = upstream.retrieveValueFromItem(item0, orderDef.dimIdx);
var val1 = upstream.retrieveValueFromItem(item1, orderDef.dimIdx);
if (orderDef.parser) {
val0 = orderDef.parser(val0);
val1 = orderDef.parser(val1);
}
var result = orderDef.comparator.evaluate(val0, val1);
if (result !== 0) {
return result;
}
}
return 0;
});
return {
data: resultData
};
}
};
function install$1(registers) {
registers.registerTransform(filterTransform);
registers.registerTransform(sortTransform);
}
var DatasetModel = (
/** @class */
function(_super) {
__extends(DatasetModel2, _super);
function DatasetModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = "dataset";
return _this;
}
DatasetModel2.prototype.init = function(option, parentModel, ecModel) {
_super.prototype.init.call(this, option, parentModel, ecModel);
this._sourceManager = new SourceManager(this);
disableTransformOptionMerge(this);
};
DatasetModel2.prototype.mergeOption = function(newOption, ecModel) {
_super.prototype.mergeOption.call(this, newOption, ecModel);
disableTransformOptionMerge(this);
};
DatasetModel2.prototype.optionUpdated = function() {
this._sourceManager.dirty();
};
DatasetModel2.prototype.getSourceManager = function() {
return this._sourceManager;
};
DatasetModel2.type = "dataset";
DatasetModel2.defaultOption = {
seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN
};
return DatasetModel2;
}(ComponentModel)
);
var DatasetView = (
/** @class */
function(_super) {
__extends(DatasetView2, _super);
function DatasetView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = "dataset";
return _this;
}
DatasetView2.type = "dataset";
return DatasetView2;
}(ComponentView)
);
function install(registers) {
registers.registerComponentModel(DatasetModel);
registers.registerComponentView(DatasetView);
}
var CMD = PathProxy.CMD;
function aroundEqual(a, b2) {
return Math.abs(a - b2) < 1e-5;
}
function pathToBezierCurves(path) {
var data = path.data;
var len2 = path.len();
var bezierArrayGroups = [];
var currentSubpath;
var xi2 = 0;
var yi2 = 0;
var x0 = 0;
var y0 = 0;
function createNewSubpath(x3, y3) {
if (currentSubpath && currentSubpath.length > 2) {
bezierArrayGroups.push(currentSubpath);
}
currentSubpath = [x3, y3];
}
function addLine(x02, y02, x12, y12) {
if (!(aroundEqual(x02, x12) && aroundEqual(y02, y12))) {
currentSubpath.push(x02, y02, x12, y12, x12, y12);
}
}
function addArc(startAngle2, endAngle2, cx2, cy2, rx2, ry2) {
var delta = Math.abs(endAngle2 - startAngle2);
var len3 = Math.tan(delta / 4) * 4 / 3;
var dir3 = endAngle2 < startAngle2 ? -1 : 1;
var c1 = Math.cos(startAngle2);
var s1 = Math.sin(startAngle2);
var c2 = Math.cos(endAngle2);
var s2 = Math.sin(endAngle2);
var x12 = c1 * rx2 + cx2;
var y12 = s1 * ry2 + cy2;
var x4 = c2 * rx2 + cx2;
var y4 = s2 * ry2 + cy2;
var hx = rx2 * len3 * dir3;
var hy = ry2 * len3 * dir3;
currentSubpath.push(x12 - hx * s1, y12 + hy * c1, x4 + hx * s2, y4 - hy * c2, x4, y4);
}
var x1;
var y1;
var x2;
var y2;
for (var i = 0; i < len2; ) {
var cmd = data[i++];
var isFirst = i === 1;
if (isFirst) {
xi2 = data[i];
yi2 = data[i + 1];
x0 = xi2;
y0 = yi2;
if (cmd === CMD.L || cmd === CMD.C || cmd === CMD.Q) {
currentSubpath = [x0, y0];
}
}
switch (cmd) {
case CMD.M:
xi2 = x0 = data[i++];
yi2 = y0 = data[i++];
createNewSubpath(x0, y0);
break;
case CMD.L:
x1 = data[i++];
y1 = data[i++];
addLine(xi2, yi2, x1, y1);
xi2 = x1;
yi2 = y1;
break;
case CMD.C:
currentSubpath.push(data[i++], data[i++], data[i++], data[i++], xi2 = data[i++], yi2 = data[i++]);
break;
case CMD.Q:
x1 = data[i++];
y1 = data[i++];
x2 = data[i++];
y2 = data[i++];
currentSubpath.push(xi2 + 2 / 3 * (x1 - xi2), yi2 + 2 / 3 * (y1 - yi2), x2 + 2 / 3 * (x1 - x2), y2 + 2 / 3 * (y1 - y2), x2, y2);
xi2 = x2;
yi2 = y2;
break;
case CMD.A:
var cx = data[i++];
var cy = data[i++];
var rx = data[i++];
var ry = data[i++];
var startAngle = data[i++];
var endAngle = data[i++] + startAngle;
i += 1;
var anticlockwise = !data[i++];
x1 = Math.cos(startAngle) * rx + cx;
y1 = Math.sin(startAngle) * ry + cy;
if (isFirst) {
x0 = x1;
y0 = y1;
createNewSubpath(x0, y0);
} else {
addLine(xi2, yi2, x1, y1);
}
xi2 = Math.cos(endAngle) * rx + cx;
yi2 = Math.sin(endAngle) * ry + cy;
var step = (anticlockwise ? -1 : 1) * Math.PI / 2;
for (var angle = startAngle; anticlockwise ? angle > endAngle : angle < endAngle; angle += step) {
var nextAngle = anticlockwise ? Math.max(angle + step, endAngle) : Math.min(angle + step, endAngle);
addArc(angle, nextAngle, cx, cy, rx, ry);
}
break;
case CMD.R:
x0 = xi2 = data[i++];
y0 = yi2 = data[i++];
x1 = x0 + data[i++];
y1 = y0 + data[i++];
createNewSubpath(x1, y0);
addLine(x1, y0, x1, y1);
addLine(x1, y1, x0, y1);
addLine(x0, y1, x0, y0);
addLine(x0, y0, x1, y0);
break;
case CMD.Z:
currentSubpath && addLine(xi2, yi2, x0, y0);
xi2 = x0;
yi2 = y0;
break;
}
}
if (currentSubpath && currentSubpath.length > 2) {
bezierArrayGroups.push(currentSubpath);
}
return bezierArrayGroups;
}
function adpativeBezier(x0, y0, x1, y1, x2, y2, x3, y3, out2, scale2) {
if (aroundEqual(x0, x1) && aroundEqual(y0, y1) && aroundEqual(x2, x3) && aroundEqual(y2, y3)) {
out2.push(x3, y3);
return;
}
var PIXEL_DISTANCE = 2 / scale2;
var PIXEL_DISTANCE_SQR = PIXEL_DISTANCE * PIXEL_DISTANCE;
var dx = x3 - x0;
var dy = y3 - y0;
var d2 = Math.sqrt(dx * dx + dy * dy);
dx /= d2;
dy /= d2;
var dx1 = x1 - x0;
var dy1 = y1 - y0;
var dx2 = x2 - x3;
var dy2 = y2 - y3;
var cp1LenSqr = dx1 * dx1 + dy1 * dy1;
var cp2LenSqr = dx2 * dx2 + dy2 * dy2;
if (cp1LenSqr < PIXEL_DISTANCE_SQR && cp2LenSqr < PIXEL_DISTANCE_SQR) {
out2.push(x3, y3);
return;
}
var projLen1 = dx * dx1 + dy * dy1;
var projLen2 = -dx * dx2 - dy * dy2;
var d1Sqr = cp1LenSqr - projLen1 * projLen1;
var d2Sqr = cp2LenSqr - projLen2 * projLen2;
if (d1Sqr < PIXEL_DISTANCE_SQR && projLen1 >= 0 && d2Sqr < PIXEL_DISTANCE_SQR && projLen2 >= 0) {
out2.push(x3, y3);
return;
}
var tmpSegX = [];
var tmpSegY = [];
cubicSubdivide(x0, x1, x2, x3, 0.5, tmpSegX);
cubicSubdivide(y0, y1, y2, y3, 0.5, tmpSegY);
adpativeBezier(tmpSegX[0], tmpSegY[0], tmpSegX[1], tmpSegY[1], tmpSegX[2], tmpSegY[2], tmpSegX[3], tmpSegY[3], out2, scale2);
adpativeBezier(tmpSegX[4], tmpSegY[4], tmpSegX[5], tmpSegY[5], tmpSegX[6], tmpSegY[6], tmpSegX[7], tmpSegY[7], out2, scale2);
}
function pathToPolygons(path, scale2) {
var bezierArrayGroups = pathToBezierCurves(path);
var polygons = [];
scale2 = scale2 || 1;
for (var i = 0; i < bezierArrayGroups.length; i++) {
var beziers = bezierArrayGroups[i];
var polygon = [];
var x0 = beziers[0];
var y0 = beziers[1];
polygon.push(x0, y0);
for (var k2 = 2; k2 < beziers.length; ) {
var x1 = beziers[k2++];
var y1 = beziers[k2++];
var x2 = beziers[k2++];
var y2 = beziers[k2++];
var x3 = beziers[k2++];
var y3 = beziers[k2++];
adpativeBezier(x0, y0, x1, y1, x2, y2, x3, y3, polygon, scale2);
x0 = x3;
y0 = y3;
}
polygons.push(polygon);
}
return polygons;
}
function getDividingGrids(dimSize, rowDim, count2) {
var rowSize = dimSize[rowDim];
var columnSize = dimSize[1 - rowDim];
var ratio = Math.abs(rowSize / columnSize);
var rowCount = Math.ceil(Math.sqrt(ratio * count2));
var columnCount = Math.floor(count2 / rowCount);
if (columnCount === 0) {
columnCount = 1;
rowCount = count2;
}
var grids = [];
for (var i = 0; i < rowCount; i++) {
grids.push(columnCount);
}
var currentCount = rowCount * columnCount;
var remained = count2 - currentCount;
if (remained > 0) {
for (var i = 0; i < remained; i++) {
grids[i % rowCount] += 1;
}
}
return grids;
}
function divideSector(sectorShape, count2, outShapes) {
var r0 = sectorShape.r0;
var r2 = sectorShape.r;
var startAngle = sectorShape.startAngle;
var endAngle = sectorShape.endAngle;
var angle = Math.abs(endAngle - startAngle);
var arcLen = angle * r2;
var deltaR = r2 - r0;
var isAngleRow = arcLen > Math.abs(deltaR);
var grids = getDividingGrids([arcLen, deltaR], isAngleRow ? 0 : 1, count2);
var rowSize = (isAngleRow ? angle : deltaR) / grids.length;
for (var row = 0; row < grids.length; row++) {
var columnSize = (isAngleRow ? deltaR : angle) / grids[row];
for (var column2 = 0; column2 < grids[row]; column2++) {
var newShape = {};
if (isAngleRow) {
newShape.startAngle = startAngle + rowSize * row;
newShape.endAngle = startAngle + rowSize * (row + 1);
newShape.r0 = r0 + columnSize * column2;
newShape.r = r0 + columnSize * (column2 + 1);
} else {
newShape.startAngle = startAngle + columnSize * column2;
newShape.endAngle = startAngle + columnSize * (column2 + 1);
newShape.r0 = r0 + rowSize * row;
newShape.r = r0 + rowSize * (row + 1);
}
newShape.clockwise = sectorShape.clockwise;
newShape.cx = sectorShape.cx;
newShape.cy = sectorShape.cy;
outShapes.push(newShape);
}
}
}
function divideRect(rectShape, count2, outShapes) {
var width = rectShape.width;
var height = rectShape.height;
var isHorizontalRow = width > height;
var grids = getDividingGrids([width, height], isHorizontalRow ? 0 : 1, count2);
var rowSizeDim = isHorizontalRow ? "width" : "height";
var columnSizeDim = isHorizontalRow ? "height" : "width";
var rowDim = isHorizontalRow ? "x" : "y";
var columnDim = isHorizontalRow ? "y" : "x";
var rowSize = rectShape[rowSizeDim] / grids.length;
for (var row = 0; row < grids.length; row++) {
var columnSize = rectShape[columnSizeDim] / grids[row];
for (var column2 = 0; column2 < grids[row]; column2++) {
var newShape = {};
newShape[rowDim] = row * rowSize;
newShape[columnDim] = column2 * columnSize;
newShape[rowSizeDim] = rowSize;
newShape[columnSizeDim] = columnSize;
newShape.x += rectShape.x;
newShape.y += rectShape.y;
outShapes.push(newShape);
}
}
}
function crossProduct2d(x1, y1, x2, y2) {
return x1 * y2 - x2 * y1;
}
function lineLineIntersect(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y) {
var mx = a2x - a1x;
var my = a2y - a1y;
var nx = b2x - b1x;
var ny = b2y - b1y;
var nmCrossProduct = crossProduct2d(nx, ny, mx, my);
if (Math.abs(nmCrossProduct) < 1e-6) {
return null;
}
var b1a1x = a1x - b1x;
var b1a1y = a1y - b1y;
var p2 = crossProduct2d(b1a1x, b1a1y, nx, ny) / nmCrossProduct;
if (p2 < 0 || p2 > 1) {
return null;
}
return new Point(p2 * mx + a1x, p2 * my + a1y);
}
function projPtOnLine(pt, lineA, lineB) {
var dir3 = new Point();
Point.sub(dir3, lineB, lineA);
dir3.normalize();
var dir22 = new Point();
Point.sub(dir22, pt, lineA);
var len2 = dir22.dot(dir3);
return len2;
}
function addToPoly(poly, pt) {
var last = poly[poly.length - 1];
if (last && last[0] === pt[0] && last[1] === pt[1]) {
return;
}
poly.push(pt);
}
function splitPolygonByLine(points2, lineA, lineB) {
var len2 = points2.length;
var intersections = [];
for (var i = 0; i < len2; i++) {
var p0 = points2[i];
var p1 = points2[(i + 1) % len2];
var intersectionPt = lineLineIntersect(p0[0], p0[1], p1[0], p1[1], lineA.x, lineA.y, lineB.x, lineB.y);
if (intersectionPt) {
intersections.push({
projPt: projPtOnLine(intersectionPt, lineA, lineB),
pt: intersectionPt,
idx: i
});
}
}
if (intersections.length < 2) {
return [{ points: points2 }, { points: points2 }];
}
intersections.sort(function(a, b2) {
return a.projPt - b2.projPt;
});
var splitPt0 = intersections[0];
var splitPt1 = intersections[intersections.length - 1];
if (splitPt1.idx < splitPt0.idx) {
var tmp = splitPt0;
splitPt0 = splitPt1;
splitPt1 = tmp;
}
var splitPt0Arr = [splitPt0.pt.x, splitPt0.pt.y];
var splitPt1Arr = [splitPt1.pt.x, splitPt1.pt.y];
var newPolyA = [splitPt0Arr];
var newPolyB = [splitPt1Arr];
for (var i = splitPt0.idx + 1; i <= splitPt1.idx; i++) {
addToPoly(newPolyA, points2[i].slice());
}
addToPoly(newPolyA, splitPt1Arr);
addToPoly(newPolyA, splitPt0Arr);
for (var i = splitPt1.idx + 1; i <= splitPt0.idx + len2; i++) {
addToPoly(newPolyB, points2[i % len2].slice());
}
addToPoly(newPolyB, splitPt0Arr);
addToPoly(newPolyB, splitPt1Arr);
return [{
points: newPolyA
}, {
points: newPolyB
}];
}
function binaryDividePolygon(polygonShape) {
var points2 = polygonShape.points;
var min3 = [];
var max3 = [];
fromPoints(points2, min3, max3);
var boundingRect = new BoundingRect(min3[0], min3[1], max3[0] - min3[0], max3[1] - min3[1]);
var width = boundingRect.width;
var height = boundingRect.height;
var x2 = boundingRect.x;
var y2 = boundingRect.y;
var pt02 = new Point();
var pt12 = new Point();
if (width > height) {
pt02.x = pt12.x = x2 + width / 2;
pt02.y = y2;
pt12.y = y2 + height;
} else {
pt02.y = pt12.y = y2 + height / 2;
pt02.x = x2;
pt12.x = x2 + width;
}
return splitPolygonByLine(points2, pt02, pt12);
}
function binaryDivideRecursive(divider, shape, count2, out2) {
if (count2 === 1) {
out2.push(shape);
} else {
var mid = Math.floor(count2 / 2);
var sub2 = divider(shape);
binaryDivideRecursive(divider, sub2[0], mid, out2);
binaryDivideRecursive(divider, sub2[1], count2 - mid, out2);
}
return out2;
}
function clone(path, count2) {
var paths = [];
for (var i = 0; i < count2; i++) {
paths.push(clonePath(path));
}
return paths;
}
function copyPathProps(source, target) {
target.setStyle(source.style);
target.z = source.z;
target.z2 = source.z2;
target.zlevel = source.zlevel;
}
function polygonConvert(points2) {
var out2 = [];
for (var i = 0; i < points2.length; ) {
out2.push([points2[i++], points2[i++]]);
}
return out2;
}
function split(path, count2) {
var outShapes = [];
var shape = path.shape;
var OutShapeCtor;
switch (path.type) {
case "rect":
divideRect(shape, count2, outShapes);
OutShapeCtor = Rect$2;
break;
case "sector":
divideSector(shape, count2, outShapes);
OutShapeCtor = Sector;
break;
case "circle":
divideSector({
r0: 0,
r: shape.r,
startAngle: 0,
endAngle: Math.PI * 2,
cx: shape.cx,
cy: shape.cy
}, count2, outShapes);
OutShapeCtor = Sector;
break;
default:
var m2 = path.getComputedTransform();
var scale2 = m2 ? Math.sqrt(Math.max(m2[0] * m2[0] + m2[1] * m2[1], m2[2] * m2[2] + m2[3] * m2[3])) : 1;
var polygons = map$1(pathToPolygons(path.getUpdatedPathProxy(), scale2), function(poly) {
return polygonConvert(poly);
});
var polygonCount = polygons.length;
if (polygonCount === 0) {
binaryDivideRecursive(binaryDividePolygon, {
points: polygons[0]
}, count2, outShapes);
} else if (polygonCount === count2) {
for (var i = 0; i < polygonCount; i++) {
outShapes.push({
points: polygons[i]
});
}
} else {
var totalArea_1 = 0;
var items = map$1(polygons, function(poly) {
var min3 = [];
var max3 = [];
fromPoints(poly, min3, max3);
var area = (max3[1] - min3[1]) * (max3[0] - min3[0]);
totalArea_1 += area;
return { poly, area };
});
items.sort(function(a, b2) {
return b2.area - a.area;
});
var left = count2;
for (var i = 0; i < polygonCount; i++) {
var item = items[i];
if (left <= 0) {
break;
}
var selfCount = i === polygonCount - 1 ? left : Math.ceil(item.area / totalArea_1 * count2);
if (selfCount < 0) {
continue;
}
binaryDivideRecursive(binaryDividePolygon, {
points: item.poly
}, selfCount, outShapes);
left -= selfCount;
}
}
OutShapeCtor = Polygon;
break;
}
if (!OutShapeCtor) {
return clone(path, count2);
}
var out2 = [];
for (var i = 0; i < outShapes.length; i++) {
var subPath = new OutShapeCtor();
subPath.setShape(outShapes[i]);
copyPathProps(path, subPath);
out2.push(subPath);
}
return out2;
}
function alignSubpath(subpath1, subpath2) {
var len1 = subpath1.length;
var len2 = subpath2.length;
if (len1 === len2) {
return [subpath1, subpath2];
}
var tmpSegX = [];
var tmpSegY = [];
var shorterPath = len1 < len2 ? subpath1 : subpath2;
var shorterLen = Math.min(len1, len2);
var diff = Math.abs(len2 - len1) / 6;
var shorterBezierCount = (shorterLen - 2) / 6;
var eachCurveSubDivCount = Math.ceil(diff / shorterBezierCount) + 1;
var newSubpath = [shorterPath[0], shorterPath[1]];
var remained = diff;
for (var i = 2; i < shorterLen; ) {
var x0 = shorterPath[i - 2];
var y0 = shorterPath[i - 1];
var x1 = shorterPath[i++];
var y1 = shorterPath[i++];
var x2 = shorterPath[i++];
var y2 = shorterPath[i++];
var x3 = shorterPath[i++];
var y3 = shorterPath[i++];
if (remained <= 0) {
newSubpath.push(x1, y1, x2, y2, x3, y3);
continue;
}
var actualSubDivCount = Math.min(remained, eachCurveSubDivCount - 1) + 1;
for (var k2 = 1; k2 <= actualSubDivCount; k2++) {
var p2 = k2 / actualSubDivCount;
cubicSubdivide(x0, x1, x2, x3, p2, tmpSegX);
cubicSubdivide(y0, y1, y2, y3, p2, tmpSegY);
x0 = tmpSegX[3];
y0 = tmpSegY[3];
newSubpath.push(tmpSegX[1], tmpSegY[1], tmpSegX[2], tmpSegY[2], x0, y0);
x1 = tmpSegX[5];
y1 = tmpSegY[5];
x2 = tmpSegX[6];
y2 = tmpSegY[6];
}
remained -= actualSubDivCount - 1;
}
return shorterPath === subpath1 ? [newSubpath, subpath2] : [subpath1, newSubpath];
}
function createSubpath(lastSubpathSubpath, otherSubpath) {
var len2 = lastSubpathSubpath.length;
var lastX = lastSubpathSubpath[len2 - 2];
var lastY = lastSubpathSubpath[len2 - 1];
var newSubpath = [];
for (var i = 0; i < otherSubpath.length; ) {
newSubpath[i++] = lastX;
newSubpath[i++] = lastY;
}
return newSubpath;
}
function alignBezierCurves(array1, array22) {
var _a2;
var lastSubpath1;
var lastSubpath2;
var newArray1 = [];
var newArray2 = [];
for (var i = 0; i < Math.max(array1.length, array22.length); i++) {
var subpath1 = array1[i];
var subpath2 = array22[i];
var newSubpath1 = void 0;
var newSubpath2 = void 0;
if (!subpath1) {
newSubpath1 = createSubpath(lastSubpath1 || subpath2, subpath2);
newSubpath2 = subpath2;
} else if (!subpath2) {
newSubpath2 = createSubpath(lastSubpath2 || subpath1, subpath1);
newSubpath1 = subpath1;
} else {
_a2 = alignSubpath(subpath1, subpath2), newSubpath1 = _a2[0], newSubpath2 = _a2[1];
lastSubpath1 = newSubpath1;
lastSubpath2 = newSubpath2;
}
newArray1.push(newSubpath1);
newArray2.push(newSubpath2);
}
return [newArray1, newArray2];
}
function centroid(array4) {
var signedArea = 0;
var cx = 0;
var cy = 0;
var len2 = array4.length;
for (var i = 0, j = len2 - 2; i < len2; j = i, i += 2) {
var x0 = array4[j];
var y0 = array4[j + 1];
var x1 = array4[i];
var y1 = array4[i + 1];
var a = x0 * y1 - x1 * y0;
signedArea += a;
cx += (x0 + x1) * a;
cy += (y0 + y1) * a;
}
if (signedArea === 0) {
return [array4[0] || 0, array4[1] || 0];
}
return [cx / signedArea / 3, cy / signedArea / 3, signedArea];
}
function findBestRingOffset(fromSubBeziers, toSubBeziers, fromCp, toCp) {
var bezierCount = (fromSubBeziers.length - 2) / 6;
var bestScore = Infinity;
var bestOffset = 0;
var len2 = fromSubBeziers.length;
var len22 = len2 - 2;
for (var offset2 = 0; offset2 < bezierCount; offset2++) {
var cursorOffset = offset2 * 6;
var score = 0;
for (var k2 = 0; k2 < len2; k2 += 2) {
var idx = k2 === 0 ? cursorOffset : (cursorOffset + k2 - 2) % len22 + 2;
var x0 = fromSubBeziers[idx] - fromCp[0];
var y0 = fromSubBeziers[idx + 1] - fromCp[1];
var x1 = toSubBeziers[k2] - toCp[0];
var y1 = toSubBeziers[k2 + 1] - toCp[1];
var dx = x1 - x0;
var dy = y1 - y0;
score += dx * dx + dy * dy;
}
if (score < bestScore) {
bestScore = score;
bestOffset = offset2;
}
}
return bestOffset;
}
function reverse(array4) {
var newArr = [];
var len2 = array4.length;
for (var i = 0; i < len2; i += 2) {
newArr[i] = array4[len2 - i - 2];
newArr[i + 1] = array4[len2 - i - 1];
}
return newArr;
}
function findBestMorphingRotation(fromArr, toArr2, searchAngleIteration, searchAngleRange) {
var result = [];
var fromNeedsReverse;
for (var i = 0; i < fromArr.length; i++) {
var fromSubpathBezier = fromArr[i];
var toSubpathBezier = toArr2[i];
var fromCp = centroid(fromSubpathBezier);
var toCp = centroid(toSubpathBezier);
if (fromNeedsReverse == null) {
fromNeedsReverse = fromCp[2] < 0 !== toCp[2] < 0;
}
var newFromSubpathBezier = [];
var newToSubpathBezier = [];
var bestAngle = 0;
var bestScore = Infinity;
var tmpArr2 = [];
var len2 = fromSubpathBezier.length;
if (fromNeedsReverse) {
fromSubpathBezier = reverse(fromSubpathBezier);
}
var offset2 = findBestRingOffset(fromSubpathBezier, toSubpathBezier, fromCp, toCp) * 6;
var len22 = len2 - 2;
for (var k2 = 0; k2 < len22; k2 += 2) {
var idx = (offset2 + k2) % len22 + 2;
newFromSubpathBezier[k2 + 2] = fromSubpathBezier[idx] - fromCp[0];
newFromSubpathBezier[k2 + 3] = fromSubpathBezier[idx + 1] - fromCp[1];
}
newFromSubpathBezier[0] = fromSubpathBezier[offset2] - fromCp[0];
newFromSubpathBezier[1] = fromSubpathBezier[offset2 + 1] - fromCp[1];
{
var step = searchAngleRange / searchAngleIteration;
for (var angle = -searchAngleRange / 2; angle <= searchAngleRange / 2; angle += step) {
var sa2 = Math.sin(angle);
var ca2 = Math.cos(angle);
var score = 0;
for (var k2 = 0; k2 < fromSubpathBezier.length; k2 += 2) {
var x0 = newFromSubpathBezier[k2];
var y0 = newFromSubpathBezier[k2 + 1];
var x1 = toSubpathBezier[k2] - toCp[0];
var y1 = toSubpathBezier[k2 + 1] - toCp[1];
var newX1 = x1 * ca2 - y1 * sa2;
var newY1 = x1 * sa2 + y1 * ca2;
tmpArr2[k2] = newX1;
tmpArr2[k2 + 1] = newY1;
var dx = newX1 - x0;
var dy = newY1 - y0;
score += dx * dx + dy * dy;
}
if (score < bestScore) {
bestScore = score;
bestAngle = angle;
for (var m2 = 0; m2 < tmpArr2.length; m2++) {
newToSubpathBezier[m2] = tmpArr2[m2];
}
}
}
}
result.push({
from: newFromSubpathBezier,
to: newToSubpathBezier,
fromCp,
toCp,
rotation: -bestAngle
});
}
return result;
}
function isCombineMorphing(path) {
return path.__isCombineMorphing;
}
var SAVED_METHOD_PREFIX = "__mOriginal_";
function saveAndModifyMethod(obj, methodName, modifiers) {
var savedMethodName = SAVED_METHOD_PREFIX + methodName;
var originalMethod = obj[savedMethodName] || obj[methodName];
if (!obj[savedMethodName]) {
obj[savedMethodName] = obj[methodName];
}
var replace2 = modifiers.replace;
var after = modifiers.after;
var before = modifiers.before;
obj[methodName] = function() {
var args = arguments;
var res;
before && before.apply(this, args);
if (replace2) {
res = replace2.apply(this, args);
} else {
res = originalMethod.apply(this, args);
}
after && after.apply(this, args);
return res;
};
}
function restoreMethod(obj, methodName) {
var savedMethodName = SAVED_METHOD_PREFIX + methodName;
if (obj[savedMethodName]) {
obj[methodName] = obj[savedMethodName];
obj[savedMethodName] = null;
}
}
function applyTransformOnBeziers(bezierCurves, mm) {
for (var i = 0; i < bezierCurves.length; i++) {
var subBeziers = bezierCurves[i];
for (var k2 = 0; k2 < subBeziers.length; ) {
var x2 = subBeziers[k2];
var y2 = subBeziers[k2 + 1];
subBeziers[k2++] = mm[0] * x2 + mm[2] * y2 + mm[4];
subBeziers[k2++] = mm[1] * x2 + mm[3] * y2 + mm[5];
}
}
}
function prepareMorphPath(fromPath, toPath) {
var fromPathProxy = fromPath.getUpdatedPathProxy();
var toPathProxy = toPath.getUpdatedPathProxy();
var _a2 = alignBezierCurves(pathToBezierCurves(fromPathProxy), pathToBezierCurves(toPathProxy)), fromBezierCurves = _a2[0], toBezierCurves = _a2[1];
var fromPathTransform = fromPath.getComputedTransform();
var toPathTransform = toPath.getComputedTransform();
function updateIdentityTransform() {
this.transform = null;
}
fromPathTransform && applyTransformOnBeziers(fromBezierCurves, fromPathTransform);
toPathTransform && applyTransformOnBeziers(toBezierCurves, toPathTransform);
saveAndModifyMethod(toPath, "updateTransform", { replace: updateIdentityTransform });
toPath.transform = null;
var morphingData = findBestMorphingRotation(fromBezierCurves, toBezierCurves, 10, Math.PI);
var tmpArr2 = [];
saveAndModifyMethod(toPath, "buildPath", { replace: function(path) {
var t2 = toPath.__morphT;
var onet = 1 - t2;
var newCp = [];
for (var i = 0; i < morphingData.length; i++) {
var item = morphingData[i];
var from2 = item.from;
var to = item.to;
var angle = item.rotation * t2;
var fromCp = item.fromCp;
var toCp = item.toCp;
var sa2 = Math.sin(angle);
var ca2 = Math.cos(angle);
lerp$1(newCp, fromCp, toCp, t2);
for (var m2 = 0; m2 < from2.length; m2 += 2) {
var x0_1 = from2[m2];
var y0_1 = from2[m2 + 1];
var x1 = to[m2];
var y1 = to[m2 + 1];
var x2 = x0_1 * onet + x1 * t2;
var y2 = y0_1 * onet + y1 * t2;
tmpArr2[m2] = x2 * ca2 - y2 * sa2 + newCp[0];
tmpArr2[m2 + 1] = x2 * sa2 + y2 * ca2 + newCp[1];
}
var x0 = tmpArr2[0];
var y0 = tmpArr2[1];
path.moveTo(x0, y0);
for (var m2 = 2; m2 < from2.length; ) {
var x1 = tmpArr2[m2++];
var y1 = tmpArr2[m2++];
var x22 = tmpArr2[m2++];
var y22 = tmpArr2[m2++];
var x3 = tmpArr2[m2++];
var y3 = tmpArr2[m2++];
if (x0 === x1 && y0 === y1 && x22 === x3 && y22 === y3) {
path.lineTo(x3, y3);
} else {
path.bezierCurveTo(x1, y1, x22, y22, x3, y3);
}
x0 = x3;
y0 = y3;
}
}
} });
}
function morphPath(fromPath, toPath, animationOpts) {
if (!fromPath || !toPath) {
return toPath;
}
var oldDone = animationOpts.done;
var oldDuring = animationOpts.during;
prepareMorphPath(fromPath, toPath);
toPath.__morphT = 0;
function restoreToPath() {
restoreMethod(toPath, "buildPath");
restoreMethod(toPath, "updateTransform");
toPath.__morphT = -1;
toPath.createPathProxy();
toPath.dirtyShape();
}
toPath.animateTo({
__morphT: 1
}, defaults({
during: function(p2) {
toPath.dirtyShape();
oldDuring && oldDuring(p2);
},
done: function() {
restoreToPath();
oldDone && oldDone();
}
}, animationOpts));
return toPath;
}
function hilbert(x2, y2, minX, minY, maxX, maxY) {
var bits = 16;
x2 = maxX === minX ? 0 : Math.round(32767 * (x2 - minX) / (maxX - minX));
y2 = maxY === minY ? 0 : Math.round(32767 * (y2 - minY) / (maxY - minY));
var d2 = 0;
var tmp;
for (var s = (1 << bits) / 2; s > 0; s /= 2) {
var rx = 0;
var ry = 0;
if ((x2 & s) > 0) {
rx = 1;
}
if ((y2 & s) > 0) {
ry = 1;
}
d2 += s * s * (3 * rx ^ ry);
if (ry === 0) {
if (rx === 1) {
x2 = s - 1 - x2;
y2 = s - 1 - y2;
}
tmp = x2;
x2 = y2;
y2 = tmp;
}
}
return d2;
}
function sortPaths(pathList) {
var xMin = Infinity;
var yMin = Infinity;
var xMax = -Infinity;
var yMax = -Infinity;
var cps = map$1(pathList, function(path) {
var rect = path.getBoundingRect();
var m2 = path.getComputedTransform();
var x2 = rect.x + rect.width / 2 + (m2 ? m2[4] : 0);
var y2 = rect.y + rect.height / 2 + (m2 ? m2[5] : 0);
xMin = Math.min(x2, xMin);
yMin = Math.min(y2, yMin);
xMax = Math.max(x2, xMax);
yMax = Math.max(y2, yMax);
return [x2, y2];
});
var items = map$1(cps, function(cp, idx) {
return {
cp,
z: hilbert(cp[0], cp[1], xMin, yMin, xMax, yMax),
path: pathList[idx]
};
});
return items.sort(function(a, b2) {
return a.z - b2.z;
}).map(function(item) {
return item.path;
});
}
function defaultDividePath(param) {
return split(param.path, param.count);
}
function createEmptyReturn() {
return {
fromIndividuals: [],
toIndividuals: [],
count: 0
};
}
function combineMorph(fromList, toPath, animationOpts) {
var fromPathList = [];
function addFromPath(fromList2) {
for (var i2 = 0; i2 < fromList2.length; i2++) {
var from3 = fromList2[i2];
if (isCombineMorphing(from3)) {
addFromPath(from3.childrenRef());
} else if (from3 instanceof Path) {
fromPathList.push(from3);
}
}
}
addFromPath(fromList);
var separateCount = fromPathList.length;
if (!separateCount) {
return createEmptyReturn();
}
var dividePath = animationOpts.dividePath || defaultDividePath;
var toSubPathList = dividePath({
path: toPath,
count: separateCount
});
if (toSubPathList.length !== separateCount) {
console.error("Invalid morphing: unmatched splitted path");
return createEmptyReturn();
}
fromPathList = sortPaths(fromPathList);
toSubPathList = sortPaths(toSubPathList);
var oldDone = animationOpts.done;
var oldDuring = animationOpts.during;
var individualDelay = animationOpts.individualDelay;
var identityTransform = new Transformable();
for (var i = 0; i < separateCount; i++) {
var from2 = fromPathList[i];
var to = toSubPathList[i];
to.parent = toPath;
to.copyTransform(identityTransform);
if (!individualDelay) {
prepareMorphPath(from2, to);
}
}
toPath.__isCombineMorphing = true;
toPath.childrenRef = function() {
return toSubPathList;
};
function addToSubPathListToZr(zr) {
for (var i2 = 0; i2 < toSubPathList.length; i2++) {
toSubPathList[i2].addSelfToZr(zr);
}
}
saveAndModifyMethod(toPath, "addSelfToZr", {
after: function(zr) {
addToSubPathListToZr(zr);
}
});
saveAndModifyMethod(toPath, "removeSelfFromZr", {
after: function(zr) {
for (var i2 = 0; i2 < toSubPathList.length; i2++) {
toSubPathList[i2].removeSelfFromZr(zr);
}
}
});
function restoreToPath() {
toPath.__isCombineMorphing = false;
toPath.__morphT = -1;
toPath.childrenRef = null;
restoreMethod(toPath, "addSelfToZr");
restoreMethod(toPath, "removeSelfFromZr");
}
var toLen = toSubPathList.length;
if (individualDelay) {
var animating_1 = toLen;
var eachDone = function() {
animating_1--;
if (animating_1 === 0) {
restoreToPath();
oldDone && oldDone();
}
};
for (var i = 0; i < toLen; i++) {
var indivdualAnimationOpts = individualDelay ? defaults({
delay: (animationOpts.delay || 0) + individualDelay(i, toLen, fromPathList[i], toSubPathList[i]),
done: eachDone
}, animationOpts) : animationOpts;
morphPath(fromPathList[i], toSubPathList[i], indivdualAnimationOpts);
}
} else {
toPath.__morphT = 0;
toPath.animateTo({
__morphT: 1
}, defaults({
during: function(p2) {
for (var i2 = 0; i2 < toLen; i2++) {
var child = toSubPathList[i2];
child.__morphT = toPath.__morphT;
child.dirtyShape();
}
oldDuring && oldDuring(p2);
},
done: function() {
restoreToPath();
for (var i2 = 0; i2 < fromList.length; i2++) {
restoreMethod(fromList[i2], "updateTransform");
}
oldDone && oldDone();
}
}, animationOpts));
}
if (toPath.__zr) {
addToSubPathListToZr(toPath.__zr);
}
return {
fromIndividuals: fromPathList,
toIndividuals: toSubPathList,
count: toLen
};
}
function separateMorph(fromPath, toPathList, animationOpts) {
var toLen = toPathList.length;
var fromPathList = [];
var dividePath = animationOpts.dividePath || defaultDividePath;
function addFromPath(fromList) {
for (var i2 = 0; i2 < fromList.length; i2++) {
var from2 = fromList[i2];
if (isCombineMorphing(from2)) {
addFromPath(from2.childrenRef());
} else if (from2 instanceof Path) {
fromPathList.push(from2);
}
}
}
if (isCombineMorphing(fromPath)) {
addFromPath(fromPath.childrenRef());
var fromLen = fromPathList.length;
if (fromLen < toLen) {
var k2 = 0;
for (var i = fromLen; i < toLen; i++) {
fromPathList.push(clonePath(fromPathList[k2++ % fromLen]));
}
}
fromPathList.length = toLen;
} else {
fromPathList = dividePath({ path: fromPath, count: toLen });
var fromPathTransform = fromPath.getComputedTransform();
for (var i = 0; i < fromPathList.length; i++) {
fromPathList[i].setLocalTransform(fromPathTransform);
}
if (fromPathList.length !== toLen) {
console.error("Invalid morphing: unmatched splitted path");
return createEmptyReturn();
}
}
fromPathList = sortPaths(fromPathList);
toPathList = sortPaths(toPathList);
var individualDelay = animationOpts.individualDelay;
for (var i = 0; i < toLen; i++) {
var indivdualAnimationOpts = individualDelay ? defaults({
delay: (animationOpts.delay || 0) + individualDelay(i, toLen, fromPathList[i], toPathList[i])
}, animationOpts) : animationOpts;
morphPath(fromPathList[i], toPathList[i], indivdualAnimationOpts);
}
return {
fromIndividuals: fromPathList,
toIndividuals: toPathList,
count: toPathList.length
};
}
function isMultiple(elements) {
return isArray$1(elements[0]);
}
function prepareMorphBatches(one, many) {
var batches = [];
var batchCount = one.length;
for (var i = 0; i < batchCount; i++) {
batches.push({
one: one[i],
many: []
});
}
for (var i = 0; i < many.length; i++) {
var len2 = many[i].length;
var k2 = void 0;
for (k2 = 0; k2 < len2; k2++) {
batches[k2 % batchCount].many.push(many[i][k2]);
}
}
var off = 0;
for (var i = batchCount - 1; i >= 0; i--) {
if (!batches[i].many.length) {
var moveFrom = batches[off].many;
if (moveFrom.length <= 1) {
if (off) {
off = 0;
} else {
return batches;
}
}
var len2 = moveFrom.length;
var mid = Math.ceil(len2 / 2);
batches[i].many = moveFrom.slice(mid, len2);
batches[off].many = moveFrom.slice(0, mid);
off++;
}
}
return batches;
}
var pathDividers = {
clone: function(params) {
var ret = [];
var approxOpacity = 1 - Math.pow(1 - params.path.style.opacity, 1 / params.count);
for (var i = 0; i < params.count; i++) {
var cloned = clonePath(params.path);
cloned.setStyle("opacity", approxOpacity);
ret.push(cloned);
}
return ret;
},
// Use the default divider
split: null
};
function applyMorphAnimation(from2, to, divideShape, seriesModel, dataIndex, animateOtherProps) {
if (!from2.length || !to.length) {
return;
}
var updateAnimationCfg = getAnimationConfig("update", seriesModel, dataIndex);
if (!(updateAnimationCfg && updateAnimationCfg.duration > 0)) {
return;
}
var animationDelay = seriesModel.getModel("universalTransition").get("delay");
var animationCfg = Object.assign({
// Need to setToFinal so the further calculation based on the style can be correct.
// Like emphasis color.
setToFinal: true
}, updateAnimationCfg);
var many;
var one;
if (isMultiple(from2)) {
many = from2;
one = to;
}
if (isMultiple(to)) {
many = to;
one = from2;
}
function morphOneBatch(batch, fromIsMany2, animateIndex2, animateCount2, forceManyOne) {
var batchMany = batch.many;
var batchOne = batch.one;
if (batchMany.length === 1 && !forceManyOne) {
var batchFrom = fromIsMany2 ? batchMany[0] : batchOne;
var batchTo = fromIsMany2 ? batchOne : batchMany[0];
if (isCombineMorphing(batchFrom)) {
morphOneBatch({
many: [batchFrom],
one: batchTo
}, true, animateIndex2, animateCount2, true);
} else {
var individualAnimationCfg = animationDelay ? defaults({
delay: animationDelay(animateIndex2, animateCount2)
}, animationCfg) : animationCfg;
morphPath(batchFrom, batchTo, individualAnimationCfg);
animateOtherProps(batchFrom, batchTo, batchFrom, batchTo, individualAnimationCfg);
}
} else {
var separateAnimationCfg = defaults({
dividePath: pathDividers[divideShape],
individualDelay: animationDelay && function(idx, count3, fromPath, toPath) {
return animationDelay(idx + animateIndex2, animateCount2);
}
}, animationCfg);
var _a2 = fromIsMany2 ? combineMorph(batchMany, batchOne, separateAnimationCfg) : separateMorph(batchOne, batchMany, separateAnimationCfg), fromIndividuals = _a2.fromIndividuals, toIndividuals = _a2.toIndividuals;
var count2 = fromIndividuals.length;
for (var k2 = 0; k2 < count2; k2++) {
var individualAnimationCfg = animationDelay ? defaults({
delay: animationDelay(k2, count2)
}, animationCfg) : animationCfg;
animateOtherProps(fromIndividuals[k2], toIndividuals[k2], fromIsMany2 ? batchMany[k2] : batch.one, fromIsMany2 ? batch.one : batchMany[k2], individualAnimationCfg);
}
}
}
var fromIsMany = many ? many === from2 : from2.length > to.length;
var morphBatches = many ? prepareMorphBatches(one, many) : prepareMorphBatches(fromIsMany ? to : from2, [fromIsMany ? from2 : to]);
var animateCount = 0;
for (var i = 0; i < morphBatches.length; i++) {
animateCount += morphBatches[i].many.length;
}
var animateIndex = 0;
for (var i = 0; i < morphBatches.length; i++) {
morphOneBatch(morphBatches[i], fromIsMany, animateIndex, animateCount);
animateIndex += morphBatches[i].many.length;
}
}
function getPathList(elements) {
if (!elements) {
return [];
}
if (isArray$1(elements)) {
var pathList_1 = [];
for (var i = 0; i < elements.length; i++) {
pathList_1.push(getPathList(elements[i]));
}
return pathList_1;
}
var pathList = [];
elements.traverse(function(el2) {
if (el2 instanceof Path && !el2.disableMorphing && !el2.invisible && !el2.ignore) {
pathList.push(el2);
}
});
return pathList;
}
var DATA_COUNT_THRESHOLD = 1e4;
var TRANSITION_NONE = 0;
var TRANSITION_P2C = 1;
var TRANSITION_C2P = 2;
var getUniversalTransitionGlobalStore = makeInner();
function getDimension(data, visualDimension) {
var dimensions = data.dimensions;
for (var i = 0; i < dimensions.length; i++) {
var dimInfo = data.getDimensionInfo(dimensions[i]);
if (dimInfo && dimInfo.otherDims[visualDimension] === 0) {
return dimensions[i];
}
}
}
function getValueByDimension(data, dataIndex, dimension) {
var dimInfo = data.getDimensionInfo(dimension);
var dimOrdinalMeta = dimInfo && dimInfo.ordinalMeta;
if (dimInfo) {
var value = data.get(dimInfo.name, dataIndex);
if (dimOrdinalMeta) {
return dimOrdinalMeta.categories[value] || value + "";
}
return value + "";
}
}
function getGroupId(data, dataIndex, dataGroupId, isChild) {
var visualDimension = isChild ? "itemChildGroupId" : "itemGroupId";
var groupIdDim = getDimension(data, visualDimension);
if (groupIdDim) {
var groupId = getValueByDimension(data, dataIndex, groupIdDim);
return groupId;
}
var rawDataItem = data.getRawDataItem(dataIndex);
var property = isChild ? "childGroupId" : "groupId";
if (rawDataItem && rawDataItem[property]) {
return rawDataItem[property] + "";
}
if (isChild) {
return;
}
return dataGroupId || data.getId(dataIndex);
}
function flattenDataDiffItems(list) {
var items = [];
each$f(list, function(seriesInfo) {
var data = seriesInfo.data;
var dataGroupId = seriesInfo.dataGroupId;
if (data.count() > DATA_COUNT_THRESHOLD) {
return;
}
var indices = data.getIndices();
for (var dataIndex = 0; dataIndex < indices.length; dataIndex++) {
items.push({
data,
groupId: getGroupId(data, dataIndex, dataGroupId, false),
childGroupId: getGroupId(data, dataIndex, dataGroupId, true),
divide: seriesInfo.divide,
dataIndex
});
}
});
return items;
}
function fadeInElement(newEl2, newSeries, newIndex) {
newEl2.traverse(function(el2) {
if (el2 instanceof Path) {
initProps(el2, {
style: {
opacity: 0
}
}, newSeries, {
dataIndex: newIndex,
isFrom: true
});
}
});
}
function removeEl(el2) {
if (el2.parent) {
var computedTransform = el2.getComputedTransform();
el2.setLocalTransform(computedTransform);
el2.parent.remove(el2);
}
}
function stopAnimation(el2) {
el2.stopAnimation();
if (el2.isGroup) {
el2.traverse(function(child) {
child.stopAnimation();
});
}
}
function animateElementStyles(el2, dataIndex, seriesModel) {
var animationConfig = getAnimationConfig("update", seriesModel, dataIndex);
animationConfig && el2.traverse(function(child) {
if (child instanceof Displayable) {
var oldStyle = getOldStyle(child);
if (oldStyle) {
child.animateFrom({
style: oldStyle
}, animationConfig);
}
}
});
}
function isAllIdSame(oldDiffItems, newDiffItems) {
var len2 = oldDiffItems.length;
if (len2 !== newDiffItems.length) {
return false;
}
for (var i = 0; i < len2; i++) {
var oldItem = oldDiffItems[i];
var newItem = newDiffItems[i];
if (oldItem.data.getId(oldItem.dataIndex) !== newItem.data.getId(newItem.dataIndex)) {
return false;
}
}
return true;
}
function transitionBetween(oldList, newList, api) {
var oldDiffItems = flattenDataDiffItems(oldList);
var newDiffItems = flattenDataDiffItems(newList);
function updateMorphingPathProps(from2, to, rawFrom, rawTo, animationCfg) {
if (rawFrom || from2) {
to.animateFrom({
style: rawFrom && rawFrom !== from2 ? extend(extend({}, rawFrom.style), from2.style) : from2.style
}, animationCfg);
}
}
var hasMorphAnimation = false;
var direction = TRANSITION_NONE;
var oldGroupIds = createHashMap();
var oldChildGroupIds = createHashMap();
oldDiffItems.forEach(function(item) {
item.groupId && oldGroupIds.set(item.groupId, true);
item.childGroupId && oldChildGroupIds.set(item.childGroupId, true);
});
for (var i = 0; i < newDiffItems.length; i++) {
var newGroupId = newDiffItems[i].groupId;
if (oldChildGroupIds.get(newGroupId)) {
direction = TRANSITION_P2C;
break;
}
var newChildGroupId = newDiffItems[i].childGroupId;
if (newChildGroupId && oldGroupIds.get(newChildGroupId)) {
direction = TRANSITION_C2P;
break;
}
}
function createKeyGetter(isOld, onlyGetId) {
return function(diffItem) {
var data = diffItem.data;
var dataIndex = diffItem.dataIndex;
if (onlyGetId) {
return data.getId(dataIndex);
}
if (isOld) {
return direction === TRANSITION_P2C ? diffItem.childGroupId : diffItem.groupId;
} else {
return direction === TRANSITION_C2P ? diffItem.childGroupId : diffItem.groupId;
}
};
}
var useId3 = isAllIdSame(oldDiffItems, newDiffItems);
var isElementStillInChart = {};
if (!useId3) {
for (var i = 0; i < newDiffItems.length; i++) {
var newItem = newDiffItems[i];
var el2 = newItem.data.getItemGraphicEl(newItem.dataIndex);
if (el2) {
isElementStillInChart[el2.id] = true;
}
}
}
function updateOneToOne(newIndex, oldIndex) {
var oldItem = oldDiffItems[oldIndex];
var newItem2 = newDiffItems[newIndex];
var newSeries = newItem2.data.hostModel;
var oldEl = oldItem.data.getItemGraphicEl(oldItem.dataIndex);
var newEl2 = newItem2.data.getItemGraphicEl(newItem2.dataIndex);
if (oldEl === newEl2) {
newEl2 && animateElementStyles(newEl2, newItem2.dataIndex, newSeries);
return;
}
if (
// We can't use the elements that already being morphed
oldEl && isElementStillInChart[oldEl.id]
) {
return;
}
if (newEl2) {
stopAnimation(newEl2);
if (oldEl) {
stopAnimation(oldEl);
removeEl(oldEl);
hasMorphAnimation = true;
applyMorphAnimation(getPathList(oldEl), getPathList(newEl2), newItem2.divide, newSeries, newIndex, updateMorphingPathProps);
} else {
fadeInElement(newEl2, newSeries, newIndex);
}
}
}
new DataDiffer(oldDiffItems, newDiffItems, createKeyGetter(true, useId3), createKeyGetter(false, useId3), null, "multiple").update(updateOneToOne).updateManyToOne(function(newIndex, oldIndices) {
var newItem2 = newDiffItems[newIndex];
var newData = newItem2.data;
var newSeries = newData.hostModel;
var newEl2 = newData.getItemGraphicEl(newItem2.dataIndex);
var oldElsList = filter(map$1(oldIndices, function(idx) {
return oldDiffItems[idx].data.getItemGraphicEl(oldDiffItems[idx].dataIndex);
}), function(oldEl) {
return oldEl && oldEl !== newEl2 && !isElementStillInChart[oldEl.id];
});
if (newEl2) {
stopAnimation(newEl2);
if (oldElsList.length) {
each$f(oldElsList, function(oldEl) {
stopAnimation(oldEl);
removeEl(oldEl);
});
hasMorphAnimation = true;
applyMorphAnimation(getPathList(oldElsList), getPathList(newEl2), newItem2.divide, newSeries, newIndex, updateMorphingPathProps);
} else {
fadeInElement(newEl2, newSeries, newItem2.dataIndex);
}
}
}).updateOneToMany(function(newIndices, oldIndex) {
var oldItem = oldDiffItems[oldIndex];
var oldEl = oldItem.data.getItemGraphicEl(oldItem.dataIndex);
if (oldEl && isElementStillInChart[oldEl.id]) {
return;
}
var newElsList = filter(map$1(newIndices, function(idx) {
return newDiffItems[idx].data.getItemGraphicEl(newDiffItems[idx].dataIndex);
}), function(el22) {
return el22 && el22 !== oldEl;
});
var newSeris = newDiffItems[newIndices[0]].data.hostModel;
if (newElsList.length) {
each$f(newElsList, function(newEl2) {
return stopAnimation(newEl2);
});
if (oldEl) {
stopAnimation(oldEl);
removeEl(oldEl);
hasMorphAnimation = true;
applyMorphAnimation(
getPathList(oldEl),
getPathList(newElsList),
oldItem.divide,
// Use divide on old.
newSeris,
newIndices[0],
updateMorphingPathProps
);
} else {
each$f(newElsList, function(newEl2) {
return fadeInElement(newEl2, newSeris, newIndices[0]);
});
}
}
}).updateManyToMany(function(newIndices, oldIndices) {
new DataDiffer(oldIndices, newIndices, function(rawIdx) {
return oldDiffItems[rawIdx].data.getId(oldDiffItems[rawIdx].dataIndex);
}, function(rawIdx) {
return newDiffItems[rawIdx].data.getId(newDiffItems[rawIdx].dataIndex);
}).update(function(newIndex, oldIndex) {
updateOneToOne(newIndices[newIndex], oldIndices[oldIndex]);
}).execute();
}).execute();
if (hasMorphAnimation) {
each$f(newList, function(_a2) {
var data = _a2.data;
var seriesModel = data.hostModel;
var view = seriesModel && api.getViewOfSeriesModel(seriesModel);
var animationCfg = getAnimationConfig("update", seriesModel, 0);
if (view && seriesModel.isAnimationEnabled() && animationCfg && animationCfg.duration > 0) {
view.group.traverse(function(el22) {
if (el22 instanceof Path && !el22.animators.length) {
el22.animateFrom({
style: {
opacity: 0
}
}, animationCfg);
}
});
}
});
}
}
function getSeriesTransitionKey(series) {
var seriesKey = series.getModel("universalTransition").get("seriesKey");
if (!seriesKey) {
return series.id;
}
return seriesKey;
}
function convertArraySeriesKeyToString(seriesKey) {
if (isArray$1(seriesKey)) {
return seriesKey.sort().join(",");
}
return seriesKey;
}
function getDivideShapeFromData(data) {
if (data.hostModel) {
return data.hostModel.getModel("universalTransition").get("divideShape");
}
}
function findTransitionSeriesBatches(globalStore, params) {
var updateBatches = createHashMap();
var oldDataMap = createHashMap();
var oldDataMapForSplit = createHashMap();
each$f(globalStore.oldSeries, function(series, idx) {
var oldDataGroupId = globalStore.oldDataGroupIds[idx];
var oldData = globalStore.oldData[idx];
var transitionKey = getSeriesTransitionKey(series);
var transitionKeyStr = convertArraySeriesKeyToString(transitionKey);
oldDataMap.set(transitionKeyStr, {
dataGroupId: oldDataGroupId,
data: oldData
});
if (isArray$1(transitionKey)) {
each$f(transitionKey, function(key) {
oldDataMapForSplit.set(key, {
key: transitionKeyStr,
dataGroupId: oldDataGroupId,
data: oldData
});
});
}
});
each$f(params.updatedSeries, function(series) {
if (series.isUniversalTransitionEnabled() && series.isAnimationEnabled()) {
var newDataGroupId = series.get("dataGroupId");
var newData = series.getData();
var transitionKey = getSeriesTransitionKey(series);
var transitionKeyStr = convertArraySeriesKeyToString(transitionKey);
var oldData = oldDataMap.get(transitionKeyStr);
if (oldData) {
updateBatches.set(transitionKeyStr, {
oldSeries: [{
dataGroupId: oldData.dataGroupId,
divide: getDivideShapeFromData(oldData.data),
data: oldData.data
}],
newSeries: [{
dataGroupId: newDataGroupId,
divide: getDivideShapeFromData(newData),
data: newData
}]
});
} else {
if (isArray$1(transitionKey)) {
var oldSeries_1 = [];
each$f(transitionKey, function(key) {
var oldData2 = oldDataMap.get(key);
if (oldData2.data) {
oldSeries_1.push({
dataGroupId: oldData2.dataGroupId,
divide: getDivideShapeFromData(oldData2.data),
data: oldData2.data
});
}
});
if (oldSeries_1.length) {
updateBatches.set(transitionKeyStr, {
oldSeries: oldSeries_1,
newSeries: [{
dataGroupId: newDataGroupId,
data: newData,
divide: getDivideShapeFromData(newData)
}]
});
}
} else {
var oldData_1 = oldDataMapForSplit.get(transitionKey);
if (oldData_1) {
var batch = updateBatches.get(oldData_1.key);
if (!batch) {
batch = {
oldSeries: [{
dataGroupId: oldData_1.dataGroupId,
data: oldData_1.data,
divide: getDivideShapeFromData(oldData_1.data)
}],
newSeries: []
};
updateBatches.set(oldData_1.key, batch);
}
batch.newSeries.push({
dataGroupId: newDataGroupId,
data: newData,
divide: getDivideShapeFromData(newData)
});
}
}
}
}
});
return updateBatches;
}
function querySeries(series, finder) {
for (var i = 0; i < series.length; i++) {
var found = finder.seriesIndex != null && finder.seriesIndex === series[i].seriesIndex || finder.seriesId != null && finder.seriesId === series[i].id;
if (found) {
return i;
}
}
}
function transitionSeriesFromOpt(transitionOpt, globalStore, params, api) {
var from2 = [];
var to = [];
each$f(normalizeToArray(transitionOpt.from), function(finder) {
var idx = querySeries(globalStore.oldSeries, finder);
if (idx >= 0) {
from2.push({
dataGroupId: globalStore.oldDataGroupIds[idx],
data: globalStore.oldData[idx],
// TODO can specify divideShape in transition.
divide: getDivideShapeFromData(globalStore.oldData[idx]),
groupIdDim: finder.dimension
});
}
});
each$f(normalizeToArray(transitionOpt.to), function(finder) {
var idx = querySeries(params.updatedSeries, finder);
if (idx >= 0) {
var data = params.updatedSeries[idx].getData();
to.push({
dataGroupId: globalStore.oldDataGroupIds[idx],
data,
divide: getDivideShapeFromData(data),
groupIdDim: finder.dimension
});
}
});
if (from2.length > 0 && to.length > 0) {
transitionBetween(from2, to, api);
}
}
function installUniversalTransition(registers) {
registers.registerUpdateLifecycle("series:beforeupdate", function(ecMOdel, api, params) {
each$f(normalizeToArray(params.seriesTransition), function(transOpt) {
each$f(normalizeToArray(transOpt.to), function(finder) {
var series = params.updatedSeries;
for (var i = 0; i < series.length; i++) {
if (finder.seriesIndex != null && finder.seriesIndex === series[i].seriesIndex || finder.seriesId != null && finder.seriesId === series[i].id) {
series[i][SERIES_UNIVERSAL_TRANSITION_PROP] = true;
}
}
});
});
});
registers.registerUpdateLifecycle("series:transition", function(ecModel, api, params) {
var globalStore = getUniversalTransitionGlobalStore(api);
if (globalStore.oldSeries && params.updatedSeries && params.optionChanged) {
var transitionOpt = params.seriesTransition;
if (transitionOpt) {
each$f(normalizeToArray(transitionOpt), function(opt) {
transitionSeriesFromOpt(opt, globalStore, params, api);
});
} else {
var updateBatches_1 = findTransitionSeriesBatches(globalStore, params);
each$f(updateBatches_1.keys(), function(key) {
var batch = updateBatches_1.get(key);
transitionBetween(batch.oldSeries, batch.newSeries, api);
});
}
each$f(params.updatedSeries, function(series) {
if (series[SERIES_UNIVERSAL_TRANSITION_PROP]) {
series[SERIES_UNIVERSAL_TRANSITION_PROP] = false;
}
});
}
var allSeries = ecModel.getSeries();
var savedSeries = globalStore.oldSeries = [];
var savedDataGroupIds = globalStore.oldDataGroupIds = [];
var savedData = globalStore.oldData = [];
for (var i = 0; i < allSeries.length; i++) {
var data = allSeries[i].getData();
if (data.count() < DATA_COUNT_THRESHOLD) {
savedSeries.push(allSeries[i]);
savedDataGroupIds.push(allSeries[i].get("dataGroupId"));
savedData.push(data);
}
}
});
}
use([install$R]);
use([install$S]);
use([install$Q, install$P, install$O, install$M, install$K, install$I, install$H, install$G, install$F, install$E, install$D, install$B, install$A, install$z, install$y, install$x, install$w, install$v, install$u, install$t, install$s, install$r]);
use(install$p);
use(install$o);
use(install$J);
use(install$n);
use(install$C);
use(install$m);
use(install$l);
use(install$j);
use(install$i);
use(install$q);
use(install$h);
use(install$g);
use(install$f);
use(install$e);
use(install$d);
use(install$c);
use(install$9);
use(install$6);
use(install$8);
use(install$7);
use(install$3);
use(install$5);
use(install$4);
use(install$2);
use(install$1);
use(install);
use(installUniversalTransition);
use(installLabelLayout);
const echarts = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
Axis,
ChartView,
ComponentModel,
ComponentView,
List: SeriesData,
Model,
PRIORITY,
SeriesModel,
color,
connect,
dataTool,
dependencies,
disConnect,
disconnect,
dispose,
env,
extendChartView,
extendComponentModel,
extendComponentView,
extendSeriesModel,
format,
getCoordinateSystemDimensions,
getInstanceByDom,
getInstanceById,
getMap,
graphic,
helper,
init: init$1,
innerDrawElementOnCanvas: brushSingle,
matrix,
number: number3,
parseGeoJSON,
parseGeoJson: parseGeoJSON,
registerAction,
registerCoordinateSystem,
registerLayout,
registerLoading,
registerLocale,
registerMap: registerMap$1,
registerPostInit,
registerPostUpdate,
registerPreprocessor,
registerProcessor,
registerTheme,
registerTransform,
registerUpdateLifecycle,
registerVisual,
setCanvasCreator,
setPlatformAPI,
throttle,
time,
use,
util,
vector,
version,
zrUtil: util$1,
zrender
}, Symbol.toStringTag, { value: "Module" }));
var lib = {};
var sensorPool = {};
var id = {};
(function(exports) {
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var id2 = 1;
var _default = function _default2() {
return "".concat(id2++);
};
exports["default"] = _default;
})(id);
var sensors = {};
var object3 = {};
var debounce = {};
(function(exports) {
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _default = function _default2(fn) {
var delay = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 60;
var timer = null;
return function() {
var _this = this;
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
clearTimeout(timer);
timer = setTimeout(function() {
fn.apply(_this, args);
}, delay);
};
};
exports["default"] = _default;
})(debounce);
var constant = {};
Object.defineProperty(constant, "__esModule", {
value: true
});
constant.SizeSensorId = constant.SensorTabIndex = constant.SensorClassName = void 0;
var SizeSensorId = "size-sensor-id";
constant.SizeSensorId = SizeSensorId;
var SensorClassName = "size-sensor-object";
constant.SensorClassName = SensorClassName;
var SensorTabIndex = "-1";
constant.SensorTabIndex = SensorTabIndex;
Object.defineProperty(object3, "__esModule", {
value: true
});
object3.createSensor = void 0;
var _debounce$1 = _interopRequireDefault$6(debounce);
var _constant$2 = constant;
function _interopRequireDefault$6(obj) {
return obj && obj.__esModule ? obj : { "default": obj };
}
var createSensor$2 = function createSensor(element, whenDestroy) {
var sensor = void 0;
var listeners = [];
var newSensor = function newSensor2() {
if (getComputedStyle(element).position === "static") {
element.style.position = "relative";
}
var obj = document.createElement("object");
obj.onload = function() {
obj.contentDocument.defaultView.addEventListener("resize", resizeListener);
resizeListener();
};
obj.style.display = "block";
obj.style.position = "absolute";
obj.style.top = "0";
obj.style.left = "0";
obj.style.height = "100%";
obj.style.width = "100%";
obj.style.overflow = "hidden";
obj.style.pointerEvents = "none";
obj.style.zIndex = "-1";
obj.style.opacity = "0";
obj.setAttribute("class", _constant$2.SensorClassName);
obj.setAttribute("tabindex", _constant$2.SensorTabIndex);
obj.type = "text/html";
element.appendChild(obj);
obj.data = "about:blank";
return obj;
};
var resizeListener = (0, _debounce$1["default"])(function() {
listeners.forEach(function(listener) {
listener(element);
});
});
var bind3 = function bind4(cb2) {
if (!sensor) {
sensor = newSensor();
}
if (listeners.indexOf(cb2) === -1) {
listeners.push(cb2);
}
};
var destroy2 = function destroy3() {
if (sensor && sensor.parentNode) {
if (sensor.contentDocument) {
sensor.contentDocument.defaultView.removeEventListener("resize", resizeListener);
}
sensor.parentNode.removeChild(sensor);
element.removeAttribute(_constant$2.SizeSensorId);
sensor = void 0;
listeners = [];
whenDestroy && whenDestroy();
}
};
var unbind = function unbind2(cb2) {
var idx = listeners.indexOf(cb2);
if (idx !== -1) {
listeners.splice(idx, 1);
}
if (listeners.length === 0 && sensor) {
destroy2();
}
};
return {
element,
bind: bind3,
destroy: destroy2,
unbind
};
};
object3.createSensor = createSensor$2;
var resizeObserver = {};
Object.defineProperty(resizeObserver, "__esModule", {
value: true
});
resizeObserver.createSensor = void 0;
var _constant$1 = constant;
var _debounce = _interopRequireDefault$5(debounce);
function _interopRequireDefault$5(obj) {
return obj && obj.__esModule ? obj : { "default": obj };
}
var createSensor$1 = function createSensor2(element, whenDestroy) {
var sensor = void 0;
var listeners = [];
var resizeListener = (0, _debounce["default"])(function() {
listeners.forEach(function(listener) {
listener(element);
});
});
var newSensor = function newSensor2() {
var s = new ResizeObserver(resizeListener);
s.observe(element);
resizeListener();
return s;
};
var bind3 = function bind4(cb2) {
if (!sensor) {
sensor = newSensor();
}
if (listeners.indexOf(cb2) === -1) {
listeners.push(cb2);
}
};
var destroy2 = function destroy3() {
sensor.disconnect();
listeners = [];
sensor = void 0;
element.removeAttribute(_constant$1.SizeSensorId);
whenDestroy && whenDestroy();
};
var unbind = function unbind2(cb2) {
var idx = listeners.indexOf(cb2);
if (idx !== -1) {
listeners.splice(idx, 1);
}
if (listeners.length === 0 && sensor) {
destroy2();
}
};
return {
element,
bind: bind3,
destroy: destroy2,
unbind
};
};
resizeObserver.createSensor = createSensor$1;
Object.defineProperty(sensors, "__esModule", {
value: true
});
sensors.createSensor = void 0;
var _object = object3;
var _resizeObserver = resizeObserver;
var createSensor3 = typeof ResizeObserver !== "undefined" ? _resizeObserver.createSensor : _object.createSensor;
sensors.createSensor = createSensor3;
Object.defineProperty(sensorPool, "__esModule", {
value: true
});
sensorPool.removeSensor = sensorPool.getSensor = sensorPool.Sensors = void 0;
var _id = _interopRequireDefault$4(id);
var _sensors = sensors;
var _constant = constant;
function _interopRequireDefault$4(obj) {
return obj && obj.__esModule ? obj : { "default": obj };
}
var Sensors = {};
sensorPool.Sensors = Sensors;
function clean(sensorId) {
if (sensorId && Sensors[sensorId]) {
delete Sensors[sensorId];
}
}
var getSensor = function getSensor2(element) {
var sensorId = element.getAttribute(_constant.SizeSensorId);
if (sensorId && Sensors[sensorId]) {
return Sensors[sensorId];
}
var newId = (0, _id["default"])();
element.setAttribute(_constant.SizeSensorId, newId);
var sensor = (0, _sensors.createSensor)(element, function() {
return clean(newId);
});
Sensors[newId] = sensor;
return sensor;
};
sensorPool.getSensor = getSensor;
var removeSensor = function removeSensor2(sensor) {
var sensorId = sensor.element.getAttribute(_constant.SizeSensorId);
sensor.destroy();
clean(sensorId);
};
sensorPool.removeSensor = removeSensor;
Object.defineProperty(lib, "__esModule", {
value: true
});
lib.ver = clear_1 = lib.clear = bind_1 = lib.bind = void 0;
var _sensorPool = sensorPool;
var bind = function bind2(element, cb2) {
var sensor = (0, _sensorPool.getSensor)(element);
sensor.bind(cb2);
return function() {
sensor.unbind(cb2);
};
};
var bind_1 = lib.bind = bind;
var clear = function clear2(element) {
var sensor = (0, _sensorPool.getSensor)(element);
(0, _sensorPool.removeSensor)(sensor);
};
var clear_1 = lib.clear = clear;
var ver = "1.0.2";
lib.ver = ver;
function pick(obj, keys2) {
var r2 = {};
keys2.forEach(function(key) {
r2[key] = obj[key];
});
return r2;
}
function isFunction(v4) {
return typeof v4 === "function";
}
function isString(v4) {
return typeof v4 === "string";
}
var fastDeepEqual = function equal(a, b2) {
if (a === b2) return true;
if (a && b2 && typeof a == "object" && typeof b2 == "object") {
if (a.constructor !== b2.constructor) return false;
var length2, i, keys2;
if (Array.isArray(a)) {
length2 = a.length;
if (length2 != b2.length) return false;
for (i = length2; i-- !== 0; )
if (!equal(a[i], b2[i])) return false;
return true;
}
if (a.constructor === RegExp) return a.source === b2.source && a.flags === b2.flags;
if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b2.valueOf();
if (a.toString !== Object.prototype.toString) return a.toString() === b2.toString();
keys2 = Object.keys(a);
length2 = keys2.length;
if (length2 !== Object.keys(b2).length) return false;
for (i = length2; i-- !== 0; )
if (!Object.prototype.hasOwnProperty.call(b2, keys2[i])) return false;
for (i = length2; i-- !== 0; ) {
var key = keys2[i];
if (!equal(a[key], b2[key])) return false;
}
return true;
}
return a !== a && b2 !== b2;
};
const isEqual = /* @__PURE__ */ getDefaultExportFromCjs(fastDeepEqual);
var EChartsReactCore = (
/** @class */
function(_super) {
__extends$1(EChartsReactCore2, _super);
function EChartsReactCore2(props) {
var _this = _super.call(this, props) || this;
_this.echarts = props.echarts;
_this.ele = null;
_this.isInitialResize = true;
return _this;
}
EChartsReactCore2.prototype.componentDidMount = function() {
this.renderNewEcharts();
};
EChartsReactCore2.prototype.componentDidUpdate = function(prevProps) {
var shouldSetOption = this.props.shouldSetOption;
if (isFunction(shouldSetOption) && !shouldSetOption(prevProps, this.props)) {
return;
}
if (!isEqual(prevProps.theme, this.props.theme) || !isEqual(prevProps.opts, this.props.opts) || !isEqual(prevProps.onEvents, this.props.onEvents)) {
this.dispose();
this.renderNewEcharts();
return;
}
var pickKeys = ["option", "notMerge", "lazyUpdate", "showLoading", "loadingOption"];
if (!isEqual(pick(this.props, pickKeys), pick(prevProps, pickKeys))) {
this.updateEChartsOption();
}
if (!isEqual(prevProps.style, this.props.style) || !isEqual(prevProps.className, this.props.className)) {
this.resize();
}
};
EChartsReactCore2.prototype.componentWillUnmount = function() {
this.dispose();
};
EChartsReactCore2.prototype.getEchartsInstance = function() {
return this.echarts.getInstanceByDom(this.ele) || this.echarts.init(this.ele, this.props.theme, this.props.opts);
};
EChartsReactCore2.prototype.dispose = function() {
if (this.ele) {
try {
clear_1(this.ele);
} catch (e2) {
console.warn(e2);
}
this.echarts.dispose(this.ele);
}
};
EChartsReactCore2.prototype.renderNewEcharts = function() {
var _this = this;
var _a2 = this.props, onEvents = _a2.onEvents, onChartReady = _a2.onChartReady;
var echartsInstance = this.updateEChartsOption();
this.bindEvents(echartsInstance, onEvents || {});
if (isFunction(onChartReady))
onChartReady(echartsInstance);
if (this.ele) {
bind_1(this.ele, function() {
_this.resize();
});
}
};
EChartsReactCore2.prototype.bindEvents = function(instance, events) {
function _bindEvent(eventName2, func) {
if (isString(eventName2) && isFunction(func)) {
instance.on(eventName2, function(param) {
func(param, instance);
});
}
}
for (var eventName in events) {
if (Object.prototype.hasOwnProperty.call(events, eventName)) {
_bindEvent(eventName, events[eventName]);
}
}
};
EChartsReactCore2.prototype.updateEChartsOption = function() {
var _a2 = this.props, option = _a2.option, _b2 = _a2.notMerge, notMerge = _b2 === void 0 ? false : _b2, _c2 = _a2.lazyUpdate, lazyUpdate = _c2 === void 0 ? false : _c2, showLoading = _a2.showLoading, _d = _a2.loadingOption, loadingOption = _d === void 0 ? null : _d;
var echartInstance = this.getEchartsInstance();
echartInstance.setOption(option, notMerge, lazyUpdate);
if (showLoading)
echartInstance.showLoading(loadingOption);
else
echartInstance.hideLoading();
return echartInstance;
};
EChartsReactCore2.prototype.resize = function() {
var echartsInstance = this.getEchartsInstance();
if (!this.isInitialResize) {
try {
echartsInstance.resize();
} catch (e2) {
console.warn(e2);
}
}
this.isInitialResize = false;
};
EChartsReactCore2.prototype.render = function() {
var _this = this;
var _a2 = this.props, style2 = _a2.style, _b2 = _a2.className, className = _b2 === void 0 ? "" : _b2;
var newStyle = __assign({ height: 300 }, style2);
return React.createElement("div", { ref: function(e2) {
_this.ele = e2;
}, style: newStyle, className: "echarts-for-react " + className });
};
return EChartsReactCore2;
}(reactExports.PureComponent)
);
var EChartsReact = (
/** @class */
function(_super) {
__extends$1(EChartsReact2, _super);
function EChartsReact2(props) {
var _this = _super.call(this, props) || this;
_this.echarts = echarts;
return _this;
}
return EChartsReact2;
}(EChartsReactCore)
);
function _typeof$1(obj) {
"@babel/helpers - typeof";
return _typeof$1 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj2) {
return typeof obj2;
} : function(obj2) {
return obj2 && "function" == typeof Symbol && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
}, _typeof$1(obj);
}
var trimLeft = /^\s+/;
var trimRight = /\s+$/;
function tinycolor(color2, opts) {
color2 = color2 ? color2 : "";
opts = opts || {};
if (color2 instanceof tinycolor) {
return color2;
}
if (!(this instanceof tinycolor)) {
return new tinycolor(color2, opts);
}
var rgb = inputToRGB(color2);
this._originalInput = color2, this._r = rgb.r, this._g = rgb.g, this._b = rgb.b, this._a = rgb.a, this._roundA = Math.round(100 * this._a) / 100, this._format = opts.format || rgb.format;
this._gradientType = opts.gradientType;
if (this._r < 1) this._r = Math.round(this._r);
if (this._g < 1) this._g = Math.round(this._g);
if (this._b < 1) this._b = Math.round(this._b);
this._ok = rgb.ok;
}
tinycolor.prototype = {
isDark: function isDark() {
return this.getBrightness() < 128;
},
isLight: function isLight() {
return !this.isDark();
},
isValid: function isValid() {
return this._ok;
},
getOriginalInput: function getOriginalInput() {
return this._originalInput;
},
getFormat: function getFormat() {
return this._format;
},
getAlpha: function getAlpha() {
return this._a;
},
getBrightness: function getBrightness() {
var rgb = this.toRgb();
return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1e3;
},
getLuminance: function getLuminance() {
var rgb = this.toRgb();
var RsRGB, GsRGB, BsRGB, R2, G2, B2;
RsRGB = rgb.r / 255;
GsRGB = rgb.g / 255;
BsRGB = rgb.b / 255;
if (RsRGB <= 0.03928) R2 = RsRGB / 12.92;
else R2 = Math.pow((RsRGB + 0.055) / 1.055, 2.4);
if (GsRGB <= 0.03928) G2 = GsRGB / 12.92;
else G2 = Math.pow((GsRGB + 0.055) / 1.055, 2.4);
if (BsRGB <= 0.03928) B2 = BsRGB / 12.92;
else B2 = Math.pow((BsRGB + 0.055) / 1.055, 2.4);
return 0.2126 * R2 + 0.7152 * G2 + 0.0722 * B2;
},
setAlpha: function setAlpha(value) {
this._a = boundAlpha(value);
this._roundA = Math.round(100 * this._a) / 100;
return this;
},
toHsv: function toHsv2() {
var hsv = rgbToHsv(this._r, this._g, this._b);
return {
h: hsv.h * 360,
s: hsv.s,
v: hsv.v,
a: this._a
};
},
toHsvString: function toHsvString() {
var hsv = rgbToHsv(this._r, this._g, this._b);
var h2 = Math.round(hsv.h * 360), s = Math.round(hsv.s * 100), v4 = Math.round(hsv.v * 100);
return this._a == 1 ? "hsv(" + h2 + ", " + s + "%, " + v4 + "%)" : "hsva(" + h2 + ", " + s + "%, " + v4 + "%, " + this._roundA + ")";
},
toHsl: function toHsl() {
var hsl = rgbToHsl(this._r, this._g, this._b);
return {
h: hsl.h * 360,
s: hsl.s,
l: hsl.l,
a: this._a
};
},
toHslString: function toHslString() {
var hsl = rgbToHsl(this._r, this._g, this._b);
var h2 = Math.round(hsl.h * 360), s = Math.round(hsl.s * 100), l2 = Math.round(hsl.l * 100);
return this._a == 1 ? "hsl(" + h2 + ", " + s + "%, " + l2 + "%)" : "hsla(" + h2 + ", " + s + "%, " + l2 + "%, " + this._roundA + ")";
},
toHex: function toHex2(allow3Char) {
return rgbToHex(this._r, this._g, this._b, allow3Char);
},
toHexString: function toHexString(allow3Char) {
return "#" + this.toHex(allow3Char);
},
toHex8: function toHex8(allow4Char) {
return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);
},
toHex8String: function toHex8String(allow4Char) {
return "#" + this.toHex8(allow4Char);
},
toRgb: function toRgb() {
return {
r: Math.round(this._r),
g: Math.round(this._g),
b: Math.round(this._b),
a: this._a
};
},
toRgbString: function toRgbString() {
return this._a == 1 ? "rgb(" + Math.round(this._r) + ", " + Math.round(this._g) + ", " + Math.round(this._b) + ")" : "rgba(" + Math.round(this._r) + ", " + Math.round(this._g) + ", " + Math.round(this._b) + ", " + this._roundA + ")";
},
toPercentageRgb: function toPercentageRgb() {
return {
r: Math.round(bound01(this._r, 255) * 100) + "%",
g: Math.round(bound01(this._g, 255) * 100) + "%",
b: Math.round(bound01(this._b, 255) * 100) + "%",
a: this._a
};
},
toPercentageRgbString: function toPercentageRgbString() {
return this._a == 1 ? "rgb(" + Math.round(bound01(this._r, 255) * 100) + "%, " + Math.round(bound01(this._g, 255) * 100) + "%, " + Math.round(bound01(this._b, 255) * 100) + "%)" : "rgba(" + Math.round(bound01(this._r, 255) * 100) + "%, " + Math.round(bound01(this._g, 255) * 100) + "%, " + Math.round(bound01(this._b, 255) * 100) + "%, " + this._roundA + ")";
},
toName: function toName() {
if (this._a === 0) {
return "transparent";
}
if (this._a < 1) {
return false;
}
return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;
},
toFilter: function toFilter(secondColor) {
var hex8String = "#" + rgbaToArgbHex(this._r, this._g, this._b, this._a);
var secondHex8String = hex8String;
var gradientType = this._gradientType ? "GradientType = 1, " : "";
if (secondColor) {
var s = tinycolor(secondColor);
secondHex8String = "#" + rgbaToArgbHex(s._r, s._g, s._b, s._a);
}
return "progid:DXImageTransform.Microsoft.gradient(" + gradientType + "startColorstr=" + hex8String + ",endColorstr=" + secondHex8String + ")";
},
toString: function toString(format2) {
var formatSet = !!format2;
format2 = format2 || this._format;
var formattedString = false;
var hasAlpha = this._a < 1 && this._a >= 0;
var needsAlphaFormat = !formatSet && hasAlpha && (format2 === "hex" || format2 === "hex6" || format2 === "hex3" || format2 === "hex4" || format2 === "hex8" || format2 === "name");
if (needsAlphaFormat) {
if (format2 === "name" && this._a === 0) {
return this.toName();
}
return this.toRgbString();
}
if (format2 === "rgb") {
formattedString = this.toRgbString();
}
if (format2 === "prgb") {
formattedString = this.toPercentageRgbString();
}
if (format2 === "hex" || format2 === "hex6") {
formattedString = this.toHexString();
}
if (format2 === "hex3") {
formattedString = this.toHexString(true);
}
if (format2 === "hex4") {
formattedString = this.toHex8String(true);
}
if (format2 === "hex8") {
formattedString = this.toHex8String();
}
if (format2 === "name") {
formattedString = this.toName();
}
if (format2 === "hsl") {
formattedString = this.toHslString();
}
if (format2 === "hsv") {
formattedString = this.toHsvString();
}
return formattedString || this.toHexString();
},
clone: function clone2() {
return tinycolor(this.toString());
},
_applyModification: function _applyModification(fn, args) {
var color2 = fn.apply(null, [this].concat([].slice.call(args)));
this._r = color2._r;
this._g = color2._g;
this._b = color2._b;
this.setAlpha(color2._a);
return this;
},
lighten: function lighten() {
return this._applyModification(_lighten, arguments);
},
brighten: function brighten() {
return this._applyModification(_brighten, arguments);
},
darken: function darken() {
return this._applyModification(_darken, arguments);
},
desaturate: function desaturate() {
return this._applyModification(_desaturate, arguments);
},
saturate: function saturate() {
return this._applyModification(_saturate, arguments);
},
greyscale: function greyscale() {
return this._applyModification(_greyscale, arguments);
},
spin: function spin() {
return this._applyModification(_spin, arguments);
},
_applyCombination: function _applyCombination(fn, args) {
return fn.apply(null, [this].concat([].slice.call(args)));
},
analogous: function analogous() {
return this._applyCombination(_analogous, arguments);
},
complement: function complement() {
return this._applyCombination(_complement, arguments);
},
monochromatic: function monochromatic() {
return this._applyCombination(_monochromatic, arguments);
},
splitcomplement: function splitcomplement() {
return this._applyCombination(_splitcomplement, arguments);
},
// Disabled until https://github.com/bgrins/TinyColor/issues/254
// polyad: function (number) {
// return this._applyCombination(polyad, [number]);
// },
triad: function triad() {
return this._applyCombination(polyad, [3]);
},
tetrad: function tetrad() {
return this._applyCombination(polyad, [4]);
}
};
tinycolor.fromRatio = function(color2, opts) {
if (_typeof$1(color2) == "object") {
var newColor = {};
for (var i in color2) {
if (color2.hasOwnProperty(i)) {
if (i === "a") {
newColor[i] = color2[i];
} else {
newColor[i] = convertToPercentage(color2[i]);
}
}
}
color2 = newColor;
}
return tinycolor(color2, opts);
};
function inputToRGB(color2) {
var rgb = {
r: 0,
g: 0,
b: 0
};
var a = 1;
var s = null;
var v4 = null;
var l2 = null;
var ok2 = false;
var format2 = false;
if (typeof color2 == "string") {
color2 = stringInputToObject(color2);
}
if (_typeof$1(color2) == "object") {
if (isValidCSSUnit(color2.r) && isValidCSSUnit(color2.g) && isValidCSSUnit(color2.b)) {
rgb = rgbToRgb(color2.r, color2.g, color2.b);
ok2 = true;
format2 = String(color2.r).substr(-1) === "%" ? "prgb" : "rgb";
} else if (isValidCSSUnit(color2.h) && isValidCSSUnit(color2.s) && isValidCSSUnit(color2.v)) {
s = convertToPercentage(color2.s);
v4 = convertToPercentage(color2.v);
rgb = hsvToRgb(color2.h, s, v4);
ok2 = true;
format2 = "hsv";
} else if (isValidCSSUnit(color2.h) && isValidCSSUnit(color2.s) && isValidCSSUnit(color2.l)) {
s = convertToPercentage(color2.s);
l2 = convertToPercentage(color2.l);
rgb = hslToRgb(color2.h, s, l2);
ok2 = true;
format2 = "hsl";
}
if (color2.hasOwnProperty("a")) {
a = color2.a;
}
}
a = boundAlpha(a);
return {
ok: ok2,
format: color2.format || format2,
r: Math.min(255, Math.max(rgb.r, 0)),
g: Math.min(255, Math.max(rgb.g, 0)),
b: Math.min(255, Math.max(rgb.b, 0)),
a
};
}
function rgbToRgb(r2, g2, b2) {
return {
r: bound01(r2, 255) * 255,
g: bound01(g2, 255) * 255,
b: bound01(b2, 255) * 255
};
}
function rgbToHsl(r2, g2, b2) {
r2 = bound01(r2, 255);
g2 = bound01(g2, 255);
b2 = bound01(b2, 255);
var max3 = Math.max(r2, g2, b2), min3 = Math.min(r2, g2, b2);
var h2, s, l2 = (max3 + min3) / 2;
if (max3 == min3) {
h2 = s = 0;
} else {
var d2 = max3 - min3;
s = l2 > 0.5 ? d2 / (2 - max3 - min3) : d2 / (max3 + min3);
switch (max3) {
case r2:
h2 = (g2 - b2) / d2 + (g2 < b2 ? 6 : 0);
break;
case g2:
h2 = (b2 - r2) / d2 + 2;
break;
case b2:
h2 = (r2 - g2) / d2 + 4;
break;
}
h2 /= 6;
}
return {
h: h2,
s,
l: l2
};
}
function hslToRgb(h2, s, l2) {
var r2, g2, b2;
h2 = bound01(h2, 360);
s = bound01(s, 100);
l2 = bound01(l2, 100);
function hue2rgb2(p3, q3, t2) {
if (t2 < 0) t2 += 1;
if (t2 > 1) t2 -= 1;
if (t2 < 1 / 6) return p3 + (q3 - p3) * 6 * t2;
if (t2 < 1 / 2) return q3;
if (t2 < 2 / 3) return p3 + (q3 - p3) * (2 / 3 - t2) * 6;
return p3;
}
if (s === 0) {
r2 = g2 = b2 = l2;
} else {
var q2 = l2 < 0.5 ? l2 * (1 + s) : l2 + s - l2 * s;
var p2 = 2 * l2 - q2;
r2 = hue2rgb2(p2, q2, h2 + 1 / 3);
g2 = hue2rgb2(p2, q2, h2);
b2 = hue2rgb2(p2, q2, h2 - 1 / 3);
}
return {
r: r2 * 255,
g: g2 * 255,
b: b2 * 255
};
}
function rgbToHsv(r2, g2, b2) {
r2 = bound01(r2, 255);
g2 = bound01(g2, 255);
b2 = bound01(b2, 255);
var max3 = Math.max(r2, g2, b2), min3 = Math.min(r2, g2, b2);
var h2, s, v4 = max3;
var d2 = max3 - min3;
s = max3 === 0 ? 0 : d2 / max3;
if (max3 == min3) {
h2 = 0;
} else {
switch (max3) {
case r2:
h2 = (g2 - b2) / d2 + (g2 < b2 ? 6 : 0);
break;
case g2:
h2 = (b2 - r2) / d2 + 2;
break;
case b2:
h2 = (r2 - g2) / d2 + 4;
break;
}
h2 /= 6;
}
return {
h: h2,
s,
v: v4
};
}
function hsvToRgb(h2, s, v4) {
h2 = bound01(h2, 360) * 6;
s = bound01(s, 100);
v4 = bound01(v4, 100);
var i = Math.floor(h2), f2 = h2 - i, p2 = v4 * (1 - s), q2 = v4 * (1 - f2 * s), t2 = v4 * (1 - (1 - f2) * s), mod = i % 6, r2 = [v4, q2, p2, p2, t2, v4][mod], g2 = [t2, v4, v4, q2, p2, p2][mod], b2 = [p2, p2, t2, v4, v4, q2][mod];
return {
r: r2 * 255,
g: g2 * 255,
b: b2 * 255
};
}
function rgbToHex(r2, g2, b2, allow3Char) {
var hex2 = [pad2(Math.round(r2).toString(16)), pad2(Math.round(g2).toString(16)), pad2(Math.round(b2).toString(16))];
if (allow3Char && hex2[0].charAt(0) == hex2[0].charAt(1) && hex2[1].charAt(0) == hex2[1].charAt(1) && hex2[2].charAt(0) == hex2[2].charAt(1)) {
return hex2[0].charAt(0) + hex2[1].charAt(0) + hex2[2].charAt(0);
}
return hex2.join("");
}
function rgbaToHex(r2, g2, b2, a, allow4Char) {
var hex2 = [pad2(Math.round(r2).toString(16)), pad2(Math.round(g2).toString(16)), pad2(Math.round(b2).toString(16)), pad2(convertDecimalToHex(a))];
if (allow4Char && hex2[0].charAt(0) == hex2[0].charAt(1) && hex2[1].charAt(0) == hex2[1].charAt(1) && hex2[2].charAt(0) == hex2[2].charAt(1) && hex2[3].charAt(0) == hex2[3].charAt(1)) {
return hex2[0].charAt(0) + hex2[1].charAt(0) + hex2[2].charAt(0) + hex2[3].charAt(0);
}
return hex2.join("");
}
function rgbaToArgbHex(r2, g2, b2, a) {
var hex2 = [pad2(convertDecimalToHex(a)), pad2(Math.round(r2).toString(16)), pad2(Math.round(g2).toString(16)), pad2(Math.round(b2).toString(16))];
return hex2.join("");
}
tinycolor.equals = function(color1, color2) {
if (!color1 || !color2) return false;
return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();
};
tinycolor.random = function() {
return tinycolor.fromRatio({
r: Math.random(),
g: Math.random(),
b: Math.random()
});
};
function _desaturate(color2, amount) {
amount = amount === 0 ? 0 : amount || 10;
var hsl = tinycolor(color2).toHsl();
hsl.s -= amount / 100;
hsl.s = clamp01(hsl.s);
return tinycolor(hsl);
}
function _saturate(color2, amount) {
amount = amount === 0 ? 0 : amount || 10;
var hsl = tinycolor(color2).toHsl();
hsl.s += amount / 100;
hsl.s = clamp01(hsl.s);
return tinycolor(hsl);
}
function _greyscale(color2) {
return tinycolor(color2).desaturate(100);
}
function _lighten(color2, amount) {
amount = amount === 0 ? 0 : amount || 10;
var hsl = tinycolor(color2).toHsl();
hsl.l += amount / 100;
hsl.l = clamp01(hsl.l);
return tinycolor(hsl);
}
function _brighten(color2, amount) {
amount = amount === 0 ? 0 : amount || 10;
var rgb = tinycolor(color2).toRgb();
rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100))));
rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100))));
rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100))));
return tinycolor(rgb);
}
function _darken(color2, amount) {
amount = amount === 0 ? 0 : amount || 10;
var hsl = tinycolor(color2).toHsl();
hsl.l -= amount / 100;
hsl.l = clamp01(hsl.l);
return tinycolor(hsl);
}
function _spin(color2, amount) {
var hsl = tinycolor(color2).toHsl();
var hue = (hsl.h + amount) % 360;
hsl.h = hue < 0 ? 360 + hue : hue;
return tinycolor(hsl);
}
function _complement(color2) {
var hsl = tinycolor(color2).toHsl();
hsl.h = (hsl.h + 180) % 360;
return tinycolor(hsl);
}
function polyad(color2, number4) {
if (isNaN(number4) || number4 <= 0) {
throw new Error("Argument to polyad must be a positive number");
}
var hsl = tinycolor(color2).toHsl();
var result = [tinycolor(color2)];
var step = 360 / number4;
for (var i = 1; i < number4; i++) {
result.push(tinycolor({
h: (hsl.h + i * step) % 360,
s: hsl.s,
l: hsl.l
}));
}
return result;
}
function _splitcomplement(color2) {
var hsl = tinycolor(color2).toHsl();
var h2 = hsl.h;
return [tinycolor(color2), tinycolor({
h: (h2 + 72) % 360,
s: hsl.s,
l: hsl.l
}), tinycolor({
h: (h2 + 216) % 360,
s: hsl.s,
l: hsl.l
})];
}
function _analogous(color2, results, slices) {
results = results || 6;
slices = slices || 30;
var hsl = tinycolor(color2).toHsl();
var part = 360 / slices;
var ret = [tinycolor(color2)];
for (hsl.h = (hsl.h - (part * results >> 1) + 720) % 360; --results; ) {
hsl.h = (hsl.h + part) % 360;
ret.push(tinycolor(hsl));
}
return ret;
}
function _monochromatic(color2, results) {
results = results || 6;
var hsv = tinycolor(color2).toHsv();
var h2 = hsv.h, s = hsv.s, v4 = hsv.v;
var ret = [];
var modification = 1 / results;
while (results--) {
ret.push(tinycolor({
h: h2,
s,
v: v4
}));
v4 = (v4 + modification) % 1;
}
return ret;
}
tinycolor.mix = function(color1, color2, amount) {
amount = amount === 0 ? 0 : amount || 50;
var rgb1 = tinycolor(color1).toRgb();
var rgb2 = tinycolor(color2).toRgb();
var p2 = amount / 100;
var rgba = {
r: (rgb2.r - rgb1.r) * p2 + rgb1.r,
g: (rgb2.g - rgb1.g) * p2 + rgb1.g,
b: (rgb2.b - rgb1.b) * p2 + rgb1.b,
a: (rgb2.a - rgb1.a) * p2 + rgb1.a
};
return tinycolor(rgba);
};
tinycolor.readability = function(color1, color2) {
var c1 = tinycolor(color1);
var c2 = tinycolor(color2);
return (Math.max(c1.getLuminance(), c2.getLuminance()) + 0.05) / (Math.min(c1.getLuminance(), c2.getLuminance()) + 0.05);
};
tinycolor.isReadable = function(color1, color2, wcag2) {
var readability = tinycolor.readability(color1, color2);
var wcag2Parms, out2;
out2 = false;
wcag2Parms = validateWCAG2Parms(wcag2);
switch (wcag2Parms.level + wcag2Parms.size) {
case "AAsmall":
case "AAAlarge":
out2 = readability >= 4.5;
break;
case "AAlarge":
out2 = readability >= 3;
break;
case "AAAsmall":
out2 = readability >= 7;
break;
}
return out2;
};
tinycolor.mostReadable = function(baseColor, colorList, args) {
var bestColor = null;
var bestScore = 0;
var readability;
var includeFallbackColors, level, size;
args = args || {};
includeFallbackColors = args.includeFallbackColors;
level = args.level;
size = args.size;
for (var i = 0; i < colorList.length; i++) {
readability = tinycolor.readability(baseColor, colorList[i]);
if (readability > bestScore) {
bestScore = readability;
bestColor = tinycolor(colorList[i]);
}
}
if (tinycolor.isReadable(baseColor, bestColor, {
level,
size
}) || !includeFallbackColors) {
return bestColor;
} else {
args.includeFallbackColors = false;
return tinycolor.mostReadable(baseColor, ["#fff", "#000"], args);
}
};
var names = tinycolor.names = {
aliceblue: "f0f8ff",
antiquewhite: "faebd7",
aqua: "0ff",
aquamarine: "7fffd4",
azure: "f0ffff",
beige: "f5f5dc",
bisque: "ffe4c4",
black: "000",
blanchedalmond: "ffebcd",
blue: "00f",
blueviolet: "8a2be2",
brown: "a52a2a",
burlywood: "deb887",
burntsienna: "ea7e5d",
cadetblue: "5f9ea0",
chartreuse: "7fff00",
chocolate: "d2691e",
coral: "ff7f50",
cornflowerblue: "6495ed",
cornsilk: "fff8dc",
crimson: "dc143c",
cyan: "0ff",
darkblue: "00008b",
darkcyan: "008b8b",
darkgoldenrod: "b8860b",
darkgray: "a9a9a9",
darkgreen: "006400",
darkgrey: "a9a9a9",
darkkhaki: "bdb76b",
darkmagenta: "8b008b",
darkolivegreen: "556b2f",
darkorange: "ff8c00",
darkorchid: "9932cc",
darkred: "8b0000",
darksalmon: "e9967a",
darkseagreen: "8fbc8f",
darkslateblue: "483d8b",
darkslategray: "2f4f4f",
darkslategrey: "2f4f4f",
darkturquoise: "00ced1",
darkviolet: "9400d3",
deeppink: "ff1493",
deepskyblue: "00bfff",
dimgray: "696969",
dimgrey: "696969",
dodgerblue: "1e90ff",
firebrick: "b22222",
floralwhite: "fffaf0",
forestgreen: "228b22",
fuchsia: "f0f",
gainsboro: "dcdcdc",
ghostwhite: "f8f8ff",
gold: "ffd700",
goldenrod: "daa520",
gray: "808080",
green: "008000",
greenyellow: "adff2f",
grey: "808080",
honeydew: "f0fff0",
hotpink: "ff69b4",
indianred: "cd5c5c",
indigo: "4b0082",
ivory: "fffff0",
khaki: "f0e68c",
lavender: "e6e6fa",
lavenderblush: "fff0f5",
lawngreen: "7cfc00",
lemonchiffon: "fffacd",
lightblue: "add8e6",
lightcoral: "f08080",
lightcyan: "e0ffff",
lightgoldenrodyellow: "fafad2",
lightgray: "d3d3d3",
lightgreen: "90ee90",
lightgrey: "d3d3d3",
lightpink: "ffb6c1",
lightsalmon: "ffa07a",
lightseagreen: "20b2aa",
lightskyblue: "87cefa",
lightslategray: "789",
lightslategrey: "789",
lightsteelblue: "b0c4de",
lightyellow: "ffffe0",
lime: "0f0",
limegreen: "32cd32",
linen: "faf0e6",
magenta: "f0f",
maroon: "800000",
mediumaquamarine: "66cdaa",
mediumblue: "0000cd",
mediumorchid: "ba55d3",
mediumpurple: "9370db",
mediumseagreen: "3cb371",
mediumslateblue: "7b68ee",
mediumspringgreen: "00fa9a",
mediumturquoise: "48d1cc",
mediumvioletred: "c71585",
midnightblue: "191970",
mintcream: "f5fffa",
mistyrose: "ffe4e1",
moccasin: "ffe4b5",
navajowhite: "ffdead",
navy: "000080",
oldlace: "fdf5e6",
olive: "808000",
olivedrab: "6b8e23",
orange: "ffa500",
orangered: "ff4500",
orchid: "da70d6",
palegoldenrod: "eee8aa",
palegreen: "98fb98",
paleturquoise: "afeeee",
palevioletred: "db7093",
papayawhip: "ffefd5",
peachpuff: "ffdab9",
peru: "cd853f",
pink: "ffc0cb",
plum: "dda0dd",
powderblue: "b0e0e6",
purple: "800080",
rebeccapurple: "663399",
red: "f00",
rosybrown: "bc8f8f",
royalblue: "4169e1",
saddlebrown: "8b4513",
salmon: "fa8072",
sandybrown: "f4a460",
seagreen: "2e8b57",
seashell: "fff5ee",
sienna: "a0522d",
silver: "c0c0c0",
skyblue: "87ceeb",
slateblue: "6a5acd",
slategray: "708090",
slategrey: "708090",
snow: "fffafa",
springgreen: "00ff7f",
steelblue: "4682b4",
tan: "d2b48c",
teal: "008080",
thistle: "d8bfd8",
tomato: "ff6347",
turquoise: "40e0d0",
violet: "ee82ee",
wheat: "f5deb3",
white: "fff",
whitesmoke: "f5f5f5",
yellow: "ff0",
yellowgreen: "9acd32"
};
var hexNames = tinycolor.hexNames = flip(names);
function flip(o) {
var flipped = {};
for (var i in o) {
if (o.hasOwnProperty(i)) {
flipped[o[i]] = i;
}
}
return flipped;
}
function boundAlpha(a) {
a = parseFloat(a);
if (isNaN(a) || a < 0 || a > 1) {
a = 1;
}
return a;
}
function bound01(n2, max3) {
if (isOnePointZero(n2)) n2 = "100%";
var processPercent = isPercentage(n2);
n2 = Math.min(max3, Math.max(0, parseFloat(n2)));
if (processPercent) {
n2 = parseInt(n2 * max3, 10) / 100;
}
if (Math.abs(n2 - max3) < 1e-6) {
return 1;
}
return n2 % max3 / parseFloat(max3);
}
function clamp01(val) {
return Math.min(1, Math.max(0, val));
}
function parseIntFromHex(val) {
return parseInt(val, 16);
}
function isOnePointZero(n2) {
return typeof n2 == "string" && n2.indexOf(".") != -1 && parseFloat(n2) === 1;
}
function isPercentage(n2) {
return typeof n2 === "string" && n2.indexOf("%") != -1;
}
function pad2(c2) {
return c2.length == 1 ? "0" + c2 : "" + c2;
}
function convertToPercentage(n2) {
if (n2 <= 1) {
n2 = n2 * 100 + "%";
}
return n2;
}
function convertDecimalToHex(d2) {
return Math.round(parseFloat(d2) * 255).toString(16);
}
function convertHexToDecimal(h2) {
return parseIntFromHex(h2) / 255;
}
var matchers = function() {
var CSS_INTEGER2 = "[-\\+]?\\d+%?";
var CSS_NUMBER2 = "[-\\+]?\\d*\\.\\d+%?";
var CSS_UNIT2 = "(?:" + CSS_NUMBER2 + ")|(?:" + CSS_INTEGER2 + ")";
var PERMISSIVE_MATCH32 = "[\\s|\\(]+(" + CSS_UNIT2 + ")[,|\\s]+(" + CSS_UNIT2 + ")[,|\\s]+(" + CSS_UNIT2 + ")\\s*\\)?";
var PERMISSIVE_MATCH42 = "[\\s|\\(]+(" + CSS_UNIT2 + ")[,|\\s]+(" + CSS_UNIT2 + ")[,|\\s]+(" + CSS_UNIT2 + ")[,|\\s]+(" + CSS_UNIT2 + ")\\s*\\)?";
return {
CSS_UNIT: new RegExp(CSS_UNIT2),
rgb: new RegExp("rgb" + PERMISSIVE_MATCH32),
rgba: new RegExp("rgba" + PERMISSIVE_MATCH42),
hsl: new RegExp("hsl" + PERMISSIVE_MATCH32),
hsla: new RegExp("hsla" + PERMISSIVE_MATCH42),
hsv: new RegExp("hsv" + PERMISSIVE_MATCH32),
hsva: new RegExp("hsva" + PERMISSIVE_MATCH42),
hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,
hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,
hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,
hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/
};
}();
function isValidCSSUnit(color2) {
return !!matchers.CSS_UNIT.exec(color2);
}
function stringInputToObject(color2) {
color2 = color2.replace(trimLeft, "").replace(trimRight, "").toLowerCase();
var named = false;
if (names[color2]) {
color2 = names[color2];
named = true;
} else if (color2 == "transparent") {
return {
r: 0,
g: 0,
b: 0,
a: 0,
format: "name"
};
}
var match2;
if (match2 = matchers.rgb.exec(color2)) {
return {
r: match2[1],
g: match2[2],
b: match2[3]
};
}
if (match2 = matchers.rgba.exec(color2)) {
return {
r: match2[1],
g: match2[2],
b: match2[3],
a: match2[4]
};
}
if (match2 = matchers.hsl.exec(color2)) {
return {
h: match2[1],
s: match2[2],
l: match2[3]
};
}
if (match2 = matchers.hsla.exec(color2)) {
return {
h: match2[1],
s: match2[2],
l: match2[3],
a: match2[4]
};
}
if (match2 = matchers.hsv.exec(color2)) {
return {
h: match2[1],
s: match2[2],
v: match2[3]
};
}
if (match2 = matchers.hsva.exec(color2)) {
return {
h: match2[1],
s: match2[2],
v: match2[3],
a: match2[4]
};
}
if (match2 = matchers.hex8.exec(color2)) {
return {
r: parseIntFromHex(match2[1]),
g: parseIntFromHex(match2[2]),
b: parseIntFromHex(match2[3]),
a: convertHexToDecimal(match2[4]),
format: named ? "name" : "hex8"
};
}
if (match2 = matchers.hex6.exec(color2)) {
return {
r: parseIntFromHex(match2[1]),
g: parseIntFromHex(match2[2]),
b: parseIntFromHex(match2[3]),
format: named ? "name" : "hex"
};
}
if (match2 = matchers.hex4.exec(color2)) {
return {
r: parseIntFromHex(match2[1] + "" + match2[1]),
g: parseIntFromHex(match2[2] + "" + match2[2]),
b: parseIntFromHex(match2[3] + "" + match2[3]),
a: convertHexToDecimal(match2[4] + "" + match2[4]),
format: named ? "name" : "hex8"
};
}
if (match2 = matchers.hex3.exec(color2)) {
return {
r: parseIntFromHex(match2[1] + "" + match2[1]),
g: parseIntFromHex(match2[2] + "" + match2[2]),
b: parseIntFromHex(match2[3] + "" + match2[3]),
format: named ? "name" : "hex"
};
}
return false;
}
function validateWCAG2Parms(parms) {
var level, size;
parms = parms || {
level: "AA",
size: "small"
};
level = (parms.level || "AA").toUpperCase();
size = (parms.size || "small").toLowerCase();
if (level !== "AA" && level !== "AAA") {
level = "AA";
}
if (size !== "small" && size !== "large") {
size = "small";
}
return {
level,
size
};
}
const textTooltip = "index-module__textTooltip___yuYDe";
const styles$2 = {
textTooltip
};
function useMemoizedFn(fn) {
var fnRef = reactExports.useRef(fn);
fnRef.current = reactExports.useMemo(function() {
return fn;
}, [fn]);
var memoizedFn = reactExports.useRef();
if (!memoizedFn.current) {
memoizedFn.current = function() {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return fnRef.current.apply(this, args);
};
}
return memoizedFn.current;
}
var isBrowser = !!(typeof window !== "undefined" && window.document && window.document.createElement);
var useIsomorphicLayoutEffect = isBrowser ? reactExports.useLayoutEffect : reactExports.useEffect;
function useResizeEffect(effect, targetRef) {
const fn = useMemoizedFn(effect);
useIsomorphicLayoutEffect(() => {
const target = targetRef.current;
if (!target) return;
if (window.ResizeObserver) {
let animationFrame;
const observer = new ResizeObserver(() => {
animationFrame = window.requestAnimationFrame(() => fn(target));
});
observer.observe(target);
return () => {
window.cancelAnimationFrame(animationFrame);
observer.disconnect();
};
} else {
fn(target);
}
}, [targetRef]);
}
const TextTooltip = (props) => {
const {
style: style2 = {},
str,
trigger: trigger2 = "click",
suffix,
handleClick,
textClassName = ""
} = props;
const rootRef = reactExports.useRef(null);
const tooltipRef = reactExports.useRef(null);
const [clickable, setClickable] = reactExports.useState(false);
function calcEllipsised() {
if (tooltipRef?.current?.scrollWidth > tooltipRef?.current?.clientWidth) {
setClickable(true);
} else {
setClickable(false);
}
}
useResizeEffect(calcEllipsised, rootRef);
return /* @__PURE__ */ jsxRuntimeExports.jsx(
Tooltip2,
{
title: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "bg-black/[0.85] text-white p-[6px]", children: str }),
trigger: clickable ? trigger2 : "",
overlayClassName: styles$2.textTooltip,
className: props.className,
style: { width: "100%" },
zIndex: 999999,
placement: props?.placement || "right",
align: {
offset: props.offset || [72, 0]
},
children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
"div",
{
style: { width: "100%", ...style2 },
className: "flex",
ref: rootRef,
children: [
/* @__PURE__ */ jsxRuntimeExports.jsx(
"div",
{
className: cls(
textClassName,
"text-ellipsis overflow-hidden whitespace-nowrap"
),
ref: tooltipRef,
children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { onClick: () => handleClick?.(), children: str })
}
),
suffix
]
}
)
}
);
};
const getColorByRatioHover = (_parentIndex) => {
const colors = [
"#e6f2ff",
"#E8F5FF",
"#E3F9E9",
"#FFF5E4",
"#FFF1E9",
"#FFF0ED",
"#FFF0F6"
];
const getMode = (idx, length2) => idx % (length2 - 1) || 0;
const _res = colors[getMode(_parentIndex, colors?.length)];
return _res;
};
const getColorByRatio = (_parentIndex, isSecondary) => {
const colors = [
"#0D53DE",
"#0080B0",
"#008858",
"#B38500",
"#BE5A00",
"#D54941",
"#C43695"
];
const secondaryColors = [
"#5E9BF7",
"#41B8F2",
"#56C08D",
"#F5BA18",
"#FA9550",
"#FF988E",
"#FF79CD"
];
const getMode = (idx, length2) => idx % (length2 - 1) || 0;
const _res = isSecondary && _parentIndex !== void 0 ? secondaryColors[_parentIndex] : colors[getMode(_parentIndex, colors?.length)];
return _res;
};
const CustomLegend = ({
firstLevelData = [],
secondLevelData = [],
activeFirstLevel,
onFirstLevelClick,
data,
className = ""
}) => {
const hasSecondLevel = (firstLevelType) => {
return Object.keys(data.name_ratio).some(
(key) => key.startsWith(firstLevelType + "-")
);
};
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
"div",
{
className: cls(
"flex justify-center justify-center gap-0",
activeFirstLevel && "grid !grid-cols-2 gap-6",
className
),
children: [
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-1 max-h-[60vh] overflow-y-auto scrollbar-thin", children: firstLevelData?.map((item, index2) => {
const hasChildren = hasSecondLevel(item?.name);
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
"div",
{
className: cls(
"flex items-center justify-start p-2.5 rounded-md rounded overflow-x-hidden",
hasChildren ? "cursor-pointer hover:bg-gray-50" : "",
activeFirstLevel === item.name && "text-white"
),
onClick: () => {
if (hasChildren) {
onFirstLevelClick(item.name);
}
},
style: {
background: activeFirstLevel === item.name ? item?.itemStyle?.hoverColor : "transparent"
},
children: [
/* @__PURE__ */ jsxRuntimeExports.jsx(
"span",
{
className: "min-w-2.5 h-2.5 rounded-full mr-2",
style: {
backgroundColor: item.itemStyle.color
}
}
),
/* @__PURE__ */ jsxRuntimeExports.jsx(
TextTooltip,
{
str: item.name,
trigger: "hover",
placement: "top",
offset: [0, -10],
textClassName: "!text-[12px]"
}
),
hasChildren && /* @__PURE__ */ jsxRuntimeExports.jsx(
IconFont,
{
type: "icon-more",
style: { color: item.itemStyle.color }
}
)
]
},
index2
);
}) }),
activeFirstLevel && secondLevelData?.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-1 max-h-[100%] overflow-y-auto scrollbar-thin", children: secondLevelData.map((item, index2) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
"div",
{
className: "flex items-center p-2.5 rounded-md",
children: [
/* @__PURE__ */ jsxRuntimeExports.jsx(
"span",
{
className: "min-w-2 h-2 rounded-full mr-2",
style: {
background: item?.itemStyle?.color
}
}
),
/* @__PURE__ */ jsxRuntimeExports.jsx(
TextTooltip,
{
str: item.name,
trigger: "hover",
placement: "top",
offset: [0, -10],
textClassName: "!text-[12px]"
}
)
]
},
index2
)) })
]
}
);
};
const PieChart = ({ data }) => {
const [activeFirstLevel, setActiveFirstLevel] = reactExports.useState("");
const firstLevelData = Object.entries(data?.type_ratio).map(
([key, value], index2) => ({
name: key,
value,
itemStyle: {
color: tinycolor(getColorByRatio(index2, false))?.setAlpha(0.8).toRgbString(),
hoverColor: getColorByRatioHover(index2)
}
})
);
const getSecondLevelData = (firstLevelType) => {
return Object.entries(data.name_ratio).filter(([key]) => key.startsWith(firstLevelType + "-")).map(([key, value], idx) => ({
name: key.split("-")[1],
value,
itemStyle: {
// 使用对应一级标签的颜色
color: tinycolor(getColorByRatio(idx, true))?.setAlpha(1).toRgbString()
}
}));
};
const onEvents = {
legendselectchanged: (params) => {
const clickedName = Object.entries(params.selected).find(
([_, selected]) => selected
)?.[0];
if (activeFirstLevel === clickedName) {
setActiveFirstLevel(null);
} else {
setActiveFirstLevel(clickedName);
}
}
};
const secondLevelData = reactExports.useMemo(
() => getSecondLevelData(activeFirstLevel),
[activeFirstLevel]
);
const option = {
legend: {
type: "scroll",
show: false,
orient: "vertical",
right: "5%",
top: "middle",
width: 180,
itemGap: 12,
textStyle: {
fontSize: 12,
color: "#333"
},
// 自定义图例样式
formatter: function(name) {
const data2 = firstLevelData.find((item) => item.name === name) || activeFirstLevel && getSecondLevelData(activeFirstLevel).find(
(item) => item.name === name
);
if (data2) {
return `${name} (${data2.value})`;
}
return name;
},
// 图例选中状态的样式
selectedMode: true,
select: {
itemStyle: {
shadowBlur: 2,
shadowColor: "rgba(0,0,0,0.2)"
},
textStyle: {
color: "#333",
fontWeight: "bold"
}
}
},
series: [
{
type: "pie",
radius: ["0%", "60%"],
center: ["50%", "50%"],
data: activeFirstLevel ? getSecondLevelData(activeFirstLevel) : firstLevelData,
label: {
show: true,
position: "outside",
// alignTo: 'edge',
margin: 20,
formatter: function(params) {
return [
`{dot|●}{name|${params.name}}`,
// 添加圆点和空格
`{value|${(params.value * 100)?.toFixed(2)}%}`
].join("\n");
},
rich: {
name: {
align: "left",
fontSize: 12,
color: "rgba(18, 19, 22, 0.80)"
},
value: {
align: "left",
fontSize: 12,
color: "rgba(18, 19, 22, 0.65)",
padding: [2, 0, 0, 14]
// 添加左侧padding 10px
},
// 添加圆点样式
dot: {
color: "inherit",
// 继承对应的系列颜色
fontSize: 10,
padding: [0, 4, 0, 0]
}
}
},
labelLine: {
show: true,
length: 32,
// 第一段引导线长度
length2: 10,
// 几乎没有第二段
minTurnAngle: 60,
// 控制转角
smooth: false
},
labelLayout: {
hideOverlap: true,
verticalAlign: "bottom"
// 垂直对齐方式
},
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: "rgba(0,0,0,0.5)"
}
}
}
]
};
const handleLegendClick = (name) => {
setActiveFirstLevel(name === activeFirstLevel ? null : name);
};
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
"div",
{
style: { height: "100%", width: "100%", minWidth: 800 },
className: "flex justify-center",
children: [
/* @__PURE__ */ jsxRuntimeExports.jsx(
EChartsReact,
{
option,
style: {
height: "100%",
flex: 1,
minWidth: "400px",
maxWidth: "800px"
},
onEvents
}
),
/* @__PURE__ */ jsxRuntimeExports.jsx(
CustomLegend,
{
firstLevelData,
secondLevelData,
activeFirstLevel,
onFirstLevelClick: handleLegendClick,
data,
className: "min-w-[400px] max-w-[600px]"
}
)
]
}
);
};
const SummaryDataTable = ({
data,
className
}) => {
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: cls(className, "flex max-h-[500px] relative"), children: [
/* @__PURE__ */ jsxRuntimeExports.jsx(
"div",
{
className: cls(
"relative p-8 text-black-1 bg-[#F4F5F9] rounded overflow-hidden w-[380px] 2xl:min-w-[480px] 3xl:min-w-[520px] py-[88px] rounded-lg items-center flex justify-center"
),
children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid grid-cols-3 gap-x-9", children: [
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "col-span-3 mb-12", children: [
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "font-semibold text-[3.75rem] leading-[100%] mb-3", children: data.score.toFixed(2) }),
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-black-1/[0.8]", children: "评分" })
] }),
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-lg font-semibold mb-4", children: data.total }),
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-black-1/[0.8]", children: "总计" })
] }),
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-lg font-semibold mb-4 text-[#00B365]", children: data.num_good }),
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-black-1/[0.8]", children: "正确数据" })
] }),
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-lg font-semibold mb-4 text-[#F5483B]", children: data.num_bad }),
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-black-1/[0.8]", children: "错误数据" })
] })
] })
}
),
/* @__PURE__ */ jsxRuntimeExports.jsxs(
"div",
{
className: "absolute top-4 right-5 flex items-center justify-center text-[14px] text-[#0D53DE] cursor-pointer",
onClick: () => window.open(
"https://github.com/shijinpjlab/Dingo/blob/main/docs/metrics.md"
),
children: [
/* @__PURE__ */ jsxRuntimeExports.jsx(
IconFont,
{
type: "icon-GithubFilled",
className: "text-[1.25rem] mr-1 z-9"
}
),
"维度释义"
]
}
),
/* @__PURE__ */ jsxRuntimeExports.jsx(
"div",
{
className: cls(
"px-4 py-12 text-black-1 bg-[#F4F5F9] rounded overflow-hidden flex-1 ml-4 rounded-lg overflow-x-auto scrollbar-thin relative"
),
children: /* @__PURE__ */ jsxRuntimeExports.jsx(PieChart, { data })
}
)
] });
};
function memoize(fn, options) {
var cache = options && options.cache ? options.cache : cacheDefault;
var serializer = options && options.serializer ? options.serializer : serializerDefault;
var strategy = options && options.strategy ? options.strategy : strategyDefault;
return strategy(fn, {
cache,
serializer
});
}
function isPrimitive(value) {
return value == null || typeof value === "number" || typeof value === "boolean";
}
function monadic(fn, cache, serializer, arg) {
var cacheKey = isPrimitive(arg) ? arg : serializer(arg);
var computedValue = cache.get(cacheKey);
if (typeof computedValue === "undefined") {
computedValue = fn.call(this, arg);
cache.set(cacheKey, computedValue);
}
return computedValue;
}
function variadic(fn, cache, serializer) {
var args = Array.prototype.slice.call(arguments, 3);
var cacheKey = serializer(args);
var computedValue = cache.get(cacheKey);
if (typeof computedValue === "undefined") {
computedValue = fn.apply(this, args);
cache.set(cacheKey, computedValue);
}
return computedValue;
}
function assemble(fn, context, strategy, cache, serialize2) {
return strategy.bind(context, fn, cache, serialize2);
}
function strategyDefault(fn, options) {
var strategy = fn.length === 1 ? monadic : variadic;
return assemble(fn, this, strategy, options.cache.create(), options.serializer);
}
function strategyVariadic(fn, options) {
return assemble(fn, this, variadic, options.cache.create(), options.serializer);
}
function strategyMonadic(fn, options) {
return assemble(fn, this, monadic, options.cache.create(), options.serializer);
}
var serializerDefault = function() {
return JSON.stringify(arguments);
};
function ObjectWithoutPrototypeCache() {
this.cache = /* @__PURE__ */ Object.create(null);
}
ObjectWithoutPrototypeCache.prototype.get = function(key) {
return this.cache[key];
};
ObjectWithoutPrototypeCache.prototype.set = function(key, value) {
this.cache[key] = value;
};
var cacheDefault = {
create: function create2() {
return new ObjectWithoutPrototypeCache();
}
};
var strategies = {
variadic: strategyVariadic,
monadic: strategyMonadic
};
function invariant$1(condition, message2, Err) {
if (Err === void 0) {
Err = Error;
}
if (!condition) {
throw new Err(message2);
}
}
memoize(function() {
var _a2;
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return new ((_a2 = Intl.NumberFormat).bind.apply(_a2, __spreadArray([void 0], args, false)))();
}, {
strategy: strategies.variadic
});
memoize(function() {
var _a2;
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return new ((_a2 = Intl.DateTimeFormat).bind.apply(_a2, __spreadArray([void 0], args, false)))();
}, {
strategy: strategies.variadic
});
memoize(function() {
var _a2;
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return new ((_a2 = Intl.PluralRules).bind.apply(_a2, __spreadArray([void 0], args, false)))();
}, {
strategy: strategies.variadic
});
memoize(function() {
var _a2;
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return new ((_a2 = Intl.Locale).bind.apply(_a2, __spreadArray([void 0], args, false)))();
}, {
strategy: strategies.variadic
});
memoize(function() {
var _a2;
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return new ((_a2 = Intl.ListFormat).bind.apply(_a2, __spreadArray([void 0], args, false)))();
}, {
strategy: strategies.variadic
});
var ErrorKind;
(function(ErrorKind2) {
ErrorKind2[ErrorKind2["EXPECT_ARGUMENT_CLOSING_BRACE"] = 1] = "EXPECT_ARGUMENT_CLOSING_BRACE";
ErrorKind2[ErrorKind2["EMPTY_ARGUMENT"] = 2] = "EMPTY_ARGUMENT";
ErrorKind2[ErrorKind2["MALFORMED_ARGUMENT"] = 3] = "MALFORMED_ARGUMENT";
ErrorKind2[ErrorKind2["EXPECT_ARGUMENT_TYPE"] = 4] = "EXPECT_ARGUMENT_TYPE";
ErrorKind2[ErrorKind2["INVALID_ARGUMENT_TYPE"] = 5] = "INVALID_ARGUMENT_TYPE";
ErrorKind2[ErrorKind2["EXPECT_ARGUMENT_STYLE"] = 6] = "EXPECT_ARGUMENT_STYLE";
ErrorKind2[ErrorKind2["INVALID_NUMBER_SKELETON"] = 7] = "INVALID_NUMBER_SKELETON";
ErrorKind2[ErrorKind2["INVALID_DATE_TIME_SKELETON"] = 8] = "INVALID_DATE_TIME_SKELETON";
ErrorKind2[ErrorKind2["EXPECT_NUMBER_SKELETON"] = 9] = "EXPECT_NUMBER_SKELETON";
ErrorKind2[ErrorKind2["EXPECT_DATE_TIME_SKELETON"] = 10] = "EXPECT_DATE_TIME_SKELETON";
ErrorKind2[ErrorKind2["UNCLOSED_QUOTE_IN_ARGUMENT_STYLE"] = 11] = "UNCLOSED_QUOTE_IN_ARGUMENT_STYLE";
ErrorKind2[ErrorKind2["EXPECT_SELECT_ARGUMENT_OPTIONS"] = 12] = "EXPECT_SELECT_ARGUMENT_OPTIONS";
ErrorKind2[ErrorKind2["EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE"] = 13] = "EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE";
ErrorKind2[ErrorKind2["INVALID_PLURAL_ARGUMENT_OFFSET_VALUE"] = 14] = "INVALID_PLURAL_ARGUMENT_OFFSET_VALUE";
ErrorKind2[ErrorKind2["EXPECT_SELECT_ARGUMENT_SELECTOR"] = 15] = "EXPECT_SELECT_ARGUMENT_SELECTOR";
ErrorKind2[ErrorKind2["EXPECT_PLURAL_ARGUMENT_SELECTOR"] = 16] = "EXPECT_PLURAL_ARGUMENT_SELECTOR";
ErrorKind2[ErrorKind2["EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT"] = 17] = "EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT";
ErrorKind2[ErrorKind2["EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT"] = 18] = "EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT";
ErrorKind2[ErrorKind2["INVALID_PLURAL_ARGUMENT_SELECTOR"] = 19] = "INVALID_PLURAL_ARGUMENT_SELECTOR";
ErrorKind2[ErrorKind2["DUPLICATE_PLURAL_ARGUMENT_SELECTOR"] = 20] = "DUPLICATE_PLURAL_ARGUMENT_SELECTOR";
ErrorKind2[ErrorKind2["DUPLICATE_SELECT_ARGUMENT_SELECTOR"] = 21] = "DUPLICATE_SELECT_ARGUMENT_SELECTOR";
ErrorKind2[ErrorKind2["MISSING_OTHER_CLAUSE"] = 22] = "MISSING_OTHER_CLAUSE";
ErrorKind2[ErrorKind2["INVALID_TAG"] = 23] = "INVALID_TAG";
ErrorKind2[ErrorKind2["INVALID_TAG_NAME"] = 25] = "INVALID_TAG_NAME";
ErrorKind2[ErrorKind2["UNMATCHED_CLOSING_TAG"] = 26] = "UNMATCHED_CLOSING_TAG";
ErrorKind2[ErrorKind2["UNCLOSED_TAG"] = 27] = "UNCLOSED_TAG";
})(ErrorKind || (ErrorKind = {}));
var TYPE;
(function(TYPE2) {
TYPE2[TYPE2["literal"] = 0] = "literal";
TYPE2[TYPE2["argument"] = 1] = "argument";
TYPE2[TYPE2["number"] = 2] = "number";
TYPE2[TYPE2["date"] = 3] = "date";
TYPE2[TYPE2["time"] = 4] = "time";
TYPE2[TYPE2["select"] = 5] = "select";
TYPE2[TYPE2["plural"] = 6] = "plural";
TYPE2[TYPE2["pound"] = 7] = "pound";
TYPE2[TYPE2["tag"] = 8] = "tag";
})(TYPE || (TYPE = {}));
var SKELETON_TYPE;
(function(SKELETON_TYPE2) {
SKELETON_TYPE2[SKELETON_TYPE2["number"] = 0] = "number";
SKELETON_TYPE2[SKELETON_TYPE2["dateTime"] = 1] = "dateTime";
})(SKELETON_TYPE || (SKELETON_TYPE = {}));
function isLiteralElement(el2) {
return el2.type === TYPE.literal;
}
function isArgumentElement(el2) {
return el2.type === TYPE.argument;
}
function isNumberElement(el2) {
return el2.type === TYPE.number;
}
function isDateElement(el2) {
return el2.type === TYPE.date;
}
function isTimeElement(el2) {
return el2.type === TYPE.time;
}
function isSelectElement(el2) {
return el2.type === TYPE.select;
}
function isPluralElement(el2) {
return el2.type === TYPE.plural;
}
function isPoundElement(el2) {
return el2.type === TYPE.pound;
}
function isTagElement(el2) {
return el2.type === TYPE.tag;
}
function isNumberSkeleton(el2) {
return !!(el2 && typeof el2 === "object" && el2.type === SKELETON_TYPE.number);
}
function isDateTimeSkeleton(el2) {
return !!(el2 && typeof el2 === "object" && el2.type === SKELETON_TYPE.dateTime);
}
var SPACE_SEPARATOR_REGEX = /[ \xA0\u1680\u2000-\u200A\u202F\u205F\u3000]/;
var DATE_TIME_REGEX = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;
function parseDateTimeSkeleton(skeleton) {
var result = {};
skeleton.replace(DATE_TIME_REGEX, function(match2) {
var len2 = match2.length;
switch (match2[0]) {
case "G":
result.era = len2 === 4 ? "long" : len2 === 5 ? "narrow" : "short";
break;
case "y":
result.year = len2 === 2 ? "2-digit" : "numeric";
break;
case "Y":
case "u":
case "U":
case "r":
throw new RangeError("`Y/u/U/r` (year) patterns are not supported, use `y` instead");
case "q":
case "Q":
throw new RangeError("`q/Q` (quarter) patterns are not supported");
case "M":
case "L":
result.month = ["numeric", "2-digit", "short", "long", "narrow"][len2 - 1];
break;
case "w":
case "W":
throw new RangeError("`w/W` (week) patterns are not supported");
case "d":
result.day = ["numeric", "2-digit"][len2 - 1];
break;
case "D":
case "F":
case "g":
throw new RangeError("`D/F/g` (day) patterns are not supported, use `d` instead");
case "E":
result.weekday = len2 === 4 ? "long" : len2 === 5 ? "narrow" : "short";
break;
case "e":
if (len2 < 4) {
throw new RangeError("`e..eee` (weekday) patterns are not supported");
}
result.weekday = ["short", "long", "narrow", "short"][len2 - 4];
break;
case "c":
if (len2 < 4) {
throw new RangeError("`c..ccc` (weekday) patterns are not supported");
}
result.weekday = ["short", "long", "narrow", "short"][len2 - 4];
break;
case "a":
result.hour12 = true;
break;
case "b":
case "B":
throw new RangeError("`b/B` (period) patterns are not supported, use `a` instead");
case "h":
result.hourCycle = "h12";
result.hour = ["numeric", "2-digit"][len2 - 1];
break;
case "H":
result.hourCycle = "h23";
result.hour = ["numeric", "2-digit"][len2 - 1];
break;
case "K":
result.hourCycle = "h11";
result.hour = ["numeric", "2-digit"][len2 - 1];
break;
case "k":
result.hourCycle = "h24";
result.hour = ["numeric", "2-digit"][len2 - 1];
break;
case "j":
case "J":
case "C":
throw new RangeError("`j/J/C` (hour) patterns are not supported, use `h/H/K/k` instead");
case "m":
result.minute = ["numeric", "2-digit"][len2 - 1];
break;
case "s":
result.second = ["numeric", "2-digit"][len2 - 1];
break;
case "S":
case "A":
throw new RangeError("`S/A` (second) patterns are not supported, use `s` instead");
case "z":
result.timeZoneName = len2 < 4 ? "short" : "long";
break;
case "Z":
case "O":
case "v":
case "V":
case "X":
case "x":
throw new RangeError("`Z/O/v/V/X/x` (timeZone) patterns are not supported, use `z` instead");
}
return "";
});
return result;
}
var WHITE_SPACE_REGEX = /[\t-\r \x85\u200E\u200F\u2028\u2029]/i;
function parseNumberSkeletonFromString(skeleton) {
if (skeleton.length === 0) {
throw new Error("Number skeleton cannot be empty");
}
var stringTokens = skeleton.split(WHITE_SPACE_REGEX).filter(function(x2) {
return x2.length > 0;
});
var tokens = [];
for (var _i = 0, stringTokens_1 = stringTokens; _i < stringTokens_1.length; _i++) {
var stringToken = stringTokens_1[_i];
var stemAndOptions = stringToken.split("/");
if (stemAndOptions.length === 0) {
throw new Error("Invalid number skeleton");
}
var stem = stemAndOptions[0], options = stemAndOptions.slice(1);
for (var _a2 = 0, options_1 = options; _a2 < options_1.length; _a2++) {
var option = options_1[_a2];
if (option.length === 0) {
throw new Error("Invalid number skeleton");
}
}
tokens.push({ stem, options });
}
return tokens;
}
function icuUnitToEcma(unit2) {
return unit2.replace(/^(.*?)-/, "");
}
var FRACTION_PRECISION_REGEX = /^\.(?:(0+)(\*)?|(#+)|(0+)(#+))$/g;
var SIGNIFICANT_PRECISION_REGEX = /^(@+)?(\+|#+)?[rs]?$/g;
var INTEGER_WIDTH_REGEX = /(\*)(0+)|(#+)(0+)|(0+)/g;
var CONCISE_INTEGER_WIDTH_REGEX = /^(0+)$/;
function parseSignificantPrecision(str) {
var result = {};
if (str[str.length - 1] === "r") {
result.roundingPriority = "morePrecision";
} else if (str[str.length - 1] === "s") {
result.roundingPriority = "lessPrecision";
}
str.replace(SIGNIFICANT_PRECISION_REGEX, function(_, g1, g2) {
if (typeof g2 !== "string") {
result.minimumSignificantDigits = g1.length;
result.maximumSignificantDigits = g1.length;
} else if (g2 === "+") {
result.minimumSignificantDigits = g1.length;
} else if (g1[0] === "#") {
result.maximumSignificantDigits = g1.length;
} else {
result.minimumSignificantDigits = g1.length;
result.maximumSignificantDigits = g1.length + (typeof g2 === "string" ? g2.length : 0);
}
return "";
});
return result;
}
function parseSign(str) {
switch (str) {
case "sign-auto":
return {
signDisplay: "auto"
};
case "sign-accounting":
case "()":
return {
currencySign: "accounting"
};
case "sign-always":
case "+!":
return {
signDisplay: "always"
};
case "sign-accounting-always":
case "()!":
return {
signDisplay: "always",
currencySign: "accounting"
};
case "sign-except-zero":
case "+?":
return {
signDisplay: "exceptZero"
};
case "sign-accounting-except-zero":
case "()?":
return {
signDisplay: "exceptZero",
currencySign: "accounting"
};
case "sign-never":
case "+_":
return {
signDisplay: "never"
};
}
}
function parseConciseScientificAndEngineeringStem(stem) {
var result;
if (stem[0] === "E" && stem[1] === "E") {
result = {
notation: "engineering"
};
stem = stem.slice(2);
} else if (stem[0] === "E") {
result = {
notation: "scientific"
};
stem = stem.slice(1);
}
if (result) {
var signDisplay = stem.slice(0, 2);
if (signDisplay === "+!") {
result.signDisplay = "always";
stem = stem.slice(2);
} else if (signDisplay === "+?") {
result.signDisplay = "exceptZero";
stem = stem.slice(2);
}
if (!CONCISE_INTEGER_WIDTH_REGEX.test(stem)) {
throw new Error("Malformed concise eng/scientific notation");
}
result.minimumIntegerDigits = stem.length;
}
return result;
}
function parseNotationOptions(opt) {
var result = {};
var signOpts = parseSign(opt);
if (signOpts) {
return signOpts;
}
return result;
}
function parseNumberSkeleton(tokens) {
var result = {};
for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {
var token2 = tokens_1[_i];
switch (token2.stem) {
case "percent":
case "%":
result.style = "percent";
continue;
case "%x100":
result.style = "percent";
result.scale = 100;
continue;
case "currency":
result.style = "currency";
result.currency = token2.options[0];
continue;
case "group-off":
case ",_":
result.useGrouping = false;
continue;
case "precision-integer":
case ".":
result.maximumFractionDigits = 0;
continue;
case "measure-unit":
case "unit":
result.style = "unit";
result.unit = icuUnitToEcma(token2.options[0]);
continue;
case "compact-short":
case "K":
result.notation = "compact";
result.compactDisplay = "short";
continue;
case "compact-long":
case "KK":
result.notation = "compact";
result.compactDisplay = "long";
continue;
case "scientific":
result = __assign(__assign(__assign({}, result), { notation: "scientific" }), token2.options.reduce(function(all, opt2) {
return __assign(__assign({}, all), parseNotationOptions(opt2));
}, {}));
continue;
case "engineering":
result = __assign(__assign(__assign({}, result), { notation: "engineering" }), token2.options.reduce(function(all, opt2) {
return __assign(__assign({}, all), parseNotationOptions(opt2));
}, {}));
continue;
case "notation-simple":
result.notation = "standard";
continue;
case "unit-width-narrow":
result.currencyDisplay = "narrowSymbol";
result.unitDisplay = "narrow";
continue;
case "unit-width-short":
result.currencyDisplay = "code";
result.unitDisplay = "short";
continue;
case "unit-width-full-name":
result.currencyDisplay = "name";
result.unitDisplay = "long";
continue;
case "unit-width-iso-code":
result.currencyDisplay = "symbol";
continue;
case "scale":
result.scale = parseFloat(token2.options[0]);
continue;
case "rounding-mode-floor":
result.roundingMode = "floor";
continue;
case "rounding-mode-ceiling":
result.roundingMode = "ceil";
continue;
case "rounding-mode-down":
result.roundingMode = "trunc";
continue;
case "rounding-mode-up":
result.roundingMode = "expand";
continue;
case "rounding-mode-half-even":
result.roundingMode = "halfEven";
continue;
case "rounding-mode-half-down":
result.roundingMode = "halfTrunc";
continue;
case "rounding-mode-half-up":
result.roundingMode = "halfExpand";
continue;
case "integer-width":
if (token2.options.length > 1) {
throw new RangeError("integer-width stems only accept a single optional option");
}
token2.options[0].replace(INTEGER_WIDTH_REGEX, function(_, g1, g2, g3, g4, g5) {
if (g1) {
result.minimumIntegerDigits = g2.length;
} else if (g3 && g4) {
throw new Error("We currently do not support maximum integer digits");
} else if (g5) {
throw new Error("We currently do not support exact integer digits");
}
return "";
});
continue;
}
if (CONCISE_INTEGER_WIDTH_REGEX.test(token2.stem)) {
result.minimumIntegerDigits = token2.stem.length;
continue;
}
if (FRACTION_PRECISION_REGEX.test(token2.stem)) {
if (token2.options.length > 1) {
throw new RangeError("Fraction-precision stems only accept a single optional option");
}
token2.stem.replace(FRACTION_PRECISION_REGEX, function(_, g1, g2, g3, g4, g5) {
if (g2 === "*") {
result.minimumFractionDigits = g1.length;
} else if (g3 && g3[0] === "#") {
result.maximumFractionDigits = g3.length;
} else if (g4 && g5) {
result.minimumFractionDigits = g4.length;
result.maximumFractionDigits = g4.length + g5.length;
} else {
result.minimumFractionDigits = g1.length;
result.maximumFractionDigits = g1.length;
}
return "";
});
var opt = token2.options[0];
if (opt === "w") {
result = __assign(__assign({}, result), { trailingZeroDisplay: "stripIfInteger" });
} else if (opt) {
result = __assign(__assign({}, result), parseSignificantPrecision(opt));
}
continue;
}
if (SIGNIFICANT_PRECISION_REGEX.test(token2.stem)) {
result = __assign(__assign({}, result), parseSignificantPrecision(token2.stem));
continue;
}
var signOpts = parseSign(token2.stem);
if (signOpts) {
result = __assign(__assign({}, result), signOpts);
}
var conciseScientificAndEngineeringOpts = parseConciseScientificAndEngineeringStem(token2.stem);
if (conciseScientificAndEngineeringOpts) {
result = __assign(__assign({}, result), conciseScientificAndEngineeringOpts);
}
}
return result;
}
var timeData = {
"001": [
"H",
"h"
],
"AC": [
"H",
"h",
"hb",
"hB"
],
"AD": [
"H",
"hB"
],
"AE": [
"h",
"hB",
"hb",
"H"
],
"AF": [
"H",
"hb",
"hB",
"h"
],
"AG": [
"h",
"hb",
"H",
"hB"
],
"AI": [
"H",
"h",
"hb",
"hB"
],
"AL": [
"h",
"H",
"hB"
],
"AM": [
"H",
"hB"
],
"AO": [
"H",
"hB"
],
"AR": [
"H",
"h",
"hB",
"hb"
],
"AS": [
"h",
"H"
],
"AT": [
"H",
"hB"
],
"AU": [
"h",
"hb",
"H",
"hB"
],
"AW": [
"H",
"hB"
],
"AX": [
"H"
],
"AZ": [
"H",
"hB",
"h"
],
"BA": [
"H",
"hB",
"h"
],
"BB": [
"h",
"hb",
"H",
"hB"
],
"BD": [
"h",
"hB",
"H"
],
"BE": [
"H",
"hB"
],
"BF": [
"H",
"hB"
],
"BG": [
"H",
"hB",
"h"
],
"BH": [
"h",
"hB",
"hb",
"H"
],
"BI": [
"H",
"h"
],
"BJ": [
"H",
"hB"
],
"BL": [
"H",
"hB"
],
"BM": [
"h",
"hb",
"H",
"hB"
],
"BN": [
"hb",
"hB",
"h",
"H"
],
"BO": [
"H",
"hB",
"h",
"hb"
],
"BQ": [
"H"
],
"BR": [
"H",
"hB"
],
"BS": [
"h",
"hb",
"H",
"hB"
],
"BT": [
"h",
"H"
],
"BW": [
"H",
"h",
"hb",
"hB"
],
"BY": [
"H",
"h"
],
"BZ": [
"H",
"h",
"hb",
"hB"
],
"CA": [
"h",
"hb",
"H",
"hB"
],
"CC": [
"H",
"h",
"hb",
"hB"
],
"CD": [
"hB",
"H"
],
"CF": [
"H",
"h",
"hB"
],
"CG": [
"H",
"hB"
],
"CH": [
"H",
"hB",
"h"
],
"CI": [
"H",
"hB"
],
"CK": [
"H",
"h",
"hb",
"hB"
],
"CL": [
"H",
"h",
"hB",
"hb"
],
"CM": [
"H",
"h",
"hB"
],
"CN": [
"H",
"hB",
"hb",
"h"
],
"CO": [
"h",
"H",
"hB",
"hb"
],
"CP": [
"H"
],
"CR": [
"H",
"h",
"hB",
"hb"
],
"CU": [
"H",
"h",
"hB",
"hb"
],
"CV": [
"H",
"hB"
],
"CW": [
"H",
"hB"
],
"CX": [
"H",
"h",
"hb",
"hB"
],
"CY": [
"h",
"H",
"hb",
"hB"
],
"CZ": [
"H"
],
"DE": [
"H",
"hB"
],
"DG": [
"H",
"h",
"hb",
"hB"
],
"DJ": [
"h",
"H"
],
"DK": [
"H"
],
"DM": [
"h",
"hb",
"H",
"hB"
],
"DO": [
"h",
"H",
"hB",
"hb"
],
"DZ": [
"h",
"hB",
"hb",
"H"
],
"EA": [
"H",
"h",
"hB",
"hb"
],
"EC": [
"H",
"hB",
"h",
"hb"
],
"EE": [
"H",
"hB"
],
"EG": [
"h",
"hB",
"hb",
"H"
],
"EH": [
"h",
"hB",
"hb",
"H"
],
"ER": [
"h",
"H"
],
"ES": [
"H",
"hB",
"h",
"hb"
],
"ET": [
"hB",
"hb",
"h",
"H"
],
"FI": [
"H"
],
"FJ": [
"h",
"hb",
"H",
"hB"
],
"FK": [
"H",
"h",
"hb",
"hB"
],
"FM": [
"h",
"hb",
"H",
"hB"
],
"FO": [
"H",
"h"
],
"FR": [
"H",
"hB"
],
"GA": [
"H",
"hB"
],
"GB": [
"H",
"h",
"hb",
"hB"
],
"GD": [
"h",
"hb",
"H",
"hB"
],
"GE": [
"H",
"hB",
"h"
],
"GF": [
"H",
"hB"
],
"GG": [
"H",
"h",
"hb",
"hB"
],
"GH": [
"h",
"H"
],
"GI": [
"H",
"h",
"hb",
"hB"
],
"GL": [
"H",
"h"
],
"GM": [
"h",
"hb",
"H",
"hB"
],
"GN": [
"H",
"hB"
],
"GP": [
"H",
"hB"
],
"GQ": [
"H",
"hB",
"h",
"hb"
],
"GR": [
"h",
"H",
"hb",
"hB"
],
"GT": [
"H",
"h",
"hB",
"hb"
],
"GU": [
"h",
"hb",
"H",
"hB"
],
"GW": [
"H",
"hB"
],
"GY": [
"h",
"hb",
"H",
"hB"
],
"HK": [
"h",
"hB",
"hb",
"H"
],
"HN": [
"H",
"h",
"hB",
"hb"
],
"HR": [
"H",
"hB"
],
"HU": [
"H",
"h"
],
"IC": [
"H",
"h",
"hB",
"hb"
],
"ID": [
"H"
],
"IE": [
"H",
"h",
"hb",
"hB"
],
"IL": [
"H",
"hB"
],
"IM": [
"H",
"h",
"hb",
"hB"
],
"IN": [
"h",
"H"
],
"IO": [
"H",
"h",
"hb",
"hB"
],
"IQ": [
"h",
"hB",
"hb",
"H"
],
"IR": [
"hB",
"H"
],
"IS": [
"H"
],
"IT": [
"H",
"hB"
],
"JE": [
"H",
"h",
"hb",
"hB"
],
"JM": [
"h",
"hb",
"H",
"hB"
],
"JO": [
"h",
"hB",
"hb",
"H"
],
"JP": [
"H",
"K",
"h"
],
"KE": [
"hB",
"hb",
"H",
"h"
],
"KG": [
"H",
"h",
"hB",
"hb"
],
"KH": [
"hB",
"h",
"H",
"hb"
],
"KI": [
"h",
"hb",
"H",
"hB"
],
"KM": [
"H",
"h",
"hB",
"hb"
],
"KN": [
"h",
"hb",
"H",
"hB"
],
"KP": [
"h",
"H",
"hB",
"hb"
],
"KR": [
"h",
"H",
"hB",
"hb"
],
"KW": [
"h",
"hB",
"hb",
"H"
],
"KY": [
"h",
"hb",
"H",
"hB"
],
"KZ": [
"H",
"hB"
],
"LA": [
"H",
"hb",
"hB",
"h"
],
"LB": [
"h",
"hB",
"hb",
"H"
],
"LC": [
"h",
"hb",
"H",
"hB"
],
"LI": [
"H",
"hB",
"h"
],
"LK": [
"H",
"h",
"hB",
"hb"
],
"LR": [
"h",
"hb",
"H",
"hB"
],
"LS": [
"h",
"H"
],
"LT": [
"H",
"h",
"hb",
"hB"
],
"LU": [
"H",
"h",
"hB"
],
"LV": [
"H",
"hB",
"hb",
"h"
],
"LY": [
"h",
"hB",
"hb",
"H"
],
"MA": [
"H",
"h",
"hB",
"hb"
],
"MC": [
"H",
"hB"
],
"MD": [
"H",
"hB"
],
"ME": [
"H",
"hB",
"h"
],
"MF": [
"H",
"hB"
],
"MG": [
"H",
"h"
],
"MH": [
"h",
"hb",
"H",
"hB"
],
"MK": [
"H",
"h",
"hb",
"hB"
],
"ML": [
"H"
],
"MM": [
"hB",
"hb",
"H",
"h"
],
"MN": [
"H",
"h",
"hb",
"hB"
],
"MO": [
"h",
"hB",
"hb",
"H"
],
"MP": [
"h",
"hb",
"H",
"hB"
],
"MQ": [
"H",
"hB"
],
"MR": [
"h",
"hB",
"hb",
"H"
],
"MS": [
"H",
"h",
"hb",
"hB"
],
"MT": [
"H",
"h"
],
"MU": [
"H",
"h"
],
"MV": [
"H",
"h"
],
"MW": [
"h",
"hb",
"H",
"hB"
],
"MX": [
"H",
"h",
"hB",
"hb"
],
"MY": [
"hb",
"hB",
"h",
"H"
],
"MZ": [
"H",
"hB"
],
"NA": [
"h",
"H",
"hB",
"hb"
],
"NC": [
"H",
"hB"
],
"NE": [
"H"
],
"NF": [
"H",
"h",
"hb",
"hB"
],
"NG": [
"H",
"h",
"hb",
"hB"
],
"NI": [
"H",
"h",
"hB",
"hb"
],
"NL": [
"H",
"hB"
],
"NO": [
"H",
"h"
],
"NP": [
"H",
"h",
"hB"
],
"NR": [
"H",
"h",
"hb",
"hB"
],
"NU": [
"H",
"h",
"hb",
"hB"
],
"NZ": [
"h",
"hb",
"H",
"hB"
],
"OM": [
"h",
"hB",
"hb",
"H"
],
"PA": [
"h",
"H",
"hB",
"hb"
],
"PE": [
"H",
"hB",
"h",
"hb"
],
"PF": [
"H",
"h",
"hB"
],
"PG": [
"h",
"H"
],
"PH": [
"h",
"hB",
"hb",
"H"
],
"PK": [
"h",
"hB",
"H"
],
"PL": [
"H",
"h"
],
"PM": [
"H",
"hB"
],
"PN": [
"H",
"h",
"hb",
"hB"
],
"PR": [
"h",
"H",
"hB",
"hb"
],
"PS": [
"h",
"hB",
"hb",
"H"
],
"PT": [
"H",
"hB"
],
"PW": [
"h",
"H"
],
"PY": [
"H",
"h",
"hB",
"hb"
],
"QA": [
"h",
"hB",
"hb",
"H"
],
"RE": [
"H",
"hB"
],
"RO": [
"H",
"hB"
],
"RS": [
"H",
"hB",
"h"
],
"RU": [
"H"
],
"RW": [
"H",
"h"
],
"SA": [
"h",
"hB",
"hb",
"H"
],
"SB": [
"h",
"hb",
"H",
"hB"
],
"SC": [
"H",
"h",
"hB"
],
"SD": [
"h",
"hB",
"hb",
"H"
],
"SE": [
"H"
],
"SG": [
"h",
"hb",
"H",
"hB"
],
"SH": [
"H",
"h",
"hb",
"hB"
],
"SI": [
"H",
"hB"
],
"SJ": [
"H"
],
"SK": [
"H"
],
"SL": [
"h",
"hb",
"H",
"hB"
],
"SM": [
"H",
"h",
"hB"
],
"SN": [
"H",
"h",
"hB"
],
"SO": [
"h",
"H"
],
"SR": [
"H",
"hB"
],
"SS": [
"h",
"hb",
"H",
"hB"
],
"ST": [
"H",
"hB"
],
"SV": [
"H",
"h",
"hB",
"hb"
],
"SX": [
"H",
"h",
"hb",
"hB"
],
"SY": [
"h",
"hB",
"hb",
"H"
],
"SZ": [
"h",
"hb",
"H",
"hB"
],
"TA": [
"H",
"h",
"hb",
"hB"
],
"TC": [
"h",
"hb",
"H",
"hB"
],
"TD": [
"h",
"H",
"hB"
],
"TF": [
"H",
"h",
"hB"
],
"TG": [
"H",
"hB"
],
"TH": [
"H",
"h"
],
"TJ": [
"H",
"h"
],
"TL": [
"H",
"hB",
"hb",
"h"
],
"TM": [
"H",
"h"
],
"TN": [
"h",
"hB",
"hb",
"H"
],
"TO": [
"h",
"H"
],
"TR": [
"H",
"hB"
],
"TT": [
"h",
"hb",
"H",
"hB"
],
"TW": [
"hB",
"hb",
"h",
"H"
],
"TZ": [
"hB",
"hb",
"H",
"h"
],
"UA": [
"H",
"hB",
"h"
],
"UG": [
"hB",
"hb",
"H",
"h"
],
"UM": [
"h",
"hb",
"H",
"hB"
],
"US": [
"h",
"hb",
"H",
"hB"
],
"UY": [
"H",
"h",
"hB",
"hb"
],
"UZ": [
"H",
"hB",
"h"
],
"VA": [
"H",
"h",
"hB"
],
"VC": [
"h",
"hb",
"H",
"hB"
],
"VE": [
"h",
"H",
"hB",
"hb"
],
"VG": [
"h",
"hb",
"H",
"hB"
],
"VI": [
"h",
"hb",
"H",
"hB"
],
"VN": [
"H",
"h"
],
"VU": [
"h",
"H"
],
"WF": [
"H",
"hB"
],
"WS": [
"h",
"H"
],
"XK": [
"H",
"hB",
"h"
],
"YE": [
"h",
"hB",
"hb",
"H"
],
"YT": [
"H",
"hB"
],
"ZA": [
"H",
"h",
"hb",
"hB"
],
"ZM": [
"h",
"hb",
"H",
"hB"
],
"ZW": [
"H",
"h"
],
"af-ZA": [
"H",
"h",
"hB",
"hb"
],
"ar-001": [
"h",
"hB",
"hb",
"H"
],
"ca-ES": [
"H",
"h",
"hB"
],
"en-001": [
"h",
"hb",
"H",
"hB"
],
"es-BO": [
"H",
"h",
"hB",
"hb"
],
"es-BR": [
"H",
"h",
"hB",
"hb"
],
"es-EC": [
"H",
"h",
"hB",
"hb"
],
"es-ES": [
"H",
"h",
"hB",
"hb"
],
"es-GQ": [
"H",
"h",
"hB",
"hb"
],
"es-PE": [
"H",
"h",
"hB",
"hb"
],
"fr-CA": [
"H",
"h",
"hB"
],
"gl-ES": [
"H",
"h",
"hB"
],
"gu-IN": [
"hB",
"hb",
"h",
"H"
],
"hi-IN": [
"hB",
"h",
"H"
],
"it-CH": [
"H",
"h",
"hB"
],
"it-IT": [
"H",
"h",
"hB"
],
"kn-IN": [
"hB",
"h",
"H"
],
"ml-IN": [
"hB",
"h",
"H"
],
"mr-IN": [
"hB",
"hb",
"h",
"H"
],
"pa-IN": [
"hB",
"hb",
"h",
"H"
],
"ta-IN": [
"hB",
"h",
"hb",
"H"
],
"te-IN": [
"hB",
"h",
"H"
],
"zu-ZA": [
"H",
"hB",
"hb",
"h"
]
};
function getBestPattern(skeleton, locale2) {
var skeletonCopy = "";
for (var patternPos = 0; patternPos < skeleton.length; patternPos++) {
var patternChar = skeleton.charAt(patternPos);
if (patternChar === "j") {
var extraLength = 0;
while (patternPos + 1 < skeleton.length && skeleton.charAt(patternPos + 1) === patternChar) {
extraLength++;
patternPos++;
}
var hourLen = 1 + (extraLength & 1);
var dayPeriodLen = extraLength < 2 ? 1 : 3 + (extraLength >> 1);
var dayPeriodChar = "a";
var hourChar = getDefaultHourSymbolFromLocale(locale2);
if (hourChar == "H" || hourChar == "k") {
dayPeriodLen = 0;
}
while (dayPeriodLen-- > 0) {
skeletonCopy += dayPeriodChar;
}
while (hourLen-- > 0) {
skeletonCopy = hourChar + skeletonCopy;
}
} else if (patternChar === "J") {
skeletonCopy += "H";
} else {
skeletonCopy += patternChar;
}
}
return skeletonCopy;
}
function getDefaultHourSymbolFromLocale(locale2) {
var hourCycle = locale2.hourCycle;
if (hourCycle === void 0 && // @ts-ignore hourCycle(s) is not identified yet
locale2.hourCycles && // @ts-ignore
locale2.hourCycles.length) {
hourCycle = locale2.hourCycles[0];
}
if (hourCycle) {
switch (hourCycle) {
case "h24":
return "k";
case "h23":
return "H";
case "h12":
return "h";
case "h11":
return "K";
default:
throw new Error("Invalid hourCycle");
}
}
var languageTag = locale2.language;
var regionTag;
if (languageTag !== "root") {
regionTag = locale2.maximize().region;
}
var hourCycles = timeData[regionTag || ""] || timeData[languageTag || ""] || timeData["".concat(languageTag, "-001")] || timeData["001"];
return hourCycles[0];
}
var _a;
var SPACE_SEPARATOR_START_REGEX = new RegExp("^".concat(SPACE_SEPARATOR_REGEX.source, "*"));
var SPACE_SEPARATOR_END_REGEX = new RegExp("".concat(SPACE_SEPARATOR_REGEX.source, "*$"));
function createLocation$1(start2, end2) {
return { start: start2, end: end2 };
}
var hasNativeStartsWith = !!String.prototype.startsWith && "_a".startsWith("a", 1);
var hasNativeFromCodePoint = !!String.fromCodePoint;
var hasNativeFromEntries = !!Object.fromEntries;
var hasNativeCodePointAt = !!String.prototype.codePointAt;
var hasTrimStart = !!String.prototype.trimStart;
var hasTrimEnd = !!String.prototype.trimEnd;
var hasNativeIsSafeInteger = !!Number.isSafeInteger;
var isSafeInteger = hasNativeIsSafeInteger ? Number.isSafeInteger : function(n2) {
return typeof n2 === "number" && isFinite(n2) && Math.floor(n2) === n2 && Math.abs(n2) <= 9007199254740991;
};
var REGEX_SUPPORTS_U_AND_Y = true;
try {
var re = RE("([^\\p{White_Space}\\p{Pattern_Syntax}]*)", "yu");
REGEX_SUPPORTS_U_AND_Y = ((_a = re.exec("a")) === null || _a === void 0 ? void 0 : _a[0]) === "a";
} catch (_) {
REGEX_SUPPORTS_U_AND_Y = false;
}
var startsWith = hasNativeStartsWith ? (
// Native
function startsWith2(s, search, position2) {
return s.startsWith(search, position2);
}
) : (
// For IE11
function startsWith3(s, search, position2) {
return s.slice(position2, position2 + search.length) === search;
}
);
var fromCodePoint = hasNativeFromCodePoint ? String.fromCodePoint : (
// IE11
function fromCodePoint2() {
var codePoints = [];
for (var _i = 0; _i < arguments.length; _i++) {
codePoints[_i] = arguments[_i];
}
var elements = "";
var length2 = codePoints.length;
var i = 0;
var code;
while (length2 > i) {
code = codePoints[i++];
if (code > 1114111)
throw RangeError(code + " is not a valid code point");
elements += code < 65536 ? String.fromCharCode(code) : String.fromCharCode(((code -= 65536) >> 10) + 55296, code % 1024 + 56320);
}
return elements;
}
);
var fromEntries = (
// native
hasNativeFromEntries ? Object.fromEntries : (
// Ponyfill
function fromEntries2(entries) {
var obj = {};
for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {
var _a2 = entries_1[_i], k2 = _a2[0], v4 = _a2[1];
obj[k2] = v4;
}
return obj;
}
)
);
var codePointAt = hasNativeCodePointAt ? (
// Native
function codePointAt2(s, index2) {
return s.codePointAt(index2);
}
) : (
// IE 11
function codePointAt3(s, index2) {
var size = s.length;
if (index2 < 0 || index2 >= size) {
return void 0;
}
var first = s.charCodeAt(index2);
var second;
return first < 55296 || first > 56319 || index2 + 1 === size || (second = s.charCodeAt(index2 + 1)) < 56320 || second > 57343 ? first : (first - 55296 << 10) + (second - 56320) + 65536;
}
);
var trimStart = hasTrimStart ? (
// Native
function trimStart2(s) {
return s.trimStart();
}
) : (
// Ponyfill
function trimStart3(s) {
return s.replace(SPACE_SEPARATOR_START_REGEX, "");
}
);
var trimEnd = hasTrimEnd ? (
// Native
function trimEnd2(s) {
return s.trimEnd();
}
) : (
// Ponyfill
function trimEnd3(s) {
return s.replace(SPACE_SEPARATOR_END_REGEX, "");
}
);
function RE(s, flag) {
return new RegExp(s, flag);
}
var matchIdentifierAtIndex;
if (REGEX_SUPPORTS_U_AND_Y) {
var IDENTIFIER_PREFIX_RE_1 = RE("([^\\p{White_Space}\\p{Pattern_Syntax}]*)", "yu");
matchIdentifierAtIndex = function matchIdentifierAtIndex2(s, index2) {
var _a2;
IDENTIFIER_PREFIX_RE_1.lastIndex = index2;
var match2 = IDENTIFIER_PREFIX_RE_1.exec(s);
return (_a2 = match2[1]) !== null && _a2 !== void 0 ? _a2 : "";
};
} else {
matchIdentifierAtIndex = function matchIdentifierAtIndex2(s, index2) {
var match2 = [];
while (true) {
var c2 = codePointAt(s, index2);
if (c2 === void 0 || _isWhiteSpace(c2) || _isPatternSyntax(c2)) {
break;
}
match2.push(c2);
index2 += c2 >= 65536 ? 2 : 1;
}
return fromCodePoint.apply(void 0, match2);
};
}
var Parser = (
/** @class */
function() {
function Parser2(message2, options) {
if (options === void 0) {
options = {};
}
this.message = message2;
this.position = { offset: 0, line: 1, column: 1 };
this.ignoreTag = !!options.ignoreTag;
this.locale = options.locale;
this.requiresOtherClause = !!options.requiresOtherClause;
this.shouldParseSkeletons = !!options.shouldParseSkeletons;
}
Parser2.prototype.parse = function() {
if (this.offset() !== 0) {
throw Error("parser can only be used once");
}
return this.parseMessage(0, "", false);
};
Parser2.prototype.parseMessage = function(nestingLevel, parentArgType, expectingCloseTag) {
var elements = [];
while (!this.isEOF()) {
var char2 = this.char();
if (char2 === 123) {
var result = this.parseArgument(nestingLevel, expectingCloseTag);
if (result.err) {
return result;
}
elements.push(result.val);
} else if (char2 === 125 && nestingLevel > 0) {
break;
} else if (char2 === 35 && (parentArgType === "plural" || parentArgType === "selectordinal")) {
var position2 = this.clonePosition();
this.bump();
elements.push({
type: TYPE.pound,
location: createLocation$1(position2, this.clonePosition())
});
} else if (char2 === 60 && !this.ignoreTag && this.peek() === 47) {
if (expectingCloseTag) {
break;
} else {
return this.error(ErrorKind.UNMATCHED_CLOSING_TAG, createLocation$1(this.clonePosition(), this.clonePosition()));
}
} else if (char2 === 60 && !this.ignoreTag && _isAlpha(this.peek() || 0)) {
var result = this.parseTag(nestingLevel, parentArgType);
if (result.err) {
return result;
}
elements.push(result.val);
} else {
var result = this.parseLiteral(nestingLevel, parentArgType);
if (result.err) {
return result;
}
elements.push(result.val);
}
}
return { val: elements, err: null };
};
Parser2.prototype.parseTag = function(nestingLevel, parentArgType) {
var startPosition = this.clonePosition();
this.bump();
var tagName = this.parseTagName();
this.bumpSpace();
if (this.bumpIf("/>")) {
return {
val: {
type: TYPE.literal,
value: "<".concat(tagName, "/>"),
location: createLocation$1(startPosition, this.clonePosition())
},
err: null
};
} else if (this.bumpIf(">")) {
var childrenResult = this.parseMessage(nestingLevel + 1, parentArgType, true);
if (childrenResult.err) {
return childrenResult;
}
var children = childrenResult.val;
var endTagStartPosition = this.clonePosition();
if (this.bumpIf("</")) {
if (this.isEOF() || !_isAlpha(this.char())) {
return this.error(ErrorKind.INVALID_TAG, createLocation$1(endTagStartPosition, this.clonePosition()));
}
var closingTagNameStartPosition = this.clonePosition();
var closingTagName = this.parseTagName();
if (tagName !== closingTagName) {
return this.error(ErrorKind.UNMATCHED_CLOSING_TAG, createLocation$1(closingTagNameStartPosition, this.clonePosition()));
}
this.bumpSpace();
if (!this.bumpIf(">")) {
return this.error(ErrorKind.INVALID_TAG, createLocation$1(endTagStartPosition, this.clonePosition()));
}
return {
val: {
type: TYPE.tag,
value: tagName,
children,
location: createLocation$1(startPosition, this.clonePosition())
},
err: null
};
} else {
return this.error(ErrorKind.UNCLOSED_TAG, createLocation$1(startPosition, this.clonePosition()));
}
} else {
return this.error(ErrorKind.INVALID_TAG, createLocation$1(startPosition, this.clonePosition()));
}
};
Parser2.prototype.parseTagName = function() {
var startOffset = this.offset();
this.bump();
while (!this.isEOF() && _isPotentialElementNameChar(this.char())) {
this.bump();
}
return this.message.slice(startOffset, this.offset());
};
Parser2.prototype.parseLiteral = function(nestingLevel, parentArgType) {
var start2 = this.clonePosition();
var value = "";
while (true) {
var parseQuoteResult = this.tryParseQuote(parentArgType);
if (parseQuoteResult) {
value += parseQuoteResult;
continue;
}
var parseUnquotedResult = this.tryParseUnquoted(nestingLevel, parentArgType);
if (parseUnquotedResult) {
value += parseUnquotedResult;
continue;
}
var parseLeftAngleResult = this.tryParseLeftAngleBracket();
if (parseLeftAngleResult) {
value += parseLeftAngleResult;
continue;
}
break;
}
var location = createLocation$1(start2, this.clonePosition());
return {
val: { type: TYPE.literal, value, location },
err: null
};
};
Parser2.prototype.tryParseLeftAngleBracket = function() {
if (!this.isEOF() && this.char() === 60 && (this.ignoreTag || // If at the opening tag or closing tag position, bail.
!_isAlphaOrSlash(this.peek() || 0))) {
this.bump();
return "<";
}
return null;
};
Parser2.prototype.tryParseQuote = function(parentArgType) {
if (this.isEOF() || this.char() !== 39) {
return null;
}
switch (this.peek()) {
case 39:
this.bump();
this.bump();
return "'";
case 123:
case 60:
case 62:
case 125:
break;
case 35:
if (parentArgType === "plural" || parentArgType === "selectordinal") {
break;
}
return null;
default:
return null;
}
this.bump();
var codePoints = [this.char()];
this.bump();
while (!this.isEOF()) {
var ch2 = this.char();
if (ch2 === 39) {
if (this.peek() === 39) {
codePoints.push(39);
this.bump();
} else {
this.bump();
break;
}
} else {
codePoints.push(ch2);
}
this.bump();
}
return fromCodePoint.apply(void 0, codePoints);
};
Parser2.prototype.tryParseUnquoted = function(nestingLevel, parentArgType) {
if (this.isEOF()) {
return null;
}
var ch2 = this.char();
if (ch2 === 60 || ch2 === 123 || ch2 === 35 && (parentArgType === "plural" || parentArgType === "selectordinal") || ch2 === 125 && nestingLevel > 0) {
return null;
} else {
this.bump();
return fromCodePoint(ch2);
}
};
Parser2.prototype.parseArgument = function(nestingLevel, expectingCloseTag) {
var openingBracePosition = this.clonePosition();
this.bump();
this.bumpSpace();
if (this.isEOF()) {
return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation$1(openingBracePosition, this.clonePosition()));
}
if (this.char() === 125) {
this.bump();
return this.error(ErrorKind.EMPTY_ARGUMENT, createLocation$1(openingBracePosition, this.clonePosition()));
}
var value = this.parseIdentifierIfPossible().value;
if (!value) {
return this.error(ErrorKind.MALFORMED_ARGUMENT, createLocation$1(openingBracePosition, this.clonePosition()));
}
this.bumpSpace();
if (this.isEOF()) {
return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation$1(openingBracePosition, this.clonePosition()));
}
switch (this.char()) {
case 125: {
this.bump();
return {
val: {
type: TYPE.argument,
// value does not include the opening and closing braces.
value,
location: createLocation$1(openingBracePosition, this.clonePosition())
},
err: null
};
}
case 44: {
this.bump();
this.bumpSpace();
if (this.isEOF()) {
return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation$1(openingBracePosition, this.clonePosition()));
}
return this.parseArgumentOptions(nestingLevel, expectingCloseTag, value, openingBracePosition);
}
default:
return this.error(ErrorKind.MALFORMED_ARGUMENT, createLocation$1(openingBracePosition, this.clonePosition()));
}
};
Parser2.prototype.parseIdentifierIfPossible = function() {
var startingPosition = this.clonePosition();
var startOffset = this.offset();
var value = matchIdentifierAtIndex(this.message, startOffset);
var endOffset = startOffset + value.length;
this.bumpTo(endOffset);
var endPosition = this.clonePosition();
var location = createLocation$1(startingPosition, endPosition);
return { value, location };
};
Parser2.prototype.parseArgumentOptions = function(nestingLevel, expectingCloseTag, value, openingBracePosition) {
var _a2;
var typeStartPosition = this.clonePosition();
var argType = this.parseIdentifierIfPossible().value;
var typeEndPosition = this.clonePosition();
switch (argType) {
case "":
return this.error(ErrorKind.EXPECT_ARGUMENT_TYPE, createLocation$1(typeStartPosition, typeEndPosition));
case "number":
case "date":
case "time": {
this.bumpSpace();
var styleAndLocation = null;
if (this.bumpIf(",")) {
this.bumpSpace();
var styleStartPosition = this.clonePosition();
var result = this.parseSimpleArgStyleIfPossible();
if (result.err) {
return result;
}
var style2 = trimEnd(result.val);
if (style2.length === 0) {
return this.error(ErrorKind.EXPECT_ARGUMENT_STYLE, createLocation$1(this.clonePosition(), this.clonePosition()));
}
var styleLocation = createLocation$1(styleStartPosition, this.clonePosition());
styleAndLocation = { style: style2, styleLocation };
}
var argCloseResult = this.tryParseArgumentClose(openingBracePosition);
if (argCloseResult.err) {
return argCloseResult;
}
var location_1 = createLocation$1(openingBracePosition, this.clonePosition());
if (styleAndLocation && startsWith(styleAndLocation === null || styleAndLocation === void 0 ? void 0 : styleAndLocation.style, "::", 0)) {
var skeleton = trimStart(styleAndLocation.style.slice(2));
if (argType === "number") {
var result = this.parseNumberSkeletonFromString(skeleton, styleAndLocation.styleLocation);
if (result.err) {
return result;
}
return {
val: { type: TYPE.number, value, location: location_1, style: result.val },
err: null
};
} else {
if (skeleton.length === 0) {
return this.error(ErrorKind.EXPECT_DATE_TIME_SKELETON, location_1);
}
var dateTimePattern = skeleton;
if (this.locale) {
dateTimePattern = getBestPattern(skeleton, this.locale);
}
var style2 = {
type: SKELETON_TYPE.dateTime,
pattern: dateTimePattern,
location: styleAndLocation.styleLocation,
parsedOptions: this.shouldParseSkeletons ? parseDateTimeSkeleton(dateTimePattern) : {}
};
var type4 = argType === "date" ? TYPE.date : TYPE.time;
return {
val: { type: type4, value, location: location_1, style: style2 },
err: null
};
}
}
return {
val: {
type: argType === "number" ? TYPE.number : argType === "date" ? TYPE.date : TYPE.time,
value,
location: location_1,
style: (_a2 = styleAndLocation === null || styleAndLocation === void 0 ? void 0 : styleAndLocation.style) !== null && _a2 !== void 0 ? _a2 : null
},
err: null
};
}
case "plural":
case "selectordinal":
case "select": {
var typeEndPosition_1 = this.clonePosition();
this.bumpSpace();
if (!this.bumpIf(",")) {
return this.error(ErrorKind.EXPECT_SELECT_ARGUMENT_OPTIONS, createLocation$1(typeEndPosition_1, __assign({}, typeEndPosition_1)));
}
this.bumpSpace();
var identifierAndLocation = this.parseIdentifierIfPossible();
var pluralOffset = 0;
if (argType !== "select" && identifierAndLocation.value === "offset") {
if (!this.bumpIf(":")) {
return this.error(ErrorKind.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, createLocation$1(this.clonePosition(), this.clonePosition()));
}
this.bumpSpace();
var result = this.tryParseDecimalInteger(ErrorKind.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, ErrorKind.INVALID_PLURAL_ARGUMENT_OFFSET_VALUE);
if (result.err) {
return result;
}
this.bumpSpace();
identifierAndLocation = this.parseIdentifierIfPossible();
pluralOffset = result.val;
}
var optionsResult = this.tryParsePluralOrSelectOptions(nestingLevel, argType, expectingCloseTag, identifierAndLocation);
if (optionsResult.err) {
return optionsResult;
}
var argCloseResult = this.tryParseArgumentClose(openingBracePosition);
if (argCloseResult.err) {
return argCloseResult;
}
var location_2 = createLocation$1(openingBracePosition, this.clonePosition());
if (argType === "select") {
return {
val: {
type: TYPE.select,
value,
options: fromEntries(optionsResult.val),
location: location_2
},
err: null
};
} else {
return {
val: {
type: TYPE.plural,
value,
options: fromEntries(optionsResult.val),
offset: pluralOffset,
pluralType: argType === "plural" ? "cardinal" : "ordinal",
location: location_2
},
err: null
};
}
}
default:
return this.error(ErrorKind.INVALID_ARGUMENT_TYPE, createLocation$1(typeStartPosition, typeEndPosition));
}
};
Parser2.prototype.tryParseArgumentClose = function(openingBracePosition) {
if (this.isEOF() || this.char() !== 125) {
return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation$1(openingBracePosition, this.clonePosition()));
}
this.bump();
return { val: true, err: null };
};
Parser2.prototype.parseSimpleArgStyleIfPossible = function() {
var nestedBraces = 0;
var startPosition = this.clonePosition();
while (!this.isEOF()) {
var ch2 = this.char();
switch (ch2) {
case 39: {
this.bump();
var apostrophePosition = this.clonePosition();
if (!this.bumpUntil("'")) {
return this.error(ErrorKind.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE, createLocation$1(apostrophePosition, this.clonePosition()));
}
this.bump();
break;
}
case 123: {
nestedBraces += 1;
this.bump();
break;
}
case 125: {
if (nestedBraces > 0) {
nestedBraces -= 1;
} else {
return {
val: this.message.slice(startPosition.offset, this.offset()),
err: null
};
}
break;
}
default:
this.bump();
break;
}
}
return {
val: this.message.slice(startPosition.offset, this.offset()),
err: null
};
};
Parser2.prototype.parseNumberSkeletonFromString = function(skeleton, location) {
var tokens = [];
try {
tokens = parseNumberSkeletonFromString(skeleton);
} catch (e2) {
return this.error(ErrorKind.INVALID_NUMBER_SKELETON, location);
}
return {
val: {
type: SKELETON_TYPE.number,
tokens,
location,
parsedOptions: this.shouldParseSkeletons ? parseNumberSkeleton(tokens) : {}
},
err: null
};
};
Parser2.prototype.tryParsePluralOrSelectOptions = function(nestingLevel, parentArgType, expectCloseTag, parsedFirstIdentifier) {
var _a2;
var hasOtherClause = false;
var options = [];
var parsedSelectors = /* @__PURE__ */ new Set();
var selector2 = parsedFirstIdentifier.value, selectorLocation = parsedFirstIdentifier.location;
while (true) {
if (selector2.length === 0) {
var startPosition = this.clonePosition();
if (parentArgType !== "select" && this.bumpIf("=")) {
var result = this.tryParseDecimalInteger(ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR, ErrorKind.INVALID_PLURAL_ARGUMENT_SELECTOR);
if (result.err) {
return result;
}
selectorLocation = createLocation$1(startPosition, this.clonePosition());
selector2 = this.message.slice(startPosition.offset, this.offset());
} else {
break;
}
}
if (parsedSelectors.has(selector2)) {
return this.error(parentArgType === "select" ? ErrorKind.DUPLICATE_SELECT_ARGUMENT_SELECTOR : ErrorKind.DUPLICATE_PLURAL_ARGUMENT_SELECTOR, selectorLocation);
}
if (selector2 === "other") {
hasOtherClause = true;
}
this.bumpSpace();
var openingBracePosition = this.clonePosition();
if (!this.bumpIf("{")) {
return this.error(parentArgType === "select" ? ErrorKind.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT : ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT, createLocation$1(this.clonePosition(), this.clonePosition()));
}
var fragmentResult = this.parseMessage(nestingLevel + 1, parentArgType, expectCloseTag);
if (fragmentResult.err) {
return fragmentResult;
}
var argCloseResult = this.tryParseArgumentClose(openingBracePosition);
if (argCloseResult.err) {
return argCloseResult;
}
options.push([
selector2,
{
value: fragmentResult.val,
location: createLocation$1(openingBracePosition, this.clonePosition())
}
]);
parsedSelectors.add(selector2);
this.bumpSpace();
_a2 = this.parseIdentifierIfPossible(), selector2 = _a2.value, selectorLocation = _a2.location;
}
if (options.length === 0) {
return this.error(parentArgType === "select" ? ErrorKind.EXPECT_SELECT_ARGUMENT_SELECTOR : ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR, createLocation$1(this.clonePosition(), this.clonePosition()));
}
if (this.requiresOtherClause && !hasOtherClause) {
return this.error(ErrorKind.MISSING_OTHER_CLAUSE, createLocation$1(this.clonePosition(), this.clonePosition()));
}
return { val: options, err: null };
};
Parser2.prototype.tryParseDecimalInteger = function(expectNumberError, invalidNumberError) {
var sign = 1;
var startingPosition = this.clonePosition();
if (this.bumpIf("+")) ;
else if (this.bumpIf("-")) {
sign = -1;
}
var hasDigits = false;
var decimal = 0;
while (!this.isEOF()) {
var ch2 = this.char();
if (ch2 >= 48 && ch2 <= 57) {
hasDigits = true;
decimal = decimal * 10 + (ch2 - 48);
this.bump();
} else {
break;
}
}
var location = createLocation$1(startingPosition, this.clonePosition());
if (!hasDigits) {
return this.error(expectNumberError, location);
}
decimal *= sign;
if (!isSafeInteger(decimal)) {
return this.error(invalidNumberError, location);
}
return { val: decimal, err: null };
};
Parser2.prototype.offset = function() {
return this.position.offset;
};
Parser2.prototype.isEOF = function() {
return this.offset() === this.message.length;
};
Parser2.prototype.clonePosition = function() {
return {
offset: this.position.offset,
line: this.position.line,
column: this.position.column
};
};
Parser2.prototype.char = function() {
var offset2 = this.position.offset;
if (offset2 >= this.message.length) {
throw Error("out of bound");
}
var code = codePointAt(this.message, offset2);
if (code === void 0) {
throw Error("Offset ".concat(offset2, " is at invalid UTF-16 code unit boundary"));
}
return code;
};
Parser2.prototype.error = function(kind, location) {
return {
val: null,
err: {
kind,
message: this.message,
location
}
};
};
Parser2.prototype.bump = function() {
if (this.isEOF()) {
return;
}
var code = this.char();
if (code === 10) {
this.position.line += 1;
this.position.column = 1;
this.position.offset += 1;
} else {
this.position.column += 1;
this.position.offset += code < 65536 ? 1 : 2;
}
};
Parser2.prototype.bumpIf = function(prefix) {
if (startsWith(this.message, prefix, this.offset())) {
for (var i = 0; i < prefix.length; i++) {
this.bump();
}
return true;
}
return false;
};
Parser2.prototype.bumpUntil = function(pattern4) {
var currentOffset = this.offset();
var index2 = this.message.indexOf(pattern4, currentOffset);
if (index2 >= 0) {
this.bumpTo(index2);
return true;
} else {
this.bumpTo(this.message.length);
return false;
}
};
Parser2.prototype.bumpTo = function(targetOffset2) {
if (this.offset() > targetOffset2) {
throw Error("targetOffset ".concat(targetOffset2, " must be greater than or equal to the current offset ").concat(this.offset()));
}
targetOffset2 = Math.min(targetOffset2, this.message.length);
while (true) {
var offset2 = this.offset();
if (offset2 === targetOffset2) {
break;
}
if (offset2 > targetOffset2) {
throw Error("targetOffset ".concat(targetOffset2, " is at invalid UTF-16 code unit boundary"));
}
this.bump();
if (this.isEOF()) {
break;
}
}
};
Parser2.prototype.bumpSpace = function() {
while (!this.isEOF() && _isWhiteSpace(this.char())) {
this.bump();
}
};
Parser2.prototype.peek = function() {
if (this.isEOF()) {
return null;
}
var code = this.char();
var offset2 = this.offset();
var nextCode = this.message.charCodeAt(offset2 + (code >= 65536 ? 2 : 1));
return nextCode !== null && nextCode !== void 0 ? nextCode : null;
};
return Parser2;
}()
);
function _isAlpha(codepoint) {
return codepoint >= 97 && codepoint <= 122 || codepoint >= 65 && codepoint <= 90;
}
function _isAlphaOrSlash(codepoint) {
return _isAlpha(codepoint) || codepoint === 47;
}
function _isPotentialElementNameChar(c2) {
return c2 === 45 || c2 === 46 || c2 >= 48 && c2 <= 57 || c2 === 95 || c2 >= 97 && c2 <= 122 || c2 >= 65 && c2 <= 90 || c2 == 183 || c2 >= 192 && c2 <= 214 || c2 >= 216 && c2 <= 246 || c2 >= 248 && c2 <= 893 || c2 >= 895 && c2 <= 8191 || c2 >= 8204 && c2 <= 8205 || c2 >= 8255 && c2 <= 8256 || c2 >= 8304 && c2 <= 8591 || c2 >= 11264 && c2 <= 12271 || c2 >= 12289 && c2 <= 55295 || c2 >= 63744 && c2 <= 64975 || c2 >= 65008 && c2 <= 65533 || c2 >= 65536 && c2 <= 983039;
}
function _isWhiteSpace(c2) {
return c2 >= 9 && c2 <= 13 || c2 === 32 || c2 === 133 || c2 >= 8206 && c2 <= 8207 || c2 === 8232 || c2 === 8233;
}
function _isPatternSyntax(c2) {
return c2 >= 33 && c2 <= 35 || c2 === 36 || c2 >= 37 && c2 <= 39 || c2 === 40 || c2 === 41 || c2 === 42 || c2 === 43 || c2 === 44 || c2 === 45 || c2 >= 46 && c2 <= 47 || c2 >= 58 && c2 <= 59 || c2 >= 60 && c2 <= 62 || c2 >= 63 && c2 <= 64 || c2 === 91 || c2 === 92 || c2 === 93 || c2 === 94 || c2 === 96 || c2 === 123 || c2 === 124 || c2 === 125 || c2 === 126 || c2 === 161 || c2 >= 162 && c2 <= 165 || c2 === 166 || c2 === 167 || c2 === 169 || c2 === 171 || c2 === 172 || c2 === 174 || c2 === 176 || c2 === 177 || c2 === 182 || c2 === 187 || c2 === 191 || c2 === 215 || c2 === 247 || c2 >= 8208 && c2 <= 8213 || c2 >= 8214 && c2 <= 8215 || c2 === 8216 || c2 === 8217 || c2 === 8218 || c2 >= 8219 && c2 <= 8220 || c2 === 8221 || c2 === 8222 || c2 === 8223 || c2 >= 8224 && c2 <= 8231 || c2 >= 8240 && c2 <= 8248 || c2 === 8249 || c2 === 8250 || c2 >= 8251 && c2 <= 8254 || c2 >= 8257 && c2 <= 8259 || c2 === 8260 || c2 === 8261 || c2 === 8262 || c2 >= 8263 && c2 <= 8273 || c2 === 8274 || c2 === 8275 || c2 >= 8277 && c2 <= 8286 || c2 >= 8592 && c2 <= 8596 || c2 >= 8597 && c2 <= 8601 || c2 >= 8602 && c2 <= 8603 || c2 >= 8604 && c2 <= 8607 || c2 === 8608 || c2 >= 8609 && c2 <= 8610 || c2 === 8611 || c2 >= 8612 && c2 <= 8613 || c2 === 8614 || c2 >= 8615 && c2 <= 8621 || c2 === 8622 || c2 >= 8623 && c2 <= 8653 || c2 >= 8654 && c2 <= 8655 || c2 >= 8656 && c2 <= 8657 || c2 === 8658 || c2 === 8659 || c2 === 8660 || c2 >= 8661 && c2 <= 8691 || c2 >= 8692 && c2 <= 8959 || c2 >= 8960 && c2 <= 8967 || c2 === 8968 || c2 === 8969 || c2 === 8970 || c2 === 8971 || c2 >= 8972 && c2 <= 8991 || c2 >= 8992 && c2 <= 8993 || c2 >= 8994 && c2 <= 9e3 || c2 === 9001 || c2 === 9002 || c2 >= 9003 && c2 <= 9083 || c2 === 9084 || c2 >= 9085 && c2 <= 9114 || c2 >= 9115 && c2 <= 9139 || c2 >= 9140 && c2 <= 9179 || c2 >= 9180 && c2 <= 9185 || c2 >= 9186 && c2 <= 9254 || c2 >= 9255 && c2 <= 9279 || c2 >= 9280 && c2 <= 9290 || c2 >= 9291 && c2 <= 9311 || c2 >= 9472 && c2 <= 9654 || c2 === 9655 || c2 >= 9656 && c2 <= 9664 || c2 === 9665 || c2 >= 9666 && c2 <= 9719 || c2 >= 9720 && c2 <= 9727 || c2 >= 9728 && c2 <= 9838 || c2 === 9839 || c2 >= 9840 && c2 <= 10087 || c2 === 10088 || c2 === 10089 || c2 === 10090 || c2 === 10091 || c2 === 10092 || c2 === 10093 || c2 === 10094 || c2 === 10095 || c2 === 10096 || c2 === 10097 || c2 === 10098 || c2 === 10099 || c2 === 10100 || c2 === 10101 || c2 >= 10132 && c2 <= 10175 || c2 >= 10176 && c2 <= 10180 || c2 === 10181 || c2 === 10182 || c2 >= 10183 && c2 <= 10213 || c2 === 10214 || c2 === 10215 || c2 === 10216 || c2 === 10217 || c2 === 10218 || c2 === 10219 || c2 === 10220 || c2 === 10221 || c2 === 10222 || c2 === 10223 || c2 >= 10224 && c2 <= 10239 || c2 >= 10240 && c2 <= 10495 || c2 >= 10496 && c2 <= 10626 || c2 === 10627 || c2 === 10628 || c2 === 10629 || c2 === 10630 || c2 === 10631 || c2 === 10632 || c2 === 10633 || c2 === 10634 || c2 === 10635 || c2 === 10636 || c2 === 10637 || c2 === 10638 || c2 === 10639 || c2 === 10640 || c2 === 10641 || c2 === 10642 || c2 === 10643 || c2 === 10644 || c2 === 10645 || c2 === 10646 || c2 === 10647 || c2 === 10648 || c2 >= 10649 && c2 <= 10711 || c2 === 10712 || c2 === 10713 || c2 === 10714 || c2 === 10715 || c2 >= 10716 && c2 <= 10747 || c2 === 10748 || c2 === 10749 || c2 >= 10750 && c2 <= 11007 || c2 >= 11008 && c2 <= 11055 || c2 >= 11056 && c2 <= 11076 || c2 >= 11077 && c2 <= 11078 || c2 >= 11079 && c2 <= 11084 || c2 >= 11085 && c2 <= 11123 || c2 >= 11124 && c2 <= 11125 || c2 >= 11126 && c2 <= 11157 || c2 === 11158 || c2 >= 11159 && c2 <= 11263 || c2 >= 11776 && c2 <= 11777 || c2 === 11778 || c2 === 11779 || c2 === 11780 || c2 === 11781 || c2 >= 11782 && c2 <= 11784 || c2 === 11785 || c2 === 11786 || c2 === 11787 || c2 === 11788 || c2 === 11789 || c2 >= 11790 && c2 <= 11798 || c2 === 11799 || c2 >= 11800 && c2 <= 11801 || c2 === 11802 || c2 === 11803 || c2 === 11804 || c2 === 11805 || c2 >= 11806 && c2 <= 11807 || c2 === 11808 || c2 === 11809 || c2 === 11810 || c2 === 11811 || c2 === 11812 || c2 === 11813 || c2 === 11814 || c2 === 11815 || c2 === 11816 || c2 === 11817 || c2 >= 11818 && c2 <= 11822 || c2 === 11823 || c2 >= 11824 && c2 <= 11833 || c2 >= 11834 && c2 <= 11835 || c2 >= 11836 && c2 <= 11839 || c2 === 11840 || c2 === 11841 || c2 === 11842 || c2 >= 11843 && c2 <= 11855 || c2 >= 11856 && c2 <= 11857 || c2 === 11858 || c2 >= 11859 && c2 <= 11903 || c2 >= 12289 && c2 <= 12291 || c2 === 12296 || c2 === 12297 || c2 === 12298 || c2 === 12299 || c2 === 12300 || c2 === 12301 || c2 === 12302 || c2 === 12303 || c2 === 12304 || c2 === 12305 || c2 >= 12306 && c2 <= 12307 || c2 === 12308 || c2 === 12309 || c2 === 12310 || c2 === 12311 || c2 === 12312 || c2 === 12313 || c2 === 12314 || c2 === 12315 || c2 === 12316 || c2 === 12317 || c2 >= 12318 && c2 <= 12319 || c2 === 12320 || c2 === 12336 || c2 === 64830 || c2 === 64831 || c2 >= 65093 && c2 <= 65094;
}
function pruneLocation(els) {
els.forEach(function(el2) {
delete el2.location;
if (isSelectElement(el2) || isPluralElement(el2)) {
for (var k2 in el2.options) {
delete el2.options[k2].location;
pruneLocation(el2.options[k2].value);
}
} else if (isNumberElement(el2) && isNumberSkeleton(el2.style)) {
delete el2.style.location;
} else if ((isDateElement(el2) || isTimeElement(el2)) && isDateTimeSkeleton(el2.style)) {
delete el2.style.location;
} else if (isTagElement(el2)) {
pruneLocation(el2.children);
}
});
}
function parse(message2, opts) {
if (opts === void 0) {
opts = {};
}
opts = __assign({ shouldParseSkeletons: true, requiresOtherClause: true }, opts);
var result = new Parser(message2, opts).parse();
if (result.err) {
var error = SyntaxError(ErrorKind[result.err.kind]);
error.location = result.err.location;
error.originalMessage = result.err.message;
throw error;
}
if (!(opts === null || opts === void 0 ? void 0 : opts.captureLocation)) {
pruneLocation(result.val);
}
return result.val;
}
var ErrorCode;
(function(ErrorCode2) {
ErrorCode2["MISSING_VALUE"] = "MISSING_VALUE";
ErrorCode2["INVALID_VALUE"] = "INVALID_VALUE";
ErrorCode2["MISSING_INTL_API"] = "MISSING_INTL_API";
})(ErrorCode || (ErrorCode = {}));
var FormatError = (
/** @class */
function(_super) {
__extends$1(FormatError2, _super);
function FormatError2(msg, code, originalMessage) {
var _this = _super.call(this, msg) || this;
_this.code = code;
_this.originalMessage = originalMessage;
return _this;
}
FormatError2.prototype.toString = function() {
return "[formatjs Error: ".concat(this.code, "] ").concat(this.message);
};
return FormatError2;
}(Error)
);
var InvalidValueError = (
/** @class */
function(_super) {
__extends$1(InvalidValueError2, _super);
function InvalidValueError2(variableId, value, options, originalMessage) {
return _super.call(this, 'Invalid values for "'.concat(variableId, '": "').concat(value, '". Options are "').concat(Object.keys(options).join('", "'), '"'), ErrorCode.INVALID_VALUE, originalMessage) || this;
}
return InvalidValueError2;
}(FormatError)
);
var InvalidValueTypeError = (
/** @class */
function(_super) {
__extends$1(InvalidValueTypeError2, _super);
function InvalidValueTypeError2(value, type4, originalMessage) {
return _super.call(this, 'Value for "'.concat(value, '" must be of type ').concat(type4), ErrorCode.INVALID_VALUE, originalMessage) || this;
}
return InvalidValueTypeError2;
}(FormatError)
);
var MissingValueError = (
/** @class */
function(_super) {
__extends$1(MissingValueError2, _super);
function MissingValueError2(variableId, originalMessage) {
return _super.call(this, 'The intl string context variable "'.concat(variableId, '" was not provided to the string "').concat(originalMessage, '"'), ErrorCode.MISSING_VALUE, originalMessage) || this;
}
return MissingValueError2;
}(FormatError)
);
var PART_TYPE;
(function(PART_TYPE2) {
PART_TYPE2[PART_TYPE2["literal"] = 0] = "literal";
PART_TYPE2[PART_TYPE2["object"] = 1] = "object";
})(PART_TYPE || (PART_TYPE = {}));
function mergeLiteral(parts) {
if (parts.length < 2) {
return parts;
}
return parts.reduce(function(all, part) {
var lastPart = all[all.length - 1];
if (!lastPart || lastPart.type !== PART_TYPE.literal || part.type !== PART_TYPE.literal) {
all.push(part);
} else {
lastPart.value += part.value;
}
return all;
}, []);
}
function isFormatXMLElementFn(el2) {
return typeof el2 === "function";
}
function formatToParts(els, locales, formatters, formats, values, currentPluralValue, originalMessage) {
if (els.length === 1 && isLiteralElement(els[0])) {
return [
{
type: PART_TYPE.literal,
value: els[0].value
}
];
}
var result = [];
for (var _i = 0, els_1 = els; _i < els_1.length; _i++) {
var el2 = els_1[_i];
if (isLiteralElement(el2)) {
result.push({
type: PART_TYPE.literal,
value: el2.value
});
continue;
}
if (isPoundElement(el2)) {
if (typeof currentPluralValue === "number") {
result.push({
type: PART_TYPE.literal,
value: formatters.getNumberFormat(locales).format(currentPluralValue)
});
}
continue;
}
var varName = el2.value;
if (!(values && varName in values)) {
throw new MissingValueError(varName, originalMessage);
}
var value = values[varName];
if (isArgumentElement(el2)) {
if (!value || typeof value === "string" || typeof value === "number") {
value = typeof value === "string" || typeof value === "number" ? String(value) : "";
}
result.push({
type: typeof value === "string" ? PART_TYPE.literal : PART_TYPE.object,
value
});
continue;
}
if (isDateElement(el2)) {
var style2 = typeof el2.style === "string" ? formats.date[el2.style] : isDateTimeSkeleton(el2.style) ? el2.style.parsedOptions : void 0;
result.push({
type: PART_TYPE.literal,
value: formatters.getDateTimeFormat(locales, style2).format(value)
});
continue;
}
if (isTimeElement(el2)) {
var style2 = typeof el2.style === "string" ? formats.time[el2.style] : isDateTimeSkeleton(el2.style) ? el2.style.parsedOptions : formats.time.medium;
result.push({
type: PART_TYPE.literal,
value: formatters.getDateTimeFormat(locales, style2).format(value)
});
continue;
}
if (isNumberElement(el2)) {
var style2 = typeof el2.style === "string" ? formats.number[el2.style] : isNumberSkeleton(el2.style) ? el2.style.parsedOptions : void 0;
if (style2 && style2.scale) {
value = value * (style2.scale || 1);
}
result.push({
type: PART_TYPE.literal,
value: formatters.getNumberFormat(locales, style2).format(value)
});
continue;
}
if (isTagElement(el2)) {
var children = el2.children, value_1 = el2.value;
var formatFn = values[value_1];
if (!isFormatXMLElementFn(formatFn)) {
throw new InvalidValueTypeError(value_1, "function", originalMessage);
}
var parts = formatToParts(children, locales, formatters, formats, values, currentPluralValue);
var chunks = formatFn(parts.map(function(p2) {
return p2.value;
}));
if (!Array.isArray(chunks)) {
chunks = [chunks];
}
result.push.apply(result, chunks.map(function(c2) {
return {
type: typeof c2 === "string" ? PART_TYPE.literal : PART_TYPE.object,
value: c2
};
}));
}
if (isSelectElement(el2)) {
var opt = el2.options[value] || el2.options.other;
if (!opt) {
throw new InvalidValueError(el2.value, value, Object.keys(el2.options), originalMessage);
}
result.push.apply(result, formatToParts(opt.value, locales, formatters, formats, values));
continue;
}
if (isPluralElement(el2)) {
var opt = el2.options["=".concat(value)];
if (!opt) {
if (!Intl.PluralRules) {
throw new FormatError('Intl.PluralRules is not available in this environment.\nTry polyfilling it using "@formatjs/intl-pluralrules"\n', ErrorCode.MISSING_INTL_API, originalMessage);
}
var rule = formatters.getPluralRules(locales, { type: el2.pluralType }).select(value - (el2.offset || 0));
opt = el2.options[rule] || el2.options.other;
}
if (!opt) {
throw new InvalidValueError(el2.value, value, Object.keys(el2.options), originalMessage);
}
result.push.apply(result, formatToParts(opt.value, locales, formatters, formats, values, value - (el2.offset || 0)));
continue;
}
}
return mergeLiteral(result);
}
function mergeConfig(c1, c2) {
if (!c2) {
return c1;
}
return __assign(__assign(__assign({}, c1 || {}), c2 || {}), Object.keys(c1).reduce(function(all, k2) {
all[k2] = __assign(__assign({}, c1[k2]), c2[k2] || {});
return all;
}, {}));
}
function mergeConfigs(defaultConfig2, configs) {
if (!configs) {
return defaultConfig2;
}
return Object.keys(defaultConfig2).reduce(function(all, k2) {
all[k2] = mergeConfig(defaultConfig2[k2], configs[k2]);
return all;
}, __assign({}, defaultConfig2));
}
function createFastMemoizeCache$1(store) {
return {
create: function() {
return {
get: function(key) {
return store[key];
},
set: function(key, value) {
store[key] = value;
}
};
}
};
}
function createDefaultFormatters(cache) {
if (cache === void 0) {
cache = {
number: {},
dateTime: {},
pluralRules: {}
};
}
return {
getNumberFormat: memoize(function() {
var _a2;
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return new ((_a2 = Intl.NumberFormat).bind.apply(_a2, __spreadArray([void 0], args, false)))();
}, {
cache: createFastMemoizeCache$1(cache.number),
strategy: strategies.variadic
}),
getDateTimeFormat: memoize(function() {
var _a2;
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return new ((_a2 = Intl.DateTimeFormat).bind.apply(_a2, __spreadArray([void 0], args, false)))();
}, {
cache: createFastMemoizeCache$1(cache.dateTime),
strategy: strategies.variadic
}),
getPluralRules: memoize(function() {
var _a2;
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return new ((_a2 = Intl.PluralRules).bind.apply(_a2, __spreadArray([void 0], args, false)))();
}, {
cache: createFastMemoizeCache$1(cache.pluralRules),
strategy: strategies.variadic
})
};
}
var IntlMessageFormat = (
/** @class */
function() {
function IntlMessageFormat2(message2, locales, overrideFormats, opts) {
var _this = this;
if (locales === void 0) {
locales = IntlMessageFormat2.defaultLocale;
}
this.formatterCache = {
number: {},
dateTime: {},
pluralRules: {}
};
this.format = function(values) {
var parts = _this.formatToParts(values);
if (parts.length === 1) {
return parts[0].value;
}
var result = parts.reduce(function(all, part) {
if (!all.length || part.type !== PART_TYPE.literal || typeof all[all.length - 1] !== "string") {
all.push(part.value);
} else {
all[all.length - 1] += part.value;
}
return all;
}, []);
if (result.length <= 1) {
return result[0] || "";
}
return result;
};
this.formatToParts = function(values) {
return formatToParts(_this.ast, _this.locales, _this.formatters, _this.formats, values, void 0, _this.message);
};
this.resolvedOptions = function() {
var _a3;
return {
locale: ((_a3 = _this.resolvedLocale) === null || _a3 === void 0 ? void 0 : _a3.toString()) || Intl.NumberFormat.supportedLocalesOf(_this.locales)[0]
};
};
this.getAst = function() {
return _this.ast;
};
this.locales = locales;
this.resolvedLocale = IntlMessageFormat2.resolveLocale(locales);
if (typeof message2 === "string") {
this.message = message2;
if (!IntlMessageFormat2.__parse) {
throw new TypeError("IntlMessageFormat.__parse must be set to process `message` of type `string`");
}
var _a2 = opts || {};
_a2.formatters;
var parseOpts = __rest(_a2, ["formatters"]);
this.ast = IntlMessageFormat2.__parse(message2, __assign(__assign({}, parseOpts), { locale: this.resolvedLocale }));
} else {
this.ast = message2;
}
if (!Array.isArray(this.ast)) {
throw new TypeError("A message must be provided as a String or AST.");
}
this.formats = mergeConfigs(IntlMessageFormat2.formats, overrideFormats);
this.formatters = opts && opts.formatters || createDefaultFormatters(this.formatterCache);
}
Object.defineProperty(IntlMessageFormat2, "defaultLocale", {
get: function() {
if (!IntlMessageFormat2.memoizedDefaultLocale) {
IntlMessageFormat2.memoizedDefaultLocale = new Intl.NumberFormat().resolvedOptions().locale;
}
return IntlMessageFormat2.memoizedDefaultLocale;
},
enumerable: false,
configurable: true
});
IntlMessageFormat2.memoizedDefaultLocale = null;
IntlMessageFormat2.resolveLocale = function(locales) {
if (typeof Intl.Locale === "undefined") {
return;
}
var supportedLocales = Intl.NumberFormat.supportedLocalesOf(locales);
if (supportedLocales.length > 0) {
return new Intl.Locale(supportedLocales[0]);
}
return new Intl.Locale(typeof locales === "string" ? locales : locales[0]);
};
IntlMessageFormat2.__parse = parse;
IntlMessageFormat2.formats = {
number: {
integer: {
maximumFractionDigits: 0
},
currency: {
style: "currency"
},
percent: {
style: "percent"
}
},
date: {
short: {
month: "numeric",
day: "numeric",
year: "2-digit"
},
medium: {
month: "short",
day: "numeric",
year: "numeric"
},
long: {
month: "long",
day: "numeric",
year: "numeric"
},
full: {
weekday: "long",
month: "long",
day: "numeric",
year: "numeric"
}
},
time: {
short: {
hour: "numeric",
minute: "numeric"
},
medium: {
hour: "numeric",
minute: "numeric",
second: "numeric"
},
long: {
hour: "numeric",
minute: "numeric",
second: "numeric",
timeZoneName: "short"
},
full: {
hour: "numeric",
minute: "numeric",
second: "numeric",
timeZoneName: "short"
}
}
};
return IntlMessageFormat2;
}()
);
var IntlErrorCode;
(function(IntlErrorCode2) {
IntlErrorCode2["FORMAT_ERROR"] = "FORMAT_ERROR";
IntlErrorCode2["UNSUPPORTED_FORMATTER"] = "UNSUPPORTED_FORMATTER";
IntlErrorCode2["INVALID_CONFIG"] = "INVALID_CONFIG";
IntlErrorCode2["MISSING_DATA"] = "MISSING_DATA";
IntlErrorCode2["MISSING_TRANSLATION"] = "MISSING_TRANSLATION";
})(IntlErrorCode || (IntlErrorCode = {}));
var IntlError = (
/** @class */
function(_super) {
__extends$1(IntlError2, _super);
function IntlError2(code, message2, exception) {
var _this = this;
var err = exception ? exception instanceof Error ? exception : new Error(String(exception)) : void 0;
_this = _super.call(this, "[@formatjs/intl Error ".concat(code, "] ").concat(message2, "\n").concat(err ? "\n".concat(err.message, "\n").concat(err.stack) : "")) || this;
_this.code = code;
if (typeof Error.captureStackTrace === "function") {
Error.captureStackTrace(_this, IntlError2);
}
return _this;
}
return IntlError2;
}(Error)
);
var UnsupportedFormatterError = (
/** @class */
function(_super) {
__extends$1(UnsupportedFormatterError2, _super);
function UnsupportedFormatterError2(message2, exception) {
return _super.call(this, IntlErrorCode.UNSUPPORTED_FORMATTER, message2, exception) || this;
}
return UnsupportedFormatterError2;
}(IntlError)
);
var InvalidConfigError = (
/** @class */
function(_super) {
__extends$1(InvalidConfigError2, _super);
function InvalidConfigError2(message2, exception) {
return _super.call(this, IntlErrorCode.INVALID_CONFIG, message2, exception) || this;
}
return InvalidConfigError2;
}(IntlError)
);
var MissingDataError = (
/** @class */
function(_super) {
__extends$1(MissingDataError2, _super);
function MissingDataError2(message2, exception) {
return _super.call(this, IntlErrorCode.MISSING_DATA, message2, exception) || this;
}
return MissingDataError2;
}(IntlError)
);
var IntlFormatError = (
/** @class */
function(_super) {
__extends$1(IntlFormatError2, _super);
function IntlFormatError2(message2, locale2, exception) {
var _this = _super.call(this, IntlErrorCode.FORMAT_ERROR, "".concat(message2, "\nLocale: ").concat(locale2, "\n"), exception) || this;
_this.locale = locale2;
return _this;
}
return IntlFormatError2;
}(IntlError)
);
var MessageFormatError = (
/** @class */
function(_super) {
__extends$1(MessageFormatError2, _super);
function MessageFormatError2(message2, locale2, descriptor, exception) {
var _this = _super.call(this, "".concat(message2, "\nMessageID: ").concat(descriptor === null || descriptor === void 0 ? void 0 : descriptor.id, "\nDefault Message: ").concat(descriptor === null || descriptor === void 0 ? void 0 : descriptor.defaultMessage, "\nDescription: ").concat(descriptor === null || descriptor === void 0 ? void 0 : descriptor.description, "\n"), locale2, exception) || this;
_this.descriptor = descriptor;
_this.locale = locale2;
return _this;
}
return MessageFormatError2;
}(IntlFormatError)
);
var MissingTranslationError = (
/** @class */
function(_super) {
__extends$1(MissingTranslationError2, _super);
function MissingTranslationError2(descriptor, locale2) {
var _this = _super.call(this, IntlErrorCode.MISSING_TRANSLATION, 'Missing message: "'.concat(descriptor.id, '" for locale "').concat(locale2, '", using ').concat(descriptor.defaultMessage ? "default message (".concat(typeof descriptor.defaultMessage === "string" ? descriptor.defaultMessage : descriptor.defaultMessage.map(function(e2) {
var _a2;
return (_a2 = e2.value) !== null && _a2 !== void 0 ? _a2 : JSON.stringify(e2);
}).join(), ")") : "id", " as fallback.")) || this;
_this.descriptor = descriptor;
return _this;
}
return MissingTranslationError2;
}(IntlError)
);
function filterProps(props, allowlist, defaults2) {
if (defaults2 === void 0) {
defaults2 = {};
}
return allowlist.reduce(function(filtered, name) {
if (name in props) {
filtered[name] = props[name];
} else if (name in defaults2) {
filtered[name] = defaults2[name];
}
return filtered;
}, {});
}
var defaultErrorHandler = function(error) {
};
var defaultWarnHandler = function(warning3) {
};
var DEFAULT_INTL_CONFIG$1 = {
formats: {},
messages: {},
timeZone: void 0,
defaultLocale: "en",
defaultFormats: {},
fallbackOnEmptyString: true,
onError: defaultErrorHandler,
onWarn: defaultWarnHandler
};
function createIntlCache() {
return {
dateTime: {},
number: {},
message: {},
relativeTime: {},
pluralRules: {},
list: {},
displayNames: {}
};
}
function createFastMemoizeCache(store) {
return {
create: function() {
return {
get: function(key) {
return store[key];
},
set: function(key, value) {
store[key] = value;
}
};
}
};
}
function createFormatters(cache) {
if (cache === void 0) {
cache = createIntlCache();
}
var RelativeTimeFormat = Intl.RelativeTimeFormat;
var ListFormat = Intl.ListFormat;
var DisplayNames = Intl.DisplayNames;
var getDateTimeFormat = memoize(function() {
var _a2;
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return new ((_a2 = Intl.DateTimeFormat).bind.apply(_a2, __spreadArray([void 0], args, false)))();
}, {
cache: createFastMemoizeCache(cache.dateTime),
strategy: strategies.variadic
});
var getNumberFormat = memoize(function() {
var _a2;
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return new ((_a2 = Intl.NumberFormat).bind.apply(_a2, __spreadArray([void 0], args, false)))();
}, {
cache: createFastMemoizeCache(cache.number),
strategy: strategies.variadic
});
var getPluralRules = memoize(function() {
var _a2;
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return new ((_a2 = Intl.PluralRules).bind.apply(_a2, __spreadArray([void 0], args, false)))();
}, {
cache: createFastMemoizeCache(cache.pluralRules),
strategy: strategies.variadic
});
return {
getDateTimeFormat,
getNumberFormat,
getMessageFormat: memoize(function(message2, locales, overrideFormats, opts) {
return new IntlMessageFormat(message2, locales, overrideFormats, __assign({ formatters: {
getNumberFormat,
getDateTimeFormat,
getPluralRules
} }, opts || {}));
}, {
cache: createFastMemoizeCache(cache.message),
strategy: strategies.variadic
}),
getRelativeTimeFormat: memoize(function() {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return new (RelativeTimeFormat.bind.apply(RelativeTimeFormat, __spreadArray([void 0], args, false)))();
}, {
cache: createFastMemoizeCache(cache.relativeTime),
strategy: strategies.variadic
}),
getPluralRules,
getListFormat: memoize(function() {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return new (ListFormat.bind.apply(ListFormat, __spreadArray([void 0], args, false)))();
}, {
cache: createFastMemoizeCache(cache.list),
strategy: strategies.variadic
}),
getDisplayNames: memoize(function() {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return new (DisplayNames.bind.apply(DisplayNames, __spreadArray([void 0], args, false)))();
}, {
cache: createFastMemoizeCache(cache.displayNames),
strategy: strategies.variadic
})
};
}
function getNamedFormat(formats, type4, name, onError) {
var formatType = formats && formats[type4];
var format2;
if (formatType) {
format2 = formatType[name];
}
if (format2) {
return format2;
}
onError(new UnsupportedFormatterError("No ".concat(type4, " format named: ").concat(name)));
}
function setTimeZoneInOptions(opts, timeZone) {
return Object.keys(opts).reduce(function(all, k2) {
all[k2] = __assign({ timeZone }, opts[k2]);
return all;
}, {});
}
function deepMergeOptions(opts1, opts2) {
var keys2 = Object.keys(__assign(__assign({}, opts1), opts2));
return keys2.reduce(function(all, k2) {
all[k2] = __assign(__assign({}, opts1[k2] || {}), opts2[k2] || {});
return all;
}, {});
}
function deepMergeFormatsAndSetTimeZone(f1, timeZone) {
if (!timeZone) {
return f1;
}
var mfFormats = IntlMessageFormat.formats;
return __assign(__assign(__assign({}, mfFormats), f1), { date: deepMergeOptions(setTimeZoneInOptions(mfFormats.date, timeZone), setTimeZoneInOptions(f1.date || {}, timeZone)), time: deepMergeOptions(setTimeZoneInOptions(mfFormats.time, timeZone), setTimeZoneInOptions(f1.time || {}, timeZone)) });
}
var formatMessage$1 = function(_a2, state, messageDescriptor, values, opts) {
var locale2 = _a2.locale, formats = _a2.formats, messages2 = _a2.messages, defaultLocale = _a2.defaultLocale, defaultFormats = _a2.defaultFormats, fallbackOnEmptyString = _a2.fallbackOnEmptyString, onError = _a2.onError, timeZone = _a2.timeZone, defaultRichTextElements = _a2.defaultRichTextElements;
if (messageDescriptor === void 0) {
messageDescriptor = { id: "" };
}
var msgId = messageDescriptor.id, defaultMessage2 = messageDescriptor.defaultMessage;
invariant$1(!!msgId, "[@formatjs/intl] An `id` must be provided to format a message. You can either:\n1. Configure your build toolchain with [babel-plugin-formatjs](https://formatjs.io/docs/tooling/babel-plugin)\nor [@formatjs/ts-transformer](https://formatjs.io/docs/tooling/ts-transformer) OR\n2. Configure your `eslint` config to include [eslint-plugin-formatjs](https://formatjs.io/docs/tooling/linter#enforce-id)\nto autofix this issue");
var id2 = String(msgId);
var message2 = (
// In case messages is Object.create(null)
// e.g import('foo.json') from webpack)
// See https://github.com/formatjs/formatjs/issues/1914
messages2 && Object.prototype.hasOwnProperty.call(messages2, id2) && messages2[id2]
);
if (Array.isArray(message2) && message2.length === 1 && message2[0].type === TYPE.literal) {
return message2[0].value;
}
if (!values && message2 && typeof message2 === "string" && !defaultRichTextElements) {
return message2.replace(/'\{(.*?)\}'/gi, "{$1}");
}
values = __assign(__assign({}, defaultRichTextElements), values || {});
formats = deepMergeFormatsAndSetTimeZone(formats, timeZone);
defaultFormats = deepMergeFormatsAndSetTimeZone(defaultFormats, timeZone);
if (!message2) {
if (fallbackOnEmptyString === false && message2 === "") {
return message2;
}
if (!defaultMessage2 || locale2 && locale2.toLowerCase() !== defaultLocale.toLowerCase()) {
onError(new MissingTranslationError(messageDescriptor, locale2));
}
if (defaultMessage2) {
try {
var formatter = state.getMessageFormat(defaultMessage2, defaultLocale, defaultFormats, opts);
return formatter.format(values);
} catch (e2) {
onError(new MessageFormatError('Error formatting default message for: "'.concat(id2, '", rendering default message verbatim'), locale2, messageDescriptor, e2));
return typeof defaultMessage2 === "string" ? defaultMessage2 : id2;
}
}
return id2;
}
try {
var formatter = state.getMessageFormat(message2, locale2, formats, __assign({ formatters: state }, opts || {}));
return formatter.format(values);
} catch (e2) {
onError(new MessageFormatError('Error formatting message: "'.concat(id2, '", using ').concat(defaultMessage2 ? "default message" : "id", " as fallback."), locale2, messageDescriptor, e2));
}
if (defaultMessage2) {
try {
var formatter = state.getMessageFormat(defaultMessage2, defaultLocale, defaultFormats, opts);
return formatter.format(values);
} catch (e2) {
onError(new MessageFormatError('Error formatting the default message for: "'.concat(id2, '", rendering message verbatim'), locale2, messageDescriptor, e2));
}
}
if (typeof message2 === "string") {
return message2;
}
if (typeof defaultMessage2 === "string") {
return defaultMessage2;
}
return id2;
};
var DATE_TIME_FORMAT_OPTIONS = [
"formatMatcher",
"timeZone",
"hour12",
"weekday",
"era",
"year",
"month",
"day",
"hour",
"minute",
"second",
"timeZoneName",
"hourCycle",
"dateStyle",
"timeStyle",
"calendar",
// 'dayPeriod',
"numberingSystem",
"fractionalSecondDigits"
];
function getFormatter$2(_a2, type4, getDateTimeFormat, options) {
var locale2 = _a2.locale, formats = _a2.formats, onError = _a2.onError, timeZone = _a2.timeZone;
if (options === void 0) {
options = {};
}
var format2 = options.format;
var defaults2 = __assign(__assign({}, timeZone && { timeZone }), format2 && getNamedFormat(formats, type4, format2, onError));
var filteredOptions = filterProps(options, DATE_TIME_FORMAT_OPTIONS, defaults2);
if (type4 === "time" && !filteredOptions.hour && !filteredOptions.minute && !filteredOptions.second && !filteredOptions.timeStyle && !filteredOptions.dateStyle) {
filteredOptions = __assign(__assign({}, filteredOptions), { hour: "numeric", minute: "numeric" });
}
return getDateTimeFormat(locale2, filteredOptions);
}
function formatDate(config, getDateTimeFormat) {
var _a2 = [];
for (var _i = 2; _i < arguments.length; _i++) {
_a2[_i - 2] = arguments[_i];
}
var value = _a2[0], _b2 = _a2[1], options = _b2 === void 0 ? {} : _b2;
var date4 = typeof value === "string" ? new Date(value || 0) : value;
try {
return getFormatter$2(config, "date", getDateTimeFormat, options).format(date4);
} catch (e2) {
config.onError(new IntlFormatError("Error formatting date.", config.locale, e2));
}
return String(date4);
}
function formatTime(config, getDateTimeFormat) {
var _a2 = [];
for (var _i = 2; _i < arguments.length; _i++) {
_a2[_i - 2] = arguments[_i];
}
var value = _a2[0], _b2 = _a2[1], options = _b2 === void 0 ? {} : _b2;
var date4 = typeof value === "string" ? new Date(value || 0) : value;
try {
return getFormatter$2(config, "time", getDateTimeFormat, options).format(date4);
} catch (e2) {
config.onError(new IntlFormatError("Error formatting time.", config.locale, e2));
}
return String(date4);
}
function formatDateTimeRange(config, getDateTimeFormat) {
var _a2 = [];
for (var _i = 2; _i < arguments.length; _i++) {
_a2[_i - 2] = arguments[_i];
}
var from2 = _a2[0], to = _a2[1], _b2 = _a2[2], options = _b2 === void 0 ? {} : _b2;
var timeZone = config.timeZone, locale2 = config.locale, onError = config.onError;
var filteredOptions = filterProps(options, DATE_TIME_FORMAT_OPTIONS, timeZone ? { timeZone } : {});
try {
return getDateTimeFormat(locale2, filteredOptions).formatRange(from2, to);
} catch (e2) {
onError(new IntlFormatError("Error formatting date time range.", config.locale, e2));
}
return String(from2);
}
function formatDateToParts(config, getDateTimeFormat) {
var _a2 = [];
for (var _i = 2; _i < arguments.length; _i++) {
_a2[_i - 2] = arguments[_i];
}
var value = _a2[0], _b2 = _a2[1], options = _b2 === void 0 ? {} : _b2;
var date4 = typeof value === "string" ? new Date(value || 0) : value;
try {
return getFormatter$2(config, "date", getDateTimeFormat, options).formatToParts(date4);
} catch (e2) {
config.onError(new IntlFormatError("Error formatting date.", config.locale, e2));
}
return [];
}
function formatTimeToParts(config, getDateTimeFormat) {
var _a2 = [];
for (var _i = 2; _i < arguments.length; _i++) {
_a2[_i - 2] = arguments[_i];
}
var value = _a2[0], _b2 = _a2[1], options = _b2 === void 0 ? {} : _b2;
var date4 = typeof value === "string" ? new Date(value || 0) : value;
try {
return getFormatter$2(config, "time", getDateTimeFormat, options).formatToParts(date4);
} catch (e2) {
config.onError(new IntlFormatError("Error formatting time.", config.locale, e2));
}
return [];
}
var DISPLAY_NAMES_OPTONS = [
"style",
"type",
"fallback",
"languageDisplay"
];
function formatDisplayName(_a2, getDisplayNames, value, options) {
var locale2 = _a2.locale, onError = _a2.onError;
var DisplayNames = Intl.DisplayNames;
if (!DisplayNames) {
onError(new FormatError('Intl.DisplayNames is not available in this environment.\nTry polyfilling it using "@formatjs/intl-displaynames"\n', ErrorCode.MISSING_INTL_API));
}
var filteredOptions = filterProps(options, DISPLAY_NAMES_OPTONS);
try {
return getDisplayNames(locale2, filteredOptions).of(value);
} catch (e2) {
onError(new IntlFormatError("Error formatting display name.", locale2, e2));
}
}
var LIST_FORMAT_OPTIONS = [
"type",
"style"
];
var now = Date.now();
function generateToken(i) {
return "".concat(now, "_").concat(i, "_").concat(now);
}
function formatList(opts, getListFormat, values, options) {
if (options === void 0) {
options = {};
}
var results = formatListToParts(opts, getListFormat, values, options).reduce(function(all, el2) {
var val = el2.value;
if (typeof val !== "string") {
all.push(val);
} else if (typeof all[all.length - 1] === "string") {
all[all.length - 1] += val;
} else {
all.push(val);
}
return all;
}, []);
return results.length === 1 ? results[0] : results.length === 0 ? "" : results;
}
function formatListToParts(_a2, getListFormat, values, options) {
var locale2 = _a2.locale, onError = _a2.onError;
if (options === void 0) {
options = {};
}
var ListFormat = Intl.ListFormat;
if (!ListFormat) {
onError(new FormatError('Intl.ListFormat is not available in this environment.\nTry polyfilling it using "@formatjs/intl-listformat"\n', ErrorCode.MISSING_INTL_API));
}
var filteredOptions = filterProps(options, LIST_FORMAT_OPTIONS);
try {
var richValues_1 = {};
var serializedValues = values.map(function(v4, i) {
if (typeof v4 === "object") {
var id2 = generateToken(i);
richValues_1[id2] = v4;
return id2;
}
return String(v4);
});
return getListFormat(locale2, filteredOptions).formatToParts(serializedValues).map(function(part) {
return part.type === "literal" ? part : __assign(__assign({}, part), { value: richValues_1[part.value] || part.value });
});
} catch (e2) {
onError(new IntlFormatError("Error formatting list.", locale2, e2));
}
return values;
}
var PLURAL_FORMAT_OPTIONS = ["type"];
function formatPlural(_a2, getPluralRules, value, options) {
var locale2 = _a2.locale, onError = _a2.onError;
if (options === void 0) {
options = {};
}
if (!Intl.PluralRules) {
onError(new FormatError('Intl.PluralRules is not available in this environment.\nTry polyfilling it using "@formatjs/intl-pluralrules"\n', ErrorCode.MISSING_INTL_API));
}
var filteredOptions = filterProps(options, PLURAL_FORMAT_OPTIONS);
try {
return getPluralRules(locale2, filteredOptions).select(value);
} catch (e2) {
onError(new IntlFormatError("Error formatting plural.", locale2, e2));
}
return "other";
}
var RELATIVE_TIME_FORMAT_OPTIONS = ["numeric", "style"];
function getFormatter$1(_a2, getRelativeTimeFormat, options) {
var locale2 = _a2.locale, formats = _a2.formats, onError = _a2.onError;
if (options === void 0) {
options = {};
}
var format2 = options.format;
var defaults2 = !!format2 && getNamedFormat(formats, "relative", format2, onError) || {};
var filteredOptions = filterProps(options, RELATIVE_TIME_FORMAT_OPTIONS, defaults2);
return getRelativeTimeFormat(locale2, filteredOptions);
}
function formatRelativeTime(config, getRelativeTimeFormat, value, unit2, options) {
if (options === void 0) {
options = {};
}
if (!unit2) {
unit2 = "second";
}
var RelativeTimeFormat = Intl.RelativeTimeFormat;
if (!RelativeTimeFormat) {
config.onError(new FormatError('Intl.RelativeTimeFormat is not available in this environment.\nTry polyfilling it using "@formatjs/intl-relativetimeformat"\n', ErrorCode.MISSING_INTL_API));
}
try {
return getFormatter$1(config, getRelativeTimeFormat, options).format(value, unit2);
} catch (e2) {
config.onError(new IntlFormatError("Error formatting relative time.", config.locale, e2));
}
return String(value);
}
var NUMBER_FORMAT_OPTIONS = [
"style",
"currency",
"unit",
"unitDisplay",
"useGrouping",
"minimumIntegerDigits",
"minimumFractionDigits",
"maximumFractionDigits",
"minimumSignificantDigits",
"maximumSignificantDigits",
// ES2020 NumberFormat
"compactDisplay",
"currencyDisplay",
"currencySign",
"notation",
"signDisplay",
"unit",
"unitDisplay",
"numberingSystem",
// ES2023 NumberFormat
"trailingZeroDisplay",
"roundingPriority",
"roundingIncrement",
"roundingMode"
];
function getFormatter(_a2, getNumberFormat, options) {
var locale2 = _a2.locale, formats = _a2.formats, onError = _a2.onError;
if (options === void 0) {
options = {};
}
var format2 = options.format;
var defaults2 = format2 && getNamedFormat(formats, "number", format2, onError) || {};
var filteredOptions = filterProps(options, NUMBER_FORMAT_OPTIONS, defaults2);
return getNumberFormat(locale2, filteredOptions);
}
function formatNumber(config, getNumberFormat, value, options) {
if (options === void 0) {
options = {};
}
try {
return getFormatter(config, getNumberFormat, options).format(value);
} catch (e2) {
config.onError(new IntlFormatError("Error formatting number.", config.locale, e2));
}
return String(value);
}
function formatNumberToParts(config, getNumberFormat, value, options) {
if (options === void 0) {
options = {};
}
try {
return getFormatter(config, getNumberFormat, options).formatToParts(value);
} catch (e2) {
config.onError(new IntlFormatError("Error formatting number.", config.locale, e2));
}
return [];
}
function messagesContainString(messages2) {
var firstMessage = messages2 ? messages2[Object.keys(messages2)[0]] : void 0;
return typeof firstMessage === "string";
}
function verifyConfigMessages(config) {
if (config.onWarn && config.defaultRichTextElements && messagesContainString(config.messages || {})) {
config.onWarn('[@formatjs/intl] "defaultRichTextElements" was specified but "message" was not pre-compiled. \nPlease consider using "@formatjs/cli" to pre-compile your messages for performance.\nFor more details see https://formatjs.io/docs/getting-started/message-distribution');
}
}
function createIntl$1(config, cache) {
var formatters = createFormatters(cache);
var resolvedConfig = __assign(__assign({}, DEFAULT_INTL_CONFIG$1), config);
var locale2 = resolvedConfig.locale, defaultLocale = resolvedConfig.defaultLocale, onError = resolvedConfig.onError;
if (!locale2) {
if (onError) {
onError(new InvalidConfigError('"locale" was not configured, using "'.concat(defaultLocale, '" as fallback. See https://formatjs.io/docs/react-intl/api#intlshape for more details')));
}
resolvedConfig.locale = resolvedConfig.defaultLocale || "en";
} else if (!Intl.NumberFormat.supportedLocalesOf(locale2).length && onError) {
onError(new MissingDataError('Missing locale data for locale: "'.concat(locale2, '" in Intl.NumberFormat. Using default locale: "').concat(defaultLocale, '" as fallback. See https://formatjs.io/docs/react-intl#runtime-requirements for more details')));
} else if (!Intl.DateTimeFormat.supportedLocalesOf(locale2).length && onError) {
onError(new MissingDataError('Missing locale data for locale: "'.concat(locale2, '" in Intl.DateTimeFormat. Using default locale: "').concat(defaultLocale, '" as fallback. See https://formatjs.io/docs/react-intl#runtime-requirements for more details')));
}
verifyConfigMessages(resolvedConfig);
return __assign(__assign({}, resolvedConfig), {
formatters,
formatNumber: formatNumber.bind(null, resolvedConfig, formatters.getNumberFormat),
formatNumberToParts: formatNumberToParts.bind(null, resolvedConfig, formatters.getNumberFormat),
formatRelativeTime: formatRelativeTime.bind(null, resolvedConfig, formatters.getRelativeTimeFormat),
formatDate: formatDate.bind(null, resolvedConfig, formatters.getDateTimeFormat),
formatDateToParts: formatDateToParts.bind(null, resolvedConfig, formatters.getDateTimeFormat),
formatTime: formatTime.bind(null, resolvedConfig, formatters.getDateTimeFormat),
formatDateTimeRange: formatDateTimeRange.bind(null, resolvedConfig, formatters.getDateTimeFormat),
formatTimeToParts: formatTimeToParts.bind(null, resolvedConfig, formatters.getDateTimeFormat),
formatPlural: formatPlural.bind(null, resolvedConfig, formatters.getPluralRules),
// @ts-expect-error TODO: will get to this later
formatMessage: formatMessage$1.bind(null, resolvedConfig, formatters),
// @ts-expect-error TODO: will get to this later
$t: formatMessage$1.bind(null, resolvedConfig, formatters),
formatList: formatList.bind(null, resolvedConfig, formatters.getListFormat),
formatListToParts: formatListToParts.bind(null, resolvedConfig, formatters.getListFormat),
formatDisplayName: formatDisplayName.bind(null, resolvedConfig, formatters.getDisplayNames)
});
}
function invariantIntlContext(intl) {
invariant$1(intl, "[React Intl] Could not find required `intl` object. <IntlProvider> needs to exist in the component ancestry.");
}
var DEFAULT_INTL_CONFIG = __assign(__assign({}, DEFAULT_INTL_CONFIG$1), { textComponent: reactExports.Fragment });
function assignUniqueKeysToParts(formatXMLElementFn) {
return function(parts) {
return formatXMLElementFn(reactExports.Children.toArray(parts));
};
}
function shallowEqual(objA, objB) {
if (objA === objB) {
return true;
}
if (!objA || !objB) {
return false;
}
var aKeys = Object.keys(objA);
var bKeys = Object.keys(objB);
var len2 = aKeys.length;
if (bKeys.length !== len2) {
return false;
}
for (var i = 0; i < len2; i++) {
var key = aKeys[i];
if (objA[key] !== objB[key] || !Object.prototype.hasOwnProperty.call(objB, key)) {
return false;
}
}
return true;
}
var reactIs$1 = { exports: {} };
var reactIs_production_min = {};
/** @license React v16.13.1
* react-is.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
var b = "function" === typeof Symbol && Symbol.for, c = b ? Symbol.for("react.element") : 60103, d = b ? Symbol.for("react.portal") : 60106, e = b ? Symbol.for("react.fragment") : 60107, f = b ? Symbol.for("react.strict_mode") : 60108, g = b ? Symbol.for("react.profiler") : 60114, h = b ? Symbol.for("react.provider") : 60109, k = b ? Symbol.for("react.context") : 60110, l = b ? Symbol.for("react.async_mode") : 60111, m = b ? Symbol.for("react.concurrent_mode") : 60111, n = b ? Symbol.for("react.forward_ref") : 60112, p = b ? Symbol.for("react.suspense") : 60113, q = b ? Symbol.for("react.suspense_list") : 60120, r = b ? Symbol.for("react.memo") : 60115, t = b ? Symbol.for("react.lazy") : 60116, v = b ? Symbol.for("react.block") : 60121, w = b ? Symbol.for("react.fundamental") : 60117, x = b ? Symbol.for("react.responder") : 60118, y = b ? Symbol.for("react.scope") : 60119;
function z(a) {
if ("object" === typeof a && null !== a) {
var u2 = a.$$typeof;
switch (u2) {
case c:
switch (a = a.type, a) {
case l:
case m:
case e:
case g:
case f:
case p:
return a;
default:
switch (a = a && a.$$typeof, a) {
case k:
case n:
case t:
case r:
case h:
return a;
default:
return u2;
}
}
case d:
return u2;
}
}
}
function A(a) {
return z(a) === m;
}
reactIs_production_min.AsyncMode = l;
reactIs_production_min.ConcurrentMode = m;
reactIs_production_min.ContextConsumer = k;
reactIs_production_min.ContextProvider = h;
reactIs_production_min.Element = c;
reactIs_production_min.ForwardRef = n;
reactIs_production_min.Fragment = e;
reactIs_production_min.Lazy = t;
reactIs_production_min.Memo = r;
reactIs_production_min.Portal = d;
reactIs_production_min.Profiler = g;
reactIs_production_min.StrictMode = f;
reactIs_production_min.Suspense = p;
reactIs_production_min.isAsyncMode = function(a) {
return A(a) || z(a) === l;
};
reactIs_production_min.isConcurrentMode = A;
reactIs_production_min.isContextConsumer = function(a) {
return z(a) === k;
};
reactIs_production_min.isContextProvider = function(a) {
return z(a) === h;
};
reactIs_production_min.isElement = function(a) {
return "object" === typeof a && null !== a && a.$$typeof === c;
};
reactIs_production_min.isForwardRef = function(a) {
return z(a) === n;
};
reactIs_production_min.isFragment = function(a) {
return z(a) === e;
};
reactIs_production_min.isLazy = function(a) {
return z(a) === t;
};
reactIs_production_min.isMemo = function(a) {
return z(a) === r;
};
reactIs_production_min.isPortal = function(a) {
return z(a) === d;
};
reactIs_production_min.isProfiler = function(a) {
return z(a) === g;
};
reactIs_production_min.isStrictMode = function(a) {
return z(a) === f;
};
reactIs_production_min.isSuspense = function(a) {
return z(a) === p;
};
reactIs_production_min.isValidElementType = function(a) {
return "string" === typeof a || "function" === typeof a || a === e || a === m || a === g || a === f || a === p || a === q || "object" === typeof a && null !== a && (a.$$typeof === t || a.$$typeof === r || a.$$typeof === h || a.$$typeof === k || a.$$typeof === n || a.$$typeof === w || a.$$typeof === x || a.$$typeof === y || a.$$typeof === v);
};
reactIs_production_min.typeOf = z;
{
reactIs$1.exports = reactIs_production_min;
}
var reactIsExports = reactIs$1.exports;
var reactIs = reactIsExports;
var FORWARD_REF_STATICS = {
"$$typeof": true,
render: true,
defaultProps: true,
displayName: true,
propTypes: true
};
var MEMO_STATICS = {
"$$typeof": true,
compare: true,
defaultProps: true,
displayName: true,
propTypes: true,
type: true
};
var TYPE_STATICS = {};
TYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;
TYPE_STATICS[reactIs.Memo] = MEMO_STATICS;
var IntlContext = typeof window !== "undefined" && !window.__REACT_INTL_BYPASS_GLOBAL_CONTEXT__ ? window.__REACT_INTL_CONTEXT__ || (window.__REACT_INTL_CONTEXT__ = reactExports.createContext(null)) : reactExports.createContext(null);
IntlContext.Consumer;
var IntlProvider$1 = IntlContext.Provider;
var Provider = IntlProvider$1;
var Context = IntlContext;
function useIntl() {
var intl = reactExports.useContext(Context);
invariantIntlContext(intl);
return intl;
}
var DisplayName;
(function(DisplayName2) {
DisplayName2["formatDate"] = "FormattedDate";
DisplayName2["formatTime"] = "FormattedTime";
DisplayName2["formatNumber"] = "FormattedNumber";
DisplayName2["formatList"] = "FormattedList";
DisplayName2["formatDisplayName"] = "FormattedDisplayName";
})(DisplayName || (DisplayName = {}));
var DisplayNameParts;
(function(DisplayNameParts2) {
DisplayNameParts2["formatDate"] = "FormattedDateParts";
DisplayNameParts2["formatTime"] = "FormattedTimeParts";
DisplayNameParts2["formatNumber"] = "FormattedNumberParts";
DisplayNameParts2["formatList"] = "FormattedListParts";
})(DisplayNameParts || (DisplayNameParts = {}));
function createFormattedDateTimePartsComponent(name) {
var ComponentParts = function(props) {
var intl = useIntl();
var value = props.value, children = props.children, formatProps = __rest(props, ["value", "children"]);
var date4 = typeof value === "string" ? new Date(value || 0) : value;
var formattedParts = name === "formatDate" ? intl.formatDateToParts(date4, formatProps) : intl.formatTimeToParts(date4, formatProps);
return children(formattedParts);
};
ComponentParts.displayName = DisplayNameParts[name];
return ComponentParts;
}
function createFormattedComponent(name) {
var Component = function(props) {
var intl = useIntl();
var value = props.value, children = props.children, formatProps = __rest(
props,
["value", "children"]
);
var formattedValue = intl[name](value, formatProps);
if (typeof children === "function") {
return children(formattedValue);
}
var Text = intl.textComponent || reactExports.Fragment;
return reactExports.createElement(Text, null, formattedValue);
};
Component.displayName = DisplayName[name];
return Component;
}
function assignUniqueKeysToFormatXMLElementFnArgument(values) {
if (!values) {
return values;
}
return Object.keys(values).reduce(function(acc, k2) {
var v4 = values[k2];
acc[k2] = isFormatXMLElementFn(v4) ? assignUniqueKeysToParts(v4) : v4;
return acc;
}, {});
}
var formatMessage = function(config, formatters, descriptor, rawValues) {
var rest = [];
for (var _i = 4; _i < arguments.length; _i++) {
rest[_i - 4] = arguments[_i];
}
var values = assignUniqueKeysToFormatXMLElementFnArgument(rawValues);
var chunks = formatMessage$1.apply(void 0, __spreadArray([
config,
formatters,
descriptor,
values
], rest, false));
if (Array.isArray(chunks)) {
return reactExports.Children.toArray(chunks);
}
return chunks;
};
var createIntl = function(_a2, cache) {
var rawDefaultRichTextElements = _a2.defaultRichTextElements, config = __rest(_a2, ["defaultRichTextElements"]);
var defaultRichTextElements = assignUniqueKeysToFormatXMLElementFnArgument(rawDefaultRichTextElements);
var coreIntl = createIntl$1(__assign(__assign(__assign({}, DEFAULT_INTL_CONFIG), config), { defaultRichTextElements }), cache);
var resolvedConfig = {
locale: coreIntl.locale,
timeZone: coreIntl.timeZone,
fallbackOnEmptyString: coreIntl.fallbackOnEmptyString,
formats: coreIntl.formats,
defaultLocale: coreIntl.defaultLocale,
defaultFormats: coreIntl.defaultFormats,
messages: coreIntl.messages,
onError: coreIntl.onError,
defaultRichTextElements
};
return __assign(__assign({}, coreIntl), {
formatMessage: formatMessage.bind(
null,
resolvedConfig,
// @ts-expect-error fix this
coreIntl.formatters
),
// @ts-expect-error fix this
$t: formatMessage.bind(null, resolvedConfig, coreIntl.formatters)
});
};
function processIntlConfig(config) {
return {
locale: config.locale,
timeZone: config.timeZone,
fallbackOnEmptyString: config.fallbackOnEmptyString,
formats: config.formats,
textComponent: config.textComponent,
messages: config.messages,
defaultLocale: config.defaultLocale,
defaultFormats: config.defaultFormats,
onError: config.onError,
onWarn: config.onWarn,
wrapRichTextChunksInFragment: config.wrapRichTextChunksInFragment,
defaultRichTextElements: config.defaultRichTextElements
};
}
var IntlProvider = (
/** @class */
function(_super) {
__extends$1(IntlProvider2, _super);
function IntlProvider2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.cache = createIntlCache();
_this.state = {
cache: _this.cache,
intl: createIntl(processIntlConfig(_this.props), _this.cache),
prevConfig: processIntlConfig(_this.props)
};
return _this;
}
IntlProvider2.getDerivedStateFromProps = function(props, _a2) {
var prevConfig = _a2.prevConfig, cache = _a2.cache;
var config = processIntlConfig(props);
if (!shallowEqual(prevConfig, config)) {
return {
intl: createIntl(config, cache),
prevConfig: config
};
}
return null;
};
IntlProvider2.prototype.render = function() {
invariantIntlContext(this.state.intl);
return reactExports.createElement(Provider, { value: this.state.intl }, this.props.children);
};
IntlProvider2.displayName = "IntlProvider";
IntlProvider2.defaultProps = DEFAULT_INTL_CONFIG;
return IntlProvider2;
}(reactExports.PureComponent)
);
function areEqual(prevProps, nextProps) {
var values = prevProps.values, otherProps = __rest(prevProps, ["values"]);
var nextValues = nextProps.values, nextOtherProps = __rest(nextProps, ["values"]);
return shallowEqual(nextValues, values) && shallowEqual(otherProps, nextOtherProps);
}
function FormattedMessage(props) {
var intl = useIntl();
var formatMessage2 = intl.formatMessage, _a2 = intl.textComponent, Text = _a2 === void 0 ? reactExports.Fragment : _a2;
var id2 = props.id, description = props.description, defaultMessage2 = props.defaultMessage, values = props.values, children = props.children, _b2 = props.tagName, Component = _b2 === void 0 ? Text : _b2, ignoreTag = props.ignoreTag;
var descriptor = { id: id2, description, defaultMessage: defaultMessage2 };
var nodes = formatMessage2(descriptor, values, {
ignoreTag
});
if (typeof children === "function") {
return children(Array.isArray(nodes) ? nodes : [nodes]);
}
if (Component) {
return reactExports.createElement(Component, null, reactExports.Children.toArray(nodes));
}
return reactExports.createElement(reactExports.Fragment, null, nodes);
}
FormattedMessage.displayName = "FormattedMessage";
var MemoizedFormattedMessage = reactExports.memo(FormattedMessage, areEqual);
MemoizedFormattedMessage.displayName = "MemoizedFormattedMessage";
createFormattedComponent("formatDate");
createFormattedComponent("formatTime");
createFormattedComponent("formatNumber");
createFormattedComponent("formatList");
createFormattedComponent("formatDisplayName");
createFormattedDateTimePartsComponent("formatDate");
createFormattedDateTimePartsComponent("formatTime");
const isElectron = () => {
return window.electronAPI !== void 0;
};
class ElectronDAL {
cache = /* @__PURE__ */ new Map();
async getData(dataType, params) {
const cacheKey = this.getCacheKey(dataType, params);
if (this.cache.has(cacheKey)) {
return this.cache.get(cacheKey);
}
const data = await this[dataType](params);
this.cache.set(cacheKey, data);
return data;
}
async preloadData(dataTypes) {
await Promise.all(
dataTypes.map((type4) => this.getData(type4, void 0))
);
}
getCacheKey(dataType, params) {
return `${dataType}:${JSON.stringify(params)}`;
}
async getInputPath() {
return await window.electronAPI.getInputPath();
}
async getSummary(params) {
return await window.electronAPI.readJsonFile(params.path);
}
async getEvaluationList(params) {
return await window.electronAPI.readDirectoryDingo(
params.dirPath
);
}
async getEvaluationDetail(params) {
return await window.electronAPI.readJsonlFiles(
params.currentPath,
params.primaryName,
params.secondaryNameList
);
}
}
class WebDAL {
dataSource;
constructor(dataSource) {
this.dataSource = dataSource;
}
async getData(dataType, params) {
return this[dataType](params);
}
async preloadData(dataTypes) {
}
async getInputPath() {
return this.dataSource.inputPath;
}
async getSummary(params) {
return this.dataSource?.data?.summary;
}
async getEvaluationList(params) {
return this.dataSource?.data?.evaluationFileStructure;
}
async getEvaluationDetail(params) {
let res = [];
if (this.dataSource?.data?.evaluationDetailList) {
params.secondaryNameList.forEach((secondaryName) => {
res = res.concat(
this.dataSource?.data?.evaluationDetailList?.[`${params.primaryName + "/" + secondaryName}`]
);
});
}
return res;
}
}
function createDAL(isElectron2, webDataSource) {
if (isElectron2) {
return new ElectronDAL();
} else {
if (!webDataSource) {
throw new Error("Web data source is required for web environment");
}
return new WebDAL(webDataSource);
}
}
const useDALStore = create$3((set2) => ({
dal: null,
initDAL: () => {
const webDataSource = window?.[WEB_DATA_SOURCE];
const dal = createDAL(isElectron(), webDataSource || {});
set2({ dal });
}
}));
var lodash = { exports: {} };
/**
* @license
* Lodash <https://lodash.com/>
* Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
* Released under MIT license <https://lodash.com/license>
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
*/
lodash.exports;
(function(module, exports) {
(function() {
var undefined$1;
var VERSION = "4.17.21";
var LARGE_ARRAY_SIZE = 200;
var CORE_ERROR_TEXT = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.", FUNC_ERROR_TEXT = "Expected a function", INVALID_TEMPL_VAR_ERROR_TEXT = "Invalid `variable` option passed into `_.template`";
var HASH_UNDEFINED = "__lodash_hash_undefined__";
var MAX_MEMOIZE_SIZE = 500;
var PLACEHOLDER = "__lodash_placeholder__";
var CLONE_DEEP_FLAG = 1, CLONE_FLAT_FLAG = 2, CLONE_SYMBOLS_FLAG = 4;
var COMPARE_PARTIAL_FLAG = 1, COMPARE_UNORDERED_FLAG = 2;
var WRAP_BIND_FLAG = 1, WRAP_BIND_KEY_FLAG = 2, WRAP_CURRY_BOUND_FLAG = 4, WRAP_CURRY_FLAG = 8, WRAP_CURRY_RIGHT_FLAG = 16, WRAP_PARTIAL_FLAG = 32, WRAP_PARTIAL_RIGHT_FLAG = 64, WRAP_ARY_FLAG = 128, WRAP_REARG_FLAG = 256, WRAP_FLIP_FLAG = 512;
var DEFAULT_TRUNC_LENGTH = 30, DEFAULT_TRUNC_OMISSION = "...";
var HOT_COUNT = 800, HOT_SPAN = 16;
var LAZY_FILTER_FLAG = 1, LAZY_MAP_FLAG = 2, LAZY_WHILE_FLAG = 3;
var INFINITY = 1 / 0, MAX_SAFE_INTEGER2 = 9007199254740991, MAX_INTEGER = 17976931348623157e292, NAN = 0 / 0;
var MAX_ARRAY_LENGTH = 4294967295, MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;
var wrapFlags = [
["ary", WRAP_ARY_FLAG],
["bind", WRAP_BIND_FLAG],
["bindKey", WRAP_BIND_KEY_FLAG],
["curry", WRAP_CURRY_FLAG],
["curryRight", WRAP_CURRY_RIGHT_FLAG],
["flip", WRAP_FLIP_FLAG],
["partial", WRAP_PARTIAL_FLAG],
["partialRight", WRAP_PARTIAL_RIGHT_FLAG],
["rearg", WRAP_REARG_FLAG]
];
var argsTag = "[object Arguments]", arrayTag = "[object Array]", asyncTag = "[object AsyncFunction]", boolTag = "[object Boolean]", dateTag = "[object Date]", domExcTag = "[object DOMException]", errorTag = "[object Error]", funcTag = "[object Function]", genTag = "[object GeneratorFunction]", mapTag = "[object Map]", numberTag = "[object Number]", nullTag = "[object Null]", objectTag = "[object Object]", promiseTag = "[object Promise]", proxyTag = "[object Proxy]", regexpTag = "[object RegExp]", setTag = "[object Set]", stringTag = "[object String]", symbolTag = "[object Symbol]", undefinedTag = "[object Undefined]", weakMapTag = "[object WeakMap]", weakSetTag = "[object WeakSet]";
var arrayBufferTag = "[object ArrayBuffer]", dataViewTag = "[object DataView]", float32Tag = "[object Float32Array]", float64Tag = "[object Float64Array]", int8Tag = "[object Int8Array]", int16Tag = "[object Int16Array]", int32Tag = "[object Int32Array]", uint8Tag = "[object Uint8Array]", uint8ClampedTag = "[object Uint8ClampedArray]", uint16Tag = "[object Uint16Array]", uint32Tag = "[object Uint32Array]";
var reEmptyStringLeading = /\b__p \+= '';/g, reEmptyStringMiddle = /\b(__p \+=) '' \+/g, reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g;
var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, reUnescapedHtml = /[&<>"']/g, reHasEscapedHtml = RegExp(reEscapedHtml.source), reHasUnescapedHtml = RegExp(reUnescapedHtml.source);
var reEscape = /<%-([\s\S]+?)%>/g, reEvaluate = /<%([\s\S]+?)%>/g, reInterpolate = /<%=([\s\S]+?)%>/g;
var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/, rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, reHasRegExpChar = RegExp(reRegExpChar.source);
var reTrimStart = /^\s+/;
var reWhitespace = /\s/;
var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, reSplitDetails = /,? & /;
var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;
var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/;
var reEscapeChar = /\\(\\)?/g;
var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;
var reFlags = /\w*$/;
var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
var reIsBinary = /^0b[01]+$/i;
var reIsHostCtor = /^\[object .+?Constructor\]$/;
var reIsOctal = /^0o[0-7]+$/i;
var reIsUint = /^(?:0|[1-9]\d*)$/;
var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;
var reNoMatch = /($^)/;
var reUnescapedString = /['\n\r\u2028\u2029\\]/g;
var rsAstralRange = "\\ud800-\\udfff", rsComboMarksRange = "\\u0300-\\u036f", reComboHalfMarksRange = "\\ufe20-\\ufe2f", rsComboSymbolsRange = "\\u20d0-\\u20ff", rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, rsDingbatRange = "\\u2700-\\u27bf", rsLowerRange = "a-z\\xdf-\\xf6\\xf8-\\xff", rsMathOpRange = "\\xac\\xb1\\xd7\\xf7", rsNonCharRange = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf", rsPunctuationRange = "\\u2000-\\u206f", rsSpaceRange = " \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000", rsUpperRange = "A-Z\\xc0-\\xd6\\xd8-\\xde", rsVarRange = "\\ufe0e\\ufe0f", rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;
var rsApos = "['’]", rsAstral = "[" + rsAstralRange + "]", rsBreak = "[" + rsBreakRange + "]", rsCombo = "[" + rsComboRange + "]", rsDigits = "\\d+", rsDingbat = "[" + rsDingbatRange + "]", rsLower = "[" + rsLowerRange + "]", rsMisc = "[^" + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + "]", rsFitz = "\\ud83c[\\udffb-\\udfff]", rsModifier = "(?:" + rsCombo + "|" + rsFitz + ")", rsNonAstral = "[^" + rsAstralRange + "]", rsRegional = "(?:\\ud83c[\\udde6-\\uddff]){2}", rsSurrPair = "[\\ud800-\\udbff][\\udc00-\\udfff]", rsUpper = "[" + rsUpperRange + "]", rsZWJ = "\\u200d";
var rsMiscLower = "(?:" + rsLower + "|" + rsMisc + ")", rsMiscUpper = "(?:" + rsUpper + "|" + rsMisc + ")", rsOptContrLower = "(?:" + rsApos + "(?:d|ll|m|re|s|t|ve))?", rsOptContrUpper = "(?:" + rsApos + "(?:D|LL|M|RE|S|T|VE))?", reOptMod = rsModifier + "?", rsOptVar = "[" + rsVarRange + "]?", rsOptJoin = "(?:" + rsZWJ + "(?:" + [rsNonAstral, rsRegional, rsSurrPair].join("|") + ")" + rsOptVar + reOptMod + ")*", rsOrdLower = "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", rsOrdUpper = "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", rsSeq = rsOptVar + reOptMod + rsOptJoin, rsEmoji = "(?:" + [rsDingbat, rsRegional, rsSurrPair].join("|") + ")" + rsSeq, rsSymbol = "(?:" + [rsNonAstral + rsCombo + "?", rsCombo, rsRegional, rsSurrPair, rsAstral].join("|") + ")";
var reApos = RegExp(rsApos, "g");
var reComboMark = RegExp(rsCombo, "g");
var reUnicode = RegExp(rsFitz + "(?=" + rsFitz + ")|" + rsSymbol + rsSeq, "g");
var reUnicodeWord = RegExp([
rsUpper + "?" + rsLower + "+" + rsOptContrLower + "(?=" + [rsBreak, rsUpper, "$"].join("|") + ")",
rsMiscUpper + "+" + rsOptContrUpper + "(?=" + [rsBreak, rsUpper + rsMiscLower, "$"].join("|") + ")",
rsUpper + "?" + rsMiscLower + "+" + rsOptContrLower,
rsUpper + "+" + rsOptContrUpper,
rsOrdUpper,
rsOrdLower,
rsDigits,
rsEmoji
].join("|"), "g");
var reHasUnicode = RegExp("[" + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + "]");
var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;
var contextProps = [
"Array",
"Buffer",
"DataView",
"Date",
"Error",
"Float32Array",
"Float64Array",
"Function",
"Int8Array",
"Int16Array",
"Int32Array",
"Map",
"Math",
"Object",
"Promise",
"RegExp",
"Set",
"String",
"Symbol",
"TypeError",
"Uint8Array",
"Uint8ClampedArray",
"Uint16Array",
"Uint32Array",
"WeakMap",
"_",
"clearTimeout",
"isFinite",
"parseInt",
"setTimeout"
];
var templateCounter = -1;
var typedArrayTags = {};
typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;
typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;
var cloneableTags = {};
cloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag] = cloneableTags[numberTag] = cloneableTags[objectTag] = cloneableTags[regexpTag] = cloneableTags[setTag] = cloneableTags[stringTag] = cloneableTags[symbolTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
cloneableTags[errorTag] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false;
var deburredLetters = {
// Latin-1 Supplement block.
"À": "A",
"Á": "A",
"Â": "A",
"Ã": "A",
"Ä": "A",
"Å": "A",
"à": "a",
"á": "a",
"â": "a",
"ã": "a",
"ä": "a",
"å": "a",
"Ç": "C",
"ç": "c",
"Ð": "D",
"ð": "d",
"È": "E",
"É": "E",
"Ê": "E",
"Ë": "E",
"è": "e",
"é": "e",
"ê": "e",
"ë": "e",
"Ì": "I",
"Í": "I",
"Î": "I",
"Ï": "I",
"ì": "i",
"í": "i",
"î": "i",
"ï": "i",
"Ñ": "N",
"ñ": "n",
"Ò": "O",
"Ó": "O",
"Ô": "O",
"Õ": "O",
"Ö": "O",
"Ø": "O",
"ò": "o",
"ó": "o",
"ô": "o",
"õ": "o",
"ö": "o",
"ø": "o",
"Ù": "U",
"Ú": "U",
"Û": "U",
"Ü": "U",
"ù": "u",
"ú": "u",
"û": "u",
"ü": "u",
"Ý": "Y",
"ý": "y",
"ÿ": "y",
"Æ": "Ae",
"æ": "ae",
"Þ": "Th",
"þ": "th",
"ß": "ss",
// Latin Extended-A block.
"Ā": "A",
"Ă": "A",
"Ą": "A",
"ā": "a",
"ă": "a",
"ą": "a",
"Ć": "C",
"Ĉ": "C",
"Ċ": "C",
"Č": "C",
"ć": "c",
"ĉ": "c",
"ċ": "c",
"č": "c",
"Ď": "D",
"Đ": "D",
"ď": "d",
"đ": "d",
"Ē": "E",
"Ĕ": "E",
"Ė": "E",
"Ę": "E",
"Ě": "E",
"ē": "e",
"ĕ": "e",
"ė": "e",
"ę": "e",
"ě": "e",
"Ĝ": "G",
"Ğ": "G",
"Ġ": "G",
"Ģ": "G",
"ĝ": "g",
"ğ": "g",
"ġ": "g",
"ģ": "g",
"Ĥ": "H",
"Ħ": "H",
"ĥ": "h",
"ħ": "h",
"Ĩ": "I",
"Ī": "I",
"Ĭ": "I",
"Į": "I",
"İ": "I",
"ĩ": "i",
"ī": "i",
"ĭ": "i",
"į": "i",
"ı": "i",
"Ĵ": "J",
"ĵ": "j",
"Ķ": "K",
"ķ": "k",
"ĸ": "k",
"Ĺ": "L",
"Ļ": "L",
"Ľ": "L",
"Ŀ": "L",
"Ł": "L",
"ĺ": "l",
"ļ": "l",
"ľ": "l",
"ŀ": "l",
"ł": "l",
"Ń": "N",
"Ņ": "N",
"Ň": "N",
"Ŋ": "N",
"ń": "n",
"ņ": "n",
"ň": "n",
"ŋ": "n",
"Ō": "O",
"Ŏ": "O",
"Ő": "O",
"ō": "o",
"ŏ": "o",
"ő": "o",
"Ŕ": "R",
"Ŗ": "R",
"Ř": "R",
"ŕ": "r",
"ŗ": "r",
"ř": "r",
"Ś": "S",
"Ŝ": "S",
"Ş": "S",
"Š": "S",
"ś": "s",
"ŝ": "s",
"ş": "s",
"š": "s",
"Ţ": "T",
"Ť": "T",
"Ŧ": "T",
"ţ": "t",
"ť": "t",
"ŧ": "t",
"Ũ": "U",
"Ū": "U",
"Ŭ": "U",
"Ů": "U",
"Ű": "U",
"Ų": "U",
"ũ": "u",
"ū": "u",
"ŭ": "u",
"ů": "u",
"ű": "u",
"ų": "u",
"Ŵ": "W",
"ŵ": "w",
"Ŷ": "Y",
"ŷ": "y",
"Ÿ": "Y",
"Ź": "Z",
"Ż": "Z",
"Ž": "Z",
"ź": "z",
"ż": "z",
"ž": "z",
"IJ": "IJ",
"ij": "ij",
"Œ": "Oe",
"œ": "oe",
"ʼn": "'n",
"ſ": "s"
};
var htmlEscapes = {
"&": "&",
"<": "<",
">": ">",
'"': """,
"'": "'"
};
var htmlUnescapes = {
"&": "&",
"<": "<",
">": ">",
""": '"',
"'": "'"
};
var stringEscapes = {
"\\": "\\",
"'": "'",
"\n": "n",
"\r": "r",
"\u2028": "u2028",
"\u2029": "u2029"
};
var freeParseFloat = parseFloat, freeParseInt = parseInt;
var freeGlobal = typeof commonjsGlobal == "object" && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;
var freeSelf = typeof self == "object" && self && self.Object === Object && self;
var root = freeGlobal || freeSelf || Function("return this")();
var freeExports = exports && !exports.nodeType && exports;
var freeModule = freeExports && true && module && !module.nodeType && module;
var moduleExports = freeModule && freeModule.exports === freeExports;
var freeProcess = moduleExports && freeGlobal.process;
var nodeUtil = function() {
try {
var types2 = freeModule && freeModule.require && freeModule.require("util").types;
if (types2) {
return types2;
}
return freeProcess && freeProcess.binding && freeProcess.binding("util");
} catch (e2) {
}
}();
var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer, nodeIsDate = nodeUtil && nodeUtil.isDate, nodeIsMap = nodeUtil && nodeUtil.isMap, nodeIsRegExp = nodeUtil && nodeUtil.isRegExp, nodeIsSet = nodeUtil && nodeUtil.isSet, nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
function apply(func, thisArg, args) {
switch (args.length) {
case 0:
return func.call(thisArg);
case 1:
return func.call(thisArg, args[0]);
case 2:
return func.call(thisArg, args[0], args[1]);
case 3:
return func.call(thisArg, args[0], args[1], args[2]);
}
return func.apply(thisArg, args);
}
function arrayAggregator(array4, setter, iteratee, accumulator) {
var index2 = -1, length2 = array4 == null ? 0 : array4.length;
while (++index2 < length2) {
var value = array4[index2];
setter(accumulator, value, iteratee(value), array4);
}
return accumulator;
}
function arrayEach(array4, iteratee) {
var index2 = -1, length2 = array4 == null ? 0 : array4.length;
while (++index2 < length2) {
if (iteratee(array4[index2], index2, array4) === false) {
break;
}
}
return array4;
}
function arrayEachRight(array4, iteratee) {
var length2 = array4 == null ? 0 : array4.length;
while (length2--) {
if (iteratee(array4[length2], length2, array4) === false) {
break;
}
}
return array4;
}
function arrayEvery(array4, predicate) {
var index2 = -1, length2 = array4 == null ? 0 : array4.length;
while (++index2 < length2) {
if (!predicate(array4[index2], index2, array4)) {
return false;
}
}
return true;
}
function arrayFilter(array4, predicate) {
var index2 = -1, length2 = array4 == null ? 0 : array4.length, resIndex = 0, result = [];
while (++index2 < length2) {
var value = array4[index2];
if (predicate(value, index2, array4)) {
result[resIndex++] = value;
}
}
return result;
}
function arrayIncludes(array4, value) {
var length2 = array4 == null ? 0 : array4.length;
return !!length2 && baseIndexOf(array4, value, 0) > -1;
}
function arrayIncludesWith(array4, value, comparator) {
var index2 = -1, length2 = array4 == null ? 0 : array4.length;
while (++index2 < length2) {
if (comparator(value, array4[index2])) {
return true;
}
}
return false;
}
function arrayMap(array4, iteratee) {
var index2 = -1, length2 = array4 == null ? 0 : array4.length, result = Array(length2);
while (++index2 < length2) {
result[index2] = iteratee(array4[index2], index2, array4);
}
return result;
}
function arrayPush(array4, values) {
var index2 = -1, length2 = values.length, offset2 = array4.length;
while (++index2 < length2) {
array4[offset2 + index2] = values[index2];
}
return array4;
}
function arrayReduce(array4, iteratee, accumulator, initAccum) {
var index2 = -1, length2 = array4 == null ? 0 : array4.length;
if (initAccum && length2) {
accumulator = array4[++index2];
}
while (++index2 < length2) {
accumulator = iteratee(accumulator, array4[index2], index2, array4);
}
return accumulator;
}
function arrayReduceRight(array4, iteratee, accumulator, initAccum) {
var length2 = array4 == null ? 0 : array4.length;
if (initAccum && length2) {
accumulator = array4[--length2];
}
while (length2--) {
accumulator = iteratee(accumulator, array4[length2], length2, array4);
}
return accumulator;
}
function arraySome(array4, predicate) {
var index2 = -1, length2 = array4 == null ? 0 : array4.length;
while (++index2 < length2) {
if (predicate(array4[index2], index2, array4)) {
return true;
}
}
return false;
}
var asciiSize = baseProperty("length");
function asciiToArray(string3) {
return string3.split("");
}
function asciiWords(string3) {
return string3.match(reAsciiWord) || [];
}
function baseFindKey(collection, predicate, eachFunc) {
var result;
eachFunc(collection, function(value, key, collection2) {
if (predicate(value, key, collection2)) {
result = key;
return false;
}
});
return result;
}
function baseFindIndex(array4, predicate, fromIndex, fromRight) {
var length2 = array4.length, index2 = fromIndex + (fromRight ? 1 : -1);
while (fromRight ? index2-- : ++index2 < length2) {
if (predicate(array4[index2], index2, array4)) {
return index2;
}
}
return -1;
}
function baseIndexOf(array4, value, fromIndex) {
return value === value ? strictIndexOf(array4, value, fromIndex) : baseFindIndex(array4, baseIsNaN, fromIndex);
}
function baseIndexOfWith(array4, value, fromIndex, comparator) {
var index2 = fromIndex - 1, length2 = array4.length;
while (++index2 < length2) {
if (comparator(array4[index2], value)) {
return index2;
}
}
return -1;
}
function baseIsNaN(value) {
return value !== value;
}
function baseMean(array4, iteratee) {
var length2 = array4 == null ? 0 : array4.length;
return length2 ? baseSum(array4, iteratee) / length2 : NAN;
}
function baseProperty(key) {
return function(object4) {
return object4 == null ? undefined$1 : object4[key];
};
}
function basePropertyOf(object4) {
return function(key) {
return object4 == null ? undefined$1 : object4[key];
};
}
function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
eachFunc(collection, function(value, index2, collection2) {
accumulator = initAccum ? (initAccum = false, value) : iteratee(accumulator, value, index2, collection2);
});
return accumulator;
}
function baseSortBy(array4, comparer) {
var length2 = array4.length;
array4.sort(comparer);
while (length2--) {
array4[length2] = array4[length2].value;
}
return array4;
}
function baseSum(array4, iteratee) {
var result, index2 = -1, length2 = array4.length;
while (++index2 < length2) {
var current = iteratee(array4[index2]);
if (current !== undefined$1) {
result = result === undefined$1 ? current : result + current;
}
}
return result;
}
function baseTimes(n2, iteratee) {
var index2 = -1, result = Array(n2);
while (++index2 < n2) {
result[index2] = iteratee(index2);
}
return result;
}
function baseToPairs(object4, props) {
return arrayMap(props, function(key) {
return [key, object4[key]];
});
}
function baseTrim(string3) {
return string3 ? string3.slice(0, trimmedEndIndex(string3) + 1).replace(reTrimStart, "") : string3;
}
function baseUnary(func) {
return function(value) {
return func(value);
};
}
function baseValues(object4, props) {
return arrayMap(props, function(key) {
return object4[key];
});
}
function cacheHas(cache, key) {
return cache.has(key);
}
function charsStartIndex(strSymbols, chrSymbols) {
var index2 = -1, length2 = strSymbols.length;
while (++index2 < length2 && baseIndexOf(chrSymbols, strSymbols[index2], 0) > -1) {
}
return index2;
}
function charsEndIndex(strSymbols, chrSymbols) {
var index2 = strSymbols.length;
while (index2-- && baseIndexOf(chrSymbols, strSymbols[index2], 0) > -1) {
}
return index2;
}
function countHolders(array4, placeholder) {
var length2 = array4.length, result = 0;
while (length2--) {
if (array4[length2] === placeholder) {
++result;
}
}
return result;
}
var deburrLetter = basePropertyOf(deburredLetters);
var escapeHtmlChar = basePropertyOf(htmlEscapes);
function escapeStringChar(chr) {
return "\\" + stringEscapes[chr];
}
function getValue2(object4, key) {
return object4 == null ? undefined$1 : object4[key];
}
function hasUnicode(string3) {
return reHasUnicode.test(string3);
}
function hasUnicodeWord(string3) {
return reHasUnicodeWord.test(string3);
}
function iteratorToArray(iterator2) {
var data, result = [];
while (!(data = iterator2.next()).done) {
result.push(data.value);
}
return result;
}
function mapToArray(map2) {
var index2 = -1, result = Array(map2.size);
map2.forEach(function(value, key) {
result[++index2] = [key, value];
});
return result;
}
function overArg(func, transform2) {
return function(arg) {
return func(transform2(arg));
};
}
function replaceHolders(array4, placeholder) {
var index2 = -1, length2 = array4.length, resIndex = 0, result = [];
while (++index2 < length2) {
var value = array4[index2];
if (value === placeholder || value === PLACEHOLDER) {
array4[index2] = PLACEHOLDER;
result[resIndex++] = index2;
}
}
return result;
}
function setToArray(set2) {
var index2 = -1, result = Array(set2.size);
set2.forEach(function(value) {
result[++index2] = value;
});
return result;
}
function setToPairs(set2) {
var index2 = -1, result = Array(set2.size);
set2.forEach(function(value) {
result[++index2] = [value, value];
});
return result;
}
function strictIndexOf(array4, value, fromIndex) {
var index2 = fromIndex - 1, length2 = array4.length;
while (++index2 < length2) {
if (array4[index2] === value) {
return index2;
}
}
return -1;
}
function strictLastIndexOf(array4, value, fromIndex) {
var index2 = fromIndex + 1;
while (index2--) {
if (array4[index2] === value) {
return index2;
}
}
return index2;
}
function stringSize(string3) {
return hasUnicode(string3) ? unicodeSize(string3) : asciiSize(string3);
}
function stringToArray(string3) {
return hasUnicode(string3) ? unicodeToArray(string3) : asciiToArray(string3);
}
function trimmedEndIndex(string3) {
var index2 = string3.length;
while (index2-- && reWhitespace.test(string3.charAt(index2))) {
}
return index2;
}
var unescapeHtmlChar = basePropertyOf(htmlUnescapes);
function unicodeSize(string3) {
var result = reUnicode.lastIndex = 0;
while (reUnicode.test(string3)) {
++result;
}
return result;
}
function unicodeToArray(string3) {
return string3.match(reUnicode) || [];
}
function unicodeWords(string3) {
return string3.match(reUnicodeWord) || [];
}
var runInContext = function runInContext2(context) {
context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));
var Array2 = context.Array, Date2 = context.Date, Error2 = context.Error, Function2 = context.Function, Math2 = context.Math, Object2 = context.Object, RegExp2 = context.RegExp, String2 = context.String, TypeError2 = context.TypeError;
var arrayProto2 = Array2.prototype, funcProto = Function2.prototype, objectProto = Object2.prototype;
var coreJsData = context["__core-js_shared__"];
var funcToString = funcProto.toString;
var hasOwnProperty = objectProto.hasOwnProperty;
var idCounter = 0;
var maskSrcKey = function() {
var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || "");
return uid ? "Symbol(src)_1." + uid : "";
}();
var nativeObjectToString = objectProto.toString;
var objectCtorString = funcToString.call(Object2);
var oldDash = root._;
var reIsNative = RegExp2(
"^" + funcToString.call(hasOwnProperty).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"
);
var Buffer2 = moduleExports ? context.Buffer : undefined$1, Symbol2 = context.Symbol, Uint8Array2 = context.Uint8Array, allocUnsafe = Buffer2 ? Buffer2.allocUnsafe : undefined$1, getPrototype = overArg(Object2.getPrototypeOf, Object2), objectCreate = Object2.create, propertyIsEnumerable = objectProto.propertyIsEnumerable, splice = arrayProto2.splice, spreadableSymbol = Symbol2 ? Symbol2.isConcatSpreadable : undefined$1, symIterator = Symbol2 ? Symbol2.iterator : undefined$1, symToStringTag = Symbol2 ? Symbol2.toStringTag : undefined$1;
var defineProperty2 = function() {
try {
var func = getNative(Object2, "defineProperty");
func({}, "", {});
return func;
} catch (e2) {
}
}();
var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout, ctxNow = Date2 && Date2.now !== root.Date.now && Date2.now, ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;
var nativeCeil = Math2.ceil, nativeFloor = Math2.floor, nativeGetSymbols = Object2.getOwnPropertySymbols, nativeIsBuffer = Buffer2 ? Buffer2.isBuffer : undefined$1, nativeIsFinite = context.isFinite, nativeJoin = arrayProto2.join, nativeKeys = overArg(Object2.keys, Object2), nativeMax = Math2.max, nativeMin = Math2.min, nativeNow = Date2.now, nativeParseInt = context.parseInt, nativeRandom = Math2.random, nativeReverse = arrayProto2.reverse;
var DataView2 = getNative(context, "DataView"), Map2 = getNative(context, "Map"), Promise2 = getNative(context, "Promise"), Set2 = getNative(context, "Set"), WeakMap2 = getNative(context, "WeakMap"), nativeCreate = getNative(Object2, "create");
var metaMap = WeakMap2 && new WeakMap2();
var realNames = {};
var dataViewCtorString = toSource(DataView2), mapCtorString = toSource(Map2), promiseCtorString = toSource(Promise2), setCtorString = toSource(Set2), weakMapCtorString = toSource(WeakMap2);
var symbolProto = Symbol2 ? Symbol2.prototype : undefined$1, symbolValueOf = symbolProto ? symbolProto.valueOf : undefined$1, symbolToString = symbolProto ? symbolProto.toString : undefined$1;
function lodash2(value) {
if (isObjectLike(value) && !isArray2(value) && !(value instanceof LazyWrapper)) {
if (value instanceof LodashWrapper) {
return value;
}
if (hasOwnProperty.call(value, "__wrapped__")) {
return wrapperClone(value);
}
}
return new LodashWrapper(value);
}
var baseCreate = /* @__PURE__ */ function() {
function object4() {
}
return function(proto2) {
if (!isObject2(proto2)) {
return {};
}
if (objectCreate) {
return objectCreate(proto2);
}
object4.prototype = proto2;
var result2 = new object4();
object4.prototype = undefined$1;
return result2;
};
}();
function baseLodash() {
}
function LodashWrapper(value, chainAll) {
this.__wrapped__ = value;
this.__actions__ = [];
this.__chain__ = !!chainAll;
this.__index__ = 0;
this.__values__ = undefined$1;
}
lodash2.templateSettings = {
/**
* Used to detect `data` property values to be HTML-escaped.
*
* @memberOf _.templateSettings
* @type {RegExp}
*/
"escape": reEscape,
/**
* Used to detect code to be evaluated.
*
* @memberOf _.templateSettings
* @type {RegExp}
*/
"evaluate": reEvaluate,
/**
* Used to detect `data` property values to inject.
*
* @memberOf _.templateSettings
* @type {RegExp}
*/
"interpolate": reInterpolate,
/**
* Used to reference the data object in the template text.
*
* @memberOf _.templateSettings
* @type {string}
*/
"variable": "",
/**
* Used to import variables into the compiled template.
*
* @memberOf _.templateSettings
* @type {Object}
*/
"imports": {
/**
* A reference to the `lodash` function.
*
* @memberOf _.templateSettings.imports
* @type {Function}
*/
"_": lodash2
}
};
lodash2.prototype = baseLodash.prototype;
lodash2.prototype.constructor = lodash2;
LodashWrapper.prototype = baseCreate(baseLodash.prototype);
LodashWrapper.prototype.constructor = LodashWrapper;
function LazyWrapper(value) {
this.__wrapped__ = value;
this.__actions__ = [];
this.__dir__ = 1;
this.__filtered__ = false;
this.__iteratees__ = [];
this.__takeCount__ = MAX_ARRAY_LENGTH;
this.__views__ = [];
}
function lazyClone() {
var result2 = new LazyWrapper(this.__wrapped__);
result2.__actions__ = copyArray(this.__actions__);
result2.__dir__ = this.__dir__;
result2.__filtered__ = this.__filtered__;
result2.__iteratees__ = copyArray(this.__iteratees__);
result2.__takeCount__ = this.__takeCount__;
result2.__views__ = copyArray(this.__views__);
return result2;
}
function lazyReverse() {
if (this.__filtered__) {
var result2 = new LazyWrapper(this);
result2.__dir__ = -1;
result2.__filtered__ = true;
} else {
result2 = this.clone();
result2.__dir__ *= -1;
}
return result2;
}
function lazyValue() {
var array4 = this.__wrapped__.value(), dir3 = this.__dir__, isArr = isArray2(array4), isRight = dir3 < 0, arrLength = isArr ? array4.length : 0, view = getView(0, arrLength, this.__views__), start2 = view.start, end2 = view.end, length2 = end2 - start2, index2 = isRight ? end2 : start2 - 1, iteratees = this.__iteratees__, iterLength = iteratees.length, resIndex = 0, takeCount = nativeMin(length2, this.__takeCount__);
if (!isArr || !isRight && arrLength == length2 && takeCount == length2) {
return baseWrapperValue(array4, this.__actions__);
}
var result2 = [];
outer:
while (length2-- && resIndex < takeCount) {
index2 += dir3;
var iterIndex = -1, value = array4[index2];
while (++iterIndex < iterLength) {
var data = iteratees[iterIndex], iteratee2 = data.iteratee, type4 = data.type, computed = iteratee2(value);
if (type4 == LAZY_MAP_FLAG) {
value = computed;
} else if (!computed) {
if (type4 == LAZY_FILTER_FLAG) {
continue outer;
} else {
break outer;
}
}
}
result2[resIndex++] = value;
}
return result2;
}
LazyWrapper.prototype = baseCreate(baseLodash.prototype);
LazyWrapper.prototype.constructor = LazyWrapper;
function Hash(entries) {
var index2 = -1, length2 = entries == null ? 0 : entries.length;
this.clear();
while (++index2 < length2) {
var entry = entries[index2];
this.set(entry[0], entry[1]);
}
}
function hashClear() {
this.__data__ = nativeCreate ? nativeCreate(null) : {};
this.size = 0;
}
function hashDelete(key) {
var result2 = this.has(key) && delete this.__data__[key];
this.size -= result2 ? 1 : 0;
return result2;
}
function hashGet(key) {
var data = this.__data__;
if (nativeCreate) {
var result2 = data[key];
return result2 === HASH_UNDEFINED ? undefined$1 : result2;
}
return hasOwnProperty.call(data, key) ? data[key] : undefined$1;
}
function hashHas(key) {
var data = this.__data__;
return nativeCreate ? data[key] !== undefined$1 : hasOwnProperty.call(data, key);
}
function hashSet(key, value) {
var data = this.__data__;
this.size += this.has(key) ? 0 : 1;
data[key] = nativeCreate && value === undefined$1 ? HASH_UNDEFINED : value;
return this;
}
Hash.prototype.clear = hashClear;
Hash.prototype["delete"] = hashDelete;
Hash.prototype.get = hashGet;
Hash.prototype.has = hashHas;
Hash.prototype.set = hashSet;
function ListCache(entries) {
var index2 = -1, length2 = entries == null ? 0 : entries.length;
this.clear();
while (++index2 < length2) {
var entry = entries[index2];
this.set(entry[0], entry[1]);
}
}
function listCacheClear() {
this.__data__ = [];
this.size = 0;
}
function listCacheDelete(key) {
var data = this.__data__, index2 = assocIndexOf(data, key);
if (index2 < 0) {
return false;
}
var lastIndex = data.length - 1;
if (index2 == lastIndex) {
data.pop();
} else {
splice.call(data, index2, 1);
}
--this.size;
return true;
}
function listCacheGet2(key) {
var data = this.__data__, index2 = assocIndexOf(data, key);
return index2 < 0 ? undefined$1 : data[index2][1];
}
function listCacheHas(key) {
return assocIndexOf(this.__data__, key) > -1;
}
function listCacheSet2(key, value) {
var data = this.__data__, index2 = assocIndexOf(data, key);
if (index2 < 0) {
++this.size;
data.push([key, value]);
} else {
data[index2][1] = value;
}
return this;
}
ListCache.prototype.clear = listCacheClear;
ListCache.prototype["delete"] = listCacheDelete;
ListCache.prototype.get = listCacheGet2;
ListCache.prototype.has = listCacheHas;
ListCache.prototype.set = listCacheSet2;
function MapCache(entries) {
var index2 = -1, length2 = entries == null ? 0 : entries.length;
this.clear();
while (++index2 < length2) {
var entry = entries[index2];
this.set(entry[0], entry[1]);
}
}
function mapCacheClear() {
this.size = 0;
this.__data__ = {
"hash": new Hash(),
"map": new (Map2 || ListCache)(),
"string": new Hash()
};
}
function mapCacheDelete(key) {
var result2 = getMapData(this, key)["delete"](key);
this.size -= result2 ? 1 : 0;
return result2;
}
function mapCacheGet(key) {
return getMapData(this, key).get(key);
}
function mapCacheHas(key) {
return getMapData(this, key).has(key);
}
function mapCacheSet(key, value) {
var data = getMapData(this, key), size2 = data.size;
data.set(key, value);
this.size += data.size == size2 ? 0 : 1;
return this;
}
MapCache.prototype.clear = mapCacheClear;
MapCache.prototype["delete"] = mapCacheDelete;
MapCache.prototype.get = mapCacheGet;
MapCache.prototype.has = mapCacheHas;
MapCache.prototype.set = mapCacheSet;
function SetCache(values2) {
var index2 = -1, length2 = values2 == null ? 0 : values2.length;
this.__data__ = new MapCache();
while (++index2 < length2) {
this.add(values2[index2]);
}
}
function setCacheAdd(value) {
this.__data__.set(value, HASH_UNDEFINED);
return this;
}
function setCacheHas(value) {
return this.__data__.has(value);
}
SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
SetCache.prototype.has = setCacheHas;
function Stack(entries) {
var data = this.__data__ = new ListCache(entries);
this.size = data.size;
}
function stackClear() {
this.__data__ = new ListCache();
this.size = 0;
}
function stackDelete(key) {
var data = this.__data__, result2 = data["delete"](key);
this.size = data.size;
return result2;
}
function stackGet(key) {
return this.__data__.get(key);
}
function stackHas(key) {
return this.__data__.has(key);
}
function stackSet(key, value) {
var data = this.__data__;
if (data instanceof ListCache) {
var pairs = data.__data__;
if (!Map2 || pairs.length < LARGE_ARRAY_SIZE - 1) {
pairs.push([key, value]);
this.size = ++data.size;
return this;
}
data = this.__data__ = new MapCache(pairs);
}
data.set(key, value);
this.size = data.size;
return this;
}
Stack.prototype.clear = stackClear;
Stack.prototype["delete"] = stackDelete;
Stack.prototype.get = stackGet;
Stack.prototype.has = stackHas;
Stack.prototype.set = stackSet;
function arrayLikeKeys(value, inherited) {
var isArr = isArray2(value), isArg = !isArr && isArguments(value), isBuff = !isArr && !isArg && isBuffer(value), isType = !isArr && !isArg && !isBuff && isTypedArray2(value), skipIndexes = isArr || isArg || isBuff || isType, result2 = skipIndexes ? baseTimes(value.length, String2) : [], length2 = result2.length;
for (var key in value) {
if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && // Safari 9 has enumerable `arguments.length` in strict mode.
(key == "length" || // Node.js 0.10 has enumerable non-index properties on buffers.
isBuff && (key == "offset" || key == "parent") || // PhantomJS 2 has enumerable non-index properties on typed arrays.
isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || // Skip index properties.
isIndex(key, length2)))) {
result2.push(key);
}
}
return result2;
}
function arraySample(array4) {
var length2 = array4.length;
return length2 ? array4[baseRandom(0, length2 - 1)] : undefined$1;
}
function arraySampleSize(array4, n2) {
return shuffleSelf(copyArray(array4), baseClamp(n2, 0, array4.length));
}
function arrayShuffle(array4) {
return shuffleSelf(copyArray(array4));
}
function assignMergeValue(object4, key, value) {
if (value !== undefined$1 && !eq(object4[key], value) || value === undefined$1 && !(key in object4)) {
baseAssignValue(object4, key, value);
}
}
function assignValue(object4, key, value) {
var objValue = object4[key];
if (!(hasOwnProperty.call(object4, key) && eq(objValue, value)) || value === undefined$1 && !(key in object4)) {
baseAssignValue(object4, key, value);
}
}
function assocIndexOf(array4, key) {
var length2 = array4.length;
while (length2--) {
if (eq(array4[length2][0], key)) {
return length2;
}
}
return -1;
}
function baseAggregator(collection, setter, iteratee2, accumulator) {
baseEach(collection, function(value, key, collection2) {
setter(accumulator, value, iteratee2(value), collection2);
});
return accumulator;
}
function baseAssign(object4, source) {
return object4 && copyObject(source, keys2(source), object4);
}
function baseAssignIn(object4, source) {
return object4 && copyObject(source, keysIn(source), object4);
}
function baseAssignValue(object4, key, value) {
if (key == "__proto__" && defineProperty2) {
defineProperty2(object4, key, {
"configurable": true,
"enumerable": true,
"value": value,
"writable": true
});
} else {
object4[key] = value;
}
}
function baseAt(object4, paths) {
var index2 = -1, length2 = paths.length, result2 = Array2(length2), skip = object4 == null;
while (++index2 < length2) {
result2[index2] = skip ? undefined$1 : get2(object4, paths[index2]);
}
return result2;
}
function baseClamp(number4, lower, upper) {
if (number4 === number4) {
if (upper !== undefined$1) {
number4 = number4 <= upper ? number4 : upper;
}
if (lower !== undefined$1) {
number4 = number4 >= lower ? number4 : lower;
}
}
return number4;
}
function baseClone(value, bitmask, customizer, key, object4, stack) {
var result2, isDeep = bitmask & CLONE_DEEP_FLAG, isFlat = bitmask & CLONE_FLAT_FLAG, isFull = bitmask & CLONE_SYMBOLS_FLAG;
if (customizer) {
result2 = object4 ? customizer(value, key, object4, stack) : customizer(value);
}
if (result2 !== undefined$1) {
return result2;
}
if (!isObject2(value)) {
return value;
}
var isArr = isArray2(value);
if (isArr) {
result2 = initCloneArray(value);
if (!isDeep) {
return copyArray(value, result2);
}
} else {
var tag = getTag(value), isFunc = tag == funcTag || tag == genTag;
if (isBuffer(value)) {
return cloneBuffer(value, isDeep);
}
if (tag == objectTag || tag == argsTag || isFunc && !object4) {
result2 = isFlat || isFunc ? {} : initCloneObject(value);
if (!isDeep) {
return isFlat ? copySymbolsIn(value, baseAssignIn(result2, value)) : copySymbols(value, baseAssign(result2, value));
}
} else {
if (!cloneableTags[tag]) {
return object4 ? value : {};
}
result2 = initCloneByTag(value, tag, isDeep);
}
}
stack || (stack = new Stack());
var stacked = stack.get(value);
if (stacked) {
return stacked;
}
stack.set(value, result2);
if (isSet(value)) {
value.forEach(function(subValue) {
result2.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
});
} else if (isMap(value)) {
value.forEach(function(subValue, key2) {
result2.set(key2, baseClone(subValue, bitmask, customizer, key2, value, stack));
});
}
var keysFunc = isFull ? isFlat ? getAllKeysIn : getAllKeys : isFlat ? keysIn : keys2;
var props = isArr ? undefined$1 : keysFunc(value);
arrayEach(props || value, function(subValue, key2) {
if (props) {
key2 = subValue;
subValue = value[key2];
}
assignValue(result2, key2, baseClone(subValue, bitmask, customizer, key2, value, stack));
});
return result2;
}
function baseConforms(source) {
var props = keys2(source);
return function(object4) {
return baseConformsTo(object4, source, props);
};
}
function baseConformsTo(object4, source, props) {
var length2 = props.length;
if (object4 == null) {
return !length2;
}
object4 = Object2(object4);
while (length2--) {
var key = props[length2], predicate = source[key], value = object4[key];
if (value === undefined$1 && !(key in object4) || !predicate(value)) {
return false;
}
}
return true;
}
function baseDelay(func, wait, args) {
if (typeof func != "function") {
throw new TypeError2(FUNC_ERROR_TEXT);
}
return setTimeout2(function() {
func.apply(undefined$1, args);
}, wait);
}
function baseDifference(array4, values2, iteratee2, comparator) {
var index2 = -1, includes3 = arrayIncludes, isCommon = true, length2 = array4.length, result2 = [], valuesLength = values2.length;
if (!length2) {
return result2;
}
if (iteratee2) {
values2 = arrayMap(values2, baseUnary(iteratee2));
}
if (comparator) {
includes3 = arrayIncludesWith;
isCommon = false;
} else if (values2.length >= LARGE_ARRAY_SIZE) {
includes3 = cacheHas;
isCommon = false;
values2 = new SetCache(values2);
}
outer:
while (++index2 < length2) {
var value = array4[index2], computed = iteratee2 == null ? value : iteratee2(value);
value = comparator || value !== 0 ? value : 0;
if (isCommon && computed === computed) {
var valuesIndex = valuesLength;
while (valuesIndex--) {
if (values2[valuesIndex] === computed) {
continue outer;
}
}
result2.push(value);
} else if (!includes3(values2, computed, comparator)) {
result2.push(value);
}
}
return result2;
}
var baseEach = createBaseEach(baseForOwn);
var baseEachRight = createBaseEach(baseForOwnRight, true);
function baseEvery(collection, predicate) {
var result2 = true;
baseEach(collection, function(value, index2, collection2) {
result2 = !!predicate(value, index2, collection2);
return result2;
});
return result2;
}
function baseExtremum(array4, iteratee2, comparator) {
var index2 = -1, length2 = array4.length;
while (++index2 < length2) {
var value = array4[index2], current = iteratee2(value);
if (current != null && (computed === undefined$1 ? current === current && !isSymbol(current) : comparator(current, computed))) {
var computed = current, result2 = value;
}
}
return result2;
}
function baseFill(array4, value, start2, end2) {
var length2 = array4.length;
start2 = toInteger(start2);
if (start2 < 0) {
start2 = -start2 > length2 ? 0 : length2 + start2;
}
end2 = end2 === undefined$1 || end2 > length2 ? length2 : toInteger(end2);
if (end2 < 0) {
end2 += length2;
}
end2 = start2 > end2 ? 0 : toLength(end2);
while (start2 < end2) {
array4[start2++] = value;
}
return array4;
}
function baseFilter(collection, predicate) {
var result2 = [];
baseEach(collection, function(value, index2, collection2) {
if (predicate(value, index2, collection2)) {
result2.push(value);
}
});
return result2;
}
function baseFlatten(array4, depth, predicate, isStrict, result2) {
var index2 = -1, length2 = array4.length;
predicate || (predicate = isFlattenable);
result2 || (result2 = []);
while (++index2 < length2) {
var value = array4[index2];
if (depth > 0 && predicate(value)) {
if (depth > 1) {
baseFlatten(value, depth - 1, predicate, isStrict, result2);
} else {
arrayPush(result2, value);
}
} else if (!isStrict) {
result2[result2.length] = value;
}
}
return result2;
}
var baseFor = createBaseFor();
var baseForRight = createBaseFor(true);
function baseForOwn(object4, iteratee2) {
return object4 && baseFor(object4, iteratee2, keys2);
}
function baseForOwnRight(object4, iteratee2) {
return object4 && baseForRight(object4, iteratee2, keys2);
}
function baseFunctions(object4, props) {
return arrayFilter(props, function(key) {
return isFunction2(object4[key]);
});
}
function baseGet(object4, path) {
path = castPath(path, object4);
var index2 = 0, length2 = path.length;
while (object4 != null && index2 < length2) {
object4 = object4[toKey(path[index2++])];
}
return index2 && index2 == length2 ? object4 : undefined$1;
}
function baseGetAllKeys(object4, keysFunc, symbolsFunc) {
var result2 = keysFunc(object4);
return isArray2(object4) ? result2 : arrayPush(result2, symbolsFunc(object4));
}
function baseGetTag(value) {
if (value == null) {
return value === undefined$1 ? undefinedTag : nullTag;
}
return symToStringTag && symToStringTag in Object2(value) ? getRawTag(value) : objectToString(value);
}
function baseGt(value, other) {
return value > other;
}
function baseHas(object4, key) {
return object4 != null && hasOwnProperty.call(object4, key);
}
function baseHasIn(object4, key) {
return object4 != null && key in Object2(object4);
}
function baseInRange(number4, start2, end2) {
return number4 >= nativeMin(start2, end2) && number4 < nativeMax(start2, end2);
}
function baseIntersection(arrays, iteratee2, comparator) {
var includes3 = comparator ? arrayIncludesWith : arrayIncludes, length2 = arrays[0].length, othLength = arrays.length, othIndex = othLength, caches = Array2(othLength), maxLength = Infinity, result2 = [];
while (othIndex--) {
var array4 = arrays[othIndex];
if (othIndex && iteratee2) {
array4 = arrayMap(array4, baseUnary(iteratee2));
}
maxLength = nativeMin(array4.length, maxLength);
caches[othIndex] = !comparator && (iteratee2 || length2 >= 120 && array4.length >= 120) ? new SetCache(othIndex && array4) : undefined$1;
}
array4 = arrays[0];
var index2 = -1, seen = caches[0];
outer:
while (++index2 < length2 && result2.length < maxLength) {
var value = array4[index2], computed = iteratee2 ? iteratee2(value) : value;
value = comparator || value !== 0 ? value : 0;
if (!(seen ? cacheHas(seen, computed) : includes3(result2, computed, comparator))) {
othIndex = othLength;
while (--othIndex) {
var cache = caches[othIndex];
if (!(cache ? cacheHas(cache, computed) : includes3(arrays[othIndex], computed, comparator))) {
continue outer;
}
}
if (seen) {
seen.push(computed);
}
result2.push(value);
}
}
return result2;
}
function baseInverter(object4, setter, iteratee2, accumulator) {
baseForOwn(object4, function(value, key, object5) {
setter(accumulator, iteratee2(value), key, object5);
});
return accumulator;
}
function baseInvoke(object4, path, args) {
path = castPath(path, object4);
object4 = parent(object4, path);
var func = object4 == null ? object4 : object4[toKey(last(path))];
return func == null ? undefined$1 : apply(func, object4, args);
}
function baseIsArguments(value) {
return isObjectLike(value) && baseGetTag(value) == argsTag;
}
function baseIsArrayBuffer(value) {
return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;
}
function baseIsDate(value) {
return isObjectLike(value) && baseGetTag(value) == dateTag;
}
function baseIsEqual(value, other, bitmask, customizer, stack) {
if (value === other) {
return true;
}
if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) {
return value !== value && other !== other;
}
return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
}
function baseIsEqualDeep(object4, other, bitmask, customizer, equalFunc, stack) {
var objIsArr = isArray2(object4), othIsArr = isArray2(other), objTag = objIsArr ? arrayTag : getTag(object4), othTag = othIsArr ? arrayTag : getTag(other);
objTag = objTag == argsTag ? objectTag : objTag;
othTag = othTag == argsTag ? objectTag : othTag;
var objIsObj = objTag == objectTag, othIsObj = othTag == objectTag, isSameTag = objTag == othTag;
if (isSameTag && isBuffer(object4)) {
if (!isBuffer(other)) {
return false;
}
objIsArr = true;
objIsObj = false;
}
if (isSameTag && !objIsObj) {
stack || (stack = new Stack());
return objIsArr || isTypedArray2(object4) ? equalArrays(object4, other, bitmask, customizer, equalFunc, stack) : equalByTag(object4, other, objTag, bitmask, customizer, equalFunc, stack);
}
if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
var objIsWrapped = objIsObj && hasOwnProperty.call(object4, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty.call(other, "__wrapped__");
if (objIsWrapped || othIsWrapped) {
var objUnwrapped = objIsWrapped ? object4.value() : object4, othUnwrapped = othIsWrapped ? other.value() : other;
stack || (stack = new Stack());
return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
}
}
if (!isSameTag) {
return false;
}
stack || (stack = new Stack());
return equalObjects(object4, other, bitmask, customizer, equalFunc, stack);
}
function baseIsMap(value) {
return isObjectLike(value) && getTag(value) == mapTag;
}
function baseIsMatch(object4, source, matchData, customizer) {
var index2 = matchData.length, length2 = index2, noCustomizer = !customizer;
if (object4 == null) {
return !length2;
}
object4 = Object2(object4);
while (index2--) {
var data = matchData[index2];
if (noCustomizer && data[2] ? data[1] !== object4[data[0]] : !(data[0] in object4)) {
return false;
}
}
while (++index2 < length2) {
data = matchData[index2];
var key = data[0], objValue = object4[key], srcValue = data[1];
if (noCustomizer && data[2]) {
if (objValue === undefined$1 && !(key in object4)) {
return false;
}
} else {
var stack = new Stack();
if (customizer) {
var result2 = customizer(objValue, srcValue, key, object4, source, stack);
}
if (!(result2 === undefined$1 ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) : result2)) {
return false;
}
}
}
return true;
}
function baseIsNative(value) {
if (!isObject2(value) || isMasked(value)) {
return false;
}
var pattern4 = isFunction2(value) ? reIsNative : reIsHostCtor;
return pattern4.test(toSource(value));
}
function baseIsRegExp(value) {
return isObjectLike(value) && baseGetTag(value) == regexpTag;
}
function baseIsSet(value) {
return isObjectLike(value) && getTag(value) == setTag;
}
function baseIsTypedArray(value) {
return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
}
function baseIteratee(value) {
if (typeof value == "function") {
return value;
}
if (value == null) {
return identity2;
}
if (typeof value == "object") {
return isArray2(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value);
}
return property(value);
}
function baseKeys(object4) {
if (!isPrototype(object4)) {
return nativeKeys(object4);
}
var result2 = [];
for (var key in Object2(object4)) {
if (hasOwnProperty.call(object4, key) && key != "constructor") {
result2.push(key);
}
}
return result2;
}
function baseKeysIn(object4) {
if (!isObject2(object4)) {
return nativeKeysIn(object4);
}
var isProto = isPrototype(object4), result2 = [];
for (var key in object4) {
if (!(key == "constructor" && (isProto || !hasOwnProperty.call(object4, key)))) {
result2.push(key);
}
}
return result2;
}
function baseLt(value, other) {
return value < other;
}
function baseMap(collection, iteratee2) {
var index2 = -1, result2 = isArrayLike2(collection) ? Array2(collection.length) : [];
baseEach(collection, function(value, key, collection2) {
result2[++index2] = iteratee2(value, key, collection2);
});
return result2;
}
function baseMatches(source) {
var matchData = getMatchData(source);
if (matchData.length == 1 && matchData[0][2]) {
return matchesStrictComparable(matchData[0][0], matchData[0][1]);
}
return function(object4) {
return object4 === source || baseIsMatch(object4, source, matchData);
};
}
function baseMatchesProperty(path, srcValue) {
if (isKey(path) && isStrictComparable(srcValue)) {
return matchesStrictComparable(toKey(path), srcValue);
}
return function(object4) {
var objValue = get2(object4, path);
return objValue === undefined$1 && objValue === srcValue ? hasIn(object4, path) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
};
}
function baseMerge(object4, source, srcIndex, customizer, stack) {
if (object4 === source) {
return;
}
baseFor(source, function(srcValue, key) {
stack || (stack = new Stack());
if (isObject2(srcValue)) {
baseMergeDeep(object4, source, key, srcIndex, baseMerge, customizer, stack);
} else {
var newValue = customizer ? customizer(safeGet(object4, key), srcValue, key + "", object4, source, stack) : undefined$1;
if (newValue === undefined$1) {
newValue = srcValue;
}
assignMergeValue(object4, key, newValue);
}
}, keysIn);
}
function baseMergeDeep(object4, source, key, srcIndex, mergeFunc, customizer, stack) {
var objValue = safeGet(object4, key), srcValue = safeGet(source, key), stacked = stack.get(srcValue);
if (stacked) {
assignMergeValue(object4, key, stacked);
return;
}
var newValue = customizer ? customizer(objValue, srcValue, key + "", object4, source, stack) : undefined$1;
var isCommon = newValue === undefined$1;
if (isCommon) {
var isArr = isArray2(srcValue), isBuff = !isArr && isBuffer(srcValue), isTyped = !isArr && !isBuff && isTypedArray2(srcValue);
newValue = srcValue;
if (isArr || isBuff || isTyped) {
if (isArray2(objValue)) {
newValue = objValue;
} else if (isArrayLikeObject(objValue)) {
newValue = copyArray(objValue);
} else if (isBuff) {
isCommon = false;
newValue = cloneBuffer(srcValue, true);
} else if (isTyped) {
isCommon = false;
newValue = cloneTypedArray(srcValue, true);
} else {
newValue = [];
}
} else if (isPlainObject(srcValue) || isArguments(srcValue)) {
newValue = objValue;
if (isArguments(objValue)) {
newValue = toPlainObject(objValue);
} else if (!isObject2(objValue) || isFunction2(objValue)) {
newValue = initCloneObject(srcValue);
}
} else {
isCommon = false;
}
}
if (isCommon) {
stack.set(srcValue, newValue);
mergeFunc(newValue, srcValue, srcIndex, customizer, stack);
stack["delete"](srcValue);
}
assignMergeValue(object4, key, newValue);
}
function baseNth(array4, n2) {
var length2 = array4.length;
if (!length2) {
return;
}
n2 += n2 < 0 ? length2 : 0;
return isIndex(n2, length2) ? array4[n2] : undefined$1;
}
function baseOrderBy(collection, iteratees, orders) {
if (iteratees.length) {
iteratees = arrayMap(iteratees, function(iteratee2) {
if (isArray2(iteratee2)) {
return function(value) {
return baseGet(value, iteratee2.length === 1 ? iteratee2[0] : iteratee2);
};
}
return iteratee2;
});
} else {
iteratees = [identity2];
}
var index2 = -1;
iteratees = arrayMap(iteratees, baseUnary(getIteratee()));
var result2 = baseMap(collection, function(value, key, collection2) {
var criteria = arrayMap(iteratees, function(iteratee2) {
return iteratee2(value);
});
return { "criteria": criteria, "index": ++index2, "value": value };
});
return baseSortBy(result2, function(object4, other) {
return compareMultiple(object4, other, orders);
});
}
function basePick(object4, paths) {
return basePickBy(object4, paths, function(value, path) {
return hasIn(object4, path);
});
}
function basePickBy(object4, paths, predicate) {
var index2 = -1, length2 = paths.length, result2 = {};
while (++index2 < length2) {
var path = paths[index2], value = baseGet(object4, path);
if (predicate(value, path)) {
baseSet(result2, castPath(path, object4), value);
}
}
return result2;
}
function basePropertyDeep(path) {
return function(object4) {
return baseGet(object4, path);
};
}
function basePullAll(array4, values2, iteratee2, comparator) {
var indexOf3 = comparator ? baseIndexOfWith : baseIndexOf, index2 = -1, length2 = values2.length, seen = array4;
if (array4 === values2) {
values2 = copyArray(values2);
}
if (iteratee2) {
seen = arrayMap(array4, baseUnary(iteratee2));
}
while (++index2 < length2) {
var fromIndex = 0, value = values2[index2], computed = iteratee2 ? iteratee2(value) : value;
while ((fromIndex = indexOf3(seen, computed, fromIndex, comparator)) > -1) {
if (seen !== array4) {
splice.call(seen, fromIndex, 1);
}
splice.call(array4, fromIndex, 1);
}
}
return array4;
}
function basePullAt(array4, indexes) {
var length2 = array4 ? indexes.length : 0, lastIndex = length2 - 1;
while (length2--) {
var index2 = indexes[length2];
if (length2 == lastIndex || index2 !== previous) {
var previous = index2;
if (isIndex(index2)) {
splice.call(array4, index2, 1);
} else {
baseUnset(array4, index2);
}
}
}
return array4;
}
function baseRandom(lower, upper) {
return lower + nativeFloor(nativeRandom() * (upper - lower + 1));
}
function baseRange(start2, end2, step, fromRight) {
var index2 = -1, length2 = nativeMax(nativeCeil((end2 - start2) / (step || 1)), 0), result2 = Array2(length2);
while (length2--) {
result2[fromRight ? length2 : ++index2] = start2;
start2 += step;
}
return result2;
}
function baseRepeat(string3, n2) {
var result2 = "";
if (!string3 || n2 < 1 || n2 > MAX_SAFE_INTEGER2) {
return result2;
}
do {
if (n2 % 2) {
result2 += string3;
}
n2 = nativeFloor(n2 / 2);
if (n2) {
string3 += string3;
}
} while (n2);
return result2;
}
function baseRest(func, start2) {
return setToString(overRest(func, start2, identity2), func + "");
}
function baseSample(collection) {
return arraySample(values(collection));
}
function baseSampleSize(collection, n2) {
var array4 = values(collection);
return shuffleSelf(array4, baseClamp(n2, 0, array4.length));
}
function baseSet(object4, path, value, customizer) {
if (!isObject2(object4)) {
return object4;
}
path = castPath(path, object4);
var index2 = -1, length2 = path.length, lastIndex = length2 - 1, nested = object4;
while (nested != null && ++index2 < length2) {
var key = toKey(path[index2]), newValue = value;
if (key === "__proto__" || key === "constructor" || key === "prototype") {
return object4;
}
if (index2 != lastIndex) {
var objValue = nested[key];
newValue = customizer ? customizer(objValue, key, nested) : undefined$1;
if (newValue === undefined$1) {
newValue = isObject2(objValue) ? objValue : isIndex(path[index2 + 1]) ? [] : {};
}
}
assignValue(nested, key, newValue);
nested = nested[key];
}
return object4;
}
var baseSetData = !metaMap ? identity2 : function(func, data) {
metaMap.set(func, data);
return func;
};
var baseSetToString = !defineProperty2 ? identity2 : function(func, string3) {
return defineProperty2(func, "toString", {
"configurable": true,
"enumerable": false,
"value": constant2(string3),
"writable": true
});
};
function baseShuffle(collection) {
return shuffleSelf(values(collection));
}
function baseSlice(array4, start2, end2) {
var index2 = -1, length2 = array4.length;
if (start2 < 0) {
start2 = -start2 > length2 ? 0 : length2 + start2;
}
end2 = end2 > length2 ? length2 : end2;
if (end2 < 0) {
end2 += length2;
}
length2 = start2 > end2 ? 0 : end2 - start2 >>> 0;
start2 >>>= 0;
var result2 = Array2(length2);
while (++index2 < length2) {
result2[index2] = array4[index2 + start2];
}
return result2;
}
function baseSome(collection, predicate) {
var result2;
baseEach(collection, function(value, index2, collection2) {
result2 = predicate(value, index2, collection2);
return !result2;
});
return !!result2;
}
function baseSortedIndex(array4, value, retHighest) {
var low = 0, high = array4 == null ? low : array4.length;
if (typeof value == "number" && value === value && high <= HALF_MAX_ARRAY_LENGTH) {
while (low < high) {
var mid = low + high >>> 1, computed = array4[mid];
if (computed !== null && !isSymbol(computed) && (retHighest ? computed <= value : computed < value)) {
low = mid + 1;
} else {
high = mid;
}
}
return high;
}
return baseSortedIndexBy(array4, value, identity2, retHighest);
}
function baseSortedIndexBy(array4, value, iteratee2, retHighest) {
var low = 0, high = array4 == null ? 0 : array4.length;
if (high === 0) {
return 0;
}
value = iteratee2(value);
var valIsNaN = value !== value, valIsNull = value === null, valIsSymbol = isSymbol(value), valIsUndefined = value === undefined$1;
while (low < high) {
var mid = nativeFloor((low + high) / 2), computed = iteratee2(array4[mid]), othIsDefined = computed !== undefined$1, othIsNull = computed === null, othIsReflexive = computed === computed, othIsSymbol = isSymbol(computed);
if (valIsNaN) {
var setLow = retHighest || othIsReflexive;
} else if (valIsUndefined) {
setLow = othIsReflexive && (retHighest || othIsDefined);
} else if (valIsNull) {
setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);
} else if (valIsSymbol) {
setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);
} else if (othIsNull || othIsSymbol) {
setLow = false;
} else {
setLow = retHighest ? computed <= value : computed < value;
}
if (setLow) {
low = mid + 1;
} else {
high = mid;
}
}
return nativeMin(high, MAX_ARRAY_INDEX);
}
function baseSortedUniq(array4, iteratee2) {
var index2 = -1, length2 = array4.length, resIndex = 0, result2 = [];
while (++index2 < length2) {
var value = array4[index2], computed = iteratee2 ? iteratee2(value) : value;
if (!index2 || !eq(computed, seen)) {
var seen = computed;
result2[resIndex++] = value === 0 ? 0 : value;
}
}
return result2;
}
function baseToNumber(value) {
if (typeof value == "number") {
return value;
}
if (isSymbol(value)) {
return NAN;
}
return +value;
}
function baseToString(value) {
if (typeof value == "string") {
return value;
}
if (isArray2(value)) {
return arrayMap(value, baseToString) + "";
}
if (isSymbol(value)) {
return symbolToString ? symbolToString.call(value) : "";
}
var result2 = value + "";
return result2 == "0" && 1 / value == -INFINITY ? "-0" : result2;
}
function baseUniq(array4, iteratee2, comparator) {
var index2 = -1, includes3 = arrayIncludes, length2 = array4.length, isCommon = true, result2 = [], seen = result2;
if (comparator) {
isCommon = false;
includes3 = arrayIncludesWith;
} else if (length2 >= LARGE_ARRAY_SIZE) {
var set3 = iteratee2 ? null : createSet(array4);
if (set3) {
return setToArray(set3);
}
isCommon = false;
includes3 = cacheHas;
seen = new SetCache();
} else {
seen = iteratee2 ? [] : result2;
}
outer:
while (++index2 < length2) {
var value = array4[index2], computed = iteratee2 ? iteratee2(value) : value;
value = comparator || value !== 0 ? value : 0;
if (isCommon && computed === computed) {
var seenIndex = seen.length;
while (seenIndex--) {
if (seen[seenIndex] === computed) {
continue outer;
}
}
if (iteratee2) {
seen.push(computed);
}
result2.push(value);
} else if (!includes3(seen, computed, comparator)) {
if (seen !== result2) {
seen.push(computed);
}
result2.push(value);
}
}
return result2;
}
function baseUnset(object4, path) {
path = castPath(path, object4);
object4 = parent(object4, path);
return object4 == null || delete object4[toKey(last(path))];
}
function baseUpdate(object4, path, updater, customizer) {
return baseSet(object4, path, updater(baseGet(object4, path)), customizer);
}
function baseWhile(array4, predicate, isDrop, fromRight) {
var length2 = array4.length, index2 = fromRight ? length2 : -1;
while ((fromRight ? index2-- : ++index2 < length2) && predicate(array4[index2], index2, array4)) {
}
return isDrop ? baseSlice(array4, fromRight ? 0 : index2, fromRight ? index2 + 1 : length2) : baseSlice(array4, fromRight ? index2 + 1 : 0, fromRight ? length2 : index2);
}
function baseWrapperValue(value, actions2) {
var result2 = value;
if (result2 instanceof LazyWrapper) {
result2 = result2.value();
}
return arrayReduce(actions2, function(result3, action) {
return action.func.apply(action.thisArg, arrayPush([result3], action.args));
}, result2);
}
function baseXor(arrays, iteratee2, comparator) {
var length2 = arrays.length;
if (length2 < 2) {
return length2 ? baseUniq(arrays[0]) : [];
}
var index2 = -1, result2 = Array2(length2);
while (++index2 < length2) {
var array4 = arrays[index2], othIndex = -1;
while (++othIndex < length2) {
if (othIndex != index2) {
result2[index2] = baseDifference(result2[index2] || array4, arrays[othIndex], iteratee2, comparator);
}
}
}
return baseUniq(baseFlatten(result2, 1), iteratee2, comparator);
}
function baseZipObject(props, values2, assignFunc) {
var index2 = -1, length2 = props.length, valsLength = values2.length, result2 = {};
while (++index2 < length2) {
var value = index2 < valsLength ? values2[index2] : undefined$1;
assignFunc(result2, props[index2], value);
}
return result2;
}
function castArrayLikeObject(value) {
return isArrayLikeObject(value) ? value : [];
}
function castFunction(value) {
return typeof value == "function" ? value : identity2;
}
function castPath(value, object4) {
if (isArray2(value)) {
return value;
}
return isKey(value, object4) ? [value] : stringToPath(toString2(value));
}
var castRest = baseRest;
function castSlice(array4, start2, end2) {
var length2 = array4.length;
end2 = end2 === undefined$1 ? length2 : end2;
return !start2 && end2 >= length2 ? array4 : baseSlice(array4, start2, end2);
}
var clearTimeout2 = ctxClearTimeout || function(id2) {
return root.clearTimeout(id2);
};
function cloneBuffer(buffer, isDeep) {
if (isDeep) {
return buffer.slice();
}
var length2 = buffer.length, result2 = allocUnsafe ? allocUnsafe(length2) : new buffer.constructor(length2);
buffer.copy(result2);
return result2;
}
function cloneArrayBuffer(arrayBuffer) {
var result2 = new arrayBuffer.constructor(arrayBuffer.byteLength);
new Uint8Array2(result2).set(new Uint8Array2(arrayBuffer));
return result2;
}
function cloneDataView(dataView, isDeep) {
var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
}
function cloneRegExp(regexp4) {
var result2 = new regexp4.constructor(regexp4.source, reFlags.exec(regexp4));
result2.lastIndex = regexp4.lastIndex;
return result2;
}
function cloneSymbol(symbol) {
return symbolValueOf ? Object2(symbolValueOf.call(symbol)) : {};
}
function cloneTypedArray(typedArray, isDeep) {
var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
}
function compareAscending(value, other) {
if (value !== other) {
var valIsDefined = value !== undefined$1, valIsNull = value === null, valIsReflexive = value === value, valIsSymbol = isSymbol(value);
var othIsDefined = other !== undefined$1, othIsNull = other === null, othIsReflexive = other === other, othIsSymbol = isSymbol(other);
if (!othIsNull && !othIsSymbol && !valIsSymbol && value > other || valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol || valIsNull && othIsDefined && othIsReflexive || !valIsDefined && othIsReflexive || !valIsReflexive) {
return 1;
}
if (!valIsNull && !valIsSymbol && !othIsSymbol && value < other || othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol || othIsNull && valIsDefined && valIsReflexive || !othIsDefined && valIsReflexive || !othIsReflexive) {
return -1;
}
}
return 0;
}
function compareMultiple(object4, other, orders) {
var index2 = -1, objCriteria = object4.criteria, othCriteria = other.criteria, length2 = objCriteria.length, ordersLength = orders.length;
while (++index2 < length2) {
var result2 = compareAscending(objCriteria[index2], othCriteria[index2]);
if (result2) {
if (index2 >= ordersLength) {
return result2;
}
var order = orders[index2];
return result2 * (order == "desc" ? -1 : 1);
}
}
return object4.index - other.index;
}
function composeArgs(args, partials, holders, isCurried) {
var argsIndex = -1, argsLength = args.length, holdersLength = holders.length, leftIndex = -1, leftLength = partials.length, rangeLength = nativeMax(argsLength - holdersLength, 0), result2 = Array2(leftLength + rangeLength), isUncurried = !isCurried;
while (++leftIndex < leftLength) {
result2[leftIndex] = partials[leftIndex];
}
while (++argsIndex < holdersLength) {
if (isUncurried || argsIndex < argsLength) {
result2[holders[argsIndex]] = args[argsIndex];
}
}
while (rangeLength--) {
result2[leftIndex++] = args[argsIndex++];
}
return result2;
}
function composeArgsRight(args, partials, holders, isCurried) {
var argsIndex = -1, argsLength = args.length, holdersIndex = -1, holdersLength = holders.length, rightIndex = -1, rightLength = partials.length, rangeLength = nativeMax(argsLength - holdersLength, 0), result2 = Array2(rangeLength + rightLength), isUncurried = !isCurried;
while (++argsIndex < rangeLength) {
result2[argsIndex] = args[argsIndex];
}
var offset2 = argsIndex;
while (++rightIndex < rightLength) {
result2[offset2 + rightIndex] = partials[rightIndex];
}
while (++holdersIndex < holdersLength) {
if (isUncurried || argsIndex < argsLength) {
result2[offset2 + holders[holdersIndex]] = args[argsIndex++];
}
}
return result2;
}
function copyArray(source, array4) {
var index2 = -1, length2 = source.length;
array4 || (array4 = Array2(length2));
while (++index2 < length2) {
array4[index2] = source[index2];
}
return array4;
}
function copyObject(source, props, object4, customizer) {
var isNew = !object4;
object4 || (object4 = {});
var index2 = -1, length2 = props.length;
while (++index2 < length2) {
var key = props[index2];
var newValue = customizer ? customizer(object4[key], source[key], key, object4, source) : undefined$1;
if (newValue === undefined$1) {
newValue = source[key];
}
if (isNew) {
baseAssignValue(object4, key, newValue);
} else {
assignValue(object4, key, newValue);
}
}
return object4;
}
function copySymbols(source, object4) {
return copyObject(source, getSymbols(source), object4);
}
function copySymbolsIn(source, object4) {
return copyObject(source, getSymbolsIn(source), object4);
}
function createAggregator(setter, initializer) {
return function(collection, iteratee2) {
var func = isArray2(collection) ? arrayAggregator : baseAggregator, accumulator = initializer ? initializer() : {};
return func(collection, setter, getIteratee(iteratee2, 2), accumulator);
};
}
function createAssigner(assigner) {
return baseRest(function(object4, sources) {
var index2 = -1, length2 = sources.length, customizer = length2 > 1 ? sources[length2 - 1] : undefined$1, guard = length2 > 2 ? sources[2] : undefined$1;
customizer = assigner.length > 3 && typeof customizer == "function" ? (length2--, customizer) : undefined$1;
if (guard && isIterateeCall(sources[0], sources[1], guard)) {
customizer = length2 < 3 ? undefined$1 : customizer;
length2 = 1;
}
object4 = Object2(object4);
while (++index2 < length2) {
var source = sources[index2];
if (source) {
assigner(object4, source, index2, customizer);
}
}
return object4;
});
}
function createBaseEach(eachFunc, fromRight) {
return function(collection, iteratee2) {
if (collection == null) {
return collection;
}
if (!isArrayLike2(collection)) {
return eachFunc(collection, iteratee2);
}
var length2 = collection.length, index2 = fromRight ? length2 : -1, iterable = Object2(collection);
while (fromRight ? index2-- : ++index2 < length2) {
if (iteratee2(iterable[index2], index2, iterable) === false) {
break;
}
}
return collection;
};
}
function createBaseFor(fromRight) {
return function(object4, iteratee2, keysFunc) {
var index2 = -1, iterable = Object2(object4), props = keysFunc(object4), length2 = props.length;
while (length2--) {
var key = props[fromRight ? length2 : ++index2];
if (iteratee2(iterable[key], key, iterable) === false) {
break;
}
}
return object4;
};
}
function createBind(func, bitmask, thisArg) {
var isBind = bitmask & WRAP_BIND_FLAG, Ctor = createCtor(func);
function wrapper() {
var fn = this && this !== root && this instanceof wrapper ? Ctor : func;
return fn.apply(isBind ? thisArg : this, arguments);
}
return wrapper;
}
function createCaseFirst(methodName) {
return function(string3) {
string3 = toString2(string3);
var strSymbols = hasUnicode(string3) ? stringToArray(string3) : undefined$1;
var chr = strSymbols ? strSymbols[0] : string3.charAt(0);
var trailing = strSymbols ? castSlice(strSymbols, 1).join("") : string3.slice(1);
return chr[methodName]() + trailing;
};
}
function createCompounder(callback) {
return function(string3) {
return arrayReduce(words(deburr(string3).replace(reApos, "")), callback, "");
};
}
function createCtor(Ctor) {
return function() {
var args = arguments;
switch (args.length) {
case 0:
return new Ctor();
case 1:
return new Ctor(args[0]);
case 2:
return new Ctor(args[0], args[1]);
case 3:
return new Ctor(args[0], args[1], args[2]);
case 4:
return new Ctor(args[0], args[1], args[2], args[3]);
case 5:
return new Ctor(args[0], args[1], args[2], args[3], args[4]);
case 6:
return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);
case 7:
return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
}
var thisBinding = baseCreate(Ctor.prototype), result2 = Ctor.apply(thisBinding, args);
return isObject2(result2) ? result2 : thisBinding;
};
}
function createCurry(func, bitmask, arity) {
var Ctor = createCtor(func);
function wrapper() {
var length2 = arguments.length, args = Array2(length2), index2 = length2, placeholder = getHolder(wrapper);
while (index2--) {
args[index2] = arguments[index2];
}
var holders = length2 < 3 && args[0] !== placeholder && args[length2 - 1] !== placeholder ? [] : replaceHolders(args, placeholder);
length2 -= holders.length;
if (length2 < arity) {
return createRecurry(
func,
bitmask,
createHybrid,
wrapper.placeholder,
undefined$1,
args,
holders,
undefined$1,
undefined$1,
arity - length2
);
}
var fn = this && this !== root && this instanceof wrapper ? Ctor : func;
return apply(fn, this, args);
}
return wrapper;
}
function createFind(findIndexFunc) {
return function(collection, predicate, fromIndex) {
var iterable = Object2(collection);
if (!isArrayLike2(collection)) {
var iteratee2 = getIteratee(predicate, 3);
collection = keys2(collection);
predicate = function(key) {
return iteratee2(iterable[key], key, iterable);
};
}
var index2 = findIndexFunc(collection, predicate, fromIndex);
return index2 > -1 ? iterable[iteratee2 ? collection[index2] : index2] : undefined$1;
};
}
function createFlow(fromRight) {
return flatRest(function(funcs) {
var length2 = funcs.length, index2 = length2, prereq = LodashWrapper.prototype.thru;
if (fromRight) {
funcs.reverse();
}
while (index2--) {
var func = funcs[index2];
if (typeof func != "function") {
throw new TypeError2(FUNC_ERROR_TEXT);
}
if (prereq && !wrapper && getFuncName(func) == "wrapper") {
var wrapper = new LodashWrapper([], true);
}
}
index2 = wrapper ? index2 : length2;
while (++index2 < length2) {
func = funcs[index2];
var funcName = getFuncName(func), data = funcName == "wrapper" ? getData(func) : undefined$1;
if (data && isLaziable(data[0]) && data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && !data[4].length && data[9] == 1) {
wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);
} else {
wrapper = func.length == 1 && isLaziable(func) ? wrapper[funcName]() : wrapper.thru(func);
}
}
return function() {
var args = arguments, value = args[0];
if (wrapper && args.length == 1 && isArray2(value)) {
return wrapper.plant(value).value();
}
var index3 = 0, result2 = length2 ? funcs[index3].apply(this, args) : value;
while (++index3 < length2) {
result2 = funcs[index3].call(this, result2);
}
return result2;
};
});
}
function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary2, arity) {
var isAry = bitmask & WRAP_ARY_FLAG, isBind = bitmask & WRAP_BIND_FLAG, isBindKey = bitmask & WRAP_BIND_KEY_FLAG, isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG), isFlip = bitmask & WRAP_FLIP_FLAG, Ctor = isBindKey ? undefined$1 : createCtor(func);
function wrapper() {
var length2 = arguments.length, args = Array2(length2), index2 = length2;
while (index2--) {
args[index2] = arguments[index2];
}
if (isCurried) {
var placeholder = getHolder(wrapper), holdersCount = countHolders(args, placeholder);
}
if (partials) {
args = composeArgs(args, partials, holders, isCurried);
}
if (partialsRight) {
args = composeArgsRight(args, partialsRight, holdersRight, isCurried);
}
length2 -= holdersCount;
if (isCurried && length2 < arity) {
var newHolders = replaceHolders(args, placeholder);
return createRecurry(
func,
bitmask,
createHybrid,
wrapper.placeholder,
thisArg,
args,
newHolders,
argPos,
ary2,
arity - length2
);
}
var thisBinding = isBind ? thisArg : this, fn = isBindKey ? thisBinding[func] : func;
length2 = args.length;
if (argPos) {
args = reorder(args, argPos);
} else if (isFlip && length2 > 1) {
args.reverse();
}
if (isAry && ary2 < length2) {
args.length = ary2;
}
if (this && this !== root && this instanceof wrapper) {
fn = Ctor || createCtor(fn);
}
return fn.apply(thisBinding, args);
}
return wrapper;
}
function createInverter(setter, toIteratee) {
return function(object4, iteratee2) {
return baseInverter(object4, setter, toIteratee(iteratee2), {});
};
}
function createMathOperation(operator, defaultValue) {
return function(value, other) {
var result2;
if (value === undefined$1 && other === undefined$1) {
return defaultValue;
}
if (value !== undefined$1) {
result2 = value;
}
if (other !== undefined$1) {
if (result2 === undefined$1) {
return other;
}
if (typeof value == "string" || typeof other == "string") {
value = baseToString(value);
other = baseToString(other);
} else {
value = baseToNumber(value);
other = baseToNumber(other);
}
result2 = operator(value, other);
}
return result2;
};
}
function createOver(arrayFunc) {
return flatRest(function(iteratees) {
iteratees = arrayMap(iteratees, baseUnary(getIteratee()));
return baseRest(function(args) {
var thisArg = this;
return arrayFunc(iteratees, function(iteratee2) {
return apply(iteratee2, thisArg, args);
});
});
});
}
function createPadding(length2, chars) {
chars = chars === undefined$1 ? " " : baseToString(chars);
var charsLength = chars.length;
if (charsLength < 2) {
return charsLength ? baseRepeat(chars, length2) : chars;
}
var result2 = baseRepeat(chars, nativeCeil(length2 / stringSize(chars)));
return hasUnicode(chars) ? castSlice(stringToArray(result2), 0, length2).join("") : result2.slice(0, length2);
}
function createPartial(func, bitmask, thisArg, partials) {
var isBind = bitmask & WRAP_BIND_FLAG, Ctor = createCtor(func);
function wrapper() {
var argsIndex = -1, argsLength = arguments.length, leftIndex = -1, leftLength = partials.length, args = Array2(leftLength + argsLength), fn = this && this !== root && this instanceof wrapper ? Ctor : func;
while (++leftIndex < leftLength) {
args[leftIndex] = partials[leftIndex];
}
while (argsLength--) {
args[leftIndex++] = arguments[++argsIndex];
}
return apply(fn, isBind ? thisArg : this, args);
}
return wrapper;
}
function createRange(fromRight) {
return function(start2, end2, step) {
if (step && typeof step != "number" && isIterateeCall(start2, end2, step)) {
end2 = step = undefined$1;
}
start2 = toFinite(start2);
if (end2 === undefined$1) {
end2 = start2;
start2 = 0;
} else {
end2 = toFinite(end2);
}
step = step === undefined$1 ? start2 < end2 ? 1 : -1 : toFinite(step);
return baseRange(start2, end2, step, fromRight);
};
}
function createRelationalOperation(operator) {
return function(value, other) {
if (!(typeof value == "string" && typeof other == "string")) {
value = toNumber(value);
other = toNumber(other);
}
return operator(value, other);
};
}
function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary2, arity) {
var isCurry = bitmask & WRAP_CURRY_FLAG, newHolders = isCurry ? holders : undefined$1, newHoldersRight = isCurry ? undefined$1 : holders, newPartials = isCurry ? partials : undefined$1, newPartialsRight = isCurry ? undefined$1 : partials;
bitmask |= isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG;
bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);
if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {
bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);
}
var newData = [
func,
bitmask,
thisArg,
newPartials,
newHolders,
newPartialsRight,
newHoldersRight,
argPos,
ary2,
arity
];
var result2 = wrapFunc.apply(undefined$1, newData);
if (isLaziable(func)) {
setData(result2, newData);
}
result2.placeholder = placeholder;
return setWrapToString(result2, func, bitmask);
}
function createRound(methodName) {
var func = Math2[methodName];
return function(number4, precision) {
number4 = toNumber(number4);
precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);
if (precision && nativeIsFinite(number4)) {
var pair = (toString2(number4) + "e").split("e"), value = func(pair[0] + "e" + (+pair[1] + precision));
pair = (toString2(value) + "e").split("e");
return +(pair[0] + "e" + (+pair[1] - precision));
}
return func(number4);
};
}
var createSet = !(Set2 && 1 / setToArray(new Set2([, -0]))[1] == INFINITY) ? noop3 : function(values2) {
return new Set2(values2);
};
function createToPairs(keysFunc) {
return function(object4) {
var tag = getTag(object4);
if (tag == mapTag) {
return mapToArray(object4);
}
if (tag == setTag) {
return setToPairs(object4);
}
return baseToPairs(object4, keysFunc(object4));
};
}
function createWrap2(func, bitmask, thisArg, partials, holders, argPos, ary2, arity) {
var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;
if (!isBindKey && typeof func != "function") {
throw new TypeError2(FUNC_ERROR_TEXT);
}
var length2 = partials ? partials.length : 0;
if (!length2) {
bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);
partials = holders = undefined$1;
}
ary2 = ary2 === undefined$1 ? ary2 : nativeMax(toInteger(ary2), 0);
arity = arity === undefined$1 ? arity : toInteger(arity);
length2 -= holders ? holders.length : 0;
if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {
var partialsRight = partials, holdersRight = holders;
partials = holders = undefined$1;
}
var data = isBindKey ? undefined$1 : getData(func);
var newData = [
func,
bitmask,
thisArg,
partials,
holders,
partialsRight,
holdersRight,
argPos,
ary2,
arity
];
if (data) {
mergeData(newData, data);
}
func = newData[0];
bitmask = newData[1];
thisArg = newData[2];
partials = newData[3];
holders = newData[4];
arity = newData[9] = newData[9] === undefined$1 ? isBindKey ? 0 : func.length : nativeMax(newData[9] - length2, 0);
if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {
bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);
}
if (!bitmask || bitmask == WRAP_BIND_FLAG) {
var result2 = createBind(func, bitmask, thisArg);
} else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {
result2 = createCurry(func, bitmask, arity);
} else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {
result2 = createPartial(func, bitmask, thisArg, partials);
} else {
result2 = createHybrid.apply(undefined$1, newData);
}
var setter = data ? baseSetData : setData;
return setWrapToString(setter(result2, newData), func, bitmask);
}
function customDefaultsAssignIn(objValue, srcValue, key, object4) {
if (objValue === undefined$1 || eq(objValue, objectProto[key]) && !hasOwnProperty.call(object4, key)) {
return srcValue;
}
return objValue;
}
function customDefaultsMerge(objValue, srcValue, key, object4, source, stack) {
if (isObject2(objValue) && isObject2(srcValue)) {
stack.set(srcValue, objValue);
baseMerge(objValue, srcValue, undefined$1, customDefaultsMerge, stack);
stack["delete"](srcValue);
}
return objValue;
}
function customOmitClone(value) {
return isPlainObject(value) ? undefined$1 : value;
}
function equalArrays(array4, other, bitmask, customizer, equalFunc, stack) {
var isPartial = bitmask & COMPARE_PARTIAL_FLAG, arrLength = array4.length, othLength = other.length;
if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
return false;
}
var arrStacked = stack.get(array4);
var othStacked = stack.get(other);
if (arrStacked && othStacked) {
return arrStacked == other && othStacked == array4;
}
var index2 = -1, result2 = true, seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache() : undefined$1;
stack.set(array4, other);
stack.set(other, array4);
while (++index2 < arrLength) {
var arrValue = array4[index2], othValue = other[index2];
if (customizer) {
var compared = isPartial ? customizer(othValue, arrValue, index2, other, array4, stack) : customizer(arrValue, othValue, index2, array4, other, stack);
}
if (compared !== undefined$1) {
if (compared) {
continue;
}
result2 = false;
break;
}
if (seen) {
if (!arraySome(other, function(othValue2, othIndex) {
if (!cacheHas(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) {
return seen.push(othIndex);
}
})) {
result2 = false;
break;
}
} else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
result2 = false;
break;
}
}
stack["delete"](array4);
stack["delete"](other);
return result2;
}
function equalByTag(object4, other, tag, bitmask, customizer, equalFunc, stack) {
switch (tag) {
case dataViewTag:
if (object4.byteLength != other.byteLength || object4.byteOffset != other.byteOffset) {
return false;
}
object4 = object4.buffer;
other = other.buffer;
case arrayBufferTag:
if (object4.byteLength != other.byteLength || !equalFunc(new Uint8Array2(object4), new Uint8Array2(other))) {
return false;
}
return true;
case boolTag:
case dateTag:
case numberTag:
return eq(+object4, +other);
case errorTag:
return object4.name == other.name && object4.message == other.message;
case regexpTag:
case stringTag:
return object4 == other + "";
case mapTag:
var convert = mapToArray;
case setTag:
var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
convert || (convert = setToArray);
if (object4.size != other.size && !isPartial) {
return false;
}
var stacked = stack.get(object4);
if (stacked) {
return stacked == other;
}
bitmask |= COMPARE_UNORDERED_FLAG;
stack.set(object4, other);
var result2 = equalArrays(convert(object4), convert(other), bitmask, customizer, equalFunc, stack);
stack["delete"](object4);
return result2;
case symbolTag:
if (symbolValueOf) {
return symbolValueOf.call(object4) == symbolValueOf.call(other);
}
}
return false;
}
function equalObjects(object4, other, bitmask, customizer, equalFunc, stack) {
var isPartial = bitmask & COMPARE_PARTIAL_FLAG, objProps = getAllKeys(object4), objLength = objProps.length, othProps = getAllKeys(other), othLength = othProps.length;
if (objLength != othLength && !isPartial) {
return false;
}
var index2 = objLength;
while (index2--) {
var key = objProps[index2];
if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
return false;
}
}
var objStacked = stack.get(object4);
var othStacked = stack.get(other);
if (objStacked && othStacked) {
return objStacked == other && othStacked == object4;
}
var result2 = true;
stack.set(object4, other);
stack.set(other, object4);
var skipCtor = isPartial;
while (++index2 < objLength) {
key = objProps[index2];
var objValue = object4[key], othValue = other[key];
if (customizer) {
var compared = isPartial ? customizer(othValue, objValue, key, other, object4, stack) : customizer(objValue, othValue, key, object4, other, stack);
}
if (!(compared === undefined$1 ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {
result2 = false;
break;
}
skipCtor || (skipCtor = key == "constructor");
}
if (result2 && !skipCtor) {
var objCtor = object4.constructor, othCtor = other.constructor;
if (objCtor != othCtor && ("constructor" in object4 && "constructor" in other) && !(typeof objCtor == "function" && objCtor instanceof objCtor && typeof othCtor == "function" && othCtor instanceof othCtor)) {
result2 = false;
}
}
stack["delete"](object4);
stack["delete"](other);
return result2;
}
function flatRest(func) {
return setToString(overRest(func, undefined$1, flatten), func + "");
}
function getAllKeys(object4) {
return baseGetAllKeys(object4, keys2, getSymbols);
}
function getAllKeysIn(object4) {
return baseGetAllKeys(object4, keysIn, getSymbolsIn);
}
var getData = !metaMap ? noop3 : function(func) {
return metaMap.get(func);
};
function getFuncName(func) {
var result2 = func.name + "", array4 = realNames[result2], length2 = hasOwnProperty.call(realNames, result2) ? array4.length : 0;
while (length2--) {
var data = array4[length2], otherFunc = data.func;
if (otherFunc == null || otherFunc == func) {
return data.name;
}
}
return result2;
}
function getHolder(func) {
var object4 = hasOwnProperty.call(lodash2, "placeholder") ? lodash2 : func;
return object4.placeholder;
}
function getIteratee() {
var result2 = lodash2.iteratee || iteratee;
result2 = result2 === iteratee ? baseIteratee : result2;
return arguments.length ? result2(arguments[0], arguments[1]) : result2;
}
function getMapData(map3, key) {
var data = map3.__data__;
return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map;
}
function getMatchData(object4) {
var result2 = keys2(object4), length2 = result2.length;
while (length2--) {
var key = result2[length2], value = object4[key];
result2[length2] = [key, value, isStrictComparable(value)];
}
return result2;
}
function getNative(object4, key) {
var value = getValue2(object4, key);
return baseIsNative(value) ? value : undefined$1;
}
function getRawTag(value) {
var isOwn = hasOwnProperty.call(value, symToStringTag), tag = value[symToStringTag];
try {
value[symToStringTag] = undefined$1;
var unmasked = true;
} catch (e2) {
}
var result2 = nativeObjectToString.call(value);
if (unmasked) {
if (isOwn) {
value[symToStringTag] = tag;
} else {
delete value[symToStringTag];
}
}
return result2;
}
var getSymbols = !nativeGetSymbols ? stubArray : function(object4) {
if (object4 == null) {
return [];
}
object4 = Object2(object4);
return arrayFilter(nativeGetSymbols(object4), function(symbol) {
return propertyIsEnumerable.call(object4, symbol);
});
};
var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object4) {
var result2 = [];
while (object4) {
arrayPush(result2, getSymbols(object4));
object4 = getPrototype(object4);
}
return result2;
};
var getTag = baseGetTag;
if (DataView2 && getTag(new DataView2(new ArrayBuffer(1))) != dataViewTag || Map2 && getTag(new Map2()) != mapTag || Promise2 && getTag(Promise2.resolve()) != promiseTag || Set2 && getTag(new Set2()) != setTag || WeakMap2 && getTag(new WeakMap2()) != weakMapTag) {
getTag = function(value) {
var result2 = baseGetTag(value), Ctor = result2 == objectTag ? value.constructor : undefined$1, ctorString = Ctor ? toSource(Ctor) : "";
if (ctorString) {
switch (ctorString) {
case dataViewCtorString:
return dataViewTag;
case mapCtorString:
return mapTag;
case promiseCtorString:
return promiseTag;
case setCtorString:
return setTag;
case weakMapCtorString:
return weakMapTag;
}
}
return result2;
};
}
function getView(start2, end2, transforms) {
var index2 = -1, length2 = transforms.length;
while (++index2 < length2) {
var data = transforms[index2], size2 = data.size;
switch (data.type) {
case "drop":
start2 += size2;
break;
case "dropRight":
end2 -= size2;
break;
case "take":
end2 = nativeMin(end2, start2 + size2);
break;
case "takeRight":
start2 = nativeMax(start2, end2 - size2);
break;
}
}
return { "start": start2, "end": end2 };
}
function getWrapDetails(source) {
var match2 = source.match(reWrapDetails);
return match2 ? match2[1].split(reSplitDetails) : [];
}
function hasPath(object4, path, hasFunc) {
path = castPath(path, object4);
var index2 = -1, length2 = path.length, result2 = false;
while (++index2 < length2) {
var key = toKey(path[index2]);
if (!(result2 = object4 != null && hasFunc(object4, key))) {
break;
}
object4 = object4[key];
}
if (result2 || ++index2 != length2) {
return result2;
}
length2 = object4 == null ? 0 : object4.length;
return !!length2 && isLength(length2) && isIndex(key, length2) && (isArray2(object4) || isArguments(object4));
}
function initCloneArray(array4) {
var length2 = array4.length, result2 = new array4.constructor(length2);
if (length2 && typeof array4[0] == "string" && hasOwnProperty.call(array4, "index")) {
result2.index = array4.index;
result2.input = array4.input;
}
return result2;
}
function initCloneObject(object4) {
return typeof object4.constructor == "function" && !isPrototype(object4) ? baseCreate(getPrototype(object4)) : {};
}
function initCloneByTag(object4, tag, isDeep) {
var Ctor = object4.constructor;
switch (tag) {
case arrayBufferTag:
return cloneArrayBuffer(object4);
case boolTag:
case dateTag:
return new Ctor(+object4);
case dataViewTag:
return cloneDataView(object4, isDeep);
case float32Tag:
case float64Tag:
case int8Tag:
case int16Tag:
case int32Tag:
case uint8Tag:
case uint8ClampedTag:
case uint16Tag:
case uint32Tag:
return cloneTypedArray(object4, isDeep);
case mapTag:
return new Ctor();
case numberTag:
case stringTag:
return new Ctor(object4);
case regexpTag:
return cloneRegExp(object4);
case setTag:
return new Ctor();
case symbolTag:
return cloneSymbol(object4);
}
}
function insertWrapDetails(source, details) {
var length2 = details.length;
if (!length2) {
return source;
}
var lastIndex = length2 - 1;
details[lastIndex] = (length2 > 1 ? "& " : "") + details[lastIndex];
details = details.join(length2 > 2 ? ", " : " ");
return source.replace(reWrapComment, "{\n/* [wrapped with " + details + "] */\n");
}
function isFlattenable(value) {
return isArray2(value) || isArguments(value) || !!(spreadableSymbol && value && value[spreadableSymbol]);
}
function isIndex(value, length2) {
var type4 = typeof value;
length2 = length2 == null ? MAX_SAFE_INTEGER2 : length2;
return !!length2 && (type4 == "number" || type4 != "symbol" && reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length2);
}
function isIterateeCall(value, index2, object4) {
if (!isObject2(object4)) {
return false;
}
var type4 = typeof index2;
if (type4 == "number" ? isArrayLike2(object4) && isIndex(index2, object4.length) : type4 == "string" && index2 in object4) {
return eq(object4[index2], value);
}
return false;
}
function isKey(value, object4) {
if (isArray2(value)) {
return false;
}
var type4 = typeof value;
if (type4 == "number" || type4 == "symbol" || type4 == "boolean" || value == null || isSymbol(value)) {
return true;
}
return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object4 != null && value in Object2(object4);
}
function isKeyable(value) {
var type4 = typeof value;
return type4 == "string" || type4 == "number" || type4 == "symbol" || type4 == "boolean" ? value !== "__proto__" : value === null;
}
function isLaziable(func) {
var funcName = getFuncName(func), other = lodash2[funcName];
if (typeof other != "function" || !(funcName in LazyWrapper.prototype)) {
return false;
}
if (func === other) {
return true;
}
var data = getData(other);
return !!data && func === data[0];
}
function isMasked(func) {
return !!maskSrcKey && maskSrcKey in func;
}
var isMaskable = coreJsData ? isFunction2 : stubFalse;
function isPrototype(value) {
var Ctor = value && value.constructor, proto2 = typeof Ctor == "function" && Ctor.prototype || objectProto;
return value === proto2;
}
function isStrictComparable(value) {
return value === value && !isObject2(value);
}
function matchesStrictComparable(key, srcValue) {
return function(object4) {
if (object4 == null) {
return false;
}
return object4[key] === srcValue && (srcValue !== undefined$1 || key in Object2(object4));
};
}
function memoizeCapped(func) {
var result2 = memoize2(func, function(key) {
if (cache.size === MAX_MEMOIZE_SIZE) {
cache.clear();
}
return key;
});
var cache = result2.cache;
return result2;
}
function mergeData(data, source) {
var bitmask = data[1], srcBitmask = source[1], newBitmask = bitmask | srcBitmask, isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);
var isCombo = srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_CURRY_FLAG || srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_REARG_FLAG && data[7].length <= source[8] || srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG) && source[7].length <= source[8] && bitmask == WRAP_CURRY_FLAG;
if (!(isCommon || isCombo)) {
return data;
}
if (srcBitmask & WRAP_BIND_FLAG) {
data[2] = source[2];
newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;
}
var value = source[3];
if (value) {
var partials = data[3];
data[3] = partials ? composeArgs(partials, value, source[4]) : value;
data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];
}
value = source[5];
if (value) {
partials = data[5];
data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;
data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];
}
value = source[7];
if (value) {
data[7] = value;
}
if (srcBitmask & WRAP_ARY_FLAG) {
data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);
}
if (data[9] == null) {
data[9] = source[9];
}
data[0] = source[0];
data[1] = newBitmask;
return data;
}
function nativeKeysIn(object4) {
var result2 = [];
if (object4 != null) {
for (var key in Object2(object4)) {
result2.push(key);
}
}
return result2;
}
function objectToString(value) {
return nativeObjectToString.call(value);
}
function overRest(func, start2, transform3) {
start2 = nativeMax(start2 === undefined$1 ? func.length - 1 : start2, 0);
return function() {
var args = arguments, index2 = -1, length2 = nativeMax(args.length - start2, 0), array4 = Array2(length2);
while (++index2 < length2) {
array4[index2] = args[start2 + index2];
}
index2 = -1;
var otherArgs = Array2(start2 + 1);
while (++index2 < start2) {
otherArgs[index2] = args[index2];
}
otherArgs[start2] = transform3(array4);
return apply(func, this, otherArgs);
};
}
function parent(object4, path) {
return path.length < 2 ? object4 : baseGet(object4, baseSlice(path, 0, -1));
}
function reorder(array4, indexes) {
var arrLength = array4.length, length2 = nativeMin(indexes.length, arrLength), oldArray = copyArray(array4);
while (length2--) {
var index2 = indexes[length2];
array4[length2] = isIndex(index2, arrLength) ? oldArray[index2] : undefined$1;
}
return array4;
}
function safeGet(object4, key) {
if (key === "constructor" && typeof object4[key] === "function") {
return;
}
if (key == "__proto__") {
return;
}
return object4[key];
}
var setData = shortOut(baseSetData);
var setTimeout2 = ctxSetTimeout || function(func, wait) {
return root.setTimeout(func, wait);
};
var setToString = shortOut(baseSetToString);
function setWrapToString(wrapper, reference, bitmask) {
var source = reference + "";
return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));
}
function shortOut(func) {
var count2 = 0, lastCalled = 0;
return function() {
var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled);
lastCalled = stamp;
if (remaining > 0) {
if (++count2 >= HOT_COUNT) {
return arguments[0];
}
} else {
count2 = 0;
}
return func.apply(undefined$1, arguments);
};
}
function shuffleSelf(array4, size2) {
var index2 = -1, length2 = array4.length, lastIndex = length2 - 1;
size2 = size2 === undefined$1 ? length2 : size2;
while (++index2 < size2) {
var rand = baseRandom(index2, lastIndex), value = array4[rand];
array4[rand] = array4[index2];
array4[index2] = value;
}
array4.length = size2;
return array4;
}
var stringToPath = memoizeCapped(function(string3) {
var result2 = [];
if (string3.charCodeAt(0) === 46) {
result2.push("");
}
string3.replace(rePropName, function(match2, number4, quote, subString) {
result2.push(quote ? subString.replace(reEscapeChar, "$1") : number4 || match2);
});
return result2;
});
function toKey(value) {
if (typeof value == "string" || isSymbol(value)) {
return value;
}
var result2 = value + "";
return result2 == "0" && 1 / value == -INFINITY ? "-0" : result2;
}
function toSource(func) {
if (func != null) {
try {
return funcToString.call(func);
} catch (e2) {
}
try {
return func + "";
} catch (e2) {
}
}
return "";
}
function updateWrapDetails(details, bitmask) {
arrayEach(wrapFlags, function(pair) {
var value = "_." + pair[0];
if (bitmask & pair[1] && !arrayIncludes(details, value)) {
details.push(value);
}
});
return details.sort();
}
function wrapperClone(wrapper) {
if (wrapper instanceof LazyWrapper) {
return wrapper.clone();
}
var result2 = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);
result2.__actions__ = copyArray(wrapper.__actions__);
result2.__index__ = wrapper.__index__;
result2.__values__ = wrapper.__values__;
return result2;
}
function chunk(array4, size2, guard) {
if (guard ? isIterateeCall(array4, size2, guard) : size2 === undefined$1) {
size2 = 1;
} else {
size2 = nativeMax(toInteger(size2), 0);
}
var length2 = array4 == null ? 0 : array4.length;
if (!length2 || size2 < 1) {
return [];
}
var index2 = 0, resIndex = 0, result2 = Array2(nativeCeil(length2 / size2));
while (index2 < length2) {
result2[resIndex++] = baseSlice(array4, index2, index2 += size2);
}
return result2;
}
function compact(array4) {
var index2 = -1, length2 = array4 == null ? 0 : array4.length, resIndex = 0, result2 = [];
while (++index2 < length2) {
var value = array4[index2];
if (value) {
result2[resIndex++] = value;
}
}
return result2;
}
function concat() {
var length2 = arguments.length;
if (!length2) {
return [];
}
var args = Array2(length2 - 1), array4 = arguments[0], index2 = length2;
while (index2--) {
args[index2 - 1] = arguments[index2];
}
return arrayPush(isArray2(array4) ? copyArray(array4) : [array4], baseFlatten(args, 1));
}
var difference = baseRest(function(array4, values2) {
return isArrayLikeObject(array4) ? baseDifference(array4, baseFlatten(values2, 1, isArrayLikeObject, true)) : [];
});
var differenceBy = baseRest(function(array4, values2) {
var iteratee2 = last(values2);
if (isArrayLikeObject(iteratee2)) {
iteratee2 = undefined$1;
}
return isArrayLikeObject(array4) ? baseDifference(array4, baseFlatten(values2, 1, isArrayLikeObject, true), getIteratee(iteratee2, 2)) : [];
});
var differenceWith = baseRest(function(array4, values2) {
var comparator = last(values2);
if (isArrayLikeObject(comparator)) {
comparator = undefined$1;
}
return isArrayLikeObject(array4) ? baseDifference(array4, baseFlatten(values2, 1, isArrayLikeObject, true), undefined$1, comparator) : [];
});
function drop(array4, n2, guard) {
var length2 = array4 == null ? 0 : array4.length;
if (!length2) {
return [];
}
n2 = guard || n2 === undefined$1 ? 1 : toInteger(n2);
return baseSlice(array4, n2 < 0 ? 0 : n2, length2);
}
function dropRight(array4, n2, guard) {
var length2 = array4 == null ? 0 : array4.length;
if (!length2) {
return [];
}
n2 = guard || n2 === undefined$1 ? 1 : toInteger(n2);
n2 = length2 - n2;
return baseSlice(array4, 0, n2 < 0 ? 0 : n2);
}
function dropRightWhile(array4, predicate) {
return array4 && array4.length ? baseWhile(array4, getIteratee(predicate, 3), true, true) : [];
}
function dropWhile(array4, predicate) {
return array4 && array4.length ? baseWhile(array4, getIteratee(predicate, 3), true) : [];
}
function fill(array4, value, start2, end2) {
var length2 = array4 == null ? 0 : array4.length;
if (!length2) {
return [];
}
if (start2 && typeof start2 != "number" && isIterateeCall(array4, value, start2)) {
start2 = 0;
end2 = length2;
}
return baseFill(array4, value, start2, end2);
}
function findIndex(array4, predicate, fromIndex) {
var length2 = array4 == null ? 0 : array4.length;
if (!length2) {
return -1;
}
var index2 = fromIndex == null ? 0 : toInteger(fromIndex);
if (index2 < 0) {
index2 = nativeMax(length2 + index2, 0);
}
return baseFindIndex(array4, getIteratee(predicate, 3), index2);
}
function findLastIndex(array4, predicate, fromIndex) {
var length2 = array4 == null ? 0 : array4.length;
if (!length2) {
return -1;
}
var index2 = length2 - 1;
if (fromIndex !== undefined$1) {
index2 = toInteger(fromIndex);
index2 = fromIndex < 0 ? nativeMax(length2 + index2, 0) : nativeMin(index2, length2 - 1);
}
return baseFindIndex(array4, getIteratee(predicate, 3), index2, true);
}
function flatten(array4) {
var length2 = array4 == null ? 0 : array4.length;
return length2 ? baseFlatten(array4, 1) : [];
}
function flattenDeep(array4) {
var length2 = array4 == null ? 0 : array4.length;
return length2 ? baseFlatten(array4, INFINITY) : [];
}
function flattenDepth(array4, depth) {
var length2 = array4 == null ? 0 : array4.length;
if (!length2) {
return [];
}
depth = depth === undefined$1 ? 1 : toInteger(depth);
return baseFlatten(array4, depth);
}
function fromPairs(pairs) {
var index2 = -1, length2 = pairs == null ? 0 : pairs.length, result2 = {};
while (++index2 < length2) {
var pair = pairs[index2];
result2[pair[0]] = pair[1];
}
return result2;
}
function head(array4) {
return array4 && array4.length ? array4[0] : undefined$1;
}
function indexOf2(array4, value, fromIndex) {
var length2 = array4 == null ? 0 : array4.length;
if (!length2) {
return -1;
}
var index2 = fromIndex == null ? 0 : toInteger(fromIndex);
if (index2 < 0) {
index2 = nativeMax(length2 + index2, 0);
}
return baseIndexOf(array4, value, index2);
}
function initial(array4) {
var length2 = array4 == null ? 0 : array4.length;
return length2 ? baseSlice(array4, 0, -1) : [];
}
var intersection = baseRest(function(arrays) {
var mapped = arrayMap(arrays, castArrayLikeObject);
return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped) : [];
});
var intersectionBy = baseRest(function(arrays) {
var iteratee2 = last(arrays), mapped = arrayMap(arrays, castArrayLikeObject);
if (iteratee2 === last(mapped)) {
iteratee2 = undefined$1;
} else {
mapped.pop();
}
return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, getIteratee(iteratee2, 2)) : [];
});
var intersectionWith = baseRest(function(arrays) {
var comparator = last(arrays), mapped = arrayMap(arrays, castArrayLikeObject);
comparator = typeof comparator == "function" ? comparator : undefined$1;
if (comparator) {
mapped.pop();
}
return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, undefined$1, comparator) : [];
});
function join(array4, separator) {
return array4 == null ? "" : nativeJoin.call(array4, separator);
}
function last(array4) {
var length2 = array4 == null ? 0 : array4.length;
return length2 ? array4[length2 - 1] : undefined$1;
}
function lastIndexOf(array4, value, fromIndex) {
var length2 = array4 == null ? 0 : array4.length;
if (!length2) {
return -1;
}
var index2 = length2;
if (fromIndex !== undefined$1) {
index2 = toInteger(fromIndex);
index2 = index2 < 0 ? nativeMax(length2 + index2, 0) : nativeMin(index2, length2 - 1);
}
return value === value ? strictLastIndexOf(array4, value, index2) : baseFindIndex(array4, baseIsNaN, index2, true);
}
function nth(array4, n2) {
return array4 && array4.length ? baseNth(array4, toInteger(n2)) : undefined$1;
}
var pull = baseRest(pullAll);
function pullAll(array4, values2) {
return array4 && array4.length && values2 && values2.length ? basePullAll(array4, values2) : array4;
}
function pullAllBy(array4, values2, iteratee2) {
return array4 && array4.length && values2 && values2.length ? basePullAll(array4, values2, getIteratee(iteratee2, 2)) : array4;
}
function pullAllWith(array4, values2, comparator) {
return array4 && array4.length && values2 && values2.length ? basePullAll(array4, values2, undefined$1, comparator) : array4;
}
var pullAt = flatRest(function(array4, indexes) {
var length2 = array4 == null ? 0 : array4.length, result2 = baseAt(array4, indexes);
basePullAt(array4, arrayMap(indexes, function(index2) {
return isIndex(index2, length2) ? +index2 : index2;
}).sort(compareAscending));
return result2;
});
function remove(array4, predicate) {
var result2 = [];
if (!(array4 && array4.length)) {
return result2;
}
var index2 = -1, indexes = [], length2 = array4.length;
predicate = getIteratee(predicate, 3);
while (++index2 < length2) {
var value = array4[index2];
if (predicate(value, index2, array4)) {
result2.push(value);
indexes.push(index2);
}
}
basePullAt(array4, indexes);
return result2;
}
function reverse2(array4) {
return array4 == null ? array4 : nativeReverse.call(array4);
}
function slice2(array4, start2, end2) {
var length2 = array4 == null ? 0 : array4.length;
if (!length2) {
return [];
}
if (end2 && typeof end2 != "number" && isIterateeCall(array4, start2, end2)) {
start2 = 0;
end2 = length2;
} else {
start2 = start2 == null ? 0 : toInteger(start2);
end2 = end2 === undefined$1 ? length2 : toInteger(end2);
}
return baseSlice(array4, start2, end2);
}
function sortedIndex(array4, value) {
return baseSortedIndex(array4, value);
}
function sortedIndexBy(array4, value, iteratee2) {
return baseSortedIndexBy(array4, value, getIteratee(iteratee2, 2));
}
function sortedIndexOf(array4, value) {
var length2 = array4 == null ? 0 : array4.length;
if (length2) {
var index2 = baseSortedIndex(array4, value);
if (index2 < length2 && eq(array4[index2], value)) {
return index2;
}
}
return -1;
}
function sortedLastIndex(array4, value) {
return baseSortedIndex(array4, value, true);
}
function sortedLastIndexBy(array4, value, iteratee2) {
return baseSortedIndexBy(array4, value, getIteratee(iteratee2, 2), true);
}
function sortedLastIndexOf(array4, value) {
var length2 = array4 == null ? 0 : array4.length;
if (length2) {
var index2 = baseSortedIndex(array4, value, true) - 1;
if (eq(array4[index2], value)) {
return index2;
}
}
return -1;
}
function sortedUniq(array4) {
return array4 && array4.length ? baseSortedUniq(array4) : [];
}
function sortedUniqBy(array4, iteratee2) {
return array4 && array4.length ? baseSortedUniq(array4, getIteratee(iteratee2, 2)) : [];
}
function tail(array4) {
var length2 = array4 == null ? 0 : array4.length;
return length2 ? baseSlice(array4, 1, length2) : [];
}
function take2(array4, n2, guard) {
if (!(array4 && array4.length)) {
return [];
}
n2 = guard || n2 === undefined$1 ? 1 : toInteger(n2);
return baseSlice(array4, 0, n2 < 0 ? 0 : n2);
}
function takeRight(array4, n2, guard) {
var length2 = array4 == null ? 0 : array4.length;
if (!length2) {
return [];
}
n2 = guard || n2 === undefined$1 ? 1 : toInteger(n2);
n2 = length2 - n2;
return baseSlice(array4, n2 < 0 ? 0 : n2, length2);
}
function takeRightWhile(array4, predicate) {
return array4 && array4.length ? baseWhile(array4, getIteratee(predicate, 3), false, true) : [];
}
function takeWhile(array4, predicate) {
return array4 && array4.length ? baseWhile(array4, getIteratee(predicate, 3)) : [];
}
var union = baseRest(function(arrays) {
return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));
});
var unionBy = baseRest(function(arrays) {
var iteratee2 = last(arrays);
if (isArrayLikeObject(iteratee2)) {
iteratee2 = undefined$1;
}
return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee2, 2));
});
var unionWith = baseRest(function(arrays) {
var comparator = last(arrays);
comparator = typeof comparator == "function" ? comparator : undefined$1;
return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined$1, comparator);
});
function uniq(array4) {
return array4 && array4.length ? baseUniq(array4) : [];
}
function uniqBy(array4, iteratee2) {
return array4 && array4.length ? baseUniq(array4, getIteratee(iteratee2, 2)) : [];
}
function uniqWith(array4, comparator) {
comparator = typeof comparator == "function" ? comparator : undefined$1;
return array4 && array4.length ? baseUniq(array4, undefined$1, comparator) : [];
}
function unzip(array4) {
if (!(array4 && array4.length)) {
return [];
}
var length2 = 0;
array4 = arrayFilter(array4, function(group) {
if (isArrayLikeObject(group)) {
length2 = nativeMax(group.length, length2);
return true;
}
});
return baseTimes(length2, function(index2) {
return arrayMap(array4, baseProperty(index2));
});
}
function unzipWith(array4, iteratee2) {
if (!(array4 && array4.length)) {
return [];
}
var result2 = unzip(array4);
if (iteratee2 == null) {
return result2;
}
return arrayMap(result2, function(group) {
return apply(iteratee2, undefined$1, group);
});
}
var without = baseRest(function(array4, values2) {
return isArrayLikeObject(array4) ? baseDifference(array4, values2) : [];
});
var xor = baseRest(function(arrays) {
return baseXor(arrayFilter(arrays, isArrayLikeObject));
});
var xorBy = baseRest(function(arrays) {
var iteratee2 = last(arrays);
if (isArrayLikeObject(iteratee2)) {
iteratee2 = undefined$1;
}
return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee2, 2));
});
var xorWith = baseRest(function(arrays) {
var comparator = last(arrays);
comparator = typeof comparator == "function" ? comparator : undefined$1;
return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined$1, comparator);
});
var zip = baseRest(unzip);
function zipObject(props, values2) {
return baseZipObject(props || [], values2 || [], assignValue);
}
function zipObjectDeep(props, values2) {
return baseZipObject(props || [], values2 || [], baseSet);
}
var zipWith = baseRest(function(arrays) {
var length2 = arrays.length, iteratee2 = length2 > 1 ? arrays[length2 - 1] : undefined$1;
iteratee2 = typeof iteratee2 == "function" ? (arrays.pop(), iteratee2) : undefined$1;
return unzipWith(arrays, iteratee2);
});
function chain(value) {
var result2 = lodash2(value);
result2.__chain__ = true;
return result2;
}
function tap(value, interceptor) {
interceptor(value);
return value;
}
function thru(value, interceptor) {
return interceptor(value);
}
var wrapperAt = flatRest(function(paths) {
var length2 = paths.length, start2 = length2 ? paths[0] : 0, value = this.__wrapped__, interceptor = function(object4) {
return baseAt(object4, paths);
};
if (length2 > 1 || this.__actions__.length || !(value instanceof LazyWrapper) || !isIndex(start2)) {
return this.thru(interceptor);
}
value = value.slice(start2, +start2 + (length2 ? 1 : 0));
value.__actions__.push({
"func": thru,
"args": [interceptor],
"thisArg": undefined$1
});
return new LodashWrapper(value, this.__chain__).thru(function(array4) {
if (length2 && !array4.length) {
array4.push(undefined$1);
}
return array4;
});
});
function wrapperChain() {
return chain(this);
}
function wrapperCommit() {
return new LodashWrapper(this.value(), this.__chain__);
}
function wrapperNext() {
if (this.__values__ === undefined$1) {
this.__values__ = toArray2(this.value());
}
var done = this.__index__ >= this.__values__.length, value = done ? undefined$1 : this.__values__[this.__index__++];
return { "done": done, "value": value };
}
function wrapperToIterator() {
return this;
}
function wrapperPlant(value) {
var result2, parent2 = this;
while (parent2 instanceof baseLodash) {
var clone4 = wrapperClone(parent2);
clone4.__index__ = 0;
clone4.__values__ = undefined$1;
if (result2) {
previous.__wrapped__ = clone4;
} else {
result2 = clone4;
}
var previous = clone4;
parent2 = parent2.__wrapped__;
}
previous.__wrapped__ = value;
return result2;
}
function wrapperReverse() {
var value = this.__wrapped__;
if (value instanceof LazyWrapper) {
var wrapped = value;
if (this.__actions__.length) {
wrapped = new LazyWrapper(this);
}
wrapped = wrapped.reverse();
wrapped.__actions__.push({
"func": thru,
"args": [reverse2],
"thisArg": undefined$1
});
return new LodashWrapper(wrapped, this.__chain__);
}
return this.thru(reverse2);
}
function wrapperValue() {
return baseWrapperValue(this.__wrapped__, this.__actions__);
}
var countBy = createAggregator(function(result2, value, key) {
if (hasOwnProperty.call(result2, key)) {
++result2[key];
} else {
baseAssignValue(result2, key, 1);
}
});
function every(collection, predicate, guard) {
var func = isArray2(collection) ? arrayEvery : baseEvery;
if (guard && isIterateeCall(collection, predicate, guard)) {
predicate = undefined$1;
}
return func(collection, getIteratee(predicate, 3));
}
function filter2(collection, predicate) {
var func = isArray2(collection) ? arrayFilter : baseFilter;
return func(collection, getIteratee(predicate, 3));
}
var find2 = createFind(findIndex);
var findLast = createFind(findLastIndex);
function flatMap(collection, iteratee2) {
return baseFlatten(map2(collection, iteratee2), 1);
}
function flatMapDeep(collection, iteratee2) {
return baseFlatten(map2(collection, iteratee2), INFINITY);
}
function flatMapDepth(collection, iteratee2, depth) {
depth = depth === undefined$1 ? 1 : toInteger(depth);
return baseFlatten(map2(collection, iteratee2), depth);
}
function forEach(collection, iteratee2) {
var func = isArray2(collection) ? arrayEach : baseEach;
return func(collection, getIteratee(iteratee2, 3));
}
function forEachRight(collection, iteratee2) {
var func = isArray2(collection) ? arrayEachRight : baseEachRight;
return func(collection, getIteratee(iteratee2, 3));
}
var groupBy = createAggregator(function(result2, value, key) {
if (hasOwnProperty.call(result2, key)) {
result2[key].push(value);
} else {
baseAssignValue(result2, key, [value]);
}
});
function includes2(collection, value, fromIndex, guard) {
collection = isArrayLike2(collection) ? collection : values(collection);
fromIndex = fromIndex && !guard ? toInteger(fromIndex) : 0;
var length2 = collection.length;
if (fromIndex < 0) {
fromIndex = nativeMax(length2 + fromIndex, 0);
}
return isString2(collection) ? fromIndex <= length2 && collection.indexOf(value, fromIndex) > -1 : !!length2 && baseIndexOf(collection, value, fromIndex) > -1;
}
var invokeMap = baseRest(function(collection, path, args) {
var index2 = -1, isFunc = typeof path == "function", result2 = isArrayLike2(collection) ? Array2(collection.length) : [];
baseEach(collection, function(value) {
result2[++index2] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);
});
return result2;
});
var keyBy = createAggregator(function(result2, value, key) {
baseAssignValue(result2, key, value);
});
function map2(collection, iteratee2) {
var func = isArray2(collection) ? arrayMap : baseMap;
return func(collection, getIteratee(iteratee2, 3));
}
function orderBy(collection, iteratees, orders, guard) {
if (collection == null) {
return [];
}
if (!isArray2(iteratees)) {
iteratees = iteratees == null ? [] : [iteratees];
}
orders = guard ? undefined$1 : orders;
if (!isArray2(orders)) {
orders = orders == null ? [] : [orders];
}
return baseOrderBy(collection, iteratees, orders);
}
var partition = createAggregator(function(result2, value, key) {
result2[key ? 0 : 1].push(value);
}, function() {
return [[], []];
});
function reduce2(collection, iteratee2, accumulator) {
var func = isArray2(collection) ? arrayReduce : baseReduce, initAccum = arguments.length < 3;
return func(collection, getIteratee(iteratee2, 4), accumulator, initAccum, baseEach);
}
function reduceRight(collection, iteratee2, accumulator) {
var func = isArray2(collection) ? arrayReduceRight : baseReduce, initAccum = arguments.length < 3;
return func(collection, getIteratee(iteratee2, 4), accumulator, initAccum, baseEachRight);
}
function reject(collection, predicate) {
var func = isArray2(collection) ? arrayFilter : baseFilter;
return func(collection, negate2(getIteratee(predicate, 3)));
}
function sample(collection) {
var func = isArray2(collection) ? arraySample : baseSample;
return func(collection);
}
function sampleSize(collection, n2, guard) {
if (guard ? isIterateeCall(collection, n2, guard) : n2 === undefined$1) {
n2 = 1;
} else {
n2 = toInteger(n2);
}
var func = isArray2(collection) ? arraySampleSize : baseSampleSize;
return func(collection, n2);
}
function shuffle(collection) {
var func = isArray2(collection) ? arrayShuffle : baseShuffle;
return func(collection);
}
function size(collection) {
if (collection == null) {
return 0;
}
if (isArrayLike2(collection)) {
return isString2(collection) ? stringSize(collection) : collection.length;
}
var tag = getTag(collection);
if (tag == mapTag || tag == setTag) {
return collection.size;
}
return baseKeys(collection).length;
}
function some(collection, predicate, guard) {
var func = isArray2(collection) ? arraySome : baseSome;
if (guard && isIterateeCall(collection, predicate, guard)) {
predicate = undefined$1;
}
return func(collection, getIteratee(predicate, 3));
}
var sortBy = baseRest(function(collection, iteratees) {
if (collection == null) {
return [];
}
var length2 = iteratees.length;
if (length2 > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {
iteratees = [];
} else if (length2 > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {
iteratees = [iteratees[0]];
}
return baseOrderBy(collection, baseFlatten(iteratees, 1), []);
});
var now2 = ctxNow || function() {
return root.Date.now();
};
function after(n2, func) {
if (typeof func != "function") {
throw new TypeError2(FUNC_ERROR_TEXT);
}
n2 = toInteger(n2);
return function() {
if (--n2 < 1) {
return func.apply(this, arguments);
}
};
}
function ary(func, n2, guard) {
n2 = guard ? undefined$1 : n2;
n2 = func && n2 == null ? func.length : n2;
return createWrap2(func, WRAP_ARY_FLAG, undefined$1, undefined$1, undefined$1, undefined$1, n2);
}
function before(n2, func) {
var result2;
if (typeof func != "function") {
throw new TypeError2(FUNC_ERROR_TEXT);
}
n2 = toInteger(n2);
return function() {
if (--n2 > 0) {
result2 = func.apply(this, arguments);
}
if (n2 <= 1) {
func = undefined$1;
}
return result2;
};
}
var bind3 = baseRest(function(func, thisArg, partials) {
var bitmask = WRAP_BIND_FLAG;
if (partials.length) {
var holders = replaceHolders(partials, getHolder(bind3));
bitmask |= WRAP_PARTIAL_FLAG;
}
return createWrap2(func, bitmask, thisArg, partials, holders);
});
var bindKey = baseRest(function(object4, key, partials) {
var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;
if (partials.length) {
var holders = replaceHolders(partials, getHolder(bindKey));
bitmask |= WRAP_PARTIAL_FLAG;
}
return createWrap2(key, bitmask, object4, partials, holders);
});
function curry2(func, arity, guard) {
arity = guard ? undefined$1 : arity;
var result2 = createWrap2(func, WRAP_CURRY_FLAG, undefined$1, undefined$1, undefined$1, undefined$1, undefined$1, arity);
result2.placeholder = curry2.placeholder;
return result2;
}
function curryRight(func, arity, guard) {
arity = guard ? undefined$1 : arity;
var result2 = createWrap2(func, WRAP_CURRY_RIGHT_FLAG, undefined$1, undefined$1, undefined$1, undefined$1, undefined$1, arity);
result2.placeholder = curryRight.placeholder;
return result2;
}
function debounce2(func, wait, options) {
var lastArgs, lastThis, maxWait, result2, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true;
if (typeof func != "function") {
throw new TypeError2(FUNC_ERROR_TEXT);
}
wait = toNumber(wait) || 0;
if (isObject2(options)) {
leading = !!options.leading;
maxing = "maxWait" in options;
maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
trailing = "trailing" in options ? !!options.trailing : trailing;
}
function invokeFunc(time2) {
var args = lastArgs, thisArg = lastThis;
lastArgs = lastThis = undefined$1;
lastInvokeTime = time2;
result2 = func.apply(thisArg, args);
return result2;
}
function leadingEdge(time2) {
lastInvokeTime = time2;
timerId = setTimeout2(timerExpired, wait);
return leading ? invokeFunc(time2) : result2;
}
function remainingWait(time2) {
var timeSinceLastCall = time2 - lastCallTime, timeSinceLastInvoke = time2 - lastInvokeTime, timeWaiting = wait - timeSinceLastCall;
return maxing ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;
}
function shouldInvoke(time2) {
var timeSinceLastCall = time2 - lastCallTime, timeSinceLastInvoke = time2 - lastInvokeTime;
return lastCallTime === undefined$1 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;
}
function timerExpired() {
var time2 = now2();
if (shouldInvoke(time2)) {
return trailingEdge(time2);
}
timerId = setTimeout2(timerExpired, remainingWait(time2));
}
function trailingEdge(time2) {
timerId = undefined$1;
if (trailing && lastArgs) {
return invokeFunc(time2);
}
lastArgs = lastThis = undefined$1;
return result2;
}
function cancel() {
if (timerId !== undefined$1) {
clearTimeout2(timerId);
}
lastInvokeTime = 0;
lastArgs = lastCallTime = lastThis = timerId = undefined$1;
}
function flush() {
return timerId === undefined$1 ? result2 : trailingEdge(now2());
}
function debounced() {
var time2 = now2(), isInvoking = shouldInvoke(time2);
lastArgs = arguments;
lastThis = this;
lastCallTime = time2;
if (isInvoking) {
if (timerId === undefined$1) {
return leadingEdge(lastCallTime);
}
if (maxing) {
clearTimeout2(timerId);
timerId = setTimeout2(timerExpired, wait);
return invokeFunc(lastCallTime);
}
}
if (timerId === undefined$1) {
timerId = setTimeout2(timerExpired, wait);
}
return result2;
}
debounced.cancel = cancel;
debounced.flush = flush;
return debounced;
}
var defer = baseRest(function(func, args) {
return baseDelay(func, 1, args);
});
var delay = baseRest(function(func, wait, args) {
return baseDelay(func, toNumber(wait) || 0, args);
});
function flip2(func) {
return createWrap2(func, WRAP_FLIP_FLAG);
}
function memoize2(func, resolver) {
if (typeof func != "function" || resolver != null && typeof resolver != "function") {
throw new TypeError2(FUNC_ERROR_TEXT);
}
var memoized = function() {
var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache;
if (cache.has(key)) {
return cache.get(key);
}
var result2 = func.apply(this, args);
memoized.cache = cache.set(key, result2) || cache;
return result2;
};
memoized.cache = new (memoize2.Cache || MapCache)();
return memoized;
}
memoize2.Cache = MapCache;
function negate2(predicate) {
if (typeof predicate != "function") {
throw new TypeError2(FUNC_ERROR_TEXT);
}
return function() {
var args = arguments;
switch (args.length) {
case 0:
return !predicate.call(this);
case 1:
return !predicate.call(this, args[0]);
case 2:
return !predicate.call(this, args[0], args[1]);
case 3:
return !predicate.call(this, args[0], args[1], args[2]);
}
return !predicate.apply(this, args);
};
}
function once(func) {
return before(2, func);
}
var overArgs = castRest(function(func, transforms) {
transforms = transforms.length == 1 && isArray2(transforms[0]) ? arrayMap(transforms[0], baseUnary(getIteratee())) : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));
var funcsLength = transforms.length;
return baseRest(function(args) {
var index2 = -1, length2 = nativeMin(args.length, funcsLength);
while (++index2 < length2) {
args[index2] = transforms[index2].call(this, args[index2]);
}
return apply(func, this, args);
});
});
var partial = baseRest(function(func, partials) {
var holders = replaceHolders(partials, getHolder(partial));
return createWrap2(func, WRAP_PARTIAL_FLAG, undefined$1, partials, holders);
});
var partialRight = baseRest(function(func, partials) {
var holders = replaceHolders(partials, getHolder(partialRight));
return createWrap2(func, WRAP_PARTIAL_RIGHT_FLAG, undefined$1, partials, holders);
});
var rearg = flatRest(function(func, indexes) {
return createWrap2(func, WRAP_REARG_FLAG, undefined$1, undefined$1, undefined$1, indexes);
});
function rest(func, start2) {
if (typeof func != "function") {
throw new TypeError2(FUNC_ERROR_TEXT);
}
start2 = start2 === undefined$1 ? start2 : toInteger(start2);
return baseRest(func, start2);
}
function spread(func, start2) {
if (typeof func != "function") {
throw new TypeError2(FUNC_ERROR_TEXT);
}
start2 = start2 == null ? 0 : nativeMax(toInteger(start2), 0);
return baseRest(function(args) {
var array4 = args[start2], otherArgs = castSlice(args, 0, start2);
if (array4) {
arrayPush(otherArgs, array4);
}
return apply(func, this, otherArgs);
});
}
function throttle2(func, wait, options) {
var leading = true, trailing = true;
if (typeof func != "function") {
throw new TypeError2(FUNC_ERROR_TEXT);
}
if (isObject2(options)) {
leading = "leading" in options ? !!options.leading : leading;
trailing = "trailing" in options ? !!options.trailing : trailing;
}
return debounce2(func, wait, {
"leading": leading,
"maxWait": wait,
"trailing": trailing
});
}
function unary(func) {
return ary(func, 1);
}
function wrap(value, wrapper) {
return partial(castFunction(wrapper), value);
}
function castArray() {
if (!arguments.length) {
return [];
}
var value = arguments[0];
return isArray2(value) ? value : [value];
}
function clone3(value) {
return baseClone(value, CLONE_SYMBOLS_FLAG);
}
function cloneWith(value, customizer) {
customizer = typeof customizer == "function" ? customizer : undefined$1;
return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);
}
function cloneDeep(value) {
return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);
}
function cloneDeepWith(value, customizer) {
customizer = typeof customizer == "function" ? customizer : undefined$1;
return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);
}
function conformsTo(object4, source) {
return source == null || baseConformsTo(object4, source, keys2(source));
}
function eq(value, other) {
return value === other || value !== value && other !== other;
}
var gt = createRelationalOperation(baseGt);
var gte = createRelationalOperation(function(value, other) {
return value >= other;
});
var isArguments = baseIsArguments(/* @__PURE__ */ function() {
return arguments;
}()) ? baseIsArguments : function(value) {
return isObjectLike(value) && hasOwnProperty.call(value, "callee") && !propertyIsEnumerable.call(value, "callee");
};
var isArray2 = Array2.isArray;
var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;
function isArrayLike2(value) {
return value != null && isLength(value.length) && !isFunction2(value);
}
function isArrayLikeObject(value) {
return isObjectLike(value) && isArrayLike2(value);
}
function isBoolean(value) {
return value === true || value === false || isObjectLike(value) && baseGetTag(value) == boolTag;
}
var isBuffer = nativeIsBuffer || stubFalse;
var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;
function isElement(value) {
return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);
}
function isEmpty(value) {
if (value == null) {
return true;
}
if (isArrayLike2(value) && (isArray2(value) || typeof value == "string" || typeof value.splice == "function" || isBuffer(value) || isTypedArray2(value) || isArguments(value))) {
return !value.length;
}
var tag = getTag(value);
if (tag == mapTag || tag == setTag) {
return !value.size;
}
if (isPrototype(value)) {
return !baseKeys(value).length;
}
for (var key in value) {
if (hasOwnProperty.call(value, key)) {
return false;
}
}
return true;
}
function isEqual2(value, other) {
return baseIsEqual(value, other);
}
function isEqualWith(value, other, customizer) {
customizer = typeof customizer == "function" ? customizer : undefined$1;
var result2 = customizer ? customizer(value, other) : undefined$1;
return result2 === undefined$1 ? baseIsEqual(value, other, undefined$1, customizer) : !!result2;
}
function isError(value) {
if (!isObjectLike(value)) {
return false;
}
var tag = baseGetTag(value);
return tag == errorTag || tag == domExcTag || typeof value.message == "string" && typeof value.name == "string" && !isPlainObject(value);
}
function isFinite2(value) {
return typeof value == "number" && nativeIsFinite(value);
}
function isFunction2(value) {
if (!isObject2(value)) {
return false;
}
var tag = baseGetTag(value);
return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
}
function isInteger2(value) {
return typeof value == "number" && value == toInteger(value);
}
function isLength(value) {
return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER2;
}
function isObject2(value) {
var type4 = typeof value;
return value != null && (type4 == "object" || type4 == "function");
}
function isObjectLike(value) {
return value != null && typeof value == "object";
}
var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;
function isMatch(object4, source) {
return object4 === source || baseIsMatch(object4, source, getMatchData(source));
}
function isMatchWith(object4, source, customizer) {
customizer = typeof customizer == "function" ? customizer : undefined$1;
return baseIsMatch(object4, source, getMatchData(source), customizer);
}
function isNaN2(value) {
return isNumber2(value) && value != +value;
}
function isNative(value) {
if (isMaskable(value)) {
throw new Error2(CORE_ERROR_TEXT);
}
return baseIsNative(value);
}
function isNull(value) {
return value === null;
}
function isNil(value) {
return value == null;
}
function isNumber2(value) {
return typeof value == "number" || isObjectLike(value) && baseGetTag(value) == numberTag;
}
function isPlainObject(value) {
if (!isObjectLike(value) || baseGetTag(value) != objectTag) {
return false;
}
var proto2 = getPrototype(value);
if (proto2 === null) {
return true;
}
var Ctor = hasOwnProperty.call(proto2, "constructor") && proto2.constructor;
return typeof Ctor == "function" && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString;
}
var isRegExp2 = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;
function isSafeInteger2(value) {
return isInteger2(value) && value >= -MAX_SAFE_INTEGER2 && value <= MAX_SAFE_INTEGER2;
}
var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;
function isString2(value) {
return typeof value == "string" || !isArray2(value) && isObjectLike(value) && baseGetTag(value) == stringTag;
}
function isSymbol(value) {
return typeof value == "symbol" || isObjectLike(value) && baseGetTag(value) == symbolTag;
}
var isTypedArray2 = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
function isUndefined(value) {
return value === undefined$1;
}
function isWeakMap(value) {
return isObjectLike(value) && getTag(value) == weakMapTag;
}
function isWeakSet(value) {
return isObjectLike(value) && baseGetTag(value) == weakSetTag;
}
var lt2 = createRelationalOperation(baseLt);
var lte = createRelationalOperation(function(value, other) {
return value <= other;
});
function toArray2(value) {
if (!value) {
return [];
}
if (isArrayLike2(value)) {
return isString2(value) ? stringToArray(value) : copyArray(value);
}
if (symIterator && value[symIterator]) {
return iteratorToArray(value[symIterator]());
}
var tag = getTag(value), func = tag == mapTag ? mapToArray : tag == setTag ? setToArray : values;
return func(value);
}
function toFinite(value) {
if (!value) {
return value === 0 ? value : 0;
}
value = toNumber(value);
if (value === INFINITY || value === -INFINITY) {
var sign = value < 0 ? -1 : 1;
return sign * MAX_INTEGER;
}
return value === value ? value : 0;
}
function toInteger(value) {
var result2 = toFinite(value), remainder = result2 % 1;
return result2 === result2 ? remainder ? result2 - remainder : result2 : 0;
}
function toLength(value) {
return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;
}
function toNumber(value) {
if (typeof value == "number") {
return value;
}
if (isSymbol(value)) {
return NAN;
}
if (isObject2(value)) {
var other = typeof value.valueOf == "function" ? value.valueOf() : value;
value = isObject2(other) ? other + "" : other;
}
if (typeof value != "string") {
return value === 0 ? value : +value;
}
value = baseTrim(value);
var isBinary = reIsBinary.test(value);
return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;
}
function toPlainObject(value) {
return copyObject(value, keysIn(value));
}
function toSafeInteger(value) {
return value ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER2, MAX_SAFE_INTEGER2) : value === 0 ? value : 0;
}
function toString2(value) {
return value == null ? "" : baseToString(value);
}
var assign = createAssigner(function(object4, source) {
if (isPrototype(source) || isArrayLike2(source)) {
copyObject(source, keys2(source), object4);
return;
}
for (var key in source) {
if (hasOwnProperty.call(source, key)) {
assignValue(object4, key, source[key]);
}
}
});
var assignIn = createAssigner(function(object4, source) {
copyObject(source, keysIn(source), object4);
});
var assignInWith = createAssigner(function(object4, source, srcIndex, customizer) {
copyObject(source, keysIn(source), object4, customizer);
});
var assignWith = createAssigner(function(object4, source, srcIndex, customizer) {
copyObject(source, keys2(source), object4, customizer);
});
var at = flatRest(baseAt);
function create3(prototype, properties) {
var result2 = baseCreate(prototype);
return properties == null ? result2 : baseAssign(result2, properties);
}
var defaults2 = baseRest(function(object4, sources) {
object4 = Object2(object4);
var index2 = -1;
var length2 = sources.length;
var guard = length2 > 2 ? sources[2] : undefined$1;
if (guard && isIterateeCall(sources[0], sources[1], guard)) {
length2 = 1;
}
while (++index2 < length2) {
var source = sources[index2];
var props = keysIn(source);
var propsIndex = -1;
var propsLength = props.length;
while (++propsIndex < propsLength) {
var key = props[propsIndex];
var value = object4[key];
if (value === undefined$1 || eq(value, objectProto[key]) && !hasOwnProperty.call(object4, key)) {
object4[key] = source[key];
}
}
}
return object4;
});
var defaultsDeep = baseRest(function(args) {
args.push(undefined$1, customDefaultsMerge);
return apply(mergeWith, undefined$1, args);
});
function findKey(object4, predicate) {
return baseFindKey(object4, getIteratee(predicate, 3), baseForOwn);
}
function findLastKey(object4, predicate) {
return baseFindKey(object4, getIteratee(predicate, 3), baseForOwnRight);
}
function forIn(object4, iteratee2) {
return object4 == null ? object4 : baseFor(object4, getIteratee(iteratee2, 3), keysIn);
}
function forInRight(object4, iteratee2) {
return object4 == null ? object4 : baseForRight(object4, getIteratee(iteratee2, 3), keysIn);
}
function forOwn(object4, iteratee2) {
return object4 && baseForOwn(object4, getIteratee(iteratee2, 3));
}
function forOwnRight(object4, iteratee2) {
return object4 && baseForOwnRight(object4, getIteratee(iteratee2, 3));
}
function functions(object4) {
return object4 == null ? [] : baseFunctions(object4, keys2(object4));
}
function functionsIn(object4) {
return object4 == null ? [] : baseFunctions(object4, keysIn(object4));
}
function get2(object4, path, defaultValue) {
var result2 = object4 == null ? undefined$1 : baseGet(object4, path);
return result2 === undefined$1 ? defaultValue : result2;
}
function has2(object4, path) {
return object4 != null && hasPath(object4, path, baseHas);
}
function hasIn(object4, path) {
return object4 != null && hasPath(object4, path, baseHasIn);
}
var invert2 = createInverter(function(result2, value, key) {
if (value != null && typeof value.toString != "function") {
value = nativeObjectToString.call(value);
}
result2[value] = key;
}, constant2(identity2));
var invertBy = createInverter(function(result2, value, key) {
if (value != null && typeof value.toString != "function") {
value = nativeObjectToString.call(value);
}
if (hasOwnProperty.call(result2, value)) {
result2[value].push(key);
} else {
result2[value] = [key];
}
}, getIteratee);
var invoke = baseRest(baseInvoke);
function keys2(object4) {
return isArrayLike2(object4) ? arrayLikeKeys(object4) : baseKeys(object4);
}
function keysIn(object4) {
return isArrayLike2(object4) ? arrayLikeKeys(object4, true) : baseKeysIn(object4);
}
function mapKeys(object4, iteratee2) {
var result2 = {};
iteratee2 = getIteratee(iteratee2, 3);
baseForOwn(object4, function(value, key, object5) {
baseAssignValue(result2, iteratee2(value, key, object5), value);
});
return result2;
}
function mapValues(object4, iteratee2) {
var result2 = {};
iteratee2 = getIteratee(iteratee2, 3);
baseForOwn(object4, function(value, key, object5) {
baseAssignValue(result2, key, iteratee2(value, key, object5));
});
return result2;
}
var merge2 = createAssigner(function(object4, source, srcIndex) {
baseMerge(object4, source, srcIndex);
});
var mergeWith = createAssigner(function(object4, source, srcIndex, customizer) {
baseMerge(object4, source, srcIndex, customizer);
});
var omit2 = flatRest(function(object4, paths) {
var result2 = {};
if (object4 == null) {
return result2;
}
var isDeep = false;
paths = arrayMap(paths, function(path) {
path = castPath(path, object4);
isDeep || (isDeep = path.length > 1);
return path;
});
copyObject(object4, getAllKeysIn(object4), result2);
if (isDeep) {
result2 = baseClone(result2, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);
}
var length2 = paths.length;
while (length2--) {
baseUnset(result2, paths[length2]);
}
return result2;
});
function omitBy(object4, predicate) {
return pickBy(object4, negate2(getIteratee(predicate)));
}
var pick2 = flatRest(function(object4, paths) {
return object4 == null ? {} : basePick(object4, paths);
});
function pickBy(object4, predicate) {
if (object4 == null) {
return {};
}
var props = arrayMap(getAllKeysIn(object4), function(prop) {
return [prop];
});
predicate = getIteratee(predicate);
return basePickBy(object4, props, function(value, path) {
return predicate(value, path[0]);
});
}
function result(object4, path, defaultValue) {
path = castPath(path, object4);
var index2 = -1, length2 = path.length;
if (!length2) {
length2 = 1;
object4 = undefined$1;
}
while (++index2 < length2) {
var value = object4 == null ? undefined$1 : object4[toKey(path[index2])];
if (value === undefined$1) {
index2 = length2;
value = defaultValue;
}
object4 = isFunction2(value) ? value.call(object4) : value;
}
return object4;
}
function set2(object4, path, value) {
return object4 == null ? object4 : baseSet(object4, path, value);
}
function setWith(object4, path, value, customizer) {
customizer = typeof customizer == "function" ? customizer : undefined$1;
return object4 == null ? object4 : baseSet(object4, path, value, customizer);
}
var toPairs = createToPairs(keys2);
var toPairsIn = createToPairs(keysIn);
function transform2(object4, iteratee2, accumulator) {
var isArr = isArray2(object4), isArrLike = isArr || isBuffer(object4) || isTypedArray2(object4);
iteratee2 = getIteratee(iteratee2, 4);
if (accumulator == null) {
var Ctor = object4 && object4.constructor;
if (isArrLike) {
accumulator = isArr ? new Ctor() : [];
} else if (isObject2(object4)) {
accumulator = isFunction2(Ctor) ? baseCreate(getPrototype(object4)) : {};
} else {
accumulator = {};
}
}
(isArrLike ? arrayEach : baseForOwn)(object4, function(value, index2, object5) {
return iteratee2(accumulator, value, index2, object5);
});
return accumulator;
}
function unset(object4, path) {
return object4 == null ? true : baseUnset(object4, path);
}
function update(object4, path, updater) {
return object4 == null ? object4 : baseUpdate(object4, path, castFunction(updater));
}
function updateWith(object4, path, updater, customizer) {
customizer = typeof customizer == "function" ? customizer : undefined$1;
return object4 == null ? object4 : baseUpdate(object4, path, castFunction(updater), customizer);
}
function values(object4) {
return object4 == null ? [] : baseValues(object4, keys2(object4));
}
function valuesIn(object4) {
return object4 == null ? [] : baseValues(object4, keysIn(object4));
}
function clamp2(number4, lower, upper) {
if (upper === undefined$1) {
upper = lower;
lower = undefined$1;
}
if (upper !== undefined$1) {
upper = toNumber(upper);
upper = upper === upper ? upper : 0;
}
if (lower !== undefined$1) {
lower = toNumber(lower);
lower = lower === lower ? lower : 0;
}
return baseClamp(toNumber(number4), lower, upper);
}
function inRange(number4, start2, end2) {
start2 = toFinite(start2);
if (end2 === undefined$1) {
end2 = start2;
start2 = 0;
} else {
end2 = toFinite(end2);
}
number4 = toNumber(number4);
return baseInRange(number4, start2, end2);
}
function random2(lower, upper, floating) {
if (floating && typeof floating != "boolean" && isIterateeCall(lower, upper, floating)) {
upper = floating = undefined$1;
}
if (floating === undefined$1) {
if (typeof upper == "boolean") {
floating = upper;
upper = undefined$1;
} else if (typeof lower == "boolean") {
floating = lower;
lower = undefined$1;
}
}
if (lower === undefined$1 && upper === undefined$1) {
lower = 0;
upper = 1;
} else {
lower = toFinite(lower);
if (upper === undefined$1) {
upper = lower;
lower = 0;
} else {
upper = toFinite(upper);
}
}
if (lower > upper) {
var temp = lower;
lower = upper;
upper = temp;
}
if (floating || lower % 1 || upper % 1) {
var rand = nativeRandom();
return nativeMin(lower + rand * (upper - lower + freeParseFloat("1e-" + ((rand + "").length - 1))), upper);
}
return baseRandom(lower, upper);
}
var camelCase2 = createCompounder(function(result2, word, index2) {
word = word.toLowerCase();
return result2 + (index2 ? capitalize(word) : word);
});
function capitalize(string3) {
return upperFirst(toString2(string3).toLowerCase());
}
function deburr(string3) {
string3 = toString2(string3);
return string3 && string3.replace(reLatin, deburrLetter).replace(reComboMark, "");
}
function endsWith(string3, target, position2) {
string3 = toString2(string3);
target = baseToString(target);
var length2 = string3.length;
position2 = position2 === undefined$1 ? length2 : baseClamp(toInteger(position2), 0, length2);
var end2 = position2;
position2 -= target.length;
return position2 >= 0 && string3.slice(position2, end2) == target;
}
function escape2(string3) {
string3 = toString2(string3);
return string3 && reHasUnescapedHtml.test(string3) ? string3.replace(reUnescapedHtml, escapeHtmlChar) : string3;
}
function escapeRegExp(string3) {
string3 = toString2(string3);
return string3 && reHasRegExpChar.test(string3) ? string3.replace(reRegExpChar, "\\$&") : string3;
}
var kebabCase = createCompounder(function(result2, word, index2) {
return result2 + (index2 ? "-" : "") + word.toLowerCase();
});
var lowerCase = createCompounder(function(result2, word, index2) {
return result2 + (index2 ? " " : "") + word.toLowerCase();
});
var lowerFirst = createCaseFirst("toLowerCase");
function pad3(string3, length2, chars) {
string3 = toString2(string3);
length2 = toInteger(length2);
var strLength = length2 ? stringSize(string3) : 0;
if (!length2 || strLength >= length2) {
return string3;
}
var mid = (length2 - strLength) / 2;
return createPadding(nativeFloor(mid), chars) + string3 + createPadding(nativeCeil(mid), chars);
}
function padEnd(string3, length2, chars) {
string3 = toString2(string3);
length2 = toInteger(length2);
var strLength = length2 ? stringSize(string3) : 0;
return length2 && strLength < length2 ? string3 + createPadding(length2 - strLength, chars) : string3;
}
function padStart(string3, length2, chars) {
string3 = toString2(string3);
length2 = toInteger(length2);
var strLength = length2 ? stringSize(string3) : 0;
return length2 && strLength < length2 ? createPadding(length2 - strLength, chars) + string3 : string3;
}
function parseInt2(string3, radix, guard) {
if (guard || radix == null) {
radix = 0;
} else if (radix) {
radix = +radix;
}
return nativeParseInt(toString2(string3).replace(reTrimStart, ""), radix || 0);
}
function repeat(string3, n2, guard) {
if (guard ? isIterateeCall(string3, n2, guard) : n2 === undefined$1) {
n2 = 1;
} else {
n2 = toInteger(n2);
}
return baseRepeat(toString2(string3), n2);
}
function replace2() {
var args = arguments, string3 = toString2(args[0]);
return args.length < 3 ? string3 : string3.replace(args[1], args[2]);
}
var snakeCase = createCompounder(function(result2, word, index2) {
return result2 + (index2 ? "_" : "") + word.toLowerCase();
});
function split2(string3, separator, limit) {
if (limit && typeof limit != "number" && isIterateeCall(string3, separator, limit)) {
separator = limit = undefined$1;
}
limit = limit === undefined$1 ? MAX_ARRAY_LENGTH : limit >>> 0;
if (!limit) {
return [];
}
string3 = toString2(string3);
if (string3 && (typeof separator == "string" || separator != null && !isRegExp2(separator))) {
separator = baseToString(separator);
if (!separator && hasUnicode(string3)) {
return castSlice(stringToArray(string3), 0, limit);
}
}
return string3.split(separator, limit);
}
var startCase = createCompounder(function(result2, word, index2) {
return result2 + (index2 ? " " : "") + upperFirst(word);
});
function startsWith4(string3, target, position2) {
string3 = toString2(string3);
position2 = position2 == null ? 0 : baseClamp(toInteger(position2), 0, string3.length);
target = baseToString(target);
return string3.slice(position2, position2 + target.length) == target;
}
function template(string3, options, guard) {
var settings = lodash2.templateSettings;
if (guard && isIterateeCall(string3, options, guard)) {
options = undefined$1;
}
string3 = toString2(string3);
options = assignInWith({}, options, settings, customDefaultsAssignIn);
var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn), importsKeys = keys2(imports), importsValues = baseValues(imports, importsKeys);
var isEscaping, isEvaluating, index2 = 0, interpolate = options.interpolate || reNoMatch, source = "__p += '";
var reDelimiters = RegExp2(
(options.escape || reNoMatch).source + "|" + interpolate.source + "|" + (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + "|" + (options.evaluate || reNoMatch).source + "|$",
"g"
);
var sourceURL = "//# sourceURL=" + (hasOwnProperty.call(options, "sourceURL") ? (options.sourceURL + "").replace(/\s/g, " ") : "lodash.templateSources[" + ++templateCounter + "]") + "\n";
string3.replace(reDelimiters, function(match2, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset2) {
interpolateValue || (interpolateValue = esTemplateValue);
source += string3.slice(index2, offset2).replace(reUnescapedString, escapeStringChar);
if (escapeValue) {
isEscaping = true;
source += "' +\n__e(" + escapeValue + ") +\n'";
}
if (evaluateValue) {
isEvaluating = true;
source += "';\n" + evaluateValue + ";\n__p += '";
}
if (interpolateValue) {
source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'";
}
index2 = offset2 + match2.length;
return match2;
});
source += "';\n";
var variable = hasOwnProperty.call(options, "variable") && options.variable;
if (!variable) {
source = "with (obj) {\n" + source + "\n}\n";
} else if (reForbiddenIdentifierChars.test(variable)) {
throw new Error2(INVALID_TEMPL_VAR_ERROR_TEXT);
}
source = (isEvaluating ? source.replace(reEmptyStringLeading, "") : source).replace(reEmptyStringMiddle, "$1").replace(reEmptyStringTrailing, "$1;");
source = "function(" + (variable || "obj") + ") {\n" + (variable ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (isEscaping ? ", __e = _.escape" : "") + (isEvaluating ? ", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n" : ";\n") + source + "return __p\n}";
var result2 = attempt(function() {
return Function2(importsKeys, sourceURL + "return " + source).apply(undefined$1, importsValues);
});
result2.source = source;
if (isError(result2)) {
throw result2;
}
return result2;
}
function toLower(value) {
return toString2(value).toLowerCase();
}
function toUpper(value) {
return toString2(value).toUpperCase();
}
function trim2(string3, chars, guard) {
string3 = toString2(string3);
if (string3 && (guard || chars === undefined$1)) {
return baseTrim(string3);
}
if (!string3 || !(chars = baseToString(chars))) {
return string3;
}
var strSymbols = stringToArray(string3), chrSymbols = stringToArray(chars), start2 = charsStartIndex(strSymbols, chrSymbols), end2 = charsEndIndex(strSymbols, chrSymbols) + 1;
return castSlice(strSymbols, start2, end2).join("");
}
function trimEnd4(string3, chars, guard) {
string3 = toString2(string3);
if (string3 && (guard || chars === undefined$1)) {
return string3.slice(0, trimmedEndIndex(string3) + 1);
}
if (!string3 || !(chars = baseToString(chars))) {
return string3;
}
var strSymbols = stringToArray(string3), end2 = charsEndIndex(strSymbols, stringToArray(chars)) + 1;
return castSlice(strSymbols, 0, end2).join("");
}
function trimStart4(string3, chars, guard) {
string3 = toString2(string3);
if (string3 && (guard || chars === undefined$1)) {
return string3.replace(reTrimStart, "");
}
if (!string3 || !(chars = baseToString(chars))) {
return string3;
}
var strSymbols = stringToArray(string3), start2 = charsStartIndex(strSymbols, stringToArray(chars));
return castSlice(strSymbols, start2).join("");
}
function truncate(string3, options) {
var length2 = DEFAULT_TRUNC_LENGTH, omission = DEFAULT_TRUNC_OMISSION;
if (isObject2(options)) {
var separator = "separator" in options ? options.separator : separator;
length2 = "length" in options ? toInteger(options.length) : length2;
omission = "omission" in options ? baseToString(options.omission) : omission;
}
string3 = toString2(string3);
var strLength = string3.length;
if (hasUnicode(string3)) {
var strSymbols = stringToArray(string3);
strLength = strSymbols.length;
}
if (length2 >= strLength) {
return string3;
}
var end2 = length2 - stringSize(omission);
if (end2 < 1) {
return omission;
}
var result2 = strSymbols ? castSlice(strSymbols, 0, end2).join("") : string3.slice(0, end2);
if (separator === undefined$1) {
return result2 + omission;
}
if (strSymbols) {
end2 += result2.length - end2;
}
if (isRegExp2(separator)) {
if (string3.slice(end2).search(separator)) {
var match2, substring = result2;
if (!separator.global) {
separator = RegExp2(separator.source, toString2(reFlags.exec(separator)) + "g");
}
separator.lastIndex = 0;
while (match2 = separator.exec(substring)) {
var newEnd = match2.index;
}
result2 = result2.slice(0, newEnd === undefined$1 ? end2 : newEnd);
}
} else if (string3.indexOf(baseToString(separator), end2) != end2) {
var index2 = result2.lastIndexOf(separator);
if (index2 > -1) {
result2 = result2.slice(0, index2);
}
}
return result2 + omission;
}
function unescape2(string3) {
string3 = toString2(string3);
return string3 && reHasEscapedHtml.test(string3) ? string3.replace(reEscapedHtml, unescapeHtmlChar) : string3;
}
var upperCase = createCompounder(function(result2, word, index2) {
return result2 + (index2 ? " " : "") + word.toUpperCase();
});
var upperFirst = createCaseFirst("toUpperCase");
function words(string3, pattern4, guard) {
string3 = toString2(string3);
pattern4 = guard ? undefined$1 : pattern4;
if (pattern4 === undefined$1) {
return hasUnicodeWord(string3) ? unicodeWords(string3) : asciiWords(string3);
}
return string3.match(pattern4) || [];
}
var attempt = baseRest(function(func, args) {
try {
return apply(func, undefined$1, args);
} catch (e2) {
return isError(e2) ? e2 : new Error2(e2);
}
});
var bindAll = flatRest(function(object4, methodNames) {
arrayEach(methodNames, function(key) {
key = toKey(key);
baseAssignValue(object4, key, bind3(object4[key], object4));
});
return object4;
});
function cond(pairs) {
var length2 = pairs == null ? 0 : pairs.length, toIteratee = getIteratee();
pairs = !length2 ? [] : arrayMap(pairs, function(pair) {
if (typeof pair[1] != "function") {
throw new TypeError2(FUNC_ERROR_TEXT);
}
return [toIteratee(pair[0]), pair[1]];
});
return baseRest(function(args) {
var index2 = -1;
while (++index2 < length2) {
var pair = pairs[index2];
if (apply(pair[0], this, args)) {
return apply(pair[1], this, args);
}
}
});
}
function conforms(source) {
return baseConforms(baseClone(source, CLONE_DEEP_FLAG));
}
function constant2(value) {
return function() {
return value;
};
}
function defaultTo(value, defaultValue) {
return value == null || value !== value ? defaultValue : value;
}
var flow = createFlow();
var flowRight = createFlow(true);
function identity2(value) {
return value;
}
function iteratee(func) {
return baseIteratee(typeof func == "function" ? func : baseClone(func, CLONE_DEEP_FLAG));
}
function matches(source) {
return baseMatches(baseClone(source, CLONE_DEEP_FLAG));
}
function matchesProperty(path, srcValue) {
return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));
}
var method4 = baseRest(function(path, args) {
return function(object4) {
return baseInvoke(object4, path, args);
};
});
var methodOf = baseRest(function(object4, args) {
return function(path) {
return baseInvoke(object4, path, args);
};
});
function mixin2(object4, source, options) {
var props = keys2(source), methodNames = baseFunctions(source, props);
if (options == null && !(isObject2(source) && (methodNames.length || !props.length))) {
options = source;
source = object4;
object4 = this;
methodNames = baseFunctions(source, keys2(source));
}
var chain2 = !(isObject2(options) && "chain" in options) || !!options.chain, isFunc = isFunction2(object4);
arrayEach(methodNames, function(methodName) {
var func = source[methodName];
object4[methodName] = func;
if (isFunc) {
object4.prototype[methodName] = function() {
var chainAll = this.__chain__;
if (chain2 || chainAll) {
var result2 = object4(this.__wrapped__), actions2 = result2.__actions__ = copyArray(this.__actions__);
actions2.push({ "func": func, "args": arguments, "thisArg": object4 });
result2.__chain__ = chainAll;
return result2;
}
return func.apply(object4, arrayPush([this.value()], arguments));
};
}
});
return object4;
}
function noConflict() {
if (root._ === this) {
root._ = oldDash;
}
return this;
}
function noop3() {
}
function nthArg(n2) {
n2 = toInteger(n2);
return baseRest(function(args) {
return baseNth(args, n2);
});
}
var over = createOver(arrayMap);
var overEvery = createOver(arrayEvery);
var overSome = createOver(arraySome);
function property(path) {
return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
}
function propertyOf(object4) {
return function(path) {
return object4 == null ? undefined$1 : baseGet(object4, path);
};
}
var range3 = createRange();
var rangeRight = createRange(true);
function stubArray() {
return [];
}
function stubFalse() {
return false;
}
function stubObject() {
return {};
}
function stubString() {
return "";
}
function stubTrue() {
return true;
}
function times(n2, iteratee2) {
n2 = toInteger(n2);
if (n2 < 1 || n2 > MAX_SAFE_INTEGER2) {
return [];
}
var index2 = MAX_ARRAY_LENGTH, length2 = nativeMin(n2, MAX_ARRAY_LENGTH);
iteratee2 = getIteratee(iteratee2);
n2 -= MAX_ARRAY_LENGTH;
var result2 = baseTimes(length2, iteratee2);
while (++index2 < n2) {
iteratee2(index2);
}
return result2;
}
function toPath(value) {
if (isArray2(value)) {
return arrayMap(value, toKey);
}
return isSymbol(value) ? [value] : copyArray(stringToPath(toString2(value)));
}
function uniqueId(prefix) {
var id2 = ++idCounter;
return toString2(prefix) + id2;
}
var add2 = createMathOperation(function(augend, addend) {
return augend + addend;
}, 0);
var ceil = createRound("ceil");
var divide = createMathOperation(function(dividend, divisor) {
return dividend / divisor;
}, 1);
var floor = createRound("floor");
function max3(array4) {
return array4 && array4.length ? baseExtremum(array4, identity2, baseGt) : undefined$1;
}
function maxBy(array4, iteratee2) {
return array4 && array4.length ? baseExtremum(array4, getIteratee(iteratee2, 2), baseGt) : undefined$1;
}
function mean(array4) {
return baseMean(array4, identity2);
}
function meanBy(array4, iteratee2) {
return baseMean(array4, getIteratee(iteratee2, 2));
}
function min3(array4) {
return array4 && array4.length ? baseExtremum(array4, identity2, baseLt) : undefined$1;
}
function minBy(array4, iteratee2) {
return array4 && array4.length ? baseExtremum(array4, getIteratee(iteratee2, 2), baseLt) : undefined$1;
}
var multiply = createMathOperation(function(multiplier, multiplicand) {
return multiplier * multiplicand;
}, 1);
var round2 = createRound("round");
var subtract = createMathOperation(function(minuend, subtrahend) {
return minuend - subtrahend;
}, 0);
function sum2(array4) {
return array4 && array4.length ? baseSum(array4, identity2) : 0;
}
function sumBy(array4, iteratee2) {
return array4 && array4.length ? baseSum(array4, getIteratee(iteratee2, 2)) : 0;
}
lodash2.after = after;
lodash2.ary = ary;
lodash2.assign = assign;
lodash2.assignIn = assignIn;
lodash2.assignInWith = assignInWith;
lodash2.assignWith = assignWith;
lodash2.at = at;
lodash2.before = before;
lodash2.bind = bind3;
lodash2.bindAll = bindAll;
lodash2.bindKey = bindKey;
lodash2.castArray = castArray;
lodash2.chain = chain;
lodash2.chunk = chunk;
lodash2.compact = compact;
lodash2.concat = concat;
lodash2.cond = cond;
lodash2.conforms = conforms;
lodash2.constant = constant2;
lodash2.countBy = countBy;
lodash2.create = create3;
lodash2.curry = curry2;
lodash2.curryRight = curryRight;
lodash2.debounce = debounce2;
lodash2.defaults = defaults2;
lodash2.defaultsDeep = defaultsDeep;
lodash2.defer = defer;
lodash2.delay = delay;
lodash2.difference = difference;
lodash2.differenceBy = differenceBy;
lodash2.differenceWith = differenceWith;
lodash2.drop = drop;
lodash2.dropRight = dropRight;
lodash2.dropRightWhile = dropRightWhile;
lodash2.dropWhile = dropWhile;
lodash2.fill = fill;
lodash2.filter = filter2;
lodash2.flatMap = flatMap;
lodash2.flatMapDeep = flatMapDeep;
lodash2.flatMapDepth = flatMapDepth;
lodash2.flatten = flatten;
lodash2.flattenDeep = flattenDeep;
lodash2.flattenDepth = flattenDepth;
lodash2.flip = flip2;
lodash2.flow = flow;
lodash2.flowRight = flowRight;
lodash2.fromPairs = fromPairs;
lodash2.functions = functions;
lodash2.functionsIn = functionsIn;
lodash2.groupBy = groupBy;
lodash2.initial = initial;
lodash2.intersection = intersection;
lodash2.intersectionBy = intersectionBy;
lodash2.intersectionWith = intersectionWith;
lodash2.invert = invert2;
lodash2.invertBy = invertBy;
lodash2.invokeMap = invokeMap;
lodash2.iteratee = iteratee;
lodash2.keyBy = keyBy;
lodash2.keys = keys2;
lodash2.keysIn = keysIn;
lodash2.map = map2;
lodash2.mapKeys = mapKeys;
lodash2.mapValues = mapValues;
lodash2.matches = matches;
lodash2.matchesProperty = matchesProperty;
lodash2.memoize = memoize2;
lodash2.merge = merge2;
lodash2.mergeWith = mergeWith;
lodash2.method = method4;
lodash2.methodOf = methodOf;
lodash2.mixin = mixin2;
lodash2.negate = negate2;
lodash2.nthArg = nthArg;
lodash2.omit = omit2;
lodash2.omitBy = omitBy;
lodash2.once = once;
lodash2.orderBy = orderBy;
lodash2.over = over;
lodash2.overArgs = overArgs;
lodash2.overEvery = overEvery;
lodash2.overSome = overSome;
lodash2.partial = partial;
lodash2.partialRight = partialRight;
lodash2.partition = partition;
lodash2.pick = pick2;
lodash2.pickBy = pickBy;
lodash2.property = property;
lodash2.propertyOf = propertyOf;
lodash2.pull = pull;
lodash2.pullAll = pullAll;
lodash2.pullAllBy = pullAllBy;
lodash2.pullAllWith = pullAllWith;
lodash2.pullAt = pullAt;
lodash2.range = range3;
lodash2.rangeRight = rangeRight;
lodash2.rearg = rearg;
lodash2.reject = reject;
lodash2.remove = remove;
lodash2.rest = rest;
lodash2.reverse = reverse2;
lodash2.sampleSize = sampleSize;
lodash2.set = set2;
lodash2.setWith = setWith;
lodash2.shuffle = shuffle;
lodash2.slice = slice2;
lodash2.sortBy = sortBy;
lodash2.sortedUniq = sortedUniq;
lodash2.sortedUniqBy = sortedUniqBy;
lodash2.split = split2;
lodash2.spread = spread;
lodash2.tail = tail;
lodash2.take = take2;
lodash2.takeRight = takeRight;
lodash2.takeRightWhile = takeRightWhile;
lodash2.takeWhile = takeWhile;
lodash2.tap = tap;
lodash2.throttle = throttle2;
lodash2.thru = thru;
lodash2.toArray = toArray2;
lodash2.toPairs = toPairs;
lodash2.toPairsIn = toPairsIn;
lodash2.toPath = toPath;
lodash2.toPlainObject = toPlainObject;
lodash2.transform = transform2;
lodash2.unary = unary;
lodash2.union = union;
lodash2.unionBy = unionBy;
lodash2.unionWith = unionWith;
lodash2.uniq = uniq;
lodash2.uniqBy = uniqBy;
lodash2.uniqWith = uniqWith;
lodash2.unset = unset;
lodash2.unzip = unzip;
lodash2.unzipWith = unzipWith;
lodash2.update = update;
lodash2.updateWith = updateWith;
lodash2.values = values;
lodash2.valuesIn = valuesIn;
lodash2.without = without;
lodash2.words = words;
lodash2.wrap = wrap;
lodash2.xor = xor;
lodash2.xorBy = xorBy;
lodash2.xorWith = xorWith;
lodash2.zip = zip;
lodash2.zipObject = zipObject;
lodash2.zipObjectDeep = zipObjectDeep;
lodash2.zipWith = zipWith;
lodash2.entries = toPairs;
lodash2.entriesIn = toPairsIn;
lodash2.extend = assignIn;
lodash2.extendWith = assignInWith;
mixin2(lodash2, lodash2);
lodash2.add = add2;
lodash2.attempt = attempt;
lodash2.camelCase = camelCase2;
lodash2.capitalize = capitalize;
lodash2.ceil = ceil;
lodash2.clamp = clamp2;
lodash2.clone = clone3;
lodash2.cloneDeep = cloneDeep;
lodash2.cloneDeepWith = cloneDeepWith;
lodash2.cloneWith = cloneWith;
lodash2.conformsTo = conformsTo;
lodash2.deburr = deburr;
lodash2.defaultTo = defaultTo;
lodash2.divide = divide;
lodash2.endsWith = endsWith;
lodash2.eq = eq;
lodash2.escape = escape2;
lodash2.escapeRegExp = escapeRegExp;
lodash2.every = every;
lodash2.find = find2;
lodash2.findIndex = findIndex;
lodash2.findKey = findKey;
lodash2.findLast = findLast;
lodash2.findLastIndex = findLastIndex;
lodash2.findLastKey = findLastKey;
lodash2.floor = floor;
lodash2.forEach = forEach;
lodash2.forEachRight = forEachRight;
lodash2.forIn = forIn;
lodash2.forInRight = forInRight;
lodash2.forOwn = forOwn;
lodash2.forOwnRight = forOwnRight;
lodash2.get = get2;
lodash2.gt = gt;
lodash2.gte = gte;
lodash2.has = has2;
lodash2.hasIn = hasIn;
lodash2.head = head;
lodash2.identity = identity2;
lodash2.includes = includes2;
lodash2.indexOf = indexOf2;
lodash2.inRange = inRange;
lodash2.invoke = invoke;
lodash2.isArguments = isArguments;
lodash2.isArray = isArray2;
lodash2.isArrayBuffer = isArrayBuffer;
lodash2.isArrayLike = isArrayLike2;
lodash2.isArrayLikeObject = isArrayLikeObject;
lodash2.isBoolean = isBoolean;
lodash2.isBuffer = isBuffer;
lodash2.isDate = isDate;
lodash2.isElement = isElement;
lodash2.isEmpty = isEmpty;
lodash2.isEqual = isEqual2;
lodash2.isEqualWith = isEqualWith;
lodash2.isError = isError;
lodash2.isFinite = isFinite2;
lodash2.isFunction = isFunction2;
lodash2.isInteger = isInteger2;
lodash2.isLength = isLength;
lodash2.isMap = isMap;
lodash2.isMatch = isMatch;
lodash2.isMatchWith = isMatchWith;
lodash2.isNaN = isNaN2;
lodash2.isNative = isNative;
lodash2.isNil = isNil;
lodash2.isNull = isNull;
lodash2.isNumber = isNumber2;
lodash2.isObject = isObject2;
lodash2.isObjectLike = isObjectLike;
lodash2.isPlainObject = isPlainObject;
lodash2.isRegExp = isRegExp2;
lodash2.isSafeInteger = isSafeInteger2;
lodash2.isSet = isSet;
lodash2.isString = isString2;
lodash2.isSymbol = isSymbol;
lodash2.isTypedArray = isTypedArray2;
lodash2.isUndefined = isUndefined;
lodash2.isWeakMap = isWeakMap;
lodash2.isWeakSet = isWeakSet;
lodash2.join = join;
lodash2.kebabCase = kebabCase;
lodash2.last = last;
lodash2.lastIndexOf = lastIndexOf;
lodash2.lowerCase = lowerCase;
lodash2.lowerFirst = lowerFirst;
lodash2.lt = lt2;
lodash2.lte = lte;
lodash2.max = max3;
lodash2.maxBy = maxBy;
lodash2.mean = mean;
lodash2.meanBy = meanBy;
lodash2.min = min3;
lodash2.minBy = minBy;
lodash2.stubArray = stubArray;
lodash2.stubFalse = stubFalse;
lodash2.stubObject = stubObject;
lodash2.stubString = stubString;
lodash2.stubTrue = stubTrue;
lodash2.multiply = multiply;
lodash2.nth = nth;
lodash2.noConflict = noConflict;
lodash2.noop = noop3;
lodash2.now = now2;
lodash2.pad = pad3;
lodash2.padEnd = padEnd;
lodash2.padStart = padStart;
lodash2.parseInt = parseInt2;
lodash2.random = random2;
lodash2.reduce = reduce2;
lodash2.reduceRight = reduceRight;
lodash2.repeat = repeat;
lodash2.replace = replace2;
lodash2.result = result;
lodash2.round = round2;
lodash2.runInContext = runInContext2;
lodash2.sample = sample;
lodash2.size = size;
lodash2.snakeCase = snakeCase;
lodash2.some = some;
lodash2.sortedIndex = sortedIndex;
lodash2.sortedIndexBy = sortedIndexBy;
lodash2.sortedIndexOf = sortedIndexOf;
lodash2.sortedLastIndex = sortedLastIndex;
lodash2.sortedLastIndexBy = sortedLastIndexBy;
lodash2.sortedLastIndexOf = sortedLastIndexOf;
lodash2.startCase = startCase;
lodash2.startsWith = startsWith4;
lodash2.subtract = subtract;
lodash2.sum = sum2;
lodash2.sumBy = sumBy;
lodash2.template = template;
lodash2.times = times;
lodash2.toFinite = toFinite;
lodash2.toInteger = toInteger;
lodash2.toLength = toLength;
lodash2.toLower = toLower;
lodash2.toNumber = toNumber;
lodash2.toSafeInteger = toSafeInteger;
lodash2.toString = toString2;
lodash2.toUpper = toUpper;
lodash2.trim = trim2;
lodash2.trimEnd = trimEnd4;
lodash2.trimStart = trimStart4;
lodash2.truncate = truncate;
lodash2.unescape = unescape2;
lodash2.uniqueId = uniqueId;
lodash2.upperCase = upperCase;
lodash2.upperFirst = upperFirst;
lodash2.each = forEach;
lodash2.eachRight = forEachRight;
lodash2.first = head;
mixin2(lodash2, function() {
var source = {};
baseForOwn(lodash2, function(func, methodName) {
if (!hasOwnProperty.call(lodash2.prototype, methodName)) {
source[methodName] = func;
}
});
return source;
}(), { "chain": false });
lodash2.VERSION = VERSION;
arrayEach(["bind", "bindKey", "curry", "curryRight", "partial", "partialRight"], function(methodName) {
lodash2[methodName].placeholder = lodash2;
});
arrayEach(["drop", "take"], function(methodName, index2) {
LazyWrapper.prototype[methodName] = function(n2) {
n2 = n2 === undefined$1 ? 1 : nativeMax(toInteger(n2), 0);
var result2 = this.__filtered__ && !index2 ? new LazyWrapper(this) : this.clone();
if (result2.__filtered__) {
result2.__takeCount__ = nativeMin(n2, result2.__takeCount__);
} else {
result2.__views__.push({
"size": nativeMin(n2, MAX_ARRAY_LENGTH),
"type": methodName + (result2.__dir__ < 0 ? "Right" : "")
});
}
return result2;
};
LazyWrapper.prototype[methodName + "Right"] = function(n2) {
return this.reverse()[methodName](n2).reverse();
};
});
arrayEach(["filter", "map", "takeWhile"], function(methodName, index2) {
var type4 = index2 + 1, isFilter = type4 == LAZY_FILTER_FLAG || type4 == LAZY_WHILE_FLAG;
LazyWrapper.prototype[methodName] = function(iteratee2) {
var result2 = this.clone();
result2.__iteratees__.push({
"iteratee": getIteratee(iteratee2, 3),
"type": type4
});
result2.__filtered__ = result2.__filtered__ || isFilter;
return result2;
};
});
arrayEach(["head", "last"], function(methodName, index2) {
var takeName = "take" + (index2 ? "Right" : "");
LazyWrapper.prototype[methodName] = function() {
return this[takeName](1).value()[0];
};
});
arrayEach(["initial", "tail"], function(methodName, index2) {
var dropName = "drop" + (index2 ? "" : "Right");
LazyWrapper.prototype[methodName] = function() {
return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);
};
});
LazyWrapper.prototype.compact = function() {
return this.filter(identity2);
};
LazyWrapper.prototype.find = function(predicate) {
return this.filter(predicate).head();
};
LazyWrapper.prototype.findLast = function(predicate) {
return this.reverse().find(predicate);
};
LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {
if (typeof path == "function") {
return new LazyWrapper(this);
}
return this.map(function(value) {
return baseInvoke(value, path, args);
});
});
LazyWrapper.prototype.reject = function(predicate) {
return this.filter(negate2(getIteratee(predicate)));
};
LazyWrapper.prototype.slice = function(start2, end2) {
start2 = toInteger(start2);
var result2 = this;
if (result2.__filtered__ && (start2 > 0 || end2 < 0)) {
return new LazyWrapper(result2);
}
if (start2 < 0) {
result2 = result2.takeRight(-start2);
} else if (start2) {
result2 = result2.drop(start2);
}
if (end2 !== undefined$1) {
end2 = toInteger(end2);
result2 = end2 < 0 ? result2.dropRight(-end2) : result2.take(end2 - start2);
}
return result2;
};
LazyWrapper.prototype.takeRightWhile = function(predicate) {
return this.reverse().takeWhile(predicate).reverse();
};
LazyWrapper.prototype.toArray = function() {
return this.take(MAX_ARRAY_LENGTH);
};
baseForOwn(LazyWrapper.prototype, function(func, methodName) {
var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName), isTaker = /^(?:head|last)$/.test(methodName), lodashFunc = lodash2[isTaker ? "take" + (methodName == "last" ? "Right" : "") : methodName], retUnwrapped = isTaker || /^find/.test(methodName);
if (!lodashFunc) {
return;
}
lodash2.prototype[methodName] = function() {
var value = this.__wrapped__, args = isTaker ? [1] : arguments, isLazy = value instanceof LazyWrapper, iteratee2 = args[0], useLazy = isLazy || isArray2(value);
var interceptor = function(value2) {
var result3 = lodashFunc.apply(lodash2, arrayPush([value2], args));
return isTaker && chainAll ? result3[0] : result3;
};
if (useLazy && checkIteratee && typeof iteratee2 == "function" && iteratee2.length != 1) {
isLazy = useLazy = false;
}
var chainAll = this.__chain__, isHybrid = !!this.__actions__.length, isUnwrapped = retUnwrapped && !chainAll, onlyLazy = isLazy && !isHybrid;
if (!retUnwrapped && useLazy) {
value = onlyLazy ? value : new LazyWrapper(this);
var result2 = func.apply(value, args);
result2.__actions__.push({ "func": thru, "args": [interceptor], "thisArg": undefined$1 });
return new LodashWrapper(result2, chainAll);
}
if (isUnwrapped && onlyLazy) {
return func.apply(this, args);
}
result2 = this.thru(interceptor);
return isUnwrapped ? isTaker ? result2.value()[0] : result2.value() : result2;
};
});
arrayEach(["pop", "push", "shift", "sort", "splice", "unshift"], function(methodName) {
var func = arrayProto2[methodName], chainName = /^(?:push|sort|unshift)$/.test(methodName) ? "tap" : "thru", retUnwrapped = /^(?:pop|shift)$/.test(methodName);
lodash2.prototype[methodName] = function() {
var args = arguments;
if (retUnwrapped && !this.__chain__) {
var value = this.value();
return func.apply(isArray2(value) ? value : [], args);
}
return this[chainName](function(value2) {
return func.apply(isArray2(value2) ? value2 : [], args);
});
};
});
baseForOwn(LazyWrapper.prototype, function(func, methodName) {
var lodashFunc = lodash2[methodName];
if (lodashFunc) {
var key = lodashFunc.name + "";
if (!hasOwnProperty.call(realNames, key)) {
realNames[key] = [];
}
realNames[key].push({ "name": methodName, "func": lodashFunc });
}
});
realNames[createHybrid(undefined$1, WRAP_BIND_KEY_FLAG).name] = [{
"name": "wrapper",
"func": undefined$1
}];
LazyWrapper.prototype.clone = lazyClone;
LazyWrapper.prototype.reverse = lazyReverse;
LazyWrapper.prototype.value = lazyValue;
lodash2.prototype.at = wrapperAt;
lodash2.prototype.chain = wrapperChain;
lodash2.prototype.commit = wrapperCommit;
lodash2.prototype.next = wrapperNext;
lodash2.prototype.plant = wrapperPlant;
lodash2.prototype.reverse = wrapperReverse;
lodash2.prototype.toJSON = lodash2.prototype.valueOf = lodash2.prototype.value = wrapperValue;
lodash2.prototype.first = lodash2.prototype.head;
if (symIterator) {
lodash2.prototype[symIterator] = wrapperToIterator;
}
return lodash2;
};
var _ = runInContext();
if (freeModule) {
(freeModule.exports = _)._ = _;
freeExports._ = _;
} else {
root._ = _;
}
}).call(commonjsGlobal);
})(lodash, lodash.exports);
var lodashExports = lodash.exports;
const customCascader = "index-module__customCascader___3CklO";
const styles$1 = {
customCascader
};
const FilterCascader = ({
summary,
onFilter
}) => {
const [firstText, setFirstText] = reactExports.useState("");
const [secondText, setSecondText] = reactExports.useState("");
const [selectedValue, setSelectedValue] = reactExports.useState(["all"]);
const [isDropdownOpen, setIsDropdownOpen] = reactExports.useState(false);
const cascaderOptions = [
{
value: "all",
label: "全部"
},
...Object.entries(summary?.type_ratio).map(([key, value]) => {
const primaryOption = {
value: key,
label: /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { children: [
`${key}`,
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-[#2951F2] ml-2", children: [
(value * 100).toFixed(1),
"%"
] })
] }),
children: []
};
Object.entries(summary?.name_ratio).forEach(
([nameKey, nameValue]) => {
if (nameKey.startsWith(`${key}-`)) {
primaryOption.children.push({
value: nameKey,
label: /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { children: [
`${nameKey}`,
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-[#2951F2] ml-2", children: [
(nameValue * 100).toFixed(1),
"%"
] })
] })
});
}
}
);
return primaryOption;
})
];
const onChange = (value) => {
if (!value || value.length === 0) {
setFirstText("");
setSecondText("");
setSelectedValue(["all"]);
onFilter("", "");
return;
}
const [primaryName, secondaryName] = value;
setSelectedValue(value);
if (primaryName === "all") {
setFirstText("");
setSecondText("");
onFilter("", "");
return;
}
if (primaryName) {
setFirstText(primaryName);
}
if (secondaryName) {
setSecondText(secondaryName);
} else {
setSecondText("");
}
onFilter(primaryName, secondaryName);
};
const handlePrimaryClick = (e2) => {
if (firstText && firstText !== "all") {
setSecondText("");
setSelectedValue([firstText]);
onFilter(firstText, "");
}
};
return /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-[#121316] text-[1.2rem]", children: [
" ",
/* @__PURE__ */ jsxRuntimeExports.jsx(
Cascader,
{
options: cascaderOptions,
onChange,
placeholder: "请选择筛选条件",
changeOnSelect: true,
style: { width: 240, height: 600 },
allowClear: true,
value: selectedValue,
defaultValue: ["all"],
expandTrigger: "hover",
popupClassName: styles$1.customCascader,
onDropdownVisibleChange: setIsDropdownOpen,
children: /* @__PURE__ */ jsxRuntimeExports.jsxs("a", { className: "cursor-pointer font-semibold", children: [
/* @__PURE__ */ jsxRuntimeExports.jsx(
"span",
{
className: "font-semibold hover:text-[#0D53DE]",
onClick: handlePrimaryClick,
children: firstText
}
),
secondText && /* @__PURE__ */ jsxRuntimeExports.jsx(
IconFont,
{
type: "icon-more",
className: "mx-1 relative top-[2px]"
}
),
secondText && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-semibold hover:text-[#0D53DE]", children: secondText }),
!firstText && !secondText && "全部测评数据",
/* @__PURE__ */ jsxRuntimeExports.jsx(
IconFont,
{
type: "icon-arrow-down-filled",
className: cls(
"mx-2 text-[1rem] duration-300",
isDropdownOpen && "rotate-180"
)
}
)
] })
}
)
] });
};
const EllipsisText = reactExports.forwardRef(
({
children,
lines = 1,
width,
className = "",
expandable = true,
onExpandChange,
controlIsExpanded
}, ref) => {
const [isExpanded, setIsExpanded] = reactExports.useState(false);
const [showEllipsis, setShowEllipsis] = reactExports.useState(false);
const textRef = reactExports.useRef(null);
const containerRef = reactExports.useRef(null);
reactExports.useImperativeHandle(ref, () => ({
toggleExpand: () => {
if (expandable) {
setIsExpanded((prev2) => !prev2);
}
}
}));
reactExports.useEffect(() => {
const checkOverflow = () => {
if (textRef.current && containerRef.current) {
const isOverflowing = textRef.current.scrollHeight > containerRef.current.clientHeight;
setShowEllipsis(isOverflowing);
}
};
checkOverflow();
window.addEventListener("resize", checkOverflow);
return () => window.removeEventListener("resize", checkOverflow);
}, [children, lines]);
const handleClick = () => {
if (expandable) {
setIsExpanded(!isExpanded);
}
};
const containerStyle = {
width: width || "100%",
maxWidth: "100%",
overflow: "hidden"
};
const textStyle = {
display: "-webkit-box",
WebkitLineClamp: isExpanded ? "unset" : lines,
WebkitBoxOrient: "vertical",
overflow: "hidden"
};
reactExports.useEffect(() => {
onExpandChange?.(isExpanded);
}, [isExpanded, onExpandChange]);
reactExports.useEffect(() => {
setIsExpanded(!!controlIsExpanded);
}, [controlIsExpanded]);
return /* @__PURE__ */ jsxRuntimeExports.jsx(
"div",
{
ref: containerRef,
style: containerStyle,
className: `relative ${className}`,
children: /* @__PURE__ */ jsxRuntimeExports.jsx(
"div",
{
ref: textRef,
style: textStyle,
className: cls(
`${expandable ? "cursor-select" : ""}`,
"select-text"
),
onClick: handleClick,
children
}
)
}
);
}
);
EllipsisText.displayName = "EllipsisText";
const HighlightText = reactExports.forwardRef(
({
text,
highlight,
showHighlight,
width,
onExpandChange,
controlIsExpanded,
ellipsisTextClassName = "",
expandable
}, ref) => {
if (!showHighlight || !highlight || highlight.length === 0)
return /* @__PURE__ */ jsxRuntimeExports.jsx(
EllipsisText,
{
width,
lines: 4,
controlIsExpanded,
children: text
}
);
const flattenedHighlight = highlight.flat();
const highlightText = (inputText) => {
let result = [inputText];
flattenedHighlight.forEach((highlightStr) => {
result = result.flatMap((part) => {
if (typeof part !== "string") return part;
const splitText = part.split(highlightStr);
return splitText.reduce(
(acc, subPart, index2) => {
if (index2 !== 0) {
acc.push(
/* @__PURE__ */ jsxRuntimeExports.jsx(
Popover,
{
overlayInnerStyle: { padding: 0 },
overlayClassName: styles$3.customConfigCopyPopover,
align: {
offset: [0, -1]
},
content: /* @__PURE__ */ jsxRuntimeExports.jsx(
Button$1,
{
type: "text",
icon: /* @__PURE__ */ jsxRuntimeExports.jsx(RefIcon$j, {}),
onClick: (e2) => {
e2?.stopPropagation();
copy$3(highlightStr);
staticMethods.success("复制成功");
},
children: "复制"
}
),
trigger: "hover",
placement: "top",
children: /* @__PURE__ */ jsxRuntimeExports.jsx(
"mark",
{
style: {
backgroundColor: "#FFE7B5",
cursor: "pointer"
},
children: highlightStr
}
)
},
`highlight-${index2}`
)
);
}
if (subPart) {
acc.push(subPart);
}
return acc;
},
[]
);
});
});
return result;
};
const highlightedText = highlightText(text);
const textRef = reactExports.useRef(null);
reactExports.useImperativeHandle(ref, () => ({
toggleExpand: textRef?.current?.toggleExpand?.()
}));
return /* @__PURE__ */ jsxRuntimeExports.jsx(
EllipsisText,
{
width,
lines: 4,
ref: textRef,
onExpandChange,
controlIsExpanded,
className: ellipsisTextClassName,
expandable,
children: highlightedText
}
);
}
);
HighlightText.displayName = "HighlightText";
const DetailCard = ({ data, showHighlight }) => {
const [isExpanded, setIsExpanded] = reactExports.useState(false);
const textRef = reactExports.useRef(null);
const toggleExpand = () => {
setIsExpanded(!isExpanded);
};
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "bg-[#F4F5F9] rounded-lg shadow-sm mt-4 px-12 py-6 ", children: [
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "h-max-content overflow-hidden flex items-center mb-2 flex-wrap relative", children: [
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-[1rem] font-semibold text-[#121316] mr-4", children: data.data_id }),
data?.type_list?.length && data?.type_list.map((type4, index2) => /* @__PURE__ */ jsxRuntimeExports.jsx(
"span",
{
className: "mb-1 text-[14px] text-[#3F4043] h-max-content rounded bg-[#fff] px-4 py-1 rounded mr-4",
children: type4
},
index2
)),
data?.name_list?.length && data?.name_list.map((type4, index2) => /* @__PURE__ */ jsxRuntimeExports.jsx(
"span",
{
className: "mb-1 text-[14px] text-[#3F4043] h-max-content rounded bg-[#fff] px-4 py-1 rounded mr-4",
children: type4
},
index2
)),
/* @__PURE__ */ jsxRuntimeExports.jsxs(
"div",
{
className: cls(
"absolute right-0 top-0 mr-1 text-[#121316]/[0.8] cursor-pointer text-[14px]"
),
onClick: () => toggleExpand(),
children: [
/* @__PURE__ */ jsxRuntimeExports.jsx(
IconFont,
{
className: cls(
"rotate-90 mr-1 ",
isExpanded && "!-rotate-90"
),
type: "icon-more"
}
),
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-[#121316]/[0.6]", children: isExpanded ? "收起" : "展开" })
]
}
)
] }),
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid grid-cols-6 gap-4 ", children: [
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "col-span-4 group", children: [
/* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-[#121316]/[0.35] text-[14px] mb-2 relative", children: [
"内容",
/* @__PURE__ */ jsxRuntimeExports.jsx(
IconFont,
{
type: "icon-copy",
onClick: (e2) => {
e2?.stopPropagation();
copy$3(String(data?.content));
staticMethods.success("复制成功");
},
className: "opacity-0 cursor-pointer group-hover:opacity-100 ml-2"
}
)
] }),
/* @__PURE__ */ jsxRuntimeExports.jsx(
"div",
{
className: `text-sm text-[#121316]/[0.8] ${!isExpanded ? "line-clamp-4" : ""}`,
children: /* @__PURE__ */ jsxRuntimeExports.jsx(
HighlightText,
{
text: data?.content?.slice(0, 1e4) || "-",
highlight: data.reason_list,
showHighlight: !!showHighlight,
controlIsExpanded: isExpanded,
expandable: false,
width: "100%",
ellipsisTextClassName: "!max-w-full",
ref: textRef
}
)
}
)
] }),
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: " col-span-2 group", children: [
/* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-[#121316]/[0.35] text-[14px] mb-2 relative group", children: [
"原因",
/* @__PURE__ */ jsxRuntimeExports.jsx(
IconFont,
{
type: "icon-copy",
onClick: (e2) => {
e2?.stopPropagation();
copy$3(String(data?.reason_list));
staticMethods.success("复制成功");
},
className: "opacity-0 cursor-pointer group-hover:opacity-100 ml-2"
}
)
] }),
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-sm text-[#121316] select-text", children: String(data?.reason_list) })
] })
] })
] });
};
const emptySvg = "data:image/svg+xml,%3csvg%20width='120'%20height='120'%20viewBox='0%200%20120%20120'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20id='Frame%201312317176'%3e%3cg%20id='Group%201312316503'%3e%3cpath%20id='Vector%202'%20d='M9%2064.4017L30.4764%2039.0413H91.8831L110.019%2064.4017H9Z'%20fill='%23D6DAE1'/%3e%3cpath%20id='Vector%203'%20d='M9%2079.6179L30.4764%2054.6802H91.8831L110.019%2079.6179H9Z'%20fill='%23EFF2F4'/%3e%3cpath%20id='Rectangle%204'%20d='M9%2064.4016H110.019V102H9V64.4016Z'%20fill='%23D6DAE1'/%3e%3cpath%20id='Vector'%20d='M42%2060.2672C42%2060.2672%2048.1829%2030.2987%2071.5527%2031.586C86.7471%2032.3794%2078.6175%2045.0242%2070.9113%2039.4374C60.5033%2031.9307%2069.9614%2017.3663%2086.3806%2018.0214'%20stroke='%23231815'%20stroke-width='2'%20stroke-miterlimit='10'/%3e%3c/g%3e%3cpath%20id='Polygon%201'%20d='M106.459%2018.7582L85.0008%2027.3687L90.5515%2018.328L85.4974%209.0007L106.459%2018.7582Z'%20fill='%230D53DE'/%3e%3cg%20id='Group%201312317183'%3e%3cline%20id='Line%201'%20x1='20.1768'%20y1='27.8232'%20x2='26.5408'%20y2='34.1871'%20stroke='%23231815'%20stroke-width='2'/%3e%3cline%20id='Line%202'%20x1='14.7788'%20y1='35.5541'%20x2='23.4722'%20y2='37.8835'%20stroke='%23231815'%20stroke-width='2'/%3e%3cline%20id='Line%203'%20x1='29.8837'%20y1='31.4722'%20x2='27.5543'%20y2='22.7789'%20stroke='%23231815'%20stroke-width='2'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
const Empty = ({
id: id2 = "",
title,
className = "",
children
}) => {
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
"div",
{
id: id2,
className: cls(
className,
"text-center text-gray-2 w-full h-full flex flex-col items-center justify-center "
),
children: [
/* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: emptySvg, alt: "" }),
title,
children
]
}
);
};
const DetailTable = ({
summary,
currentPath,
detailPathList,
allDataPath,
defaultErrorTypes,
defaultErrorNames
}) => {
const [data, setData] = reactExports.useState([]);
const [loading, setLoading] = reactExports.useState(true);
const [errorTypes, setErrorTypes] = reactExports.useState([]);
const [selectedErrorTypes, setSelectedErrorTypes] = reactExports.useState([]);
const [selectedErrorNames, setSelectedErrorNames] = reactExports.useState([]);
const [errorNames, setErrorNames] = reactExports.useState([]);
const [showHighlight, setShowHighlight] = reactExports.useState(true);
const dal = useDALStore((state) => state.dal);
const [viewMode, setViewMode] = reactExports.useState("table");
const [current, setCurrent] = reactExports.useState({
currentPage: 1,
pageSize: 10
});
const [filter2, setFilter] = reactExports.useState({});
reactExports.useEffect(() => {
const loadData = async () => {
try {
setLoading(true);
setErrorNames(Object.keys(summary.name_ratio));
setErrorTypes(Object.keys(summary.type_ratio));
let allData = [];
for (const { primaryName, secondaryNameList } of allDataPath) {
const result = await dal?.getEvaluationDetail?.({
currentPath,
primaryName,
secondaryNameList
});
if (result) {
allData = allData.concat(result);
}
}
setData(lodashExports.uniqBy(allData, "data_id"));
setCurrent({
...current,
currentPage: 1
});
} catch (error) {
console.error("Error loading data:", error);
} finally {
setLoading(false);
}
};
loadData();
}, [currentPath, detailPathList]);
const columns = [
{
title: "数据 ID",
dataIndex: "data_id",
key: "data_id",
minWidth: 100
},
{
title: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-semibold", children: "一级维度" }),
dataIndex: "type_list",
key: "type_list",
render: (types2) => JSON.stringify(types2)
// filters: errorTypes.map(type => ({ text: type, value: type })),
// onFilter: (value, record) =>
// record.type_list.includes(value.toString()),
// filterIcon: filtered => (
// <FilterFilled
// style={{ color: filtered ? '#1890ff' : undefined }}
// />
// ),
// filteredValue: selectedErrorTypes,
},
{
title: () => /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-semibold", children: "二级维度" }),
dataIndex: "name_list",
key: "name_list",
render: (names2) => JSON.stringify(names2)
// filters: errorNames.map(name => ({ text: name, value: name })),
// onFilter: (value, record) =>
// record.name_list.includes(value.toString()),
// filteredValue: selectedErrorNames,
// filterIcon: filtered => (
// <FilterFilled
// style={{
// color: filtered ? '#1890ff' : undefined,
// }}
// />
// ),
},
{
title: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "flex justify-between font-semibold", children: "内容" }),
dataIndex: "content",
key: "content",
render: (text, record) => {
return /* @__PURE__ */ jsxRuntimeExports.jsx(
HighlightText,
{
text: text.slice(0, 1e4) || "-",
highlight: record.reason_list,
showHighlight
}
);
}
},
{
title: "原因",
dataIndex: "reason_list",
key: "reason_list",
minWidth: 300,
render: (reasons) => /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "select-text", children: JSON.stringify(reasons) })
}
];
const handleFilter = (primaryName, secondaryName) => {
setFilter({ primaryName, secondaryName });
setCurrent({
...current,
currentPage: 1
});
};
const hiddenClass = "w-0 h-0 z-[-1] overflow-hidden";
reactExports.useEffect(() => {
setSelectedErrorTypes(defaultErrorTypes || []);
}, [defaultErrorTypes]);
reactExports.useEffect(() => {
setSelectedErrorNames(defaultErrorNames || []);
}, [defaultErrorNames]);
const filterData = reactExports.useMemo(() => {
const _primaryName = filter2?.primaryName;
if (_primaryName) {
const _secondaryName = filter2?.secondaryName;
const _res = data?.filter(
(i) => i?.type_list?.includes(_primaryName)
);
return _secondaryName ? _res?.filter((i) => i?.name_list?.includes(_secondaryName)) : _res;
} else {
return data;
}
}, [data, filter2]);
const filterCardListData = reactExports.useMemo(() => {
const startIndex = (current.currentPage - 1) * current.pageSize;
const endIndex = startIndex + current.pageSize;
return filterData.slice(startIndex, endIndex);
}, [filterData, current.currentPage, current.pageSize]);
return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center", children: [
/* @__PURE__ */ jsxRuntimeExports.jsx(FilterCascader, { summary, onFilter: handleFilter }),
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-[#121316]/[0.8] text-base ml-2", children: `${filterData?.length || 0} 条数据` }),
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ml-auto mr-2 text-[#121316]/[0.8] text-[14px]", children: "命中内容高亮" }),
/* @__PURE__ */ jsxRuntimeExports.jsx(
Switch,
{
className: "mr-8",
checked: showHighlight,
onChange: setShowHighlight
}
),
/* @__PURE__ */ jsxRuntimeExports.jsx(
"div",
{
className: "flex items-center text-lg gap-2 bg-blue/[0.05] p-1 px-2 rounded-md cursor-pointer",
onClick: (e2) => e2.stopPropagation(),
children: [
{ value: "table", icon: "icon-listViewOutlined" },
{
value: "grid",
icon: "icon-SwitchViewOutlined"
}
]?.map((i) => /* @__PURE__ */ jsxRuntimeExports.jsx(
"span",
{
className: cls(
"p-1 flex text-[#121316]",
viewMode === i.value && "!text-[#0D53DE] rounded bg-blue/[0.1]"
),
children: /* @__PURE__ */ jsxRuntimeExports.jsx(
IconFont,
{
type: i.icon,
onClick: () => setViewMode(i.value)
}
)
},
i.value
))
}
)
] }),
/* @__PURE__ */ jsxRuntimeExports.jsxs(
"div",
{
className: cls(
"mt-1 flex flex-col inline",
viewMode !== "grid" && hiddenClass
),
children: [
filterCardListData?.length ? filterCardListData?.map((i) => {
return /* @__PURE__ */ jsxRuntimeExports.jsx(
DetailCard,
{
data: i,
showHighlight
},
i?.data_id
);
}) : /* @__PURE__ */ jsxRuntimeExports.jsx(Empty, { className: "mt-[8rem]", title: "暂无数据" }),
/* @__PURE__ */ jsxRuntimeExports.jsx(
Pagination,
{
total: filterData?.length,
className: "self-end mt-2",
current: current?.currentPage,
pageSize: current?.pageSize,
showQuickJumper: true,
showTotal: (total) => /* @__PURE__ */ jsxRuntimeExports.jsx(MemoizedFormattedMessage, { id: "total.data", values: { total } }),
onChange: (_page, _pageSize) => {
setCurrent({
currentPage: _page,
pageSize: _pageSize
});
}
}
)
]
}
),
/* @__PURE__ */ jsxRuntimeExports.jsx(
ForwardTable,
{
columns,
dataSource: filterData,
loading,
className: cls("mt-4", viewMode !== "table" && hiddenClass),
rowKey: (record) => `${record?.data_id}_${record?.content}`,
pagination: {
pageSize: current?.pageSize,
showQuickJumper: true,
current: current?.currentPage,
showTotal: (total) => /* @__PURE__ */ jsxRuntimeExports.jsx(MemoizedFormattedMessage, { id: "total.data", values: { total } })
},
onChange: (pagination, filters) => {
if (current?.pageSize !== pagination.pageSize) {
setCurrent({
currentPage: 1,
pageSize: pagination.pageSize || 10
});
} else {
setCurrent({
currentPage: pagination.current || 1,
pageSize: pagination.pageSize || 10
});
}
},
scroll: { x: "100%" }
}
)
] });
};
const CONFIG = {
summaryPathName: "summary.json"
};
const ReadFileDir = ({ className }) => {
const [currentPath, setCurrentPath] = reactExports.useState("");
const [fileStructure, setFileStructure] = reactExports.useState([]);
const [summary, setSummary] = reactExports.useState(null);
const dal = useDALStore((state) => state.dal);
const { formatMessage: formatMessage2 } = useIntl();
const [allDataPath, setAllDataPath] = reactExports.useState([]);
reactExports.useEffect(() => {
if (currentPath) {
dal?.getSummary?.({
path: currentPath + "/" + CONFIG.summaryPathName
}).then((res) => {
setSummary(res);
readFileStructure(currentPath);
}).catch(() => {
staticMethods.error(
formatMessage2({ id: "summary.compile.error" })
);
});
}
}, [currentPath]);
const readFileStructure = async (dirPath) => {
try {
const structure = await dal?.getEvaluationList?.({
dirPath
});
setFileStructure(structure);
} catch (error) {
console.error("Error reading directory structure:", error);
}
};
const selectDirectory = async () => {
try {
const result = await window.electronAPI.selectDirectory();
if (result) {
setCurrentPath(result);
}
} catch (error) {
console.error("Error selecting directory:", error);
}
};
console.log(
"records-detailPath-init",
dal?.getInputPath?.(),
window?.[WEB_DATA_SOURCE]
);
reactExports.useEffect(() => {
dal?.getInputPath?.().then((res) => {
if (res) {
setCurrentPath(res);
}
});
}, [dal]);
const configInfo = [
{
key: "task_id",
label: "任务ID",
value: summary?.task_id
},
{
key: "eval_group",
label: "评测方法",
value: summary?.eval_group
},
{
key: "input_path",
label: "输入路径",
value: summary?.input_path
},
{
key: "output_path",
label: "输出路径",
value: summary?.output_path
}
];
reactExports.useEffect(() => {
setAllDataPath(
fileStructure.map((i) => ({
primaryName: i.name,
secondaryNameList: i.files
}))
);
}, [fileStructure]);
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
"div",
{
className: `${className} py-[30px] px-9 h-full overflow-auto scrollbar-thin`,
children: [
/* @__PURE__ */ jsxRuntimeExports.jsxs("header", { className: "h-[2.25rem] text-black-1 flex items-center font-semibold text-[1.5rem] mb-6 ", children: [
summary && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-[1.5rem] font-semibold", children: summary?.task_name }),
/* @__PURE__ */ jsxRuntimeExports.jsx(
Popover,
{
align: {
offset: [172, -10]
},
content: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "min-w-[25rem]", children: configInfo.map((i) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
"div",
{
className: cls(
"my-[0.3rem] p-2 text-[#121316]/[0.8] pr-8 group relative",
i.key !== "eval_group" && "hover:bg-[#F9F9F9]"
),
children: [
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "inline-block w-[5rem] ml-3 ", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { children: [
" ",
i.label
] }) }),
/* @__PURE__ */ jsxRuntimeExports.jsx(
"span",
{
className: cls(
"bg-red-100",
i.key === "eval_group" && "bg-[#F4F5F9] p-2 rounded"
),
children: i.value
}
),
i.key !== "eval_group" && /* @__PURE__ */ jsxRuntimeExports.jsx(
IconFont,
{
type: "icon-copy",
onClick: (e2) => {
e2?.stopPropagation();
copy$3(i?.value);
staticMethods.success("复制成功");
},
className: "opacity-0 cursor-pointer group-hover:opacity-100 absolute top-1/2 right-[6px] -translate-y-1/2 right-0"
}
)
]
},
i.key
)) }),
overlayClassName: styles$3.customConfigPopover,
children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ml-6 flex items-center text-[0.875rem] text-[#0D53DE] cursor-pointer", children: [
formatMessage2({
id: "summary.config.popover.title"
}),
/* @__PURE__ */ jsxRuntimeExports.jsx(
IconFont,
{
type: "icon-info",
className: "ml-1 text-[1rem]"
}
)
] })
}
),
isElectron() && /* @__PURE__ */ jsxRuntimeExports.jsx(
Button$1,
{
className: "rounded-full ml-4",
onClick: selectDirectory,
children: formatMessage2({ id: "button.selectDirectory" })
}
)
] }),
summary ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
/* @__PURE__ */ jsxRuntimeExports.jsx(SummaryDataTable, { data: summary, className: "mb-9" }),
/* @__PURE__ */ jsxRuntimeExports.jsx(
DetailTable,
{
summary,
currentPath,
detailPathList: [],
allDataPath,
defaultErrorTypes: [],
defaultErrorNames: []
}
)
] }) : /* @__PURE__ */ jsxRuntimeExports.jsx(
Empty,
{
className: "h-[60vh]",
title: formatMessage2({ id: "empty.title" })
}
)
]
}
);
};
const mainHome = "index-module__main-home___zg1x-";
const styles = {
mainHome
};
const MainHome = ({ className = "" }) => {
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: cls(styles.mainHome, className), children: /* @__PURE__ */ jsxRuntimeExports.jsx(ReadFileDir, {}) });
};
const LOCALE_STORAGE_KEY = "locale-dingo";
const en = {
"app.name": "Dingo",
"error.count": "统计",
"error.type": "类型与详情",
"error.type.tooltip": "如需了解指标详细定义,请查看 {link}",
"error.rate": "占比",
"tab.overview": "总览",
"tab.detailedData": "详细数据",
"button.selectDirectory": "选择目录",
"empty.title": "暂无数据",
"summary.config.popover.title": "配置信息"
};
const zh = {
"app.name": "Dingo",
"error.count": "统计",
"error.type": "类型与详情",
"error.type.tooltip": "如需了解指标详细定义,请查看 {link}",
"error.rate": "占比",
"tab.overview": "总览",
"tab.detailedData": "详细数据",
"button.selectDirectory": "选择目录",
"button.reSelect": "重新选择",
"empty.title": "暂无数据",
"summary.compile.error": "读取summary.json失败",
"total.data": "共 {total} 条",
"summary.config.popover.title": "配置信息"
};
const getInitialLanguage = () => {
const savedLanguage = localStorage.getItem(
LOCALE_STORAGE_KEY
);
if (savedLanguage && Object.values(Language).includes(savedLanguage)) {
return savedLanguage;
}
const browserLanguage = navigator.language.toLowerCase();
if (browserLanguage.startsWith("zh")) {
return Language.ZH_CN;
} else if (browserLanguage.startsWith("en")) {
return Language.EN_US;
}
return Language.ZH_CN;
};
const useLanguageStore = create$3((set2) => ({
language: getInitialLanguage(),
setLanguage: (language) => {
localStorage.setItem(LOCALE_STORAGE_KEY, language);
set2({ language });
},
toggleLanguage: () => set2((state) => {
const newLanguage = state.language === Language.ZH_CN ? Language.EN_US : Language.ZH_CN;
localStorage.setItem(LOCALE_STORAGE_KEY, newLanguage);
return { language: newLanguage };
})
}));
const messages = {
[Language.EN_US]: {
...en
},
[Language.ZH_CN]: {
...zh
}
};
const LanguageProvider = ({
children
}) => {
const { language } = useLanguageStore();
return /* @__PURE__ */ jsxRuntimeExports.jsx(
IntlProvider,
{
messages: messages["zh-CN"],
locale: language,
defaultLocale: "zh-CN",
children
}
);
};
/**
* @remix-run/router v1.20.0
*
* Copyright (c) Remix Software Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE.md file in the root directory of this source tree.
*
* @license MIT
*/
function _extends$1() {
_extends$1 = Object.assign ? Object.assign.bind() : function(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
return _extends$1.apply(this, arguments);
}
var Action;
(function(Action2) {
Action2["Pop"] = "POP";
Action2["Push"] = "PUSH";
Action2["Replace"] = "REPLACE";
})(Action || (Action = {}));
const PopStateEventType = "popstate";
function createBrowserHistory(options) {
if (options === void 0) {
options = {};
}
function createBrowserLocation(window2, globalHistory) {
let {
pathname,
search,
hash
} = window2.location;
return createLocation(
"",
{
pathname,
search,
hash
},
// state defaults to `null` because `window.history.state` does
globalHistory.state && globalHistory.state.usr || null,
globalHistory.state && globalHistory.state.key || "default"
);
}
function createBrowserHref(window2, to) {
return typeof to === "string" ? to : createPath(to);
}
return getUrlBasedHistory(createBrowserLocation, createBrowserHref, null, options);
}
function invariant(value, message2) {
if (value === false || value === null || typeof value === "undefined") {
throw new Error(message2);
}
}
function createKey() {
return Math.random().toString(36).substr(2, 8);
}
function getHistoryState(location, index2) {
return {
usr: location.state,
key: location.key,
idx: index2
};
}
function createLocation(current, to, state, key) {
if (state === void 0) {
state = null;
}
let location = _extends$1({
pathname: typeof current === "string" ? current : current.pathname,
search: "",
hash: ""
}, typeof to === "string" ? parsePath(to) : to, {
state,
// TODO: This could be cleaned up. push/replace should probably just take
// full Locations now and avoid the need to run through this flow at all
// But that's a pretty big refactor to the current test suite so going to
// keep as is for the time being and just let any incoming keys take precedence
key: to && to.key || key || createKey()
});
return location;
}
function createPath(_ref) {
let {
pathname = "/",
search = "",
hash = ""
} = _ref;
if (search && search !== "?") pathname += search.charAt(0) === "?" ? search : "?" + search;
if (hash && hash !== "#") pathname += hash.charAt(0) === "#" ? hash : "#" + hash;
return pathname;
}
function parsePath(path) {
let parsedPath = {};
if (path) {
let hashIndex = path.indexOf("#");
if (hashIndex >= 0) {
parsedPath.hash = path.substr(hashIndex);
path = path.substr(0, hashIndex);
}
let searchIndex = path.indexOf("?");
if (searchIndex >= 0) {
parsedPath.search = path.substr(searchIndex);
path = path.substr(0, searchIndex);
}
if (path) {
parsedPath.pathname = path;
}
}
return parsedPath;
}
function getUrlBasedHistory(getLocation, createHref, validateLocation, options) {
if (options === void 0) {
options = {};
}
let {
window: window2 = document.defaultView,
v5Compat = false
} = options;
let globalHistory = window2.history;
let action = Action.Pop;
let listener = null;
let index2 = getIndex();
if (index2 == null) {
index2 = 0;
globalHistory.replaceState(_extends$1({}, globalHistory.state, {
idx: index2
}), "");
}
function getIndex() {
let state = globalHistory.state || {
idx: null
};
return state.idx;
}
function handlePop() {
action = Action.Pop;
let nextIndex = getIndex();
let delta = nextIndex == null ? null : nextIndex - index2;
index2 = nextIndex;
if (listener) {
listener({
action,
location: history.location,
delta
});
}
}
function push2(to, state) {
action = Action.Push;
let location = createLocation(history.location, to, state);
index2 = getIndex() + 1;
let historyState = getHistoryState(location, index2);
let url2 = history.createHref(location);
try {
globalHistory.pushState(historyState, "", url2);
} catch (error) {
if (error instanceof DOMException && error.name === "DataCloneError") {
throw error;
}
window2.location.assign(url2);
}
if (v5Compat && listener) {
listener({
action,
location: history.location,
delta: 1
});
}
}
function replace2(to, state) {
action = Action.Replace;
let location = createLocation(history.location, to, state);
index2 = getIndex();
let historyState = getHistoryState(location, index2);
let url2 = history.createHref(location);
globalHistory.replaceState(historyState, "", url2);
if (v5Compat && listener) {
listener({
action,
location: history.location,
delta: 0
});
}
}
function createURL(to) {
let base2 = window2.location.origin !== "null" ? window2.location.origin : window2.location.href;
let href = typeof to === "string" ? to : createPath(to);
href = href.replace(/ $/, "%20");
invariant(base2, "No window.location.(origin|href) available to create URL for href: " + href);
return new URL(href, base2);
}
let history = {
get action() {
return action;
},
get location() {
return getLocation(window2, globalHistory);
},
listen(fn) {
if (listener) {
throw new Error("A history only accepts one active listener");
}
window2.addEventListener(PopStateEventType, handlePop);
listener = fn;
return () => {
window2.removeEventListener(PopStateEventType, handlePop);
listener = null;
};
},
createHref(to) {
return createHref(window2, to);
},
createURL,
encodeLocation(to) {
let url2 = createURL(to);
return {
pathname: url2.pathname,
search: url2.search,
hash: url2.hash
};
},
push: push2,
replace: replace2,
go(n2) {
return globalHistory.go(n2);
}
};
return history;
}
var ResultType;
(function(ResultType2) {
ResultType2["data"] = "data";
ResultType2["deferred"] = "deferred";
ResultType2["redirect"] = "redirect";
ResultType2["error"] = "error";
})(ResultType || (ResultType = {}));
function stripBasename(pathname, basename) {
if (basename === "/") return pathname;
if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {
return null;
}
let startIndex = basename.endsWith("/") ? basename.length - 1 : basename.length;
let nextChar = pathname.charAt(startIndex);
if (nextChar && nextChar !== "/") {
return null;
}
return pathname.slice(startIndex) || "/";
}
const validMutationMethodsArr = ["post", "put", "patch", "delete"];
new Set(validMutationMethodsArr);
const validRequestMethodsArr = ["get", ...validMutationMethodsArr];
new Set(validRequestMethodsArr);
/**
* React Router v6.27.0
*
* Copyright (c) Remix Software Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE.md file in the root directory of this source tree.
*
* @license MIT
*/
function _extends() {
_extends = Object.assign ? Object.assign.bind() : function(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
return _extends.apply(this, arguments);
}
const NavigationContext = /* @__PURE__ */ reactExports.createContext(null);
const LocationContext = /* @__PURE__ */ reactExports.createContext(null);
function useInRouterContext() {
return reactExports.useContext(LocationContext) != null;
}
function Router(_ref5) {
let {
basename: basenameProp = "/",
children = null,
location: locationProp,
navigationType = Action.Pop,
navigator: navigator2,
static: staticProp = false,
future
} = _ref5;
!!useInRouterContext() ? invariant(false) : void 0;
let basename = basenameProp.replace(/^\/*/, "/");
let navigationContext = reactExports.useMemo(() => ({
basename,
navigator: navigator2,
static: staticProp,
future: _extends({
v7_relativeSplatPath: false
}, future)
}), [basename, future, navigator2, staticProp]);
if (typeof locationProp === "string") {
locationProp = parsePath(locationProp);
}
let {
pathname = "/",
search = "",
hash = "",
state = null,
key = "default"
} = locationProp;
let locationContext = reactExports.useMemo(() => {
let trailingPathname = stripBasename(pathname, basename);
if (trailingPathname == null) {
return null;
}
return {
location: {
pathname: trailingPathname,
search,
hash,
state,
key
},
navigationType
};
}, [basename, pathname, search, hash, state, key, navigationType]);
if (locationContext == null) {
return null;
}
return /* @__PURE__ */ reactExports.createElement(NavigationContext.Provider, {
value: navigationContext
}, /* @__PURE__ */ reactExports.createElement(LocationContext.Provider, {
children,
value: locationContext
}));
}
new Promise(() => {
});
/**
* React Router DOM v6.27.0
*
* Copyright (c) Remix Software Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE.md file in the root directory of this source tree.
*
* @license MIT
*/
const REACT_ROUTER_VERSION = "6";
try {
window.__reactRouterVersion = REACT_ROUTER_VERSION;
} catch (e2) {
}
const START_TRANSITION = "startTransition";
const startTransitionImpl = React$1[START_TRANSITION];
function BrowserRouter(_ref4) {
let {
basename,
children,
future,
window: window2
} = _ref4;
let historyRef = reactExports.useRef();
if (historyRef.current == null) {
historyRef.current = createBrowserHistory({
window: window2,
v5Compat: true
});
}
let history = historyRef.current;
let [state, setStateImpl] = reactExports.useState({
action: history.action,
location: history.location
});
let {
v7_startTransition
} = future || {};
let setState = reactExports.useCallback((newState) => {
v7_startTransition && startTransitionImpl ? startTransitionImpl(() => setStateImpl(newState)) : setStateImpl(newState);
}, [setStateImpl, v7_startTransition]);
reactExports.useLayoutEffect(() => history.listen(setState), [history, setState]);
return /* @__PURE__ */ reactExports.createElement(Router, {
basename,
children,
location: state.location,
navigationType: state.action,
navigator: history,
future
});
}
var DataRouterHook;
(function(DataRouterHook2) {
DataRouterHook2["UseScrollRestoration"] = "useScrollRestoration";
DataRouterHook2["UseSubmit"] = "useSubmit";
DataRouterHook2["UseSubmitFetcher"] = "useSubmitFetcher";
DataRouterHook2["UseFetcher"] = "useFetcher";
DataRouterHook2["useViewTransitionState"] = "useViewTransitionState";
})(DataRouterHook || (DataRouterHook = {}));
var DataRouterStateHook;
(function(DataRouterStateHook2) {
DataRouterStateHook2["UseFetcher"] = "useFetcher";
DataRouterStateHook2["UseFetchers"] = "useFetchers";
DataRouterStateHook2["UseScrollRestoration"] = "useScrollRestoration";
})(DataRouterStateHook || (DataRouterStateHook = {}));
var zh_CN$5 = {};
var interopRequireDefault = { exports: {} };
(function(module) {
function _interopRequireDefault2(e2) {
return e2 && e2.__esModule ? e2 : {
"default": e2
};
}
module.exports = _interopRequireDefault2, module.exports.__esModule = true, module.exports["default"] = module.exports;
})(interopRequireDefault);
var interopRequireDefaultExports = interopRequireDefault.exports;
var zh_CN$4 = {};
Object.defineProperty(zh_CN$4, "__esModule", {
value: true
});
zh_CN$4.default = void 0;
var locale$3 = {
// Options
items_per_page: "条/页",
jump_to: "跳至",
jump_to_confirm: "确定",
page: "页",
// Pagination
prev_page: "上一页",
next_page: "下一页",
prev_5: "向前 5 页",
next_5: "向后 5 页",
prev_3: "向前 3 页",
next_3: "向后 3 页",
page_size: "页码"
};
zh_CN$4.default = locale$3;
var zh_CN$3 = {};
var zh_CN$2 = {};
var zh_CN$1 = {};
var objectSpread2 = { exports: {} };
var defineProperty = { exports: {} };
var toPropertyKey = { exports: {} };
var _typeof = { exports: {} };
(function(module) {
function _typeof2(o) {
"@babel/helpers - typeof";
return module.exports = _typeof2 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) {
return typeof o2;
} : function(o2) {
return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2;
}, module.exports.__esModule = true, module.exports["default"] = module.exports, _typeof2(o);
}
module.exports = _typeof2, module.exports.__esModule = true, module.exports["default"] = module.exports;
})(_typeof);
var _typeofExports = _typeof.exports;
var toPrimitive = { exports: {} };
(function(module) {
var _typeof2 = _typeofExports["default"];
function toPrimitive2(t2, r2) {
if ("object" != _typeof2(t2) || !t2) return t2;
var e2 = t2[Symbol.toPrimitive];
if (void 0 !== e2) {
var i = e2.call(t2, r2 || "default");
if ("object" != _typeof2(i)) return i;
throw new TypeError("@@toPrimitive must return a primitive value.");
}
return ("string" === r2 ? String : Number)(t2);
}
module.exports = toPrimitive2, module.exports.__esModule = true, module.exports["default"] = module.exports;
})(toPrimitive);
var toPrimitiveExports = toPrimitive.exports;
(function(module) {
var _typeof2 = _typeofExports["default"];
var toPrimitive2 = toPrimitiveExports;
function toPropertyKey2(t2) {
var i = toPrimitive2(t2, "string");
return "symbol" == _typeof2(i) ? i : i + "";
}
module.exports = toPropertyKey2, module.exports.__esModule = true, module.exports["default"] = module.exports;
})(toPropertyKey);
var toPropertyKeyExports = toPropertyKey.exports;
(function(module) {
var toPropertyKey2 = toPropertyKeyExports;
function _defineProperty2(e2, r2, t2) {
return (r2 = toPropertyKey2(r2)) in e2 ? Object.defineProperty(e2, r2, {
value: t2,
enumerable: true,
configurable: true,
writable: true
}) : e2[r2] = t2, e2;
}
module.exports = _defineProperty2, module.exports.__esModule = true, module.exports["default"] = module.exports;
})(defineProperty);
var definePropertyExports = defineProperty.exports;
(function(module) {
var defineProperty2 = definePropertyExports;
function ownKeys2(e2, r2) {
var t2 = Object.keys(e2);
if (Object.getOwnPropertySymbols) {
var o = Object.getOwnPropertySymbols(e2);
r2 && (o = o.filter(function(r3) {
return Object.getOwnPropertyDescriptor(e2, r3).enumerable;
})), t2.push.apply(t2, o);
}
return t2;
}
function _objectSpread22(e2) {
for (var r2 = 1; r2 < arguments.length; r2++) {
var t2 = null != arguments[r2] ? arguments[r2] : {};
r2 % 2 ? ownKeys2(Object(t2), true).forEach(function(r3) {
defineProperty2(e2, r3, t2[r3]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e2, Object.getOwnPropertyDescriptors(t2)) : ownKeys2(Object(t2)).forEach(function(r3) {
Object.defineProperty(e2, r3, Object.getOwnPropertyDescriptor(t2, r3));
});
}
return e2;
}
module.exports = _objectSpread22, module.exports.__esModule = true, module.exports["default"] = module.exports;
})(objectSpread2);
var objectSpread2Exports = objectSpread2.exports;
var common = {};
Object.defineProperty(common, "__esModule", {
value: true
});
common.commonLocale = void 0;
common.commonLocale = {
yearFormat: "YYYY",
dayFormat: "D",
cellMeridiemFormat: "A",
monthBeforeYear: true
};
var _interopRequireDefault$3 = interopRequireDefaultExports.default;
Object.defineProperty(zh_CN$1, "__esModule", {
value: true
});
zh_CN$1.default = void 0;
var _objectSpread2 = _interopRequireDefault$3(objectSpread2Exports);
var _common = common;
var locale$2 = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, _common.commonLocale), {}, {
locale: "zh_CN",
today: "今天",
now: "此刻",
backToToday: "返回今天",
ok: "确定",
timeSelect: "选择时间",
dateSelect: "选择日期",
weekSelect: "选择周",
clear: "清除",
month: "月",
year: "年",
previousMonth: "上个月 (翻页上键)",
nextMonth: "下个月 (翻页下键)",
monthSelect: "选择月份",
yearSelect: "选择年份",
decadeSelect: "选择年代",
previousYear: "上一年 (Control键加左方向键)",
nextYear: "下一年 (Control键加右方向键)",
previousDecade: "上一年代",
nextDecade: "下一年代",
previousCentury: "上一世纪",
nextCentury: "下一世纪",
yearFormat: "YYYY年",
cellDateFormat: "D",
monthBeforeYear: false
});
zh_CN$1.default = locale$2;
var zh_CN = {};
Object.defineProperty(zh_CN, "__esModule", {
value: true
});
zh_CN.default = void 0;
const locale$1 = {
placeholder: "请选择时间",
rangePlaceholder: ["开始时间", "结束时间"]
};
zh_CN.default = locale$1;
var _interopRequireDefault$2 = interopRequireDefaultExports.default;
Object.defineProperty(zh_CN$2, "__esModule", {
value: true
});
zh_CN$2.default = void 0;
var _zh_CN$2 = _interopRequireDefault$2(zh_CN$1);
var _zh_CN2$1 = _interopRequireDefault$2(zh_CN);
const locale = {
lang: Object.assign({
placeholder: "请选择日期",
yearPlaceholder: "请选择年份",
quarterPlaceholder: "请选择季度",
monthPlaceholder: "请选择月份",
weekPlaceholder: "请选择周",
rangePlaceholder: ["开始日期", "结束日期"],
rangeYearPlaceholder: ["开始年份", "结束年份"],
rangeMonthPlaceholder: ["开始月份", "结束月份"],
rangeQuarterPlaceholder: ["开始季度", "结束季度"],
rangeWeekPlaceholder: ["开始周", "结束周"]
}, _zh_CN$2.default),
timePickerLocale: Object.assign({}, _zh_CN2$1.default)
};
locale.lang.ok = "确定";
zh_CN$2.default = locale;
var _interopRequireDefault$1 = interopRequireDefaultExports.default;
Object.defineProperty(zh_CN$3, "__esModule", {
value: true
});
zh_CN$3.default = void 0;
var _zh_CN$1 = _interopRequireDefault$1(zh_CN$2);
zh_CN$3.default = _zh_CN$1.default;
var _interopRequireDefault = interopRequireDefaultExports.default;
Object.defineProperty(zh_CN$5, "__esModule", {
value: true
});
var default_1 = zh_CN$5.default = void 0;
var _zh_CN = _interopRequireDefault(zh_CN$4);
var _zh_CN2 = _interopRequireDefault(zh_CN$3);
var _zh_CN3 = _interopRequireDefault(zh_CN$2);
var _zh_CN4 = _interopRequireDefault(zh_CN);
const typeTemplate = "${label}不是一个有效的${type}";
const localeValues = {
locale: "zh-cn",
Pagination: _zh_CN.default,
DatePicker: _zh_CN3.default,
TimePicker: _zh_CN4.default,
Calendar: _zh_CN2.default,
// locales for all components
global: {
placeholder: "请选择"
},
Table: {
filterTitle: "筛选",
filterConfirm: "确定",
filterReset: "重置",
filterEmptyText: "无筛选项",
filterCheckall: "全选",
filterSearchPlaceholder: "在筛选项中搜索",
emptyText: "暂无数据",
selectAll: "全选当页",
selectInvert: "反选当页",
selectNone: "清空所有",
selectionAll: "全选所有",
sortTitle: "排序",
expand: "展开行",
collapse: "关闭行",
triggerDesc: "点击降序",
triggerAsc: "点击升序",
cancelSort: "取消排序"
},
Modal: {
okText: "确定",
cancelText: "取消",
justOkText: "知道了"
},
Tour: {
Next: "下一步",
Previous: "上一步",
Finish: "结束导览"
},
Popconfirm: {
cancelText: "取消",
okText: "确定"
},
Transfer: {
titles: ["", ""],
searchPlaceholder: "请输入搜索内容",
itemUnit: "项",
itemsUnit: "项",
remove: "删除",
selectCurrent: "全选当页",
removeCurrent: "删除当页",
selectAll: "全选所有",
deselectAll: "取消全选",
removeAll: "删除全部",
selectInvert: "反选当页"
},
Upload: {
uploading: "文件上传中",
removeFile: "删除文件",
uploadError: "上传错误",
previewFile: "预览文件",
downloadFile: "下载文件"
},
Empty: {
description: "暂无数据"
},
Icon: {
icon: "图标"
},
Text: {
edit: "编辑",
copy: "复制",
copied: "复制成功",
expand: "展开",
collapse: "收起"
},
Form: {
optional: "(可选)",
defaultValidateMessages: {
default: "字段验证错误${label}",
required: "请输入${label}",
enum: "${label}必须是其中一个[${enum}]",
whitespace: "${label}不能为空字符",
date: {
format: "${label}日期格式无效",
parse: "${label}不能转换为日期",
invalid: "${label}是一个无效日期"
},
types: {
string: typeTemplate,
method: typeTemplate,
array: typeTemplate,
object: typeTemplate,
number: typeTemplate,
date: typeTemplate,
boolean: typeTemplate,
integer: typeTemplate,
float: typeTemplate,
regexp: typeTemplate,
email: typeTemplate,
url: typeTemplate,
hex: typeTemplate
},
string: {
len: "${label}须为${len}个字符",
min: "${label}最少${min}个字符",
max: "${label}最多${max}个字符",
range: "${label}须在${min}-${max}字符之间"
},
number: {
len: "${label}必须等于${len}",
min: "${label}最小值为${min}",
max: "${label}最大值为${max}",
range: "${label}须在${min}-${max}之间"
},
array: {
len: "须为${len}个${label}",
min: "最少${min}个${label}",
max: "最多${max}个${label}",
range: "${label}数量须在${min}-${max}之间"
},
pattern: {
mismatch: "${label}与模式不匹配${pattern}"
}
}
},
Image: {
preview: "预览"
},
QRCode: {
expired: "二维码过期",
refresh: "点击刷新",
scanned: "已扫描"
},
ColorPicker: {
presetEmpty: "暂无",
transparent: "无色",
singleColor: "单色",
gradientColor: "渐变色"
}
};
default_1 = zh_CN$5.default = localeValues;
const App = () => {
const initDAL = useDALStore((state) => state.initDAL);
reactExports.useEffect(() => {
initDAL();
}, [initDAL]);
return /* @__PURE__ */ jsxRuntimeExports.jsx(BrowserRouter, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
ConfigProvider,
{
locale: default_1,
theme: {
token: {
colorPrimary: "#0D53DE",
colorText: "#121316",
colorLink: "#0D53DE"
},
components: {
Table: {
headerBg: "#F4F5F9"
},
Tabs: {
itemActiveColor: "#0D53DE"
}
}
},
children: /* @__PURE__ */ jsxRuntimeExports.jsx(LanguageProvider, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "w-full h-full flex", children: [
/* @__PURE__ */ jsxRuntimeExports.jsx(SideBar, {}),
/* @__PURE__ */ jsxRuntimeExports.jsx(MainHome, {})
] }) })
}
) });
};
client.createRoot(document.getElementById("root")).render(
/* @__PURE__ */ jsxRuntimeExports.jsx(React.StrictMode, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(App, {}) })
);