{"version":3,"file":"yuntoo-smart.umd.cjs","sources":["../../../../../node_modules/.pnpm/vite-plugin-node-polyfills@0.23.0_rollup@4.44.0_vite@7.0.3_@types+node@22.15.32_jiti@2._3b906ae74aae1a08a554f6a5a4ea4943/node_modules/vite-plugin-node-polyfills/shims/process/dist/index.js","../../../node_modules/.vite_external/react.js","../../../../../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react-jsx-runtime.production.min.js","../../../../../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react-jsx-runtime.development.js","../../../../../node_modules/.pnpm/react@18.3.1/node_modules/react/jsx-runtime.js","../../../node_modules/.vite_external/@yuntoo_antd-meta.js","../../../../antd-ext/src/_utils/index.ts","../../../node_modules/.vite_external/antd.js","../../../src/common/empty-state/index.tsx","../../../node_modules/.vite_external/@ant-design_icons.js","../../../src/lr-smart-filter/one-search/view.tsx","../../../src/lr-smart-filter/view.tsx","../../../src/lr-smart-create/view.tsx","../../../src/lr-smart-update/view.tsx","../../../src/lr-smart-detail/view.tsx","../../../src/lr-smart-table/view.tsx","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_listCacheClear.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/eq.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_assocIndexOf.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_listCacheDelete.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_listCacheGet.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_listCacheHas.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_listCacheSet.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_ListCache.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_stackClear.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_stackDelete.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_stackGet.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_stackHas.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_freeGlobal.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_root.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Symbol.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getRawTag.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_objectToString.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseGetTag.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isObject.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isFunction.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_coreJsData.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isMasked.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_toSource.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIsNative.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getValue.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getNative.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Map.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_nativeCreate.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_hashClear.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_hashDelete.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_hashGet.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_hashHas.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_hashSet.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Hash.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_mapCacheClear.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isKeyable.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getMapData.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_mapCacheDelete.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_mapCacheGet.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_mapCacheHas.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_mapCacheSet.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_MapCache.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_stackSet.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Stack.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_defineProperty.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseAssignValue.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_assignMergeValue.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_createBaseFor.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseFor.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_cloneBuffer.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Uint8Array.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_cloneArrayBuffer.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_cloneTypedArray.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_copyArray.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseCreate.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_overArg.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getPrototype.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isPrototype.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_initCloneObject.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isObjectLike.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIsArguments.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isArguments.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isArray.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isLength.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isArrayLike.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isArrayLikeObject.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/stubFalse.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isBuffer.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isPlainObject.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIsTypedArray.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseUnary.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_nodeUtil.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isTypedArray.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_safeGet.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_assignValue.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_copyObject.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseTimes.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isIndex.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_arrayLikeKeys.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_nativeKeysIn.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseKeysIn.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/keysIn.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/toPlainObject.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseMergeDeep.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseMerge.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/identity.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_apply.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_overRest.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/constant.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseSetToString.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_shortOut.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_setToString.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseRest.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isIterateeCall.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_createAssigner.js","../../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/merge.js","../../../src/common/chart-factory/theme/cdn-theme-config.ts","../../../src/common/chart-factory/theme/theme-registry.ts","../../../src/common/chart-factory/theme/chart-theme-config.ts","../../../src/common/chart-factory/executor/business-executor.ts","../../../src/common/chart-factory/processor/chart-data-processor.ts","../../../node_modules/.vite_external/echarts.js","../../../src/common/chart-factory/renderer/chart-renderer.tsx","../../../src/lr-smart-chart/view.tsx","../../../src/lr-smart-statistic/view.tsx","../../../src/lr-smart-echarts/view.tsx","../../../../../node_modules/.pnpm/react-error-boundary@5.0.0_react@18.3.1/node_modules/react-error-boundary/dist/react-error-boundary.esm.js","../../../src/lr-smart-jsx/view.tsx"],"sourcesContent":["function getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nvar browser = {exports: {}};\n\n// shim for using process in browser\nvar process = browser.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ());\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] };\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\nvar browserExports = browser.exports;\nconst process$1 = /*@__PURE__*/getDefaultExportFromCjs(browserExports);\n\nexport { process$1 as default, process$1 as process };\n//# sourceMappingURL=index.js.map\n","module.exports = React;","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n  (function() {\n'use strict';\n\nvar React = require('react');\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n  if (maybeIterable === null || typeof maybeIterable !== 'object') {\n    return null;\n  }\n\n  var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n  if (typeof maybeIterator === 'function') {\n    return maybeIterator;\n  }\n\n  return null;\n}\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nfunction error(format) {\n  {\n    {\n      for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        args[_key2 - 1] = arguments[_key2];\n      }\n\n      printWarning('error', format, args);\n    }\n  }\n}\n\nfunction printWarning(level, format, args) {\n  // When changing this logic, you might want to also\n  // update consoleWithStackDev.www.js as well.\n  {\n    var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n    var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n    if (stack !== '') {\n      format += '%s';\n      args = args.concat([stack]);\n    } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n    var argsWithFormat = args.map(function (item) {\n      return String(item);\n    }); // Careful: RN currently depends on this prefix\n\n    argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n    // breaks IE9: https://github.com/facebook/react/issues/13610\n    // eslint-disable-next-line react-internal/no-production-logging\n\n    Function.prototype.apply.call(console[level], console, argsWithFormat);\n  }\n}\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n  REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n  if (typeof type === 'string' || typeof type === 'function') {\n    return true;\n  } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n  if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing  || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden  || type === REACT_OFFSCREEN_TYPE || enableScopeAPI  || enableCacheElement  || enableTransitionTracing ) {\n    return true;\n  }\n\n  if (typeof type === 'object' && type !== null) {\n    if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n    // types supported by any Flight configuration anywhere since\n    // we don't know which Flight build this will end up being used\n    // with.\n    type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n  var displayName = outerType.displayName;\n\n  if (displayName) {\n    return displayName;\n  }\n\n  var functionName = innerType.displayName || innerType.name || '';\n  return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n  return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n  if (type == null) {\n    // Host root, text node or just invalid type.\n    return null;\n  }\n\n  {\n    if (typeof type.tag === 'number') {\n      error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n    }\n  }\n\n  if (typeof type === 'function') {\n    return type.displayName || type.name || null;\n  }\n\n  if (typeof type === 'string') {\n    return type;\n  }\n\n  switch (type) {\n    case REACT_FRAGMENT_TYPE:\n      return 'Fragment';\n\n    case REACT_PORTAL_TYPE:\n      return 'Portal';\n\n    case REACT_PROFILER_TYPE:\n      return 'Profiler';\n\n    case REACT_STRICT_MODE_TYPE:\n      return 'StrictMode';\n\n    case REACT_SUSPENSE_TYPE:\n      return 'Suspense';\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      return 'SuspenseList';\n\n  }\n\n  if (typeof type === 'object') {\n    switch (type.$$typeof) {\n      case REACT_CONTEXT_TYPE:\n        var context = type;\n        return getContextName(context) + '.Consumer';\n\n      case REACT_PROVIDER_TYPE:\n        var provider = type;\n        return getContextName(provider._context) + '.Provider';\n\n      case REACT_FORWARD_REF_TYPE:\n        return getWrappedName(type, type.render, 'ForwardRef');\n\n      case REACT_MEMO_TYPE:\n        var outerName = type.displayName || null;\n\n        if (outerName !== null) {\n          return outerName;\n        }\n\n        return getComponentNameFromType(type.type) || 'Memo';\n\n      case REACT_LAZY_TYPE:\n        {\n          var lazyComponent = type;\n          var payload = lazyComponent._payload;\n          var init = lazyComponent._init;\n\n          try {\n            return getComponentNameFromType(init(payload));\n          } catch (x) {\n            return null;\n          }\n        }\n\n      // eslint-disable-next-line no-fallthrough\n    }\n  }\n\n  return null;\n}\n\nvar assign = Object.assign;\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n  {\n    if (disabledDepth === 0) {\n      /* eslint-disable react-internal/no-production-logging */\n      prevLog = console.log;\n      prevInfo = console.info;\n      prevWarn = console.warn;\n      prevError = console.error;\n      prevGroup = console.group;\n      prevGroupCollapsed = console.groupCollapsed;\n      prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n      var props = {\n        configurable: true,\n        enumerable: true,\n        value: disabledLog,\n        writable: true\n      }; // $FlowFixMe Flow thinks console is immutable.\n\n      Object.defineProperties(console, {\n        info: props,\n        log: props,\n        warn: props,\n        error: props,\n        group: props,\n        groupCollapsed: props,\n        groupEnd: props\n      });\n      /* eslint-enable react-internal/no-production-logging */\n    }\n\n    disabledDepth++;\n  }\n}\nfunction reenableLogs() {\n  {\n    disabledDepth--;\n\n    if (disabledDepth === 0) {\n      /* eslint-disable react-internal/no-production-logging */\n      var props = {\n        configurable: true,\n        enumerable: true,\n        writable: true\n      }; // $FlowFixMe Flow thinks console is immutable.\n\n      Object.defineProperties(console, {\n        log: assign({}, props, {\n          value: prevLog\n        }),\n        info: assign({}, props, {\n          value: prevInfo\n        }),\n        warn: assign({}, props, {\n          value: prevWarn\n        }),\n        error: assign({}, props, {\n          value: prevError\n        }),\n        group: assign({}, props, {\n          value: prevGroup\n        }),\n        groupCollapsed: assign({}, props, {\n          value: prevGroupCollapsed\n        }),\n        groupEnd: assign({}, props, {\n          value: prevGroupEnd\n        })\n      });\n      /* eslint-enable react-internal/no-production-logging */\n    }\n\n    if (disabledDepth < 0) {\n      error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n    }\n  }\n}\n\nvar ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n  {\n    if (prefix === undefined) {\n      // Extract the VM specific prefix used by each line.\n      try {\n        throw Error();\n      } catch (x) {\n        var match = x.stack.trim().match(/\\n( *(at )?)/);\n        prefix = match && match[1] || '';\n      }\n    } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n    return '\\n' + prefix + name;\n  }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n  var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n  componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n  // If something asked for a stack inside a fake render, it should get ignored.\n  if ( !fn || reentry) {\n    return '';\n  }\n\n  {\n    var frame = componentFrameCache.get(fn);\n\n    if (frame !== undefined) {\n      return frame;\n    }\n  }\n\n  var control;\n  reentry = true;\n  var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n  Error.prepareStackTrace = undefined;\n  var previousDispatcher;\n\n  {\n    previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function\n    // for warnings.\n\n    ReactCurrentDispatcher.current = null;\n    disableLogs();\n  }\n\n  try {\n    // This should throw.\n    if (construct) {\n      // Something should be setting the props in the constructor.\n      var Fake = function () {\n        throw Error();\n      }; // $FlowFixMe\n\n\n      Object.defineProperty(Fake.prototype, 'props', {\n        set: function () {\n          // We use a throwing setter instead of frozen or non-writable props\n          // because that won't throw in a non-strict mode function.\n          throw Error();\n        }\n      });\n\n      if (typeof Reflect === 'object' && Reflect.construct) {\n        // We construct a different control for this case to include any extra\n        // frames added by the construct call.\n        try {\n          Reflect.construct(Fake, []);\n        } catch (x) {\n          control = x;\n        }\n\n        Reflect.construct(fn, [], Fake);\n      } else {\n        try {\n          Fake.call();\n        } catch (x) {\n          control = x;\n        }\n\n        fn.call(Fake.prototype);\n      }\n    } else {\n      try {\n        throw Error();\n      } catch (x) {\n        control = x;\n      }\n\n      fn();\n    }\n  } catch (sample) {\n    // This is inlined manually because closure doesn't do it for us.\n    if (sample && control && typeof sample.stack === 'string') {\n      // This extracts the first frame from the sample that isn't also in the control.\n      // Skipping one frame that we assume is the frame that calls the two.\n      var sampleLines = sample.stack.split('\\n');\n      var controlLines = control.stack.split('\\n');\n      var s = sampleLines.length - 1;\n      var c = controlLines.length - 1;\n\n      while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n        // We expect at least one stack frame to be shared.\n        // Typically this will be the root most one. However, stack frames may be\n        // cut off due to maximum stack limits. In this case, one maybe cut off\n        // earlier than the other. We assume that the sample is longer or the same\n        // and there for cut off earlier. So we should find the root most frame in\n        // the sample somewhere in the control.\n        c--;\n      }\n\n      for (; s >= 1 && c >= 0; s--, c--) {\n        // Next we find the first one that isn't the same which should be the\n        // frame that called our sample function and the control.\n        if (sampleLines[s] !== controlLines[c]) {\n          // In V8, the first line is describing the message but other VMs don't.\n          // If we're about to return the first line, and the control is also on the same\n          // line, that's a pretty good indicator that our sample threw at same line as\n          // the control. I.e. before we entered the sample frame. So we ignore this result.\n          // This can happen if you passed a class to function component, or non-function.\n          if (s !== 1 || c !== 1) {\n            do {\n              s--;\n              c--; // We may still have similar intermediate frames from the construct call.\n              // The next one that isn't the same should be our match though.\n\n              if (c < 0 || sampleLines[s] !== controlLines[c]) {\n                // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n                var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"<anonymous>\"\n                // but we have a user-provided \"displayName\"\n                // splice it in to make the stack more readable.\n\n\n                if (fn.displayName && _frame.includes('<anonymous>')) {\n                  _frame = _frame.replace('<anonymous>', fn.displayName);\n                }\n\n                {\n                  if (typeof fn === 'function') {\n                    componentFrameCache.set(fn, _frame);\n                  }\n                } // Return the line we found.\n\n\n                return _frame;\n              }\n            } while (s >= 1 && c >= 0);\n          }\n\n          break;\n        }\n      }\n    }\n  } finally {\n    reentry = false;\n\n    {\n      ReactCurrentDispatcher.current = previousDispatcher;\n      reenableLogs();\n    }\n\n    Error.prepareStackTrace = previousPrepareStackTrace;\n  } // Fallback to just using the name if we couldn't make it throw.\n\n\n  var name = fn ? fn.displayName || fn.name : '';\n  var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n  {\n    if (typeof fn === 'function') {\n      componentFrameCache.set(fn, syntheticFrame);\n    }\n  }\n\n  return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n  {\n    return describeNativeComponentFrame(fn, false);\n  }\n}\n\nfunction shouldConstruct(Component) {\n  var prototype = Component.prototype;\n  return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n  if (type == null) {\n    return '';\n  }\n\n  if (typeof type === 'function') {\n    {\n      return describeNativeComponentFrame(type, shouldConstruct(type));\n    }\n  }\n\n  if (typeof type === 'string') {\n    return describeBuiltInComponentFrame(type);\n  }\n\n  switch (type) {\n    case REACT_SUSPENSE_TYPE:\n      return describeBuiltInComponentFrame('Suspense');\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      return describeBuiltInComponentFrame('SuspenseList');\n  }\n\n  if (typeof type === 'object') {\n    switch (type.$$typeof) {\n      case REACT_FORWARD_REF_TYPE:\n        return describeFunctionComponentFrame(type.render);\n\n      case REACT_MEMO_TYPE:\n        // Memo may contain any component type so we recursively resolve it.\n        return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n      case REACT_LAZY_TYPE:\n        {\n          var lazyComponent = type;\n          var payload = lazyComponent._payload;\n          var init = lazyComponent._init;\n\n          try {\n            // Lazy may contain any component type so we recursively resolve it.\n            return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n          } catch (x) {}\n        }\n    }\n  }\n\n  return '';\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n  {\n    if (element) {\n      var owner = element._owner;\n      var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n      ReactDebugCurrentFrame.setExtraStackFrame(stack);\n    } else {\n      ReactDebugCurrentFrame.setExtraStackFrame(null);\n    }\n  }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n  {\n    // $FlowFixMe This is okay but Flow doesn't know it.\n    var has = Function.call.bind(hasOwnProperty);\n\n    for (var typeSpecName in typeSpecs) {\n      if (has(typeSpecs, typeSpecName)) {\n        var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n        // fail the render phase where it didn't fail before. So we log it.\n        // After these have been cleaned up, we'll let them throw.\n\n        try {\n          // This is intentionally an invariant that gets caught. It's the same\n          // behavior as without this statement except with a better message.\n          if (typeof typeSpecs[typeSpecName] !== 'function') {\n            // eslint-disable-next-line react-internal/prod-error-codes\n            var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n            err.name = 'Invariant Violation';\n            throw err;\n          }\n\n          error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n        } catch (ex) {\n          error$1 = ex;\n        }\n\n        if (error$1 && !(error$1 instanceof Error)) {\n          setCurrentlyValidatingElement(element);\n\n          error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n          setCurrentlyValidatingElement(null);\n        }\n\n        if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n          // Only monitor this failure once because there tends to be a lot of the\n          // same error.\n          loggedTypeFailures[error$1.message] = true;\n          setCurrentlyValidatingElement(element);\n\n          error('Failed %s type: %s', location, error$1.message);\n\n          setCurrentlyValidatingElement(null);\n        }\n      }\n    }\n  }\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n  return isArrayImpl(a);\n}\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n  {\n    // toStringTag is needed for namespaced types like Temporal.Instant\n    var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n    var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n    return type;\n  }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n  {\n    try {\n      testStringCoercion(value);\n      return false;\n    } catch (e) {\n      return true;\n    }\n  }\n}\n\nfunction testStringCoercion(value) {\n  // If you ended up here by following an exception call stack, here's what's\n  // happened: you supplied an object or symbol value to React (as a prop, key,\n  // DOM attribute, CSS property, string ref, etc.) and when React tried to\n  // coerce it to a string using `'' + value`, an exception was thrown.\n  //\n  // The most common types that will cause this exception are `Symbol` instances\n  // and Temporal objects like `Temporal.Instant`. But any object that has a\n  // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n  // exception. (Library authors do this to prevent users from using built-in\n  // numeric operators like `+` or comparison operators like `>=` because custom\n  // methods are needed to perform accurate arithmetic or comparison.)\n  //\n  // To fix the problem, coerce this object or symbol value to a string before\n  // passing it to React. The most reliable way is usually `String(value)`.\n  //\n  // To find which value is throwing, check the browser or debugger console.\n  // Before this exception was thrown, there should be `console.error` output\n  // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n  // problem and how that type was used: key, atrribute, input value prop, etc.\n  // In most cases, this console output also shows the component and its\n  // ancestor components where the exception happened.\n  //\n  // eslint-disable-next-line react-internal/safe-string-coercion\n  return '' + value;\n}\nfunction checkKeyStringCoercion(value) {\n  {\n    if (willCoercionThrow(value)) {\n      error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n      return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n    }\n  }\n}\n\nvar ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;\nvar RESERVED_PROPS = {\n  key: true,\n  ref: true,\n  __self: true,\n  __source: true\n};\nvar specialPropKeyWarningShown;\nvar specialPropRefWarningShown;\nvar didWarnAboutStringRefs;\n\n{\n  didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n  {\n    if (hasOwnProperty.call(config, 'ref')) {\n      var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n      if (getter && getter.isReactWarning) {\n        return false;\n      }\n    }\n  }\n\n  return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n  {\n    if (hasOwnProperty.call(config, 'key')) {\n      var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n      if (getter && getter.isReactWarning) {\n        return false;\n      }\n    }\n  }\n\n  return config.key !== undefined;\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config, self) {\n  {\n    if (typeof config.ref === 'string' && ReactCurrentOwner.current && self && ReactCurrentOwner.current.stateNode !== self) {\n      var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n      if (!didWarnAboutStringRefs[componentName]) {\n        error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', getComponentNameFromType(ReactCurrentOwner.current.type), config.ref);\n\n        didWarnAboutStringRefs[componentName] = true;\n      }\n    }\n  }\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n  {\n    var warnAboutAccessingKey = function () {\n      if (!specialPropKeyWarningShown) {\n        specialPropKeyWarningShown = true;\n\n        error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n      }\n    };\n\n    warnAboutAccessingKey.isReactWarning = true;\n    Object.defineProperty(props, 'key', {\n      get: warnAboutAccessingKey,\n      configurable: true\n    });\n  }\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n  {\n    var warnAboutAccessingRef = function () {\n      if (!specialPropRefWarningShown) {\n        specialPropRefWarningShown = true;\n\n        error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n      }\n    };\n\n    warnAboutAccessingRef.isReactWarning = true;\n    Object.defineProperty(props, 'ref', {\n      get: warnAboutAccessingRef,\n      configurable: true\n    });\n  }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n  var element = {\n    // This tag allows us to uniquely identify this as a React Element\n    $$typeof: REACT_ELEMENT_TYPE,\n    // Built-in properties that belong on the element\n    type: type,\n    key: key,\n    ref: ref,\n    props: props,\n    // Record the component responsible for creating this element.\n    _owner: owner\n  };\n\n  {\n    // The validation flag is currently mutative. We put it on\n    // an external backing store so that we can freeze the whole object.\n    // This can be replaced with a WeakMap once they are implemented in\n    // commonly used development environments.\n    element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n    // the validation flag non-enumerable (where possible, which should\n    // include every environment we run tests in), so the test framework\n    // ignores it.\n\n    Object.defineProperty(element._store, 'validated', {\n      configurable: false,\n      enumerable: false,\n      writable: true,\n      value: false\n    }); // self and source are DEV only properties.\n\n    Object.defineProperty(element, '_self', {\n      configurable: false,\n      enumerable: false,\n      writable: false,\n      value: self\n    }); // Two elements created in two different places should be considered\n    // equal for testing purposes and therefore we hide it from enumeration.\n\n    Object.defineProperty(element, '_source', {\n      configurable: false,\n      enumerable: false,\n      writable: false,\n      value: source\n    });\n\n    if (Object.freeze) {\n      Object.freeze(element.props);\n      Object.freeze(element);\n    }\n  }\n\n  return element;\n};\n/**\n * https://github.com/reactjs/rfcs/pull/107\n * @param {*} type\n * @param {object} props\n * @param {string} key\n */\n\nfunction jsxDEV(type, config, maybeKey, source, self) {\n  {\n    var propName; // Reserved names are extracted\n\n    var props = {};\n    var key = null;\n    var ref = null; // Currently, key can be spread in as a prop. This causes a potential\n    // issue if key is also explicitly declared (ie. <div {...props} key=\"Hi\" />\n    // or <div key=\"Hi\" {...props} /> ). We want to deprecate key spread,\n    // but as an intermediary step, we will use jsxDEV for everything except\n    // <div {...props} key=\"Hi\" />, because we aren't currently able to tell if\n    // key is explicitly declared to be undefined or not.\n\n    if (maybeKey !== undefined) {\n      {\n        checkKeyStringCoercion(maybeKey);\n      }\n\n      key = '' + maybeKey;\n    }\n\n    if (hasValidKey(config)) {\n      {\n        checkKeyStringCoercion(config.key);\n      }\n\n      key = '' + config.key;\n    }\n\n    if (hasValidRef(config)) {\n      ref = config.ref;\n      warnIfStringRefCannotBeAutoConverted(config, self);\n    } // Remaining properties are added to a new props object\n\n\n    for (propName in config) {\n      if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n        props[propName] = config[propName];\n      }\n    } // Resolve default props\n\n\n    if (type && type.defaultProps) {\n      var defaultProps = type.defaultProps;\n\n      for (propName in defaultProps) {\n        if (props[propName] === undefined) {\n          props[propName] = defaultProps[propName];\n        }\n      }\n    }\n\n    if (key || ref) {\n      var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n      if (key) {\n        defineKeyPropWarningGetter(props, displayName);\n      }\n\n      if (ref) {\n        defineRefPropWarningGetter(props, displayName);\n      }\n    }\n\n    return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n  }\n}\n\nvar ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement$1(element) {\n  {\n    if (element) {\n      var owner = element._owner;\n      var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n      ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n    } else {\n      ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n    }\n  }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n  propTypesMisspellWarningShown = false;\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\n\nfunction isValidElement(object) {\n  {\n    return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n  }\n}\n\nfunction getDeclarationErrorAddendum() {\n  {\n    if (ReactCurrentOwner$1.current) {\n      var name = getComponentNameFromType(ReactCurrentOwner$1.current.type);\n\n      if (name) {\n        return '\\n\\nCheck the render method of `' + name + '`.';\n      }\n    }\n\n    return '';\n  }\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n  {\n    if (source !== undefined) {\n      var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n      var lineNumber = source.lineNumber;\n      return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n    }\n\n    return '';\n  }\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n  {\n    var info = getDeclarationErrorAddendum();\n\n    if (!info) {\n      var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n      if (parentName) {\n        info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n      }\n    }\n\n    return info;\n  }\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n  {\n    if (!element._store || element._store.validated || element.key != null) {\n      return;\n    }\n\n    element._store.validated = true;\n    var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n    if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n      return;\n    }\n\n    ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n    // property, it may be the creator of the child that's responsible for\n    // assigning it a key.\n\n    var childOwner = '';\n\n    if (element && element._owner && element._owner !== ReactCurrentOwner$1.current) {\n      // Give the component that originally created this child.\n      childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n    }\n\n    setCurrentlyValidatingElement$1(element);\n\n    error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n    setCurrentlyValidatingElement$1(null);\n  }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n  {\n    if (typeof node !== 'object') {\n      return;\n    }\n\n    if (isArray(node)) {\n      for (var i = 0; i < node.length; i++) {\n        var child = node[i];\n\n        if (isValidElement(child)) {\n          validateExplicitKey(child, parentType);\n        }\n      }\n    } else if (isValidElement(node)) {\n      // This element was passed in a valid location.\n      if (node._store) {\n        node._store.validated = true;\n      }\n    } else if (node) {\n      var iteratorFn = getIteratorFn(node);\n\n      if (typeof iteratorFn === 'function') {\n        // Entry iterators used to provide implicit keys,\n        // but now we print a separate warning for them later.\n        if (iteratorFn !== node.entries) {\n          var iterator = iteratorFn.call(node);\n          var step;\n\n          while (!(step = iterator.next()).done) {\n            if (isValidElement(step.value)) {\n              validateExplicitKey(step.value, parentType);\n            }\n          }\n        }\n      }\n    }\n  }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n  {\n    var type = element.type;\n\n    if (type === null || type === undefined || typeof type === 'string') {\n      return;\n    }\n\n    var propTypes;\n\n    if (typeof type === 'function') {\n      propTypes = type.propTypes;\n    } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n    // Inner props are checked in the reconciler.\n    type.$$typeof === REACT_MEMO_TYPE)) {\n      propTypes = type.propTypes;\n    } else {\n      return;\n    }\n\n    if (propTypes) {\n      // Intentionally inside to avoid triggering lazy initializers:\n      var name = getComponentNameFromType(type);\n      checkPropTypes(propTypes, element.props, 'prop', name, element);\n    } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n      propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n      var _name = getComponentNameFromType(type);\n\n      error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n    }\n\n    if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n      error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n    }\n  }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n  {\n    var keys = Object.keys(fragment.props);\n\n    for (var i = 0; i < keys.length; i++) {\n      var key = keys[i];\n\n      if (key !== 'children' && key !== 'key') {\n        setCurrentlyValidatingElement$1(fragment);\n\n        error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n        setCurrentlyValidatingElement$1(null);\n        break;\n      }\n    }\n\n    if (fragment.ref !== null) {\n      setCurrentlyValidatingElement$1(fragment);\n\n      error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n      setCurrentlyValidatingElement$1(null);\n    }\n  }\n}\n\nvar didWarnAboutKeySpread = {};\nfunction jsxWithValidation(type, props, key, isStaticChildren, source, self) {\n  {\n    var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n    // succeed and there will likely be errors in render.\n\n    if (!validType) {\n      var info = '';\n\n      if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n        info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n      }\n\n      var sourceInfo = getSourceInfoErrorAddendum(source);\n\n      if (sourceInfo) {\n        info += sourceInfo;\n      } else {\n        info += getDeclarationErrorAddendum();\n      }\n\n      var typeString;\n\n      if (type === null) {\n        typeString = 'null';\n      } else if (isArray(type)) {\n        typeString = 'array';\n      } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n        typeString = \"<\" + (getComponentNameFromType(type.type) || 'Unknown') + \" />\";\n        info = ' Did you accidentally export a JSX literal instead of a component?';\n      } else {\n        typeString = typeof type;\n      }\n\n      error('React.jsx: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n    }\n\n    var element = jsxDEV(type, props, key, source, self); // The result can be nullish if a mock or a custom function is used.\n    // TODO: Drop this when these are no longer allowed as the type argument.\n\n    if (element == null) {\n      return element;\n    } // Skip key warning if the type isn't valid since our key validation logic\n    // doesn't expect a non-string/function type and can throw confusing errors.\n    // We don't want exception behavior to differ between dev and prod.\n    // (Rendering will throw with a helpful message and as soon as the type is\n    // fixed, the key warnings will appear.)\n\n\n    if (validType) {\n      var children = props.children;\n\n      if (children !== undefined) {\n        if (isStaticChildren) {\n          if (isArray(children)) {\n            for (var i = 0; i < children.length; i++) {\n              validateChildKeys(children[i], type);\n            }\n\n            if (Object.freeze) {\n              Object.freeze(children);\n            }\n          } else {\n            error('React.jsx: Static children should always be an array. ' + 'You are likely explicitly calling React.jsxs or React.jsxDEV. ' + 'Use the Babel transform instead.');\n          }\n        } else {\n          validateChildKeys(children, type);\n        }\n      }\n    }\n\n    {\n      if (hasOwnProperty.call(props, 'key')) {\n        var componentName = getComponentNameFromType(type);\n        var keys = Object.keys(props).filter(function (k) {\n          return k !== 'key';\n        });\n        var beforeExample = keys.length > 0 ? '{key: someKey, ' + keys.join(': ..., ') + ': ...}' : '{key: someKey}';\n\n        if (!didWarnAboutKeySpread[componentName + beforeExample]) {\n          var afterExample = keys.length > 0 ? '{' + keys.join(': ..., ') + ': ...}' : '{}';\n\n          error('A props object containing a \"key\" prop is being spread into JSX:\\n' + '  let props = %s;\\n' + '  <%s {...props} />\\n' + 'React keys must be passed directly to JSX without using spread:\\n' + '  let props = %s;\\n' + '  <%s key={someKey} {...props} />', beforeExample, componentName, afterExample, componentName);\n\n          didWarnAboutKeySpread[componentName + beforeExample] = true;\n        }\n      }\n    }\n\n    if (type === REACT_FRAGMENT_TYPE) {\n      validateFragmentProps(element);\n    } else {\n      validatePropTypes(element);\n    }\n\n    return element;\n  }\n} // These two functions exist to still get child warnings in dev\n// even with the prod transform. This means that jsxDEV is purely\n// opt-in behavior for better messages but that we won't stop\n// giving you warnings if you use production apis.\n\nfunction jsxWithValidationStatic(type, props, key) {\n  {\n    return jsxWithValidation(type, props, key, true);\n  }\n}\nfunction jsxWithValidationDynamic(type, props, key) {\n  {\n    return jsxWithValidation(type, props, key, false);\n  }\n}\n\nvar jsx =  jsxWithValidationDynamic ; // we may want to special case jsxs internally to take advantage of static children.\n// for now we can ship identical prod functions\n\nvar jsxs =  jsxWithValidationStatic ;\n\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsx;\nexports.jsxs = jsxs;\n  })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n  module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","module.exports = YUNTOO_META;","// 获取通用属性, 用于最终渲染在dom上\nexport const getCommonAttr = (props) => {\n  if (props?.__id) {\n    return {\n      \"data-node-id\": props?.__id,\n    };\n  }\n  return {};\n};\n","module.exports = antd;","/**\n * 📦 智能组件空状态\n */\n\nimport React from \"react\";\nimport { Empty } from \"antd\";\nimport \"./index.less\";\n\n/**\n * 渲染空状态\n */\nexport const renderEmptyState = (\n  ref?: React.Ref<HTMLDivElement>,\n  options?: {\n    description?: string;\n    iconUrl?: string;\n    componentName?: string;\n  },\n) => {\n  const {\n    description = \"请先选择数据源\",\n    iconUrl = \"https://i.lovrabet.com/c/AZlf-LkacACLmxiQjnwgxg.png\",\n    componentName,\n  } = options || {};\n\n  // 🎯 从 ref 中自动推断组件名（如果没有显式传入）\n  const displayName = componentName || (ref as any)?.type?.displayName || \"Smart Component\";\n\n  return (\n    <div ref={ref} className=\"smart-empty-state\">\n      <img\n        src={iconUrl}\n        alt={displayName}\n        title={displayName}\n        className=\"smart-empty-state__icon\"\n      />\n      <Empty description={description} />\n    </div>\n  );\n};\n","module.exports = icons;","import React, { useState } from \"react\";\nimport { Button, Input } from \"antd\";\nimport { FilterOutlined } from \"@ant-design/icons\";\n\ntype ModelProperty = {\n  code: string;\n  name: string;\n  type: string;\n  description?: string;\n  options?: any;\n};\n\nconst OneSearch = (props: any) => {\n  const {\n    _context,\n    __designMode,\n    datasetId,\n    oneSearchFilterKey,\n    showYtFilter,\n    setShowYtFilter,\n  } = props;\n\n  const { ytFetch } = _context.utils; // 运行态才有\n\n  const [userInput, setUserInput] = useState(\"\");\n  const [searchLoading, setSearchLoading] = useState(false);\n  const [modelProperties, setModelProperties] = useState<\n    ModelProperty[] | null\n  >(null);\n\n  // 异步获取dataset信息\n  const asyncGetModelProperties = async () => {\n    if (!ytFetch || !datasetId) return;\n\n    const { datasetCode, datasetColumns } = await ytFetch?.get(\n      `/api/dataset/get-columns`,\n      { datasetId },\n    );\n\n    const props: ModelProperty[] = [];\n\n    datasetColumns.forEach(\n      ({ code, deleted, visible, description, extend, name, type }) => {\n        if (!deleted && visible !== false) {\n          let extendObj;\n          try {\n            extendObj = JSON.parse(extend);\n          } catch (error) {}\n\n          props.push({\n            code,\n            name,\n            type,\n            description: extendObj?.tooltip || description,\n            options: extendObj?.options,\n          });\n\n          // 当这个字段关联了其他数据集时, 字段本身的值为关联数据集id, 按约定, label文本内容放在 _label 字段中\n          // 在这里补上一个 _label 的 props, 让模型能够识别并拼接 filter 文本查询条件\n          if (extendObj.selectItemsSource) {\n            props.push({\n              code: `${code}_label`,\n              name: `${name}label`,\n              type: \"LABEL\", // 指定类型为LABEL, prompt中会强调查询该类型字段\n              description: extendObj?.tooltip || description,\n            });\n          }\n        }\n      },\n    );\n\n    setModelProperties(props);\n    return props;\n  };\n\n  // 请求 AI 获取 filter 查询对象\n  const asyncModelCallFilter = async (prompt: string) => {\n    // 空字符串的时候直接查所有\n    if (!prompt?.trim()) return {};\n\n    // 只请求一次 modelProperties\n    const properties =\n      modelProperties ?? (await asyncGetModelProperties()) ?? [];\n\n    // 拼接 prompt\n    const userPrompt = `\n**当前时间的 ISO 字符串**\n\n${new Date().toISOString()}\n\n**当前查询人用户信息（userId）**\n\n- userId: ${window.__GLOBAL__?.userInfo?.userId}\n\n**用户的查询需求（自然语言）**\n\n${prompt}\n\n**可用于 filter 的详细字段说明（含字段名和类型）**\n\n${JSON.stringify(properties)}\n`;\n\n    const res: { content?: string } = await ytFetch.post(\"/api/search\", {\n      id: \"TEXT_TO_FILTER_PARAM\",\n      query: userPrompt,\n      appCode: window.__GLOBAL__?.appInfo?.appCode,\n    });\n\n    try {\n      return JSON.parse(res?.content);\n    } catch (error) {\n      console.error(\"分析失败:\", error);\n      return null;\n    }\n  };\n\n  // 发起智能搜索\n  const onSearch = async (value) => {\n    setSearchLoading(true);\n    try {\n      const filter = await asyncModelCallFilter(value);\n      if (!filter) return;\n\n      _context.setState({\n        oneSearchMode: true, // TODO: 标记当前使用智能搜索, 在 table 中需要判断使用哪一份数据源, 统一切filter之后去除这个逻辑\n        [oneSearchFilterKey]: filter, // filter查询条件 state 变化, filter数据源会绑定这个参数, 从而触发数据源刷新\n      });\n\n      // 调用引擎已经注册的dataSource方法, 上面的 setState 操作已经会触发数据源刷新了, 不需要再次手工调用\n      // _context.dataSourceMap[`${datasetId}_filter`]?.load({ filter });\n    } catch (err) {\n    } finally {\n      setSearchLoading(false);\n    }\n  };\n\n  return (\n    <div className=\"yt-smart-search\">\n      <Input.Search\n        size=\"large\"\n        value={userInput}\n        onChange={(e) => setUserInput(e.target.value)}\n        onSearch={onSearch}\n        loading={searchLoading}\n        allowClear\n        enterButton=\"智能搜索\"\n        placeholder=\"请描述您要查询的内容：比如「进货价大于500的商品」\"\n      />\n      <Button\n        size=\"large\"\n        icon={<FilterOutlined />}\n        variant=\"outlined\"\n        color={showYtFilter ? \"primary\" : \"default\"}\n        onClick={() => setShowYtFilter(!showYtFilter)}\n      />\n    </div>\n  );\n};\n\nexport default OneSearch;\n","import React, { forwardRef, Ref, useState } from \"react\";\nimport { YtFilter } from \"@yuntoo/antd-meta\";\nimport { getCommonAttr } from \"@yuntoo/antd-ext/src/_utils\";\nimport { renderEmptyState } from \"../common/empty-state\";\nimport OneSearch from \"./one-search/view\";\nimport \"./view.less\";\n\nexport const LrSmartFilter = forwardRef((props: any, ref: Ref<any>) => {\n  const {\n    customProps,\n    datasetId,\n    oneSearchFilterKey,\n    items,\n    _context,\n    __designMode,\n  } = props;\n  const [showYtFilter, setShowYtFilter] = useState(false); // oneSearch模式下, 是否显示传统的ytFilter\n\n  if (__designMode === \"design\" && (!items || items.length === 0)) {\n    return renderEmptyState(ref, {\n      iconUrl: \"https://i.lovrabet.com/c/AZlwM0XBcACByLrLhQcXag.png\",\n    });\n  }\n\n  // 只有在明确关闭 oneSearch 模式，或者 oneSearch 运行时环境不必备时（老页面）\n  // 才使用普通的 ytFilter\n  if (\n    !datasetId ||\n    !oneSearchFilterKey ||\n    !(`${datasetId}_filter` in _context?.dataSourceMap) || // TODO: 临时通过dataSourceMap判断是否有filter相关的数据源, 避免老页面问题\n    customProps?.useOneSearchMode === false\n  ) {\n    return <YtFilter {...props} ref={ref} />;\n  }\n\n  // 默认使用 oneSearch 普通模式\n  return (\n    <div className=\"lr-smart-filter\" ref={ref} {...getCommonAttr(props)}>\n      <OneSearch\n        {...props}\n        showYtFilter={showYtFilter}\n        setShowYtFilter={setShowYtFilter}\n      />\n      {showYtFilter && <YtFilter {...props} />}\n    </div>\n  );\n});\n\nLrSmartFilter.displayName = \"LrSmartFilter\";\n","import React, { forwardRef, Ref } from \"react\";\nimport { YtForm } from \"@yuntoo/antd-meta\";\nimport { renderEmptyState } from \"../common/empty-state\";\n\n/**\n * 智能表单创建组件\n * 1. 如果未选择关联数据源，则显示空状态\n * 2. 如果选择了关联数据源，则显示智能表单\n */\nexport const LrSmartCreate: any = forwardRef((props: any, ref: Ref<any>) => {\n  const { items } = props;\n\n  if (!items || items.length === 0) {\n    return renderEmptyState(ref, {\n      iconUrl: \"https://i.lovrabet.com/c/AZlwMyl3cACt1-IU4A5HdA.png\",\n    });\n  }\n\n  return <YtForm {...props} ref={ref} layoutMode=\"single\" />;\n});\n\nLrSmartCreate.displayName = \"LrSmartCreate\";\n","import React, { forwardRef, Ref } from \"react\";\nimport { YtForm } from \"@yuntoo/antd-meta\";\nimport { renderEmptyState } from \"../common/empty-state\";\n\n/**\n * 智能更新表单组件\n */\nexport const LrSmartUpdate: any = forwardRef((props: any, ref: Ref<any>) => {\n  const { items } = props;\n\n  if (!items || items.length === 0) {\n    return renderEmptyState(ref, {\n      iconUrl: \"https://i.lovrabet.com/c/AZlwMyl3cACt1-IU4A5HdA.png\",\n    });\n  }\n\n  return <YtForm {...props} ref={ref} layoutMode=\"single\" />;\n});\n\nLrSmartUpdate.displayName = \"LrSmartUpdate\";\n","import React, { forwardRef, Ref } from \"react\";\nimport { YtForm } from \"@yuntoo/antd-meta\";\nimport { renderEmptyState } from \"../common/empty-state\";\n\n/**\n * 智能详情表单组件\n */\nexport const LrSmartDetail: any = forwardRef((props: any, ref: Ref<any>) => {\n  const { items } = props;\n\n  if (!items || items.length === 0) {\n    return renderEmptyState(ref, {\n      iconUrl: \"https://i.lovrabet.com/c/AZlwaUgvcACY0VzrWVpKHA.png\",\n    });\n  }\n\n  return <YtForm {...props} ref={ref} preview layoutMode=\"single\" />;\n});\n\nLrSmartDetail.displayName = \"LrSmartDetail\";\n","import React, { forwardRef, Ref } from \"react\";\nimport { YtTable } from \"@yuntoo/antd-meta\";\nimport { renderEmptyState } from \"../common/empty-state\";\n\n/**\n * 智能表格组件\n */\nexport const LrSmartTable: any = forwardRef((props: any, ref: Ref<any>) => {\n  const { columns } = props;\n\n  if (!columns || columns.length === 0) {\n    return renderEmptyState(ref, {\n      iconUrl: \"https://i.lovrabet.com/c/AZlwMxiUcAChbvyaWmm8eA.png\",\n    });\n  }\n\n  return <YtTable {...props} ref={ref} />;\n});\n\nLrSmartTable.displayName = \"LrSmartTable\";\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\nmodule.exports = listCacheSet;\n","var listCacheClear = require('./_listCacheClear'),\n    listCacheDelete = require('./_listCacheDelete'),\n    listCacheGet = require('./_listCacheGet'),\n    listCacheHas = require('./_listCacheHas'),\n    listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var Symbol = require('./_Symbol'),\n    getRawTag = require('./_getRawTag'),\n    objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseGetTag = require('./_baseGetTag'),\n    isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\nmodule.exports = toSource;\n","var isFunction = require('./isFunction'),\n    isMasked = require('./_isMasked'),\n    isObject = require('./isObject'),\n    toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var baseIsNative = require('./_baseIsNative'),\n    getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\nmodule.exports = hashSet;\n","var hashClear = require('./_hashClear'),\n    hashDelete = require('./_hashDelete'),\n    hashGet = require('./_hashGet'),\n    hashHas = require('./_hashHas'),\n    hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var Hash = require('./_Hash'),\n    ListCache = require('./_ListCache'),\n    Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\nmodule.exports = mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\nmodule.exports = getMapData;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\nmodule.exports = mapCacheSet;\n","var mapCacheClear = require('./_mapCacheClear'),\n    mapCacheDelete = require('./_mapCacheDelete'),\n    mapCacheGet = require('./_mapCacheGet'),\n    mapCacheHas = require('./_mapCacheHas'),\n    mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var ListCache = require('./_ListCache'),\n    Map = require('./_Map'),\n    MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\nmodule.exports = stackSet;\n","var ListCache = require('./_ListCache'),\n    stackClear = require('./_stackClear'),\n    stackDelete = require('./_stackDelete'),\n    stackGet = require('./_stackGet'),\n    stackHas = require('./_stackHas'),\n    stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\nmodule.exports = baseAssignValue;\n","var baseAssignValue = require('./_baseAssignValue'),\n    eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n  if ((value !== undefined && !eq(object[key], value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nmodule.exports = assignMergeValue;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n  return function(object, iteratee, keysFunc) {\n    var index = -1,\n        iterable = Object(object),\n        props = keysFunc(object),\n        length = props.length;\n\n    while (length--) {\n      var key = props[fromRight ? length : ++index];\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n    return object;\n  };\n}\n\nmodule.exports = createBaseFor;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of  `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n  if (isDeep) {\n    return buffer.slice();\n  }\n  var length = buffer.length,\n      result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n  buffer.copy(result);\n  return result;\n}\n\nmodule.exports = cloneBuffer;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n  new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n  return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n  var index = -1,\n      length = source.length;\n\n  array || (array = Array(length));\n  while (++index < length) {\n    array[index] = source[index];\n  }\n  return array;\n}\n\nmodule.exports = copyArray;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n  function object() {}\n  return function(proto) {\n    if (!isObject(proto)) {\n      return {};\n    }\n    if (objectCreate) {\n      return objectCreate(proto);\n    }\n    object.prototype = proto;\n    var result = new object;\n    object.prototype = undefined;\n    return result;\n  };\n}());\n\nmodule.exports = baseCreate;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nmodule.exports = overArg;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var baseCreate = require('./_baseCreate'),\n    getPrototype = require('./_getPrototype'),\n    isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n  return (typeof object.constructor == 'function' && !isPrototype(object))\n    ? baseCreate(getPrototype(object))\n    : {};\n}\n\nmodule.exports = initCloneObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsArguments = require('./_baseIsArguments'),\n    isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var isFunction = require('./isFunction'),\n    isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var isArrayLike = require('./isArrayLike'),\n    isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\n","var root = require('./_root'),\n    stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n    getPrototype = require('./_getPrototype'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n  if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n    return false;\n  }\n  var proto = getPrototype(value);\n  if (proto === null) {\n    return true;\n  }\n  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n  return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n    funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var baseGetTag = require('./_baseGetTag'),\n    isLength = require('./isLength'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\nmodule.exports = baseUnary;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n  if (key === 'constructor' && typeof object[key] === 'function') {\n    return;\n  }\n\n  if (key == '__proto__') {\n    return;\n  }\n\n  return object[key];\n}\n\nmodule.exports = safeGet;\n","var baseAssignValue = require('./_baseAssignValue'),\n    eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nmodule.exports = assignValue;\n","var assignValue = require('./_assignValue'),\n    baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  var isNew = !object;\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    if (newValue === undefined) {\n      newValue = source[key];\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue);\n    } else {\n      assignValue(object, key, newValue);\n    }\n  }\n  return object;\n}\n\nmodule.exports = copyObject;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\nmodule.exports = baseTimes;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var baseTimes = require('./_baseTimes'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isIndex = require('./_isIndex'),\n    isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var isObject = require('./isObject'),\n    isPrototype = require('./_isPrototype'),\n    nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n  if (!isObject(object)) {\n    return nativeKeysIn(object);\n  }\n  var isProto = isPrototype(object),\n      result = [];\n\n  for (var key in object) {\n    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseKeysIn;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n    baseKeysIn = require('./_baseKeysIn'),\n    isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","var copyObject = require('./_copyObject'),\n    keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n  return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var assignMergeValue = require('./_assignMergeValue'),\n    cloneBuffer = require('./_cloneBuffer'),\n    cloneTypedArray = require('./_cloneTypedArray'),\n    copyArray = require('./_copyArray'),\n    initCloneObject = require('./_initCloneObject'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isArrayLikeObject = require('./isArrayLikeObject'),\n    isBuffer = require('./isBuffer'),\n    isFunction = require('./isFunction'),\n    isObject = require('./isObject'),\n    isPlainObject = require('./isPlainObject'),\n    isTypedArray = require('./isTypedArray'),\n    safeGet = require('./_safeGet'),\n    toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n  var objValue = safeGet(object, key),\n      srcValue = safeGet(source, key),\n      stacked = stack.get(srcValue);\n\n  if (stacked) {\n    assignMergeValue(object, key, stacked);\n    return;\n  }\n  var newValue = customizer\n    ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n    : undefined;\n\n  var isCommon = newValue === undefined;\n\n  if (isCommon) {\n    var isArr = isArray(srcValue),\n        isBuff = !isArr && isBuffer(srcValue),\n        isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n    newValue = srcValue;\n    if (isArr || isBuff || isTyped) {\n      if (isArray(objValue)) {\n        newValue = objValue;\n      }\n      else if (isArrayLikeObject(objValue)) {\n        newValue = copyArray(objValue);\n      }\n      else if (isBuff) {\n        isCommon = false;\n        newValue = cloneBuffer(srcValue, true);\n      }\n      else if (isTyped) {\n        isCommon = false;\n        newValue = cloneTypedArray(srcValue, true);\n      }\n      else {\n        newValue = [];\n      }\n    }\n    else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n      newValue = objValue;\n      if (isArguments(objValue)) {\n        newValue = toPlainObject(objValue);\n      }\n      else if (!isObject(objValue) || isFunction(objValue)) {\n        newValue = initCloneObject(srcValue);\n      }\n    }\n    else {\n      isCommon = false;\n    }\n  }\n  if (isCommon) {\n    // Recursively merge objects and arrays (susceptible to call stack limits).\n    stack.set(srcValue, newValue);\n    mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n    stack['delete'](srcValue);\n  }\n  assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n","var Stack = require('./_Stack'),\n    assignMergeValue = require('./_assignMergeValue'),\n    baseFor = require('./_baseFor'),\n    baseMergeDeep = require('./_baseMergeDeep'),\n    isObject = require('./isObject'),\n    keysIn = require('./keysIn'),\n    safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n  if (object === source) {\n    return;\n  }\n  baseFor(source, function(srcValue, key) {\n    stack || (stack = new Stack);\n    if (isObject(srcValue)) {\n      baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n    }\n    else {\n      var newValue = customizer\n        ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n        : undefined;\n\n      if (newValue === undefined) {\n        newValue = srcValue;\n      }\n      assignMergeValue(object, key, newValue);\n    }\n  }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = transform(array);\n    return apply(func, this, otherArgs);\n  };\n}\n\nmodule.exports = overRest;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n  return function() {\n    return value;\n  };\n}\n\nmodule.exports = constant;\n","var constant = require('./constant'),\n    defineProperty = require('./_defineProperty'),\n    identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n  return defineProperty(func, 'toString', {\n    'configurable': true,\n    'enumerable': false,\n    'value': constant(string),\n    'writable': true\n  });\n};\n\nmodule.exports = baseSetToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n    HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n  var count = 0,\n      lastCalled = 0;\n\n  return function() {\n    var stamp = nativeNow(),\n        remaining = HOT_SPAN - (stamp - lastCalled);\n\n    lastCalled = stamp;\n    if (remaining > 0) {\n      if (++count >= HOT_COUNT) {\n        return arguments[0];\n      }\n    } else {\n      count = 0;\n    }\n    return func.apply(undefined, arguments);\n  };\n}\n\nmodule.exports = shortOut;\n","var baseSetToString = require('./_baseSetToString'),\n    shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","var identity = require('./identity'),\n    overRest = require('./_overRest'),\n    setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var eq = require('./eq'),\n    isArrayLike = require('./isArrayLike'),\n    isIndex = require('./_isIndex'),\n    isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n *  else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n  if (!isObject(object)) {\n    return false;\n  }\n  var type = typeof index;\n  if (type == 'number'\n        ? (isArrayLike(object) && isIndex(index, object.length))\n        : (type == 'string' && index in object)\n      ) {\n    return eq(object[index], value);\n  }\n  return false;\n}\n\nmodule.exports = isIterateeCall;\n","var baseRest = require('./_baseRest'),\n    isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n  return baseRest(function(object, sources) {\n    var index = -1,\n        length = sources.length,\n        customizer = length > 1 ? sources[length - 1] : undefined,\n        guard = length > 2 ? sources[2] : undefined;\n\n    customizer = (assigner.length > 3 && typeof customizer == 'function')\n      ? (length--, customizer)\n      : undefined;\n\n    if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n      customizer = length < 3 ? undefined : customizer;\n      length = 1;\n    }\n    object = Object(object);\n    while (++index < length) {\n      var source = sources[index];\n      if (source) {\n        assigner(object, source, index, customizer);\n      }\n    }\n    return object;\n  });\n}\n\nmodule.exports = createAssigner;\n","var baseMerge = require('./_baseMerge'),\n    createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n *   'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n *   'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n  baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n","/**\n * 🎨 Chart Theme CDN 主题配置\n *\n * ⚠️ 此文件由 scripts/fetch-chart-themes.ts 自动生成，请勿手动修改\n *\n * 生成时间: 2026-01-20T11:16:28.700Z\n * 配置来源: CDN (https://g.lovrabet.com/chart-themes/config.json)\n * 更新时间: 2025-12-02T08:07:14.470Z\n * 更新人: fengyue\n *\n * 使用方式：\n * import { getCdnThemeConfig, cdnThemeRegistry } from './cdn-theme-config';\n * const themeConfig = getCdnThemeConfig('colorful');\n */\n\nexport interface CdnThemeConfig {\n  color: string[];\n  backgroundColor: string;\n  textStyle: { color: string };\n  axisLine: { lineStyle: { color: string } };\n  splitLine: { lineStyle: { color: string } };\n}\n\nexport interface CdnThemeMeta {\n  name: string;\n  description: string;\n  scene: string;\n  config: CdnThemeConfig;\n}\n\nexport type CdnThemeKey = 'default' | 'colorful' | 'ocean' | 'royal' | 'sunset' | 'forest' | 'midnight' | 'alert' | 'everyday' | 'trendy' | 'dreamy';\n\n/**\n * CDN 主题注册表\n */\nexport const cdnThemeRegistry: Record<CdnThemeKey, CdnThemeMeta> = {\n  \"default\": {\n    \"name\": \"默认主题\",\n    \"description\": \"企业蓝色调，专业稳重\",\n    \"scene\": \"常规图表、企业报表\",\n    \"config\": {\n      \"color\": [\n        \"#355bd5\",\n        \"#79c8f9\",\n        \"#626c91\",\n        \"#a0a7e6\",\n        \"#0aceac\",\n        \"#258e4f\",\n        \"#e98c4a\",\n        \"#a12d9c\",\n        \"#f08e9b\",\n        \"#717498\"\n      ],\n      \"backgroundColor\": \"#F5F7FA\",\n      \"textStyle\": {\n        \"color\": \"#333333\"\n      },\n      \"axisLine\": {\n        \"lineStyle\": {\n          \"color\": \"#cccccc\"\n        }\n      },\n      \"splitLine\": {\n        \"lineStyle\": {\n          \"color\": \"#eeeeee\"\n        }\n      }\n    }\n  },\n  \"colorful\": {\n    \"name\": \"五彩缤纷\",\n    \"description\": \"鲜艳夺目，色彩丰富\",\n    \"scene\": \"营销活动、展示大屏\",\n    \"config\": {\n      \"color\": [\n        \"#c1232b\",\n        \"#27727b\",\n        \"#fcce10\",\n        \"#e87c25\",\n        \"#b5c334\",\n        \"#fe8463\",\n        \"#9bca63\",\n        \"#fad860\",\n        \"#f3a43b\",\n        \"#60c0dd\",\n        \"#d7504b\",\n        \"#c6e579\",\n        \"#f4e001\",\n        \"#f0805a\",\n        \"#26c0c0\"\n      ],\n      \"backgroundColor\": \"#F5F7FA\",\n      \"textStyle\": {\n        \"color\": \"#333333\"\n      },\n      \"axisLine\": {\n        \"lineStyle\": {\n          \"color\": \"#cccccc\"\n        }\n      },\n      \"splitLine\": {\n        \"lineStyle\": {\n          \"color\": \"#eeeeee\"\n        }\n      }\n    }\n  },\n  \"ocean\": {\n    \"name\": \"海洋蓝调\",\n    \"description\": \"清新柔和，舒适淡雅\",\n    \"scene\": \"科技感、清新风格\",\n    \"config\": {\n      \"color\": [\n        \"#2ec7c9\",\n        \"#b6a2de\",\n        \"#5ab1ef\",\n        \"#ffb980\",\n        \"#d87a80\",\n        \"#8d98b3\",\n        \"#e5cf0d\",\n        \"#97b552\",\n        \"#95706d\",\n        \"#dc69aa\",\n        \"#07a2a4\",\n        \"#9a7fd1\",\n        \"#588dd5\",\n        \"#f5994e\",\n        \"#c05050\",\n        \"#59678c\",\n        \"#c9ab00\",\n        \"#7eb00a\",\n        \"#6f5553\",\n        \"#c14089\"\n      ],\n      \"backgroundColor\": \"#F5F7FA\",\n      \"textStyle\": {\n        \"color\": \"#333333\"\n      },\n      \"axisLine\": {\n        \"lineStyle\": {\n          \"color\": \"#cccccc\"\n        }\n      },\n      \"splitLine\": {\n        \"lineStyle\": {\n          \"color\": \"#eeeeee\"\n        }\n      }\n    }\n  },\n  \"royal\": {\n    \"name\": \"皇家典雅\",\n    \"description\": \"高对比度，醒目突出\",\n    \"scene\": \"高端报告、正式场合\",\n    \"config\": {\n      \"color\": [\n        \"#e01f54\",\n        \"#001852\",\n        \"#f5e8c8\",\n        \"#b8d2c7\",\n        \"#c6b38e\",\n        \"#a4d8c2\",\n        \"#f3d999\",\n        \"#d3758f\",\n        \"#dcc392\",\n        \"#2e4783\",\n        \"#82b6e9\",\n        \"#ff6347\",\n        \"#a092f1\",\n        \"#0a915d\",\n        \"#eaf889\",\n        \"#6699ff\",\n        \"#ff6666\",\n        \"#3cb371\",\n        \"#d5b158\",\n        \"#38b6b6\"\n      ],\n      \"backgroundColor\": \"#F5F7FA\",\n      \"textStyle\": {\n        \"color\": \"#333333\"\n      },\n      \"axisLine\": {\n        \"lineStyle\": {\n          \"color\": \"#cccccc\"\n        }\n      },\n      \"splitLine\": {\n        \"lineStyle\": {\n          \"color\": \"#eeeeee\"\n        }\n      }\n    }\n  },\n  \"sunset\": {\n    \"name\": \"日落暖阳\",\n    \"description\": \"暖黄色系，温暖积极\",\n    \"scene\": \"销售、财务报表\",\n    \"config\": {\n      \"color\": [\n        \"#893448\",\n        \"#d95850\",\n        \"#eb8146\",\n        \"#ffb248\",\n        \"#f2d643\",\n        \"#ebdba4\"\n      ],\n      \"backgroundColor\": \"#F5F7FA\",\n      \"textStyle\": {\n        \"color\": \"#893448\"\n      },\n      \"axisLine\": {\n        \"lineStyle\": {\n          \"color\": \"#aaaaaa\"\n        }\n      },\n      \"splitLine\": {\n        \"lineStyle\": {\n          \"color\": \"#e6e6e6\"\n        }\n      }\n    }\n  },\n  \"forest\": {\n    \"name\": \"森林绿意\",\n    \"description\": \"绿色系，自然清新\",\n    \"scene\": \"环保、健康、生态主题\",\n    \"config\": {\n      \"color\": [\n        \"#4ea397\",\n        \"#22c3aa\",\n        \"#7bd9a5\",\n        \"#d0648a\",\n        \"#f58db2\",\n        \"#f2b3c9\"\n      ],\n      \"backgroundColor\": \"#F5F7FA\",\n      \"textStyle\": {\n        \"color\": \"#666666\"\n      },\n      \"axisLine\": {\n        \"lineStyle\": {\n          \"color\": \"#cccccc\"\n        }\n      },\n      \"splitLine\": {\n        \"lineStyle\": {\n          \"color\": \"#eeeeee\"\n        }\n      }\n    }\n  },\n  \"midnight\": {\n    \"name\": \"午夜深邃\",\n    \"description\": \"暗黑模式，深邃沉稳\",\n    \"scene\": \"大屏监控、驾驶舱\",\n    \"config\": {\n      \"color\": [\n        \"#dd6b66\",\n        \"#759aa0\",\n        \"#e69d87\",\n        \"#8dc1a9\",\n        \"#ea7e53\",\n        \"#eedd78\",\n        \"#73a373\",\n        \"#73b9bc\",\n        \"#7289ab\",\n        \"#91ca8c\",\n        \"#f49f42\"\n      ],\n      \"backgroundColor\": \"rgba(51,51,51,1)\",\n      \"textStyle\": {\n        \"color\": \"#dddddd\"\n      },\n      \"axisLine\": {\n        \"lineStyle\": {\n          \"color\": \"#eeeeee\"\n        }\n      },\n      \"splitLine\": {\n        \"lineStyle\": {\n          \"color\": \"#aaaaaa\"\n        }\n      }\n    }\n  },\n  \"alert\": {\n    \"name\": \"警示醒目\",\n    \"description\": \"强对比撞色，视觉冲击\",\n    \"scene\": \"告警、预警、KPI异常\",\n    \"config\": {\n      \"color\": [\n        \"#c12e34\",\n        \"#e6b600\",\n        \"#0098d9\",\n        \"#2b821d\",\n        \"#005eaa\",\n        \"#339ca8\",\n        \"#cda819\",\n        \"#32a487\"\n      ],\n      \"backgroundColor\": \"#F5F7FA\",\n      \"textStyle\": {\n        \"color\": \"#333333\"\n      },\n      \"axisLine\": {\n        \"lineStyle\": {\n          \"color\": \"#333333\"\n        }\n      },\n      \"splitLine\": {\n        \"lineStyle\": {\n          \"color\": \"#cccccc\"\n        }\n      }\n    }\n  },\n  \"everyday\": {\n    \"name\": \"日常通用\",\n    \"description\": \"均衡协调，百搭实用\",\n    \"scene\": \"常规报表、通用场景\",\n    \"config\": {\n      \"color\": [\n        \"#5470c6\",\n        \"#91cc75\",\n        \"#fac858\",\n        \"#ee6666\",\n        \"#73c0de\",\n        \"#3ba272\",\n        \"#fc8452\",\n        \"#9a60b4\",\n        \"#ea7ccc\"\n      ],\n      \"backgroundColor\": \"#F5F7FA\",\n      \"textStyle\": {\n        \"color\": \"#464646\"\n      },\n      \"axisLine\": {\n        \"lineStyle\": {\n          \"color\": \"#6E7079\"\n        }\n      },\n      \"splitLine\": {\n        \"lineStyle\": {\n          \"color\": \"#E0E6F1\"\n        }\n      }\n    }\n  },\n  \"trendy\": {\n    \"name\": \"潮流时尚\",\n    \"description\": \"青春活力，现代感强\",\n    \"scene\": \"年轻用户、互联网产品\",\n    \"config\": {\n      \"color\": [\n        \"#355bd5\",\n        \"#79c8f9\",\n        \"#a85bef\",\n        \"#eec31a\",\n        \"#0aceac\",\n        \"#258e4f\",\n        \"#e98c4a\",\n        \"#a12d9c\",\n        \"#fb879e\"\n      ],\n      \"backgroundColor\": \"#F5F7FA\",\n      \"textStyle\": {\n        \"color\": \"#464646\"\n      },\n      \"axisLine\": {\n        \"lineStyle\": {\n          \"color\": \"#6E7079\"\n        }\n      },\n      \"splitLine\": {\n        \"lineStyle\": {\n          \"color\": \"#E0E6F1\"\n        }\n      }\n    }\n  },\n  \"dreamy\": {\n    \"name\": \"梦幻柔和\",\n    \"description\": \"轻盈淡雅，柔美温柔\",\n    \"scene\": \"女性向、轻量展示\",\n    \"config\": {\n      \"color\": [\n        \"#516b91\",\n        \"#59c4e6\",\n        \"#edafda\",\n        \"#93b7e3\",\n        \"#a5e7f0\",\n        \"#cbb0e3\"\n      ],\n      \"backgroundColor\": \"#F5F7FA\",\n      \"textStyle\": {\n        \"color\": \"#516b91\"\n      },\n      \"axisLine\": {\n        \"lineStyle\": {\n          \"color\": \"#cccccc\"\n        }\n      },\n      \"splitLine\": {\n        \"lineStyle\": {\n          \"color\": \"#eeeeee\"\n        }\n      }\n    }\n  }\n};\n\n/**\n * 获取 CDN 主题配置\n */\nexport function getCdnThemeConfig(themeKey: CdnThemeKey): CdnThemeConfig {\n  return cdnThemeRegistry[themeKey]?.config;\n}\n\n/**\n * 获取所有 CDN 主题键\n */\nexport function getCdnThemeKeys(): CdnThemeKey[] {\n  return Object.keys(cdnThemeRegistry) as CdnThemeKey[];\n}\n\n/**\n * 检查是否为有效的 CDN 主题\n */\nexport function isValidCdnTheme(key: string): key is CdnThemeKey {\n  return key in cdnThemeRegistry;\n}\n","/**\n * 主题注册表\n * 管理所有可用的图表主题配置\n *\n * 🎯 架构说明：\n * - CDN 配置（cdn-theme-config.ts）：由 web-admin 生产，构建时自动同步\n * - 本地主题文件已移除，CDN 配置是唯一的颜色来源\n * - 如果 CDN 配置不存在，使用内置的默认配色\n */\nimport {\n  cdnThemeRegistry,\n  type CdnThemeKey,\n  type CdnThemeConfig,\n} from \"./cdn-theme-config\";\n\n/**\n * 主题名称类型定义\n * 采用业务场景化命名，便于 LLM 理解和用户选择\n *\n * - default: 默认主题，企业蓝色调（企业报表、通用展示）\n * - colorful: 五彩缤纷，鲜艳夺目（营销活动、展示大屏）\n * - ocean: 海洋蓝调，清新柔和（科技感、清新风格）\n * - royal: 皇家典雅，高对比度（高端报告、正式场合）\n * - sunset: 日落暖阳，温暖积极（销售、财务报表）\n * - forest: 森林绿意，自然清新（环保、健康、生态）\n * - midnight: 午夜深邃，暗黑模式（大屏监控、驾驶舱）\n * - alert: 警示醒目，强对比（告警、预警、KPI异常）\n * - everyday: 日常通用，均衡协调（常规报表、通用场景）\n * - trendy: 潮流时尚，青春活力（年轻用户、互联网产品）\n * - dreamy: 梦幻柔和，轻盈淡雅（女性向、轻量展示）\n */\nexport type ThemeName = CdnThemeKey;\n\n/**\n * ECharts 主题配置类型\n */\nexport interface EChartsTheme {\n  color: string[];\n  backgroundColor?: string;\n  textStyle?: { color: string };\n  title?: { textStyle?: { color: string }; subtextStyle?: { color: string } };\n  legend?: { textStyle?: { color: string } };\n  categoryAxis?: {\n    axisLine?: { lineStyle?: { color: string } };\n    axisTick?: { lineStyle?: { color: string } };\n    axisLabel?: { color: string };\n    splitLine?: { lineStyle?: { color: string } };\n  };\n  valueAxis?: {\n    axisLine?: { lineStyle?: { color: string } };\n    axisTick?: { lineStyle?: { color: string } };\n    axisLabel?: { color: string };\n    splitLine?: { lineStyle?: { color: string } };\n  };\n  [key: string]: unknown;\n}\n\n/**\n * 🎯 将 CDN 简化配置转换为 ECharts 主题格式\n * CDN 配置只包含关键属性，需要展开为完整的 ECharts 主题结构\n */\nfunction convertCdnToEChartsTheme(cdnConfig: CdnThemeConfig): EChartsTheme {\n  const { color, backgroundColor, textStyle, axisLine, splitLine } = cdnConfig;\n  const textColor = textStyle?.color || \"#333333\";\n\n  return {\n    color,\n    backgroundColor,\n    textStyle: { color: textColor },\n    // 标题样式\n    title: {\n      textStyle: { color: textColor },\n      subtextStyle: { color: textColor },\n    },\n    // 图例样式\n    legend: {\n      textStyle: { color: textColor },\n    },\n    // 类目轴（通常是 X 轴）\n    categoryAxis: {\n      axisLine: axisLine,\n      axisTick: { lineStyle: { color: axisLine?.lineStyle?.color } },\n      axisLabel: { color: textColor },\n      splitLine: splitLine,\n    },\n    // 数值轴（通常是 Y 轴）\n    valueAxis: {\n      axisLine: axisLine,\n      axisTick: { lineStyle: { color: axisLine?.lineStyle?.color } },\n      axisLabel: { color: textColor },\n      splitLine: splitLine,\n    },\n  };\n}\n\n/**\n * 获取主题配置\n * @param themeName 主题名称，不传则返回 null（使用默认主题）\n * @returns 主题配置对象，如果主题不存在则返回 null\n */\nexport function getTheme(themeName?: ThemeName): EChartsTheme | null {\n  if (!themeName) return null;\n\n  const cdnTheme = cdnThemeRegistry[themeName];\n  if (cdnTheme) {\n    return convertCdnToEChartsTheme(cdnTheme.config);\n  }\n\n  return null;\n}\n\n/**\n * 获取默认主题配置\n * 用于 YUNTOO_THEME 初始化时获取默认色板\n */\nexport function getDefaultTheme(): EChartsTheme {\n  const defaultCdnTheme = cdnThemeRegistry[\"default\"];\n  if (defaultCdnTheme) {\n    return convertCdnToEChartsTheme(defaultCdnTheme.config);\n  }\n\n  // 内置 fallback（极端情况：CDN 配置文件被误删）\n  return {\n    color: [\n      \"#355bd5\",\n      \"#79c8f9\",\n      \"#626c91\",\n      \"#a0a7e6\",\n      \"#0aceac\",\n      \"#258e4f\",\n      \"#e98c4a\",\n      \"#a12d9c\",\n      \"#f08e9b\",\n      \"#717498\",\n    ],\n    backgroundColor: \"#F5F7FA\",\n    textStyle: { color: \"#333333\" },\n  };\n}\n\n/**\n * 检查主题是否存在\n * @param themeName 主题名称\n * @returns 是否存在\n */\nexport function isValidTheme(themeName: string): themeName is ThemeName {\n  return themeName in cdnThemeRegistry;\n}\n\n/**\n * 获取所有可用的主题名称列表\n * @returns 主题名称数组\n */\nexport function getAvailableThemes(): ThemeName[] {\n  return Object.keys(cdnThemeRegistry) as ThemeName[];\n}\n","/**\n * 🎨 云兔统一图表主题配置 - 布局约束层 (Layout Layer)\n *\n * 📋 职责：\n * 1. 统一布局约束（grid、position、gap）\n * 2. 组件行为配置（tooltip trigger、label formatter）\n * 3. 图表类型特定约束（pie radius、bar width、line symbol）\n *\n * 🎯 设计原则：\n * 1. 纯布局配置 - 不包含任何硬编码颜色\n * 2. 颜色动态注入 - 所有颜色从 applyYuntooTheme 时动态获取\n * 3. CDN 优先 - 颜色配置来源于 cdn-theme-config.ts\n * 4. 配置优先级 - 用户配置(AI/人工) > 主题配置 > 默认配置\n *\n * 🏗️ 配置结构：\n *   YUNTOO_THEME = {\n *     tooltip: {},            // 提示框配置（按图表类型）\n *     legend: {},             // 图例配置（布局）\n *     axisName: {},           // 坐标轴标题配置（布局）\n *     layoutConstraints: {    // 布局约束\n *       pie: {},              // 饼图约束（半径、标签）\n *       bar: {},              // 柱状图约束（宽度、间距）\n *       line: {},             // 折线图约束（线条、符号）\n *       grid: {},             // 网格布局\n *       xAxis: {},            // X轴配置（布局）\n *       yAxis: {}             // Y轴配置（布局）\n *     }\n *   }\n *\n * ⚠️ 注意：\n * - 此文件不包含任何颜色值，颜色由 CDN 配置提供\n * - applyYuntooTheme 函数负责将 CDN 颜色动态注入\n */\n\nimport merge from \"lodash/merge\";\nimport { getTheme, getDefaultTheme, type ThemeName } from \"./theme-registry\";\n\n// 🎨 云兔统一主题配置（纯布局，无颜色）\nexport const YUNTOO_THEME = {\n  // 统一标题样式（布局部分）\n  title: {\n    textStyle: {\n      fontSize: 16,\n      fontWeight: \"bold\",\n      // 🎯 color 由主题动态注入\n    },\n    left: \"center\",\n    top: 20,\n    padding: [0, 0, 10, 0],\n  },\n\n  // 统一文本样式（布局部分）\n  textStyle: {\n    fontSize: 12,\n    // 🎯 color 由主题动态注入\n  },\n\n  // 🎯 Tooltip配置 - 按图表类型组织（布局和行为）\n  tooltip: {\n    // 通用tooltip样式\n    common: {\n      backgroundColor: \"rgba(255, 255, 255, 0.95)\",\n      borderWidth: 1,\n      padding: [8, 12],\n      textStyle: {\n        fontSize: 12,\n        // 🎯 color 由主题动态注入\n      },\n      confine: true,\n      transitionDuration: 0.2,\n      // 🎯 borderColor 由主题动态注入\n    },\n    // 图表类型特定配置\n    byChartType: {\n      bar: {\n        trigger: \"axis\" as const,\n        axisPointer: {\n          type: \"shadow\" as const,\n          shadowStyle: {\n            color: \"rgba(150, 150, 150, 0.15)\",\n            opacity: 1,\n          },\n        },\n      },\n      pie: {\n        trigger: \"item\" as const,\n        axisPointer: undefined,\n      },\n      line: {\n        trigger: \"axis\" as const,\n        axisPointer: {\n          type: \"line\" as const,\n          lineStyle: {\n            width: 1,\n            type: \"dashed\" as const,\n            // 🎯 color 由主题动态注入\n          },\n        },\n      },\n      gauge: {\n        trigger: \"item\" as const,\n        axisPointer: undefined,\n      },\n      funnel: {\n        trigger: \"item\" as const,\n        axisPointer: undefined,\n      },\n      radar: {\n        trigger: \"item\" as const,\n        axisPointer: undefined,\n      },\n      default: {\n        trigger: \"axis\" as const,\n        axisPointer: {\n          type: \"none\" as const,\n        },\n      },\n    },\n  },\n\n  // 统一legend样式（布局部分）\n  legend: {\n    show: true,\n    bottom: \"10%\",\n    left: \"center\",\n    type: \"scroll\",\n    icon: \"circle\",\n    textStyle: {\n      fontSize: 12,\n      // 🎯 color 由主题动态注入\n    },\n    itemGap: 12,\n    itemWidth: 12,\n    itemHeight: 12,\n    pageButtonItemGap: 5,\n    pageButtonGap: 20,\n    animation: true,\n    animationDurationUpdate: 300,\n    selector: false,\n  },\n\n  // 统一坐标轴别名配置（纯布局）\n  axisName: {\n    xAxis: {\n      show: true,\n      nameLocation: \"middle\",\n      nameGap: 30,\n      nameTextStyle: {\n        fontSize: 12,\n        fontWeight: \"normal\",\n        // 🎯 color 由主题动态注入\n      },\n    },\n    yAxis: {\n      show: true,\n      nameLocation: \"middle\",\n      nameGap: 50,\n      nameRotate: 90,\n      nameTextStyle: {\n        fontSize: 12,\n        fontWeight: \"normal\",\n        align: \"center\",\n        // 🎯 color 由主题动态注入\n      },\n    },\n  },\n\n  // 🎯 布局约束配置 - 保证视觉一致性（纯布局，无颜色）\n  layoutConstraints: {\n    pie: {\n      radius: [\"35%\", \"55%\"],\n      ringRadius: [\"40%\", \"70%\"],\n      center: [\"50%\", \"50%\"],\n      label: {\n        show: true,\n        position: \"outside\",\n        fontSize: 12,\n        alignTo: \"edge\",\n        edgeDistance: \"10%\",\n        distanceToLabelLine: 5,\n        overflow: \"truncate\",\n        ellipsis: \"...\",\n        formatter: \"{b}: {d}%\",\n      },\n      labelLine: {\n        show: true,\n        length: 10,\n        length2: 20,\n        smooth: 0.2,\n        minTurnAngle: 90,\n      },\n      labelLayout: {\n        hideOverlap: true,\n        moveOverlap: \"shiftY\",\n      },\n      emphasis: {\n        label: {\n          show: true,\n          fontSize: 14,\n          fontWeight: \"bold\",\n        },\n        itemStyle: {\n          shadowBlur: 10,\n          shadowOffsetX: 0,\n          shadowColor: \"rgba(0, 0, 0, 0.5)\",\n        },\n      },\n    },\n    bar: {\n      barMaxWidth: 40,\n      barMinWidth: 10,\n      barGap: \"50%\",\n      barCategoryGap: \"40%\",\n      itemStyle: {\n        borderRadius: 0,\n        shadowBlur: 0,\n        shadowColor: \"transparent\",\n      },\n      label: {\n        show: false, // 默认不显示标签，避免多序列/堆叠图表时视觉干扰\n        position: \"inside\",\n        fontSize: 11,\n        color: \"#ffffff\",\n        fontWeight: \"bold\",\n        formatter: \"{c}\",\n        textShadowColor: \"rgba(0, 0, 0, 0.5)\",\n        textShadowBlur: 3,\n        textShadowOffsetX: 0,\n        textShadowOffsetY: 1,\n      },\n      labelLayout: {\n        hideOverlap: true,\n      },\n    },\n    line: {\n      smooth: true,\n      symbol: \"circle\",\n      symbolSize: 6,\n      showSymbol: true,\n      lineStyle: {\n        width: 2,\n      },\n      itemStyle: {\n        color: \"#fff\",\n        borderWidth: 2,\n        // 🎯 borderColor 由主题动态注入\n      },\n      areaStyle: {\n        opacity: 0.8,\n      },\n      markPoint: {\n        data: [\n          { type: \"max\", name: \"最大值\" },\n          { type: \"min\", name: \"最小值\" },\n        ],\n        symbol: \"pin\",\n        symbolSize: 50,\n        itemStyle: {\n          shadowColor: \"rgba(0, 0, 0, 0.1)\",\n          shadowBlur: 5,\n        },\n        label: {\n          formatter: \"{c}\",\n          fontSize: 11,\n          fontWeight: \"bold\",\n          textShadowColor: \"rgba(255, 255, 255, 0.8)\",\n          textShadowBlur: 3,\n          textShadowOffsetX: 0,\n          textShadowOffsetY: 1,\n        },\n      },\n    },\n    // 🆕 仪表盘布局约束\n    gauge: {\n      radius: \"75%\",\n      center: [\"50%\", \"60%\"],\n      startAngle: 225,\n      endAngle: -45,\n      min: 0,\n      max: 100,\n      splitNumber: 10,\n      axisLine: {\n        lineStyle: {\n          width: 15,\n          // 🎯 color 由主题动态注入\n        },\n      },\n      pointer: {\n        width: 5,\n        length: \"60%\",\n        itemStyle: {\n          // 🎯 color 由主题动态注入\n        },\n      },\n      axisTick: {\n        distance: -15,\n        length: 8,\n        lineStyle: {\n          width: 2,\n          // 🎯 color 由主题动态注入\n        },\n      },\n      splitLine: {\n        distance: -15,\n        length: 15,\n        lineStyle: {\n          width: 3,\n          // 🎯 color 由主题动态注入\n        },\n      },\n      axisLabel: {\n        distance: 25,\n        fontSize: 12,\n        // 🎯 color 由主题动态注入\n      },\n      detail: {\n        fontSize: 24,\n        fontWeight: \"bold\",\n        formatter: \"{value}%\",\n        offsetCenter: [0, \"70%\"],\n        // 🎯 color 由主题动态注入\n      },\n      title: {\n        fontSize: 14,\n        offsetCenter: [0, \"90%\"],\n        // 🎯 color 由主题动态注入\n      },\n    },\n    // 🆕 漏斗图布局约束\n    funnel: {\n      left: \"10%\",\n      top: 60,\n      bottom: 60,\n      width: \"80%\",\n      min: 0,\n      max: 100,\n      minSize: \"0%\",\n      maxSize: \"100%\",\n      sort: \"descending\" as const,\n      gap: 2,\n      label: {\n        show: true,\n        position: \"inside\",\n        fontSize: 12,\n        fontWeight: \"bold\",\n        formatter: \"{b}: {c}\",\n        // 🎯 color 由主题动态注入\n      },\n      labelLine: {\n        length: 10,\n        lineStyle: {\n          width: 1,\n          type: \"solid\" as const,\n        },\n      },\n      itemStyle: {\n        borderWidth: 0,\n        // 🎯 borderColor, color 由主题动态注入\n      },\n      emphasis: {\n        label: {\n          fontSize: 14,\n          fontWeight: \"bold\",\n        },\n      },\n    },\n    // 🆕 雷达图布局约束\n    radar: {\n      center: [\"50%\", \"55%\"],\n      radius: \"65%\",\n      startAngle: 90,\n      splitNumber: 4,\n      shape: \"polygon\" as const,\n      axisName: {\n        fontSize: 12,\n        // 🎯 color 由主题动态注入\n      },\n      splitArea: {\n        show: true,\n        areaStyle: {\n          opacity: 0.1,\n          // 🎯 color 由主题动态注入\n        },\n      },\n      splitLine: {\n        lineStyle: {\n          // 🎯 color 由主题动态注入\n        },\n      },\n      axisLine: {\n        lineStyle: {\n          // 🎯 color 由主题动态注入\n        },\n      },\n    },\n    grid: {\n      left: \"15%\",\n      right: \"10%\",\n      bottom: \"18%\",\n      top: 70,\n      containLabel: true,\n      borderWidth: 0,\n      backgroundColor: \"transparent\",\n      // 🎯 borderColor 由主题动态注入\n    },\n    xAxis: {\n      axisLabel: {\n        rotate: 0,\n        interval: \"auto\",\n        overflow: \"truncate\",\n        ellipsis: \"...\",\n        hideOverlap: true,\n        fontSize: 12,\n        // 🎯 color 由主题动态注入\n      },\n      axisTick: {\n        alignWithLabel: true,\n        show: true,\n        length: 5,\n      },\n      axisLine: {\n        show: true,\n        lineStyle: {\n          // 🎯 color 由主题动态注入\n        },\n      },\n    },\n    yAxis: {\n      axisLabel: {\n        overflow: \"truncate\",\n        hideOverlap: true,\n        margin: 8,\n        fontSize: 12,\n        // 🎯 color 由主题动态注入\n      },\n      axisTick: {\n        show: false,\n      },\n      axisLine: {\n        show: false,\n      },\n      splitLine: {\n        show: true,\n        lineStyle: {\n          type: \"solid\",\n          // 🎯 color 由主题动态注入\n        },\n      },\n    },\n  },\n} as const;\n\n/**\n * 🎨 应用云兔统一主题到ECharts配置\n * @param option ECharts配置对象\n * @param chartType 图表类型\n * @param themeName 可选的主题名称，用于应用预设主题配色\n */\nexport const applyYuntooTheme = (\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  option: any,\n  chartType: string,\n  themeName?: ThemeName,\n) => {\n  // 🎨 获取主题配置（优先使用指定主题，否则使用默认主题）\n  const customTheme = themeName ? getTheme(themeName) : null;\n  const defaultTheme = getDefaultTheme();\n\n  // 🎯 从主题获取颜色配置\n  const colorPalette = customTheme?.color || defaultTheme.color;\n  const themeTextColor =\n    customTheme?.textStyle?.color || defaultTheme.textStyle?.color || \"#333333\";\n  const themeBackgroundColor =\n    customTheme?.backgroundColor || defaultTheme.backgroundColor || \"#F5F7FA\";\n  const themeBorderColor =\n    customTheme?.categoryAxis?.axisLine?.lineStyle?.color || \"#e6e6e6\";\n  const themeSplitLineColor =\n    customTheme?.valueAxis?.splitLine?.lineStyle?.color || \"#eeeeee\";\n\n  // 🎨 主色调应用 - 只在用户未配置时应用\n  if (!option.color) {\n    option.color = colorPalette;\n  }\n\n  // 🎨 背景色应用\n  if (!option.backgroundColor) {\n    if (\n      themeBackgroundColor &&\n      themeBackgroundColor !== \"rgba(0,0,0,0)\" &&\n      themeBackgroundColor !== \"transparent\"\n    ) {\n      option.backgroundColor = themeBackgroundColor;\n    }\n  }\n\n  // 🎨 标题样式应用\n  if (option.title) {\n    const titleConfig = merge({}, YUNTOO_THEME.title, option.title);\n    // 动态注入颜色\n    if (!option.title?.textStyle?.color) {\n      titleConfig.textStyle = {\n        ...titleConfig.textStyle,\n        color: customTheme?.title?.textStyle?.color || themeTextColor,\n      };\n    }\n    option.title = titleConfig;\n  }\n\n  // 🎨 提示框样式应用\n  if (!option.tooltip) {\n    option.tooltip = {};\n  }\n\n  const { common, byChartType } = YUNTOO_THEME.tooltip;\n  const userTooltip = { ...option.tooltip };\n  option.tooltip = {\n    ...common,\n    borderColor: themeBorderColor,\n    textStyle: {\n      ...common.textStyle,\n      color: themeTextColor,\n    },\n    ...userTooltip,\n  };\n\n  // 根据图表类型应用特定配置\n  let tooltipConfig: (typeof byChartType)[keyof typeof byChartType];\n  switch (chartType) {\n    case \"pie\":\n    case \"pie-doughnut\":\n    case \"pie-rose\":\n      tooltipConfig = byChartType.pie;\n      break;\n    case \"bar\":\n    case \"bar-stack\":\n    case \"bar-group\":\n    case \"bar-horizontal\":\n      tooltipConfig = byChartType.bar;\n      break;\n    case \"line\":\n    case \"line-area\":\n    case \"line-stack\":\n    case \"line-smooth\":\n      tooltipConfig = byChartType.line;\n      break;\n    default:\n      tooltipConfig = byChartType.default;\n      break;\n  }\n\n  if (!option.tooltip.trigger) {\n    option.tooltip.trigger = tooltipConfig.trigger;\n  }\n  option.tooltip.axisPointer = {\n    ...tooltipConfig.axisPointer,\n    ...(option.tooltip.axisPointer || {}),\n  };\n\n  // 🎨 坐标轴样式应用\n  [\"xAxis\", \"yAxis\"].forEach((axis) => {\n    if (option[axis]) {\n      const axisNameConfig =\n        YUNTOO_THEME.axisName[axis as keyof typeof YUNTOO_THEME.axisName];\n\n      if (axisNameConfig) {\n        // 处理数组情况（双Y轴）\n        if (Array.isArray(option[axis])) {\n          option[axis] = option[axis].map((axisItem: any) => {\n            const mergedAxisConfig = merge({}, axisNameConfig, axisItem);\n            // 动态注入颜色\n            if (mergedAxisConfig.axisLabel && !axisItem?.axisLabel?.color) {\n              mergedAxisConfig.axisLabel.color =\n                customTheme?.categoryAxis?.axisLabel?.color || themeTextColor;\n            }\n            if (\n              mergedAxisConfig.nameTextStyle &&\n              !axisItem?.nameTextStyle?.color\n            ) {\n              mergedAxisConfig.nameTextStyle.color =\n                customTheme?.categoryAxis?.axisLabel?.color || themeTextColor;\n            }\n            return mergedAxisConfig;\n          });\n        } else {\n          const mergedAxisConfig = merge({}, axisNameConfig, option[axis]);\n          // 动态注入颜色\n          if (mergedAxisConfig.axisLabel && !option[axis]?.axisLabel?.color) {\n            mergedAxisConfig.axisLabel.color =\n              customTheme?.categoryAxis?.axisLabel?.color || themeTextColor;\n          }\n          if (\n            mergedAxisConfig.nameTextStyle &&\n            !option[axis]?.nameTextStyle?.color\n          ) {\n            mergedAxisConfig.nameTextStyle.color =\n              customTheme?.categoryAxis?.axisLabel?.color || themeTextColor;\n          }\n          option[axis] = mergedAxisConfig;\n        }\n      }\n    }\n  });\n\n  // 🎨 图例样式应用\n  if (option.legend) {\n    const legendConfig = merge({}, YUNTOO_THEME.legend, option.legend);\n    if (!option.legend?.textStyle?.color) {\n      legendConfig.textStyle = {\n        ...legendConfig.textStyle,\n        color: customTheme?.legend?.textStyle?.color || themeTextColor,\n      };\n    }\n    option.legend = legendConfig;\n  }\n\n  // 🎯 应用布局约束\n  const constraints = YUNTOO_THEME.layoutConstraints;\n\n  switch (chartType) {\n    case \"pie\":\n    case \"pie-doughnut\":\n    case \"pie-rose\":\n      if (!option.legend || option.legend.show !== false) {\n        const pieDefaultLegend = {\n          ...YUNTOO_THEME.legend,\n          orient: \"horizontal\",\n          bottom: \"5%\",\n          left: \"center\",\n          top: undefined,\n          right: undefined,\n          textStyle: {\n            ...YUNTOO_THEME.legend.textStyle,\n            color: customTheme?.legend?.textStyle?.color || themeTextColor,\n          },\n        };\n        option.legend = merge({}, pieDefaultLegend, option.legend || {});\n      }\n\n      if (option.series?.[0]) {\n        const userSeries = option.series[0];\n        option.series[0] = merge(\n          {},\n          {\n            radius: constraints.pie.radius,\n            center: constraints.pie.center,\n            label: constraints.pie.label,\n            labelLine: constraints.pie.labelLine,\n            labelLayout: constraints.pie.labelLayout,\n            emphasis: constraints.pie.emphasis,\n          },\n          userSeries,\n        );\n      }\n      break;\n\n    case \"bar\":\n    case \"bar-horizontal\":\n      if (option.series && Array.isArray(option.series)) {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        option.series = option.series.map((userSeries: any) =>\n          merge({}, constraints.bar, userSeries),\n        );\n      }\n\n      option.grid = merge(\n        {},\n        constraints.grid,\n        { borderColor: themeBorderColor },\n        option.grid || {},\n      );\n\n      if (option.xAxis) {\n        option.xAxis = merge(\n          {},\n          constraints.xAxis,\n          {\n            axisLine: { lineStyle: { color: themeBorderColor } },\n            axisLabel: { color: themeTextColor },\n          },\n          option.xAxis,\n        );\n      }\n\n      if (option.yAxis) {\n        if (Array.isArray(option.yAxis)) {\n          // 双Y轴：逐个元素合并\n          option.yAxis = option.yAxis.map((axis: any) =>\n            merge(\n              {},\n              constraints.yAxis,\n              {\n                splitLine: { lineStyle: { color: themeSplitLineColor } },\n                axisLabel: { color: themeTextColor },\n              },\n              axis,\n            ),\n          );\n        } else {\n          // 单Y轴：直接合并\n          option.yAxis = merge(\n            {},\n            constraints.yAxis,\n            {\n              splitLine: { lineStyle: { color: themeSplitLineColor } },\n              axisLabel: { color: themeTextColor },\n            },\n            option.yAxis,\n          );\n        }\n      }\n      break;\n\n    case \"line\":\n    case \"line-area\":\n    case \"line-stack\":\n    case \"line-smooth\":\n      if (option.series && Array.isArray(option.series)) {\n        const hexToRgba = (hex: string, alpha: number) => {\n          const r = parseInt(hex.slice(1, 3), 16);\n          const g = parseInt(hex.slice(3, 5), 16);\n          const b = parseInt(hex.slice(5, 7), 16);\n          return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n        };\n\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        option.series = option.series.map(\n          (userSeries: any, seriesIndex: number) => {\n            const baseColor = colorPalette[seriesIndex % colorPalette.length];\n\n            const gradientAreaStyle = {\n              color: {\n                type: \"linear\",\n                x: 0,\n                y: 0,\n                x2: 0,\n                y2: 1,\n                colorStops: [\n                  { offset: 0, color: hexToRgba(baseColor, 0.3) },\n                  { offset: 1, color: hexToRgba(baseColor, 0.05) },\n                ],\n              },\n            };\n\n            return merge(\n              {},\n              {\n                smooth: constraints.line.smooth,\n                symbol: constraints.line.symbol,\n                symbolSize: constraints.line.symbolSize,\n                showSymbol: constraints.line.showSymbol,\n                lineStyle: {\n                  ...constraints.line.lineStyle,\n                  color: baseColor,\n                },\n                itemStyle: {\n                  ...constraints.line.itemStyle,\n                  borderColor: userSeries.lineStyle?.color || baseColor,\n                },\n                markPoint: constraints.line.markPoint,\n                areaStyle: gradientAreaStyle,\n              },\n              userSeries,\n            );\n          },\n        );\n      }\n\n      option.grid = merge(\n        {},\n        constraints.grid,\n        { borderColor: themeBorderColor },\n        option.grid || {},\n      );\n\n      if (option.xAxis) {\n        option.xAxis = merge(\n          {},\n          constraints.xAxis,\n          {\n            axisLine: { lineStyle: { color: themeBorderColor } },\n            axisLabel: { color: themeTextColor },\n          },\n          option.xAxis,\n        );\n      }\n\n      if (option.yAxis) {\n        if (Array.isArray(option.yAxis)) {\n          // 双Y轴：逐个元素合并\n          option.yAxis = option.yAxis.map((axis: any) =>\n            merge(\n              {},\n              constraints.yAxis,\n              {\n                splitLine: { lineStyle: { color: themeSplitLineColor } },\n                axisLabel: { color: themeTextColor },\n              },\n              axis,\n            ),\n          );\n        } else {\n          // 单Y轴：直接合并\n          option.yAxis = merge(\n            {},\n            constraints.yAxis,\n            {\n              splitLine: { lineStyle: { color: themeSplitLineColor } },\n              axisLabel: { color: themeTextColor },\n            },\n            option.yAxis,\n          );\n        }\n      }\n      break;\n  }\n\n  // 🎯 统一应用 grid 配置到所有带坐标轴的图表\n  if (option.xAxis || option.yAxis) {\n    option.grid = merge(\n      {},\n      constraints.grid,\n      { borderColor: themeBorderColor },\n      option.grid || {},\n    );\n\n    if (option.xAxis?.axisLabel && !option.xAxis.axisLabel.color) {\n      option.xAxis.axisLabel.color = themeTextColor;\n    }\n    if (\n      option.xAxis?.axisLine?.lineStyle &&\n      !option.xAxis.axisLine.lineStyle.color\n    ) {\n      option.xAxis.axisLine.lineStyle.color = themeBorderColor;\n    }\n    // 处理 yAxis 颜色注入（兼容双Y轴数组）\n    if (option.yAxis) {\n      if (Array.isArray(option.yAxis)) {\n        // 双Y轴：逐个设置颜色\n        option.yAxis.forEach((axis: any) => {\n          if (axis?.axisLabel && !axis.axisLabel.color) {\n            axis.axisLabel.color = themeTextColor;\n          }\n          if (axis?.splitLine?.lineStyle && !axis.splitLine.lineStyle.color) {\n            axis.splitLine.lineStyle.color = themeSplitLineColor;\n          }\n        });\n      } else {\n        // 单Y轴：直接设置\n        if (option.yAxis?.axisLabel && !option.yAxis.axisLabel.color) {\n          option.yAxis.axisLabel.color = themeTextColor;\n        }\n        if (\n          option.yAxis?.splitLine?.lineStyle &&\n          !option.yAxis.splitLine.lineStyle.color\n        ) {\n          option.yAxis.splitLine.lineStyle.color = themeSplitLineColor;\n        }\n      }\n    }\n  }\n};\n\n/**\n * 🎨 获取统计组件的主题色（带透明度）\n * @param index 卡片索引（0-based）\n * @param themeName 可选的主题名称，用于应用预设主题配色\n * @returns rgba格式的颜色字符串\n */\nexport const getStatisticThemeColor = (\n  index: number = 0,\n  themeName?: ThemeName,\n): string => {\n  const customTheme = themeName ? getTheme(themeName) : null;\n  const defaultTheme = getDefaultTheme();\n  const colorPalette = customTheme?.color || defaultTheme.color;\n  const baseColor = colorPalette[index % colorPalette.length];\n\n  const hexToRgba = (hex: string) => {\n    const r = parseInt(hex.slice(1, 3), 16);\n    const g = parseInt(hex.slice(3, 5), 16);\n    const b = parseInt(hex.slice(5, 7), 16);\n    return `rgba(${r}, ${g}, ${b}, 0.3)`;\n  };\n\n  return hexToRgba(baseColor);\n};\n","/**\n * 💼 业务逻辑执行器 - 业务逻辑层 (Business Logic)\n *\n * 📋 三层架构中的职责：\n * 1. 执行AI生成的动态格式化函数（formatter）\n * 2. 执行AI生成的动态样式函数（styleFunction）\n * 3. 提供安全的函数执行环境（缓存、错误处理）\n *\n * 🎯 设计原则：\n * 1. 纯业务规则执行 - 不涉及数据结构转换\n * 2. 安全执行 - 异常捕获和降级处理\n * 3. 性能优化 - 函数缓存机制\n * 4. 兼容性 - 与 Ant Design Table render 函数保持一致\n *\n * 🏗️ 函数签名：\n *   formatter: (value, record, index) => string\n *   styleFunction: (value, record, index) => StyleObject\n *\n * ⚠️ 注意：\n * - 动态样式函数返回的是 data级别的itemStyle\n * - data级别的itemStyle优先级高于series级别（主题层）\n * - 用于实现业务规则，如\"金额>10000显示红色\"\n */\n\nimport type { StyleObject } from \"../types\";\n\n/**\n * 🛡️ 安全的箭头函数执行器\n * 与 Ant Design Table 的 render 函数保持一致\n * 支持三个参数：(value, record, index)\n */\nexport class BusinessExecutor {\n  private functionCache: { [key: string]: Function } = {};\n\n  /**\n   * 执行样式函数\n   */\n  executeStyleFunction(\n    funcStr: string,\n    value: any,\n    record?: any,\n    index?: number,\n  ): StyleObject {\n    try {\n      const func = this.parseAndCacheFunction(funcStr);\n      const safeValue = value !== undefined ? value : null;\n      const safeRecord = record !== undefined ? record : {};\n      const safeIndex = index !== undefined ? index : 0;\n      const result = func(safeValue, safeRecord, safeIndex);\n      return this.validateStyleObject(result);\n    } catch (error) {\n      console.warn(\"StyleFunction execution failed:\", error);\n      return {};\n    }\n  }\n\n  /**\n   * 执行格式化函数\n   */\n  executeFormatter(\n    funcStr: string,\n    value: any,\n    record?: any,\n    index?: number,\n  ): string {\n    try {\n      const func = this.parseAndCacheFunction(funcStr);\n      const safeValue = value !== undefined ? value : null;\n      const safeRecord = record !== undefined ? record : {};\n      const safeIndex = index !== undefined ? index : 0;\n      const result = func(safeValue, safeRecord, safeIndex);\n      return typeof result === \"string\" ? result : String(result);\n    } catch (error) {\n      console.warn(\"Formatter execution failed:\", error);\n      return String(value !== undefined ? value : \"\");\n    }\n  }\n\n  /**\n   * 将 formatter 字符串转换为函数对象\n   * 用于 ECharts option 中的 formatter 配置\n   */\n  convertFormatterStringToFunction(funcStr: string): Function {\n    return this.parseAndCacheFunction(funcStr);\n  }\n\n  /**\n   * 解析并缓存函数\n   */\n  private parseAndCacheFunction(funcStr: string): Function {\n    if (this.functionCache[funcStr]) {\n      return this.functionCache[funcStr];\n    }\n\n    const cleaned = funcStr.trim();\n    if (!cleaned.includes(\"=>\")) {\n      throw new Error(\"Not a valid arrow function\");\n    }\n\n    const safeGlobals = {\n      Math,\n      parseFloat,\n      parseInt,\n      Number,\n      String,\n      Boolean,\n      Date,\n      JSON,\n      // 禁用危险方法\n      eval: undefined,\n      Function: undefined,\n      window: undefined,\n      global: undefined,\n      process: undefined,\n      require: undefined,\n    };\n\n    try {\n      const funcCreator = new Function(\n        ...Object.keys(safeGlobals),\n        `return (${cleaned})`,\n      );\n      const func = funcCreator.apply(null, Object.values(safeGlobals));\n      this.functionCache[funcStr] = func;\n      return func;\n    } catch (error: any) {\n      throw new Error(`Invalid arrow function syntax: ${error.message}`);\n    }\n  }\n\n  /**\n   * 验证样式对象\n   */\n  private validateStyleObject(obj: any): StyleObject {\n    if (typeof obj !== \"object\" || obj === null) return {};\n\n    const allowedProps = [\n      \"color\",\n      \"backgroundColor\",\n      \"fontWeight\",\n      \"fontSize\",\n      \"fontStyle\",\n      \"textDecoration\",\n      \"borderColor\",\n      \"borderWidth\",\n    ];\n\n    const validated: StyleObject = {};\n    for (const prop of allowedProps) {\n      if (obj[prop] !== undefined) {\n        validated[prop as keyof StyleObject] = obj[prop];\n      }\n    }\n\n    return validated;\n  }\n\n  /**\n   * 清空缓存\n   */\n  clearCache(): void {\n    this.functionCache = {};\n  }\n}\n\n// 全局实例\nexport const businessExecutor = new BusinessExecutor();\n","/**\n * ⚙️ 数据处理器 - 核心处理逻辑\n *\n * 📋 职责：\n * 1. 数据映射和填充（dimension、metrics）\n * 2. 调用业务层执行动态函数（formatter、styleFunction）\n * 3. 调用主题层应用统一样式\n *\n * 🎯 处理流程：\n * tableData 数组 → 数据映射 → 业务层处理 → 主题层样式 → 最终Option\n *\n * ⚠️ 注意：\n * - 直接接收 API 返回的 tableData 数组，无格式转换\n * - 不包含任何硬编码的样式配置\n * - 配置优先级: 用户配置(AI/人工) > 默认主题配置\n */\n\nimport { applyYuntooTheme } from \"../theme/chart-theme-config\";\nimport { businessExecutor } from \"../executor/business-executor\";\nimport type {\n  DisplayCardConfig,\n  StatisticRuntimeProps,\n  EChartsRuntimeProps,\n  EChartsDataMapping,\n  MetricSeriesType,\n} from \"../types\";\n\n/**\n * Y轴位置类型\n */\ntype AxisPosition = \"left\" | \"right\";\n\n/**\n * 处理后的指标数据结构\n */\ninterface ProcessedMetric {\n  field: string;\n  name: string;\n  alias?: string;\n  type?: MetricSeriesType; // 指标级别的图表类型\n  stack?: string; // 指标级别的堆叠分组\n  axis?: AxisPosition; // Y轴位置（双Y轴场景）\n  smooth?: boolean; // 平滑曲线（仅 line 类型有效）\n  area?: boolean; // 面积图（仅 line 类型有效）\n  processedData: {\n    value: number;\n    formattedValue: string;\n    style: Record<string, any>;\n  }[];\n}\n\nexport class ChartDataProcessor {\n  /**\n   * 🚀 处理统计数字配置\n   */\n  static processStatisticConfig(\n    chartCard: DisplayCardConfig,\n    data: any[],\n  ): StatisticRuntimeProps | null {\n    if (!data.length) {\n      console.warn(\"数据为空，无法渲染统计:\", chartCard.title);\n      return null;\n    }\n\n    const { statistic_config } = chartCard;\n\n    if (!statistic_config) {\n      console.error(\"statistic_config 配置缺失:\", chartCard.title);\n      return null;\n    }\n\n    const { value: valueField, valueStyle, ...restConfig } = statistic_config;\n\n    if (!valueField) {\n      console.error(\"statistic_config.value 字段配置缺失:\", chartCard.title);\n      return null;\n    }\n\n    const dataValue = data[0]?.[valueField];\n\n    const finalValueStyle = {\n      ...valueStyle,\n    };\n\n    return {\n      ...restConfig,\n      valueStyle: finalValueStyle,\n      value: dataValue !== undefined ? dataValue : 0,\n      // formatter 保持原样（字符串），由 Ant Design Statistic 组件执行\n    };\n  }\n\n  /**\n   * 🚀 处理ECharts配置\n   */\n  static processEChartsConfig(\n    chartCard: DisplayCardConfig,\n    data: any[],\n    errorMsg?: string,\n    errorCode?: string,\n  ): EChartsRuntimeProps | null {\n    if (chartCard.display_type !== \"echarts\") {\n      console.log(\"跳过非图表类型:\", chartCard.title, chartCard.display_type);\n      return null;\n    }\n\n    const { echarts_config } = chartCard;\n\n    if (!echarts_config) {\n      console.error(\"echarts_config 配置缺失:\", chartCard.title);\n      return null;\n    }\n\n    const { chartType, option, dataMapping } = echarts_config;\n\n    if (!chartType || !option || !dataMapping) {\n      console.error(\n        \"chartType、option 或 dataMapping 配置缺失:\",\n        chartCard.title,\n      );\n      return null;\n    }\n\n    // 🆕 数据为空或有错误时，也调用相同的映射逻辑，显示完整框架\n    // 这样可以显示从 dataMapping 获取的坐标轴名称\n    return this.processEChartsDataMapping(\n      chartCard,\n      data,\n      dataMapping,\n      errorMsg,\n      errorCode,\n    );\n  }\n\n  /**\n   * 📊 处理 ECharts 数据映射\n   */\n  private static processEChartsDataMapping(\n    chartCard: DisplayCardConfig,\n    data: any[],\n    dataMapping: EChartsDataMapping,\n    errorMsg?: string,\n    errorCode?: string,\n  ): EChartsRuntimeProps | null {\n    const { echarts_config } = chartCard;\n    if (!echarts_config) return null;\n\n    const { chartType, option, theme } = echarts_config;\n\n    // 获取维度字段名和别名（单值图表如 gauge 可能没有 dimension）\n    const dimensionField = dataMapping.dimension?.field;\n    const dimensionAlias = dataMapping.dimension?.alias;\n\n    // 🎯 步骤1：深拷贝用户配置（AI生成/人工调整）\n    const processedOption = JSON.parse(JSON.stringify(option));\n\n    // 🎯 步骤2：数据映射和填充（先构建完整的数据结构）\n    // 注意：主题应用推迟到数据填充后，确保处理的是完整配置\n\n    // 动态填充维度数据（单值图表如 gauge 无 dimension，返回空数组）\n    const dimensionValues = dimensionField\n      ? data.map((item) => String(item[dimensionField] || \"\"))\n      : [];\n\n    // 处理每个 metric 并执行箭头函数\n    const processedMetrics = dataMapping.metrics.map((metric) => {\n      const processedData = data.map((item, index) => {\n        const value = item[metric.field];\n\n        return {\n          value: Number(value) || 0,\n          // 🎯 业务层：执行动态格式化函数（AI生成的业务规则）\n          formattedValue: metric.formatter\n            ? businessExecutor.executeFormatter(\n                metric.formatter,\n                value,\n                item,\n                index,\n              )\n            : String(value),\n          // 🎯 业务层：执行动态样式函数（AI生成的业务规则）\n          // 注意：这个 style 会被包装到 data[i].itemStyle 中\n          // data级别的itemStyle优先级 > series级别的itemStyle（主题层管理）\n          style: metric.styleFunction\n            ? businessExecutor.executeStyleFunction(\n                metric.styleFunction,\n                value,\n                item,\n                index,\n              )\n            : {},\n        };\n      });\n\n      return {\n        field: metric.field,\n        name: metric.alias || metric.field,\n        alias: metric.alias,\n        type: metric.type, // 保留指标级别的图表类型\n        stack: metric.stack, // 保留指标级别的堆叠分组\n        axis: metric.axis, // 保留Y轴位置（双Y轴场景）\n        smooth: metric.smooth, // 保留平滑曲线配置\n        area: metric.area, // 保留面积图配置\n        processedData,\n      };\n    });\n\n    // 🆕 双Y轴自动配置逻辑\n    const hasRightAxis = processedMetrics.some((m) => m.axis === \"right\");\n    const userConfiguredYAxisArray = Array.isArray(processedOption.yAxis);\n\n    // 如果有指标使用右轴，且用户没有手动配置 yAxis 数组，则自动生成\n    if (hasRightAxis && !userConfiguredYAxisArray) {\n      const leftMetrics = processedMetrics.filter((m) => m.axis !== \"right\");\n      const rightMetrics = processedMetrics.filter((m) => m.axis === \"right\");\n\n      processedOption.yAxis = [\n        {\n          type: \"value\",\n          name: leftMetrics[0]?.alias || \"数值\",\n          position: \"left\",\n          alignTicks: true,\n        },\n        {\n          type: \"value\",\n          name: rightMetrics[0]?.alias || \"数值\",\n          position: \"right\",\n          alignTicks: true,\n        },\n      ];\n    }\n\n    // 根据图表类型生成最终配置\n    // 🎯 chartType 仅支持基础类型：bar / line / pie / bar-horizontal\n    // 🎯 堆叠、平滑、面积等效果通过 metrics[] 字段实现\n    switch (chartType) {\n      case \"pie\":\n        // 饼图配置\n        // 🎯 饼图变种通过 option.series[0] 配置：\n        //    - 环形图: radius: [\"45%\", \"70%\"]\n        //    - 玫瑰图: roseType: \"area\"\n        //    - 半圆图: startAngle: 180, endAngle: 360\n        if (processedMetrics.length > 0) {\n          const metric = processedMetrics[0];\n          const userSeriesConfig = processedOption.series?.[0] || {};\n\n          processedOption.series = [\n            {\n              ...userSeriesConfig, // 用户配置（含 radius、roseType 等）\n              type: \"pie\",\n              data: data.map((item, index) => ({\n                name: dimensionValues[index],\n                value: metric.processedData[index].value,\n                itemStyle: metric.processedData[index].style,\n              })),\n            },\n          ];\n\n          // 动态生成 legend 数据\n          if (processedOption.legend) {\n            processedOption.legend.data = dimensionValues;\n          }\n        }\n        break;\n\n      case \"bar\":\n        // 柱状图配置\n        if (processedOption.xAxis) {\n          processedOption.xAxis.data = dimensionValues;\n          processedOption.xAxis.name = dimensionAlias || \"类别\";\n        }\n\n        // 🎯 自动设置Y轴标题为指标别名（仅当 yAxis 不是数组时）\n        if (\n          processedOption.yAxis &&\n          processedMetrics.length > 0 &&\n          !Array.isArray(processedOption.yAxis)\n        ) {\n          const firstMetric = processedMetrics[0];\n          processedOption.yAxis.name = firstMetric.alias || \"数值\";\n        }\n\n        // 生成系列数据\n        // 🎯 支持 metrics[].type 混合图表、metrics[].stack 堆叠、metrics[].smooth/area\n        processedOption.series = processedMetrics.map((metric, index) => {\n          const userSeriesConfig = processedOption.series?.[index] || {};\n          // 🎯 确定 series 类型：metric.type > chartType 默认值\n          const seriesType = metric.type || \"bar\";\n          // 🆕 双Y轴支持：axis -> yAxisIndex 转换\n          const yAxisIndex = metric.axis === \"right\" ? 1 : 0;\n\n          return {\n            ...userSeriesConfig,\n            name: metric.name,\n            type: seriesType,\n            // 堆叠配置：通过 metrics[].stack 实现\n            ...(metric.stack ? { stack: metric.stack } : {}),\n            // 双Y轴支持\n            ...(hasRightAxis ? { yAxisIndex } : {}),\n            // 平滑曲线（仅 line 类型有效）\n            ...(seriesType === \"line\" && metric.smooth ? { smooth: true } : {}),\n            // 面积图（仅 line 类型有效）\n            ...(seriesType === \"line\" && metric.area ? { areaStyle: {} } : {}),\n            // 数据点配置\n            data: metric.processedData.map((item) => ({\n              value: item.value,\n              itemStyle: item.style,\n            })),\n          };\n        });\n\n        if (processedOption.legend && processedMetrics.length > 1) {\n          processedOption.legend.data = processedMetrics.map((m) => m.name);\n        }\n        break;\n\n      case \"line\":\n        // 折线图配置\n        if (processedOption.xAxis) {\n          processedOption.xAxis.data = dimensionValues;\n          processedOption.xAxis.name = dimensionAlias || \"类别\";\n        }\n\n        // 🎯 自动设置Y轴标题为指标别名（仅当 yAxis 不是数组时）\n        if (\n          processedOption.yAxis &&\n          processedMetrics.length > 0 &&\n          !Array.isArray(processedOption.yAxis)\n        ) {\n          const firstMetric = processedMetrics[0];\n          processedOption.yAxis.name = firstMetric.alias || \"数值\";\n        }\n\n        // 生成系列数据\n        // 🎯 支持 metrics[].type 混合图表、metrics[].stack 堆叠、metrics[].smooth/area\n        processedOption.series = processedMetrics.map((metric, index) => {\n          const userSeriesConfig = processedOption.series?.[index] || {};\n          // 🎯 确定 series 类型：metric.type > chartType 默认值\n          const seriesType = metric.type || \"line\";\n          // 双Y轴支持：axis -> yAxisIndex 转换\n          const yAxisIndex = metric.axis === \"right\" ? 1 : 0;\n\n          return {\n            ...userSeriesConfig,\n            name: metric.name,\n            type: seriesType,\n            // 堆叠配置：通过 metrics[].stack 实现\n            ...(metric.stack ? { stack: metric.stack } : {}),\n            // 双Y轴支持\n            ...(hasRightAxis ? { yAxisIndex } : {}),\n            // 平滑曲线：通过 metrics[].smooth 实现\n            ...(metric.smooth ? { smooth: true } : {}),\n            // 面积图：通过 metrics[].area 实现\n            ...(metric.area ? { areaStyle: {} } : {}),\n            data: metric.processedData.map((item) => ({\n              value: item.value,\n              itemStyle: item.style,\n            })),\n          };\n        });\n\n        if (processedOption.legend && processedMetrics.length > 1) {\n          processedOption.legend.data = processedMetrics.map((m) => m.name);\n        }\n        break;\n\n      case \"bar-horizontal\":\n        // 横向柱状图配置（仅当 yAxis 不是数组时）\n        if (processedOption.yAxis && !Array.isArray(processedOption.yAxis)) {\n          processedOption.yAxis.data = dimensionValues;\n          processedOption.yAxis.name = dimensionAlias || \"类别\";\n        }\n\n        // 🎯 自动设置X轴标题为指标别名（横向图的数值轴，仅当 xAxis 不是数组时）\n        if (\n          processedOption.xAxis &&\n          processedMetrics.length > 0 &&\n          !Array.isArray(processedOption.xAxis)\n        ) {\n          const firstMetric = processedMetrics[0];\n          processedOption.xAxis.name = firstMetric.alias || \"数值\";\n        }\n\n        // 🔧 保留用户配置：合并用户的 series 配置\n        processedOption.series = processedMetrics.map((metric, index) => {\n          const userSeriesConfig = processedOption.series?.[index] || {};\n          return {\n            ...userSeriesConfig, // 🎯 保留用户配置（label、itemStyle等）\n            name: metric.name,\n            type: \"bar\",\n            data: metric.processedData.map((item) => ({\n              value: item.value,\n              itemStyle: item.style,\n            })),\n          };\n        });\n\n        if (processedOption.legend && processedMetrics.length > 1) {\n          processedOption.legend.data = processedMetrics.map((m) => m.name);\n        }\n        break;\n\n      case \"gauge\":\n        // 仪表盘配置（单值展示，用于 KPI 达成率）\n        if (processedMetrics.length > 0) {\n          const metric = processedMetrics[0];\n          const value = metric.processedData[0]?.value || 0;\n          const userSeriesConfig = processedOption.series?.[0] || {};\n\n          processedOption.series = [\n            {\n              ...userSeriesConfig,\n              type: \"gauge\",\n              data: [{ value, name: metric.name }],\n            },\n          ];\n        }\n        break;\n\n      case \"funnel\":\n        // 漏斗图配置（转化分析）\n        if (processedMetrics.length > 0) {\n          const metric = processedMetrics[0];\n          const userSeriesConfig = processedOption.series?.[0] || {};\n\n          processedOption.series = [\n            {\n              ...userSeriesConfig,\n              type: \"funnel\",\n              data: data.map((item, index) => ({\n                name: dimensionValues[index],\n                value: metric.processedData[index].value,\n                itemStyle: metric.processedData[index].style,\n              })),\n            },\n          ];\n\n          // 动态生成 legend 数据\n          if (processedOption.legend) {\n            processedOption.legend.data = dimensionValues;\n          }\n        }\n        break;\n\n      case \"radar\":\n        // 雷达图配置（多维度综合对比）\n        if (processedMetrics.length > 0) {\n          const userRadarConfig = processedOption.radar || {};\n          const userSeriesConfig = processedOption.series?.[0] || {};\n\n          // 构建 radar.indicator（各维度指标）\n          const indicators = processedMetrics.map((metric) => {\n            // 计算该指标的最大值（用于归一化）\n            const maxValue = Math.max(\n              ...metric.processedData.map((d) => d.value),\n              1,\n            );\n            return {\n              name: metric.name,\n              max: Math.ceil(maxValue * 1.2), // 留出 20% 余量\n            };\n          });\n\n          // 构建 series.data（每个 dimension 值对应一个数据系列）\n          const radarData = data.map((item, index) => ({\n            name: dimensionValues[index],\n            value: processedMetrics.map(\n              (metric) => metric.processedData[index].value,\n            ),\n          }));\n\n          processedOption.radar = {\n            ...userRadarConfig,\n            indicator: indicators,\n          };\n\n          processedOption.series = [\n            {\n              ...userSeriesConfig,\n              type: \"radar\",\n              data: radarData,\n            },\n          ];\n\n          // 动态生成 legend 数据\n          if (processedOption.legend) {\n            processedOption.legend.data = dimensionValues;\n          }\n        }\n        break;\n\n      case \"scatter\":\n        // 散点图配置（相关性分析、分布展示）\n        // 🎯 scatter 需要两个 metrics：第一个作为 X 轴值，第二个作为 Y 轴值\n        // 🎯 dimension 用于区分不同系列（可选，用于多组散点对比）\n        if (processedOption.xAxis) {\n          processedOption.xAxis.type = \"value\";\n          processedOption.xAxis.name =\n            processedMetrics[0]?.alias || dimensionAlias || \"X\";\n        }\n\n        if (\n          processedOption.yAxis &&\n          !Array.isArray(processedOption.yAxis) &&\n          processedMetrics.length > 1\n        ) {\n          processedOption.yAxis.name = processedMetrics[1]?.alias || \"Y\";\n        }\n\n        if (processedMetrics.length >= 2) {\n          // 标准散点图：两个 metrics 分别作为 X 和 Y 坐标\n          const xMetric = processedMetrics[0];\n          const yMetric = processedMetrics[1];\n          const userSeriesConfig = processedOption.series?.[0] || {};\n\n          // 如果有 dimension，按 dimension 分组生成多个系列\n          if (dimensionField && dimensionValues.length > 0) {\n            // 获取唯一的 dimension 值\n            const uniqueDimensions = [...new Set(dimensionValues)];\n\n            processedOption.series = uniqueDimensions.map(\n              (dimValue, seriesIndex) => {\n                const seriesData: [number, number][] = [];\n                data.forEach((item, index) => {\n                  if (dimensionValues[index] === dimValue) {\n                    seriesData.push([\n                      xMetric.processedData[index].value,\n                      yMetric.processedData[index].value,\n                    ]);\n                  }\n                });\n\n                return {\n                  ...(processedOption.series?.[seriesIndex] ||\n                    userSeriesConfig),\n                  name: dimValue,\n                  type: \"scatter\",\n                  data: seriesData,\n                };\n              },\n            );\n\n            // 动态生成 legend 数据\n            if (processedOption.legend) {\n              processedOption.legend.data = uniqueDimensions;\n            }\n          } else {\n            // 无 dimension，单个散点系列\n            processedOption.series = [\n              {\n                ...userSeriesConfig,\n                name: yMetric.alias || \"数据\",\n                type: \"scatter\",\n                data: data.map((item, index) => [\n                  xMetric.processedData[index].value,\n                  yMetric.processedData[index].value,\n                ]),\n              },\n            ];\n          }\n        } else if (processedMetrics.length === 1) {\n          // 单指标散点图：dimension 作为 X 轴索引，metric 作为 Y 值\n          const metric = processedMetrics[0];\n          const userSeriesConfig = processedOption.series?.[0] || {};\n\n          processedOption.series = [\n            {\n              ...userSeriesConfig,\n              name: metric.alias || metric.field,\n              type: \"scatter\",\n              data: data.map((item, index) => [\n                index,\n                metric.processedData[index].value,\n              ]),\n            },\n          ];\n        }\n        break;\n\n      default:\n        return null;\n    }\n\n    // 🎯 步骤3：处理空数据或错误状态\n    // 优先显示错误信息，其次显示\"暂无数据\"\n    if (errorMsg) {\n      // 🆕 错误状态：直接显示原始错误信息\n      const displayText = `${errorCode ? `错误码：${errorCode}\\n\\n` : \"\"}${errorMsg ? `错误原因：${errorMsg}` : \"未知错误\"}`;\n\n      processedOption.graphic = {\n        type: \"text\",\n        left: \"center\",\n        top: \"middle\",\n        z: 100,\n        style: {\n          text: displayText,\n          fontSize: 14,\n          fill: \"#999\",\n          textAlign: \"center\",\n          width: 200,\n          overflow: \"breakAll\",\n        },\n      };\n    } else if (data.length === 0) {\n      // 空数据状态：显示\"暂无数据\"\n      processedOption.graphic = {\n        type: \"text\",\n        left: \"center\",\n        top: \"middle\",\n        z: 100,\n        style: {\n          text: \"暂无数据\",\n          fontSize: 14,\n          fill: \"#999\",\n          textAlign: \"center\",\n        },\n      };\n    }\n\n    // 🎯 步骤4：转换 option 中所有的 formatter 字符串为函数\n    ChartDataProcessor.convertFormattersInOption(processedOption);\n\n    // 🎯 步骤5：应用主题样式（最后应用，处理完整配置）\n    // 此时 processedOption 已经有完整的数据结构\n    // 主题层会应用默认样式，并确保用户配置优先级更高\n    // 如果指定了 theme，则使用对应的主题配色\n    applyYuntooTheme(processedOption, chartType, theme);\n\n    return {\n      option: processedOption,\n      chartType,\n    };\n  }\n\n  /**\n   * 🔧 递归转换 option 中所有的 formatter 字符串为函数\n   *\n   * ECharts 的 formatter 可以出现在多个位置：\n   * - series[].label.formatter\n   * - series[].tooltip.formatter\n   * - tooltip.formatter\n   * - xAxis.axisLabel.formatter\n   * - yAxis.axisLabel.formatter\n   * - 等等\n   */\n  private static convertFormattersInOption(obj: any): void {\n    if (!obj || typeof obj !== \"object\") {\n      return;\n    }\n\n    // 如果当前对象有 formatter 属性且是字符串\n    if (obj.formatter && typeof obj.formatter === \"string\") {\n      try {\n        const formatterStr = obj.formatter;\n        // 使用 business-executor 的公开方法来转换函数字符串\n        const func =\n          businessExecutor.convertFormatterStringToFunction(formatterStr);\n        obj.formatter = func;\n      } catch (error) {\n        console.warn(\n          \"Failed to convert formatter string to function:\",\n          obj.formatter,\n          error,\n        );\n        // 转换失败时保持原字符串，让 ECharts 尝试处理\n      }\n    }\n\n    // 递归处理数组和对象\n    if (Array.isArray(obj)) {\n      obj.forEach((item) => ChartDataProcessor.convertFormattersInOption(item));\n    } else {\n      Object.keys(obj).forEach((key) => {\n        if (typeof obj[key] === \"object\") {\n          ChartDataProcessor.convertFormattersInOption(obj[key]);\n        }\n      });\n    }\n  }\n}\n","module.exports = echarts;","// Force Vite HMR update\nimport type {\n  DisplayCardConfig,\n  StatisticRuntimeProps,\n  ProcessedDisplayData,\n  ChartThemeName,\n} from \"../types\";\nimport React, { useCallback, useRef, useEffect } from \"react\";\nimport { Empty, Statistic, Result } from \"antd\";\nimport * as echarts from \"echarts\";\nimport { getCommonAttr } from \"@yuntoo/antd-ext/src/_utils\";\nimport { getStatisticThemeColor } from \"../theme/chart-theme-config\";\n\n/**\n * 🚀 图表渲染模块\n *\n * 功能：\n * - ECharts实例管理\n * - 图表内容渲染Hook\n * - 响应式处理\n * - 生命周期管理\n */\n\n/**\n * 获取错误配置\n */\nconst getErrorConfig = (errorCode?: string, errorMsg?: string) => {\n  switch (errorCode) {\n    case \"0011\":\n      return { title: \"无登录态\", status: \"warning\" as const };\n\n    case \"2000\":\n      if (errorMsg?.includes(\"无执行权限\")) {\n        return { title: \"无数据权限\", status: \"warning\" as const };\n      }\n      if (\n        errorMsg?.includes(\"JSQLParserException\") ||\n        errorMsg?.includes(\"ParseException\")\n      ) {\n        return { title: \"SQL语法错误\", status: \"warning\" as const };\n      }\n      return { title: \"数据查询失败\", status: \"warning\" as const };\n\n    default:\n      return { title: \"图表渲染异常\", status: \"error\" as const };\n  }\n};\n\n/**\n * 🚀 ECharts实例管理Hook\n */\nexport const useEChartsInstances = () => {\n  const chartRefs = useRef<Map<string, HTMLDivElement>>(new Map());\n  const chartInstances = useRef<Map<string, echarts.ECharts>>(new Map());\n  const initializationStatus = useRef<Map<string, boolean>>(new Map());\n  const resizeObservers = useRef<Map<string, ResizeObserver>>(new Map());\n\n  /**\n   * 🚀 初始化或更新ECharts实例\n   */\n  const initChart = useCallback(\n    (\n      uniqueId: string,\n      option: any,\n      title: string,\n      onInitialized?: () => void,\n    ) => {\n      const chartRef = chartRefs.current.get(uniqueId);\n      if (!chartRef) {\n        console.warn(\n          \"图表容器不存在:\",\n          uniqueId,\n          \"当前注册的容器:\",\n          Array.from(chartRefs.current.keys()),\n        );\n        return;\n      }\n\n      // 检查容器尺寸\n      const rect = chartRef.getBoundingClientRect();\n      if (rect.width === 0) {\n        console.warn(\"容器宽度为0，延迟初始化:\", { width: rect.width });\n        setTimeout(() => initChart(uniqueId, option, title, onInitialized), 60);\n        return;\n      }\n\n      // 检查是否已有实例\n      const existingInstance = chartInstances.current.get(uniqueId);\n\n      if (existingInstance && !existingInstance.isDisposed()) {\n        try {\n          existingInstance.setOption(option, true);\n          console.log(`🔄 图表配置已更新:`, title, { uniqueId });\n          return;\n        } catch (error) {\n          console.error(`图表更新失败，将重新创建:`, title, error);\n          existingInstance.dispose();\n        }\n      }\n\n      // 创建新实例\n      try {\n        const chartInstance = echarts.init(chartRef);\n        chartInstance.setOption(option, true);\n        chartInstances.current.set(uniqueId, chartInstance);\n        initializationStatus.current.set(uniqueId, true);\n\n        // 初始 resize - 延迟更长时间确保容器布局完成\n        setTimeout(() => {\n          if (!chartInstance.isDisposed()) {\n            // 重新设置 option 以修复可能的布局问题\n            chartInstance.setOption(chartInstance.getOption(), {\n              notMerge: false,\n            });\n            chartInstance.resize();\n          }\n        }, 150);\n\n        // 🎯 使用 ResizeObserver 监听容器尺寸变化\n        // 解决 Y 轴标题在动态布局中被压缩的问题\n        const existingObserver = resizeObservers.current.get(uniqueId);\n        if (existingObserver) {\n          existingObserver.disconnect();\n        }\n\n        const resizeObserver = new ResizeObserver(() => {\n          if (!chartInstance.isDisposed()) {\n            // 🎯 关键修复：重新设置 option 以重新计算 Y 轴标题位置\n            // 只 resize() 无法修复已经渲染错误的轴标题\n            chartInstance.setOption(chartInstance.getOption(), {\n              notMerge: false,\n            });\n            chartInstance.resize();\n          }\n        });\n        resizeObserver.observe(chartRef);\n        resizeObservers.current.set(uniqueId, resizeObserver);\n\n        console.log(`✅ 图表渲染完成:`, title, {\n          uniqueId,\n          width: rect.width,\n          height: rect.height,\n          totalInstances: chartInstances.current.size,\n        });\n\n        onInitialized?.();\n      } catch (error) {\n        console.error(`图表初始化失败:`, title, error);\n      }\n    },\n    [],\n  );\n\n  /**\n   * 🚀 调整所有图表尺寸（带防抖）\n   */\n  const resizeTimer = useRef<NodeJS.Timeout>();\n\n  const resizeAllCharts = useCallback(() => {\n    if (resizeTimer.current) {\n      clearTimeout(resizeTimer.current);\n    }\n\n    resizeTimer.current = setTimeout(() => {\n      chartInstances.current.forEach((chartInstance, uniqueId) => {\n        if (chartInstance && !chartInstance.isDisposed()) {\n          try {\n            chartInstance.resize();\n          } catch (error) {\n            console.warn(`图表 ${uniqueId} resize 失败:`, error);\n          }\n        }\n      });\n    }, 150);\n  }, []);\n\n  /**\n   * 🚀 销毁所有图表实例\n   */\n  const destroyAllCharts = useCallback(() => {\n    if (resizeTimer.current) {\n      clearTimeout(resizeTimer.current);\n    }\n\n    chartInstances.current.forEach((instance) => {\n      instance.dispose();\n    });\n\n    // 清理 ResizeObserver\n    resizeObservers.current.forEach((observer) => {\n      observer.disconnect();\n    });\n\n    chartInstances.current.clear();\n    chartRefs.current.clear();\n    initializationStatus.current.clear();\n    resizeObservers.current.clear();\n  }, []);\n\n  /**\n   * 🚀 重置特定图表的初始化状态\n   */\n  const resetChartStatus = useCallback((uniqueId: string) => {\n    initializationStatus.current.delete(uniqueId);\n  }, []);\n\n  /**\n   * 🚀 注册图表容器引用\n   */\n  const setChartRef = useCallback(\n    (uniqueId: string, ref: HTMLDivElement | null) => {\n      if (ref) {\n        chartRefs.current.set(uniqueId, ref);\n      } else {\n        chartRefs.current.delete(uniqueId);\n        initializationStatus.current.delete(uniqueId);\n\n        // 清理对应的 ResizeObserver\n        const observer = resizeObservers.current.get(uniqueId);\n        if (observer) {\n          observer.disconnect();\n          resizeObservers.current.delete(uniqueId);\n        }\n      }\n    },\n    [],\n  );\n\n  return {\n    chartRefs,\n    chartInstances,\n    initChart,\n    resizeAllCharts,\n    destroyAllCharts,\n    setChartRef,\n    resetChartStatus,\n  };\n};\n\n/**\n * 🚀 图表内容渲染Hook\n */\nexport const useChartRenderer = (props: {\n  cardItem?: DisplayCardConfig;\n  chartData: ProcessedDisplayData;\n  statisticProps: StatisticRuntimeProps | null;\n  cardIndex?: number;\n  className?: string;\n  style?: React.CSSProperties;\n  __id?: string;\n  ref?: React.Ref<HTMLDivElement>;\n}) => {\n  const {\n    cardItem,\n    chartData,\n    statisticProps,\n    cardIndex = 0,\n    className,\n    style,\n    __id,\n    ref,\n  } = props;\n\n  /**\n   * 🚀 渲染图表内容\n   */\n  const renderChartContent = useCallback((): React.ReactNode => {\n    // 安全检查\n    if (!cardItem) {\n      return <Empty description=\"图表配置错误\" />;\n    }\n\n    const { display_type, title } = cardItem;\n\n    // 处理错误情况（仅针对 statistic 类型）\n    if (chartData.errorMsg && display_type === \"statistic\") {\n      const errorConfig = getErrorConfig(\n        chartData.errorCode,\n        chartData.errorMsg,\n      );\n\n      // 统计卡片的错误显示\n      return (\n        <div style={{ position: \"relative\", width: \"100%\", height: \"100%\" }}>\n          <Statistic\n            title={cardItem.statistic_config?.title || title}\n            value=\"--\"\n            prefix={cardItem.statistic_config?.prefix}\n            suffix={cardItem.statistic_config?.suffix}\n            valueStyle={{\n              ...cardItem.statistic_config?.valueStyle,\n            }}\n          />\n          <div title={`${errorConfig.title}\\n${chartData.errorMsg}`}>\n            <Result\n              status={errorConfig.status}\n              title={errorConfig.title}\n              subTitle={chartData.errorMsg}\n            />\n          </div>\n        </div>\n      );\n    }\n\n    // 🆕 ECharts 错误状态：让它继续渲染图表框架\n    // 错误信息会在图表中心显示（由 processEChartsConfig 处理）\n\n    // 处理空数据情况（直接判断 tableData 长度）\n    if (chartData.tableData.length === 0) {\n      if (display_type === \"statistic\") {\n        // 统计卡片的空数据显示\n        return (\n          <Statistic\n            title={cardItem.statistic_config?.title || title}\n            value=\"--\"\n            prefix={cardItem.statistic_config?.prefix}\n            suffix={cardItem.statistic_config?.suffix}\n            valueStyle={{\n              ...cardItem.statistic_config?.valueStyle,\n              color: \"#999\",\n            }}\n          />\n        );\n      }\n      // ECharts 图表空数据：不特殊处理，让图表自然渲染空状态\n      // 继续往下执行，渲染空的图表框架\n    }\n\n    // 渲染图表内容\n    if (display_type === \"statistic\") {\n      if (!statisticProps) {\n        return <Empty description=\"统计配置错误\" />;\n      }\n\n      // 处理 formatter\n      const processedStatisticProps: any = { ...statisticProps };\n      if (\n        statisticProps.formatter &&\n        typeof statisticProps.formatter === \"string\"\n      ) {\n        const formatterString = statisticProps.formatter;\n        try {\n          processedStatisticProps.formatter = new Function(\n            \"value\",\n            `return (${formatterString})(value)`,\n          ) as (value: any) => React.ReactNode;\n        } catch (error) {\n          console.warn(\"formatter 函数解析失败:\", formatterString, error);\n          delete processedStatisticProps.formatter;\n        }\n      }\n\n      return <Statistic {...processedStatisticProps} />;\n    } else {\n      // ECharts 将直接渲染到父容器中\n      return null;\n    }\n  }, [cardItem, chartData, statisticProps]);\n\n  /**\n   * 🚀 渲染图表容器\n   */\n  const renderChart = useCallback(\n    (\n      onEChartsRefSet?: (ref: HTMLDivElement | null) => void,\n    ): React.ReactElement => {\n      if (!cardItem) {\n        return (\n          <div\n            ref={ref as React.Ref<HTMLDivElement>}\n            {...getCommonAttr({ __id })}\n            className={`lr-smart-chart-container ${className || \"\"}`}\n            style={style}\n          >\n            <Empty description=\"暂无图表配置\" />\n          </div>\n        );\n      }\n\n      // 对于ECharts类型，统一返回容器供渲染\n      if (cardItem.display_type === \"echarts\") {\n        // 🆕 不再区分错误和正常状态，统一让 ECharts 渲染框架\n        // 错误信息会在图表中心显示\n        return (\n          <div\n            ref={(el: HTMLDivElement | null) => {\n              onEChartsRefSet?.(el);\n              if (ref && typeof ref === \"function\") {\n                ref(el);\n              } else if (ref && \"current\" in ref && ref.current !== undefined) {\n                (ref as React.MutableRefObject<HTMLDivElement | null>).current =\n                  el;\n              }\n            }}\n            {...getCommonAttr({ __id })}\n            className={`lr-smart-chart-container chart-type ${className || \"\"}`}\n            style={{\n              ...style,\n              width: \"100%\",\n              height: \"100%\",\n              minHeight: \"200px\",\n            }}\n          />\n        );\n      }\n\n      // 对于统计类型，包含Statistic组件\n      const content = renderChartContent();\n\n      // 获取主题配置：优先使用 statistic_config.theme，否则使用 cardIndex 取色\n      const themeName = cardItem.statistic_config?.theme as ChartThemeName | undefined;\n\n      const statisticContainerStyle = {\n        ...style,\n        backgroundColor: getStatisticThemeColor(cardIndex, themeName),\n        borderRadius: \"4px\",\n      };\n\n      return (\n        <div\n          ref={ref as React.Ref<HTMLDivElement>}\n          {...getCommonAttr({ __id })}\n          className={`lr-smart-chart-container statistic-type ${className || \"\"}`}\n          style={statisticContainerStyle}\n        >\n          {content}\n        </div>\n      );\n    },\n    [cardItem, renderChartContent, ref, className, style, cardIndex],\n  );\n\n  return {\n    renderChart,\n    renderChartContent,\n  };\n};\n\n/**\n * 🚀 图表生命周期管理Hook\n */\nexport const useChartLifecycle = (props: {\n  cardItem?: DisplayCardConfig;\n  chartData: ProcessedDisplayData;\n  processedEChartsConfig: any;\n  echartsManager: ReturnType<typeof useEChartsInstances>;\n  uniqueId: string;\n}) => {\n  const {\n    cardItem,\n    chartData,\n    processedEChartsConfig,\n    echartsManager,\n    uniqueId,\n  } = props;\n\n  // ECharts图表渲染Effect\n  useEffect(() => {\n    if (!cardItem || cardItem.display_type !== \"echarts\") {\n      return;\n    }\n\n    // 🆕 移除 isEmpty 检查，让空数据也能渲染图表框架\n    if (!processedEChartsConfig) {\n      echartsManager.resetChartStatus(uniqueId);\n      return;\n    }\n\n    // 🔧 修复：智能选择标题来源，保持props一致性\n    // 如果 echarts_config.option.title.text 存在且与 cardItem.title 不同，说明用户修改了 echarts 标题\n    // 否则使用 cardItem.title\n    const echartsTitle = processedEChartsConfig.title?.text;\n    const cardTitle = cardItem.title;\n\n    // 优先使用 echarts_config.option.title.text，如果不存在则使用 cardItem.title\n    const finalTitle = echartsTitle || cardTitle;\n\n    // console.log(\"🔄 [ChartRenderer] 标题选择:\", {\n    //   echartsTitle,\n    //   cardTitle,\n    //   finalTitle,\n    //   useEChartsTitle: !!echartsTitle,\n    // });\n\n    const timeoutId = setTimeout(() => {\n      echartsManager.initChart(uniqueId, processedEChartsConfig, finalTitle);\n    }, 100);\n\n    return () => {\n      clearTimeout(timeoutId);\n    };\n  }, [\n    cardItem?.display_type,\n    cardItem?.title,\n    processedEChartsConfig,\n    echartsManager.initChart,\n    echartsManager.resetChartStatus,\n    uniqueId,\n  ]);\n\n  // 响应式处理Effect\n  useEffect(() => {\n    window.addEventListener(\"resize\", echartsManager.resizeAllCharts);\n\n    return () => {\n      window.removeEventListener(\"resize\", echartsManager.resizeAllCharts);\n    };\n  }, [echartsManager.resizeAllCharts]);\n\n  // 组件卸载清理Effect\n  useEffect(() => {\n    return () => {\n      echartsManager.destroyAllCharts();\n    };\n  }, [echartsManager.destroyAllCharts]);\n};\n","import React, {\n  forwardRef,\n  useEffect,\n  memo,\n  useMemo,\n  useDeferredValue,\n} from \"react\";\nimport {\n  ChartDataProcessor,\n  businessExecutor,\n  useEChartsInstances,\n  useChartRenderer,\n  useChartLifecycle,\n  type DisplayCardConfig,\n  type ProcessedDisplayData,\n} from \"../common/chart-factory\";\nimport \"./view.less\";\n\n// ==================== 类型定义 ====================\n\n// 🚀 智能图表组件属性接口\nexport interface LrSmartChartProps {\n  // 🚀 运行时配置\n  cardItem: DisplayCardConfig; // 单个图表卡片配置对象（包含标题）\n  cardIndex?: number; // 卡片索引（用于主题色）\n\n  // 🚀 数据源：通过JSExpression绑定框架管理的数据\n  // TODO: 临时向后兼容两个字段名，待批量迁移完成后移除 chartDataSource\n  chartDataSource?: any; // 旧字段名（向后兼容，待移除）\n  dataSource?: any; // 新字段名（推荐使用）\n\n  componentId?: string; // 组件ID\n\n  // 上下文\n  _context?: any; // 低码引擎上下文\n  _uniqueId?: string; // 低码引擎生成的唯一ID\n  __id?: string; // 低码引擎生成的nodeId\n  ref?: string | React.Ref<HTMLDivElement>; // 支持字符串形式的ref\n\n  // 样式\n  style?: React.CSSProperties;\n  className?: string;\n}\n\n/**\n * 🚀 智能图表组件 - 增强版\n *\n * 功能：\n * - 支持统计数字和ECharts图表\n * - 统一主题和样式管理\n * - 模块化Hook架构，提升可维护性\n * - 🆕 直接使用 API 标准结构（tableData）\n * - 🆕 支持数据映射：dimension + metrics[]\n * - 🆕 支持箭头函数执行：styleFunction + formatter\n * - 🆕 安全的函数执行环境和缓存优化\n * - 🆕 性能优化：React.memo + useMemo\n */\nconst LrSmartChartBase = forwardRef<HTMLDivElement, LrSmartChartProps>(\n  (props, ref) => {\n    const {\n      cardItem,\n      cardIndex,\n      chartDataSource, // 旧字段名\n      dataSource, // 新字段名\n      componentId,\n      style,\n      className,\n      _uniqueId,\n      _context,\n      __id,\n    } = props;\n\n    // TODO: 临时向后兼容逻辑，优先使用新字段 dataSource\n    // 待批量迁移完成后移除此兼容代码（预计移除时间：批量迁移后1-2个版本）\n    const actualDataSource = dataSource ?? chartDataSource;\n\n    // 🆕 自动推导 dataSourceId\n    // 规则：dataSourceId = `chart_data_${nodeId}`\n    // nodeId 从组件的 id 字段获取（格式: node_xxx）\n    // 例如：组件 id 为 \"node_81f8m64jo1h\"，则 dataSourceId 为 \"chart_data_node_81f8m64jo1h\"\n    const dataSourceId = componentId ? `chart_data_${componentId}` : null;\n\n    // 🚀 使用ECharts实例管理Hook\n    const echartsManager = useEChartsInstances();\n\n    // 🆕 React 18 优化：使用 useDeferredValue 延迟非紧急数据更新\n    // 当多个图表同时更新时，React会优先处理用户交互，避免页面卡顿\n    const deferredDataSource = useDeferredValue(actualDataSource);\n\n    // -------------------------- 异常处理逻辑非常关键的说明 ----------------------------------\n    // 请详细了解 `UNSTABLE_${dataSourceId}_error` 这个字段的作用，否则无法正确渲染图表\n    // 当 接口API 返回 { success: false, errorMsg: \"...\", errorCode: \"2000\", data: null } 时：\n    // ytfetch 会抛出一个 Error 对象\n    // Error 对象的 message 是 errorMsg\n    // Error 对象的 response 属性包含完整的 API 响应 { success: false, errorMsg: \"...\", errorCode: \"2000\", data: null }\n    // 这个 error 被存储到 context.state[UNSTABLE_${dataSourceId}_error]\n    // 🚀 获取错误信息（如果有）\n    const apiError = useMemo(() => {\n      if (_context?.state && dataSourceId) {\n        const errorKey = `UNSTABLE_${dataSourceId}_error`;\n        return _context.state[errorKey];\n      }\n      return null;\n    }, [_context, dataSourceId]);\n\n    // 🚀 提取错误信息（直接使用 API 字段）\n    const errorMsg = apiError?.response?.errorMsg || apiError?.message;\n    const errorCode = apiError?.response?.errorCode;\n\n    // 🚀 获取数据（直接使用 API 字段 tableData）\n    const tableData = deferredDataSource?.tableData || [];\n\n    // 🚀 处理统计配置（使用 useMemo 缓存结果）\n    const statisticProps = useMemo(() => {\n      // 如果有错误，不处理统计配置\n      if (errorMsg) {\n        return null;\n      }\n      // 正常情况：没有错误且有数据时才处理统计配置\n      return cardItem &&\n        cardItem.display_type === \"statistic\" &&\n        tableData.length > 0\n        ? ChartDataProcessor.processStatisticConfig(cardItem, tableData)\n        : null;\n    }, [cardItem, tableData, errorMsg]);\n\n    // 🚀 处理ECharts配置（使用 useMemo 缓存结果）\n    // 🆕 即使有错误也渲染图表框架，显示错误信息\n    const processedEChartsConfig = useMemo(() => {\n      return cardItem && cardItem.display_type === \"echarts\"\n        ? ChartDataProcessor.processEChartsConfig(\n            cardItem,\n            tableData,\n            errorMsg,\n            errorCode,\n          )\n        : null;\n    }, [cardItem, tableData, errorMsg, errorCode]);\n\n    // 🚀 构造 chartData（直接使用 API 字段）\n    const chartData: ProcessedDisplayData = useMemo(\n      () => ({\n        tableData,\n        errorMsg,\n        errorCode,\n      }),\n      [tableData, errorMsg, errorCode],\n    );\n\n    // 🚀 使用图表渲染Hook\n    const { renderChart } = useChartRenderer({\n      cardItem,\n      chartData,\n      statisticProps,\n      cardIndex, // 传递卡片索引\n      className,\n      style,\n      ref,\n      __id,\n    });\n\n    // 🚀 使用生命周期管理Hook（传入唯一的图表ID）\n    useChartLifecycle({\n      cardItem,\n      chartData,\n      processedEChartsConfig: processedEChartsConfig?.option,\n      echartsManager,\n      uniqueId: _uniqueId, // 直接使用 _uniqueId\n    });\n\n    // 🧹 组件卸载时清理箭头函数缓存（性能优化）\n    useEffect(() => {\n      return () => {\n        businessExecutor.clearCache();\n      };\n    }, []);\n\n    // 🚀 渲染图表（使用Hook中的渲染逻辑）\n    return renderChart((echartsRef) => {\n      if (_uniqueId && echartsRef) {\n        // console.log('📍 设置图表容器引用:', { _uniqueId, hasRef: !!echartsRef });\n        echartsManager.setChartRef(_uniqueId, echartsRef);\n      } else if (!_uniqueId) {\n        console.warn(\"⚠️ _uniqueId 未定义，无法设置图表引用\");\n      }\n    });\n  },\n);\n\nLrSmartChartBase.displayName = \"LrSmartChartBase\";\n\n// 🚀 React 18 优化：使用 React.memo + 智能比较\n// 核心策略：\n// 1. 快速路径：引用相等直接跳过\n// 2. 空值处理：undefined 的情况下不重渲染\n// 3. 深度比较：只比较关键数据\nexport const LrSmartChart = memo(LrSmartChartBase, (prevProps, nextProps) => {\n  // 快速路径 1：完全相同的 props\n  if (prevProps === nextProps) return true;\n\n  // TODO: 临时兼容两个字段名，优先使用 dataSource，fallback 到 chartDataSource\n  // 待批量迁移完成后简化此逻辑\n  const prevData = prevProps.dataSource ?? prevProps.chartDataSource;\n  const nextData = nextProps.dataSource ?? nextProps.chartDataSource;\n\n  // 快速路径 2：数据源和配置都没变（引用相等）\n  if (\n    prevData === nextData &&\n    prevProps.cardItem === nextProps.cardItem &&\n    prevProps.cardIndex === nextProps.cardIndex\n  ) {\n    return true;\n  }\n\n  // 🆕 特殊处理：一个有值一个没值（需要更新，显示骨架屏或内容）\n  if ((prevData === undefined) !== (nextData === undefined)) {\n    return false; // 必须重新渲染\n  }\n\n  // 深度比较（只比较关键数据）\n  try {\n    // 比较数据内容\n    const isDataEqual = JSON.stringify(prevData) === JSON.stringify(nextData);\n\n    // 如果数据相同，再比较配置\n    if (!isDataEqual) return false;\n\n    // 配置相同且索引相同才不重渲染\n    const isCardEqual =\n      JSON.stringify(prevProps.cardItem) === JSON.stringify(nextProps.cardItem);\n    const isSameIndex = prevProps.cardIndex === nextProps.cardIndex;\n\n    return isCardEqual && isSameIndex;\n  } catch (e) {\n    // JSON.stringify 失败时（循环引用等），保守地重渲染\n    return false;\n  }\n});\n\nLrSmartChart.displayName = \"LrSmartChart\";\n","import React from \"react\";\nimport { LrSmartChart, LrSmartChartProps } from \"../lr-smart-chart/view\";\nimport { renderEmptyState } from \"../common/empty-state\";\n\n/**\n * 智能统计卡组件\n *\n * 这是 LrSmartChart 的包装组件，固定 display_type 为 'statistic'\n * 用于显示统计数字卡片\n */\nexport const LrSmartStatistic = React.forwardRef<\n  HTMLDivElement,\n  LrSmartChartProps\n>((props, ref) => {\n  const { cardItem } = props;\n\n  // 🎯 空状态检查：当 query_config 不存在时，显示\"请先选择数据源\"\n  // 保持与其他智能组件（LrSmartTable、LrSmartFilter 等）的 UI 一致性\n  if (!cardItem?.query_config) {\n    return renderEmptyState(ref, {\n      iconUrl: \"https://i.lovrabet.com/c/AZlf-LkacACLmxiQjnwgxg.png\",\n    });\n  }\n\n  // 确保 cardItem 中的 display_type 固定为 'statistic'\n  const enhancedCardItem = {\n    ...cardItem,\n    display_type: \"statistic\" as const,\n  };\n\n  // 将所有 props 传递给 LrSmartChart，仅覆盖 cardItem\n  return <LrSmartChart {...props} cardItem={enhancedCardItem} ref={ref} />;\n});\n\nLrSmartStatistic.displayName = \"LrSmartStatistic\";\n","import React from \"react\";\nimport { LrSmartChart, LrSmartChartProps } from \"../lr-smart-chart/view\";\nimport { renderEmptyState } from \"../common/empty-state\";\n\n/**\n * 智能图表组件（ECharts）\n *\n * 这是 LrSmartChart 的包装组件，固定 display_type 为 'echarts'\n * 用于显示 ECharts 可视化图表\n */\nexport const LrSmartEcharts = React.forwardRef<\n  HTMLDivElement,\n  LrSmartChartProps\n>((props, ref) => {\n  const { cardItem } = props;\n\n  // 🎯 空状态检查：当 query_config 不存在时，显示\"请先选择数据源\"\n  // 保持与其他智能组件（LrSmartTable、LrSmartFilter 等）的 UI 一致性\n  if (!cardItem?.query_config) {\n    return renderEmptyState(ref, {\n      iconUrl: \"https://i.lovrabet.com/c/AZlf-PFFcACXpOsTmR-3aQ.png\",\n    });\n  }\n\n  // 确保 cardItem 中的 display_type 固定为 'echarts'\n  const enhancedCardItem = {\n    ...cardItem,\n    display_type: \"echarts\" as const,\n  };\n\n  // 将所有 props 传递给 LrSmartChart，仅覆盖 cardItem\n  return <LrSmartChart {...props} cardItem={enhancedCardItem} ref={ref} />;\n});\n\nLrSmartEcharts.displayName = \"LrSmartEcharts\";\n","'use client';\nimport { createContext, Component, createElement, useContext, useState, useMemo, forwardRef } from 'react';\n\nconst ErrorBoundaryContext = createContext(null);\n\nconst initialState = {\n  didCatch: false,\n  error: null\n};\nclass ErrorBoundary extends Component {\n  constructor(props) {\n    super(props);\n    this.resetErrorBoundary = this.resetErrorBoundary.bind(this);\n    this.state = initialState;\n  }\n  static getDerivedStateFromError(error) {\n    return {\n      didCatch: true,\n      error\n    };\n  }\n  resetErrorBoundary() {\n    const {\n      error\n    } = this.state;\n    if (error !== null) {\n      var _this$props$onReset, _this$props;\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      (_this$props$onReset = (_this$props = this.props).onReset) === null || _this$props$onReset === void 0 ? void 0 : _this$props$onReset.call(_this$props, {\n        args,\n        reason: \"imperative-api\"\n      });\n      this.setState(initialState);\n    }\n  }\n  componentDidCatch(error, info) {\n    var _this$props$onError, _this$props2;\n    (_this$props$onError = (_this$props2 = this.props).onError) === null || _this$props$onError === void 0 ? void 0 : _this$props$onError.call(_this$props2, error, info);\n  }\n  componentDidUpdate(prevProps, prevState) {\n    const {\n      didCatch\n    } = this.state;\n    const {\n      resetKeys\n    } = this.props;\n\n    // There's an edge case where if the thing that triggered the error happens to *also* be in the resetKeys array,\n    // we'd end up resetting the error boundary immediately.\n    // This would likely trigger a second error to be thrown.\n    // So we make sure that we don't check the resetKeys on the first call of cDU after the error is set.\n\n    if (didCatch && prevState.error !== null && hasArrayChanged(prevProps.resetKeys, resetKeys)) {\n      var _this$props$onReset2, _this$props3;\n      (_this$props$onReset2 = (_this$props3 = this.props).onReset) === null || _this$props$onReset2 === void 0 ? void 0 : _this$props$onReset2.call(_this$props3, {\n        next: resetKeys,\n        prev: prevProps.resetKeys,\n        reason: \"keys\"\n      });\n      this.setState(initialState);\n    }\n  }\n  render() {\n    const {\n      children,\n      fallbackRender,\n      FallbackComponent,\n      fallback\n    } = this.props;\n    const {\n      didCatch,\n      error\n    } = this.state;\n    let childToRender = children;\n    if (didCatch) {\n      const props = {\n        error,\n        resetErrorBoundary: this.resetErrorBoundary\n      };\n      if (typeof fallbackRender === \"function\") {\n        childToRender = fallbackRender(props);\n      } else if (FallbackComponent) {\n        childToRender = createElement(FallbackComponent, props);\n      } else if (fallback !== undefined) {\n        childToRender = fallback;\n      } else {\n        throw error;\n      }\n    }\n    return createElement(ErrorBoundaryContext.Provider, {\n      value: {\n        didCatch,\n        error,\n        resetErrorBoundary: this.resetErrorBoundary\n      }\n    }, childToRender);\n  }\n}\nfunction hasArrayChanged() {\n  let a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n  let b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n  return a.length !== b.length || a.some((item, index) => !Object.is(item, b[index]));\n}\n\nfunction assertErrorBoundaryContext(value) {\n  if (value == null || typeof value.didCatch !== \"boolean\" || typeof value.resetErrorBoundary !== \"function\") {\n    throw new Error(\"ErrorBoundaryContext not found\");\n  }\n}\n\nfunction useErrorBoundary() {\n  const context = useContext(ErrorBoundaryContext);\n  assertErrorBoundaryContext(context);\n  const [state, setState] = useState({\n    error: null,\n    hasError: false\n  });\n  const memoized = useMemo(() => ({\n    resetBoundary: () => {\n      context.resetErrorBoundary();\n      setState({\n        error: null,\n        hasError: false\n      });\n    },\n    showBoundary: error => setState({\n      error,\n      hasError: true\n    })\n  }), [context.resetErrorBoundary]);\n  if (state.hasError) {\n    throw state.error;\n  }\n  return memoized;\n}\n\nfunction withErrorBoundary(component, errorBoundaryProps) {\n  const Wrapped = forwardRef((props, ref) => createElement(ErrorBoundary, errorBoundaryProps, createElement(component, {\n    ...props,\n    ref\n  })));\n\n  // Format for display in DevTools\n  const name = component.displayName || component.name || \"Unknown\";\n  Wrapped.displayName = \"withErrorBoundary(\".concat(name, \")\");\n  return Wrapped;\n}\n\nexport { ErrorBoundary, ErrorBoundaryContext, useErrorBoundary, withErrorBoundary };\n","import React, { forwardRef, Ref, useState } from \"react\";\nimport { ErrorBoundary, FallbackProps } from \"react-error-boundary\";\nimport { getCommonAttr } from \"@yuntoo/antd-ext/src/_utils\";\nimport \"./view.less\";\n\nexport const LrSmartJsx = forwardRef((props: any, ref: Ref<any>) => {\n  const { render, _context, __designMode } = props;\n  const [showErrorStark, setShowErrorStark] = useState(false);\n\n  // 编辑态不渲染\n  if (__designMode || typeof render !== \"function\") {\n    return (\n      <div\n        ref={ref}\n        {...getCommonAttr(props)}\n        style={{ minHeight: \"60px\", textAlign: \"center\", lineHeight: \"60px\" }}\n      >\n        请编写 JSX 代码\n      </div>\n    );\n  }\n\n  const renderErrorFallback = ({ error }: FallbackProps) => {\n    return (\n      <div className=\"error\">\n        <div className=\"error-message\">\n          <strong>JSX 渲染异常，请检查组件 {props?.__id} 代码逻辑</strong>\n          <button\n            onClick={(e) => {\n              e.stopPropagation();\n              setShowErrorStark(!showErrorStark);\n            }}\n          >\n            [查看完整错误堆栈]\n          </button>\n          {/* 如果在web-app工程下使用, 会传递sendMessage方法, 此时可以使用一键修复功能, 通过sendMessage将错误信息抛出 */}\n          {_context?.appHelper?.yt?.sendMessage && (\n            <button\n              onClick={(e) => {\n                e.stopPropagation();\n                _context?.appHelper?.yt?.sendMessage({\n                  nodeInfo: { nodeId: props?.__id },\n                  error,\n                });\n              }}\n            >\n              [AI一键修复]\n            </button>\n          )}\n        </div>\n        <div className=\"error-stark\">\n          {showErrorStark ? (\n            <pre>\n              <code>{error.stack}</code>\n            </pre>\n          ) : (\n            <code>\n              {error?.name}: {error?.message || \"未知\"}\n            </code>\n          )}\n        </div>\n      </div>\n    );\n  };\n\n  return (\n    <div className=\"lr-smart-jsx\" ref={ref} {...getCommonAttr(props)}>\n      <ErrorBoundary\n        fallbackRender={renderErrorFallback}\n        onError={(error, info) => {\n          console.error(\"[LrSmartJsx] render error:\", error);\n        }}\n      >\n        {render(_context)}\n      </ErrorBoundary>\n    </div>\n  );\n});\n\nLrSmartJsx.displayName = \"LrSmartJsx\";\n"],"names":["getDefaultExportFromCjs","x","browser","process","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","runClearTimeout","marker","queue","draining","currentQueue","queueIndex","cleanUpNextTick","drainQueue","timeout","len","args","i","Item","array","noop","name","dir","browserExports","process$1","react","f","require$$0","k","l","m","p","q","a","g","b","d","e","h","reactJsxRuntime_production_min","React","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_OFFSCREEN_TYPE","MAYBE_ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","getIteratorFn","maybeIterable","maybeIterator","ReactSharedInternals","error","format","_len2","_key2","printWarning","level","ReactDebugCurrentFrame","stack","argsWithFormat","item","enableScopeAPI","enableCacheElement","enableTransitionTracing","enableLegacyHidden","enableDebugTracing","REACT_MODULE_REFERENCE","isValidElementType","type","getWrappedName","outerType","innerType","wrapperName","displayName","functionName","getContextName","getComponentNameFromType","context","provider","outerName","lazyComponent","payload","init","assign","disabledDepth","prevLog","prevInfo","prevWarn","prevError","prevGroup","prevGroupCollapsed","prevGroupEnd","disabledLog","disableLogs","props","reenableLogs","ReactCurrentDispatcher","prefix","describeBuiltInComponentFrame","source","ownerFn","match","reentry","componentFrameCache","PossiblyWeakMap","describeNativeComponentFrame","fn","construct","frame","control","previousPrepareStackTrace","previousDispatcher","Fake","sample","sampleLines","controlLines","s","c","_frame","syntheticFrame","describeFunctionComponentFrame","shouldConstruct","Component","prototype","describeUnknownElementTypeFrameInDEV","hasOwnProperty","loggedTypeFailures","setCurrentlyValidatingElement","element","owner","checkPropTypes","typeSpecs","values","location","componentName","has","typeSpecName","error$1","err","ex","isArrayImpl","isArray","typeName","value","hasToStringTag","willCoercionThrow","testStringCoercion","checkKeyStringCoercion","ReactCurrentOwner","RESERVED_PROPS","specialPropKeyWarningShown","specialPropRefWarningShown","hasValidRef","config","getter","hasValidKey","warnIfStringRefCannotBeAutoConverted","self","defineKeyPropWarningGetter","warnAboutAccessingKey","defineRefPropWarningGetter","warnAboutAccessingRef","ReactElement","key","ref","jsxDEV","maybeKey","propName","defaultProps","ReactCurrentOwner$1","ReactDebugCurrentFrame$1","setCurrentlyValidatingElement$1","propTypesMisspellWarningShown","isValidElement","object","getDeclarationErrorAddendum","getSourceInfoErrorAddendum","ownerHasKeyUseWarning","getCurrentComponentErrorInfo","parentType","info","parentName","validateExplicitKey","currentComponentErrorInfo","childOwner","validateChildKeys","node","child","iteratorFn","iterator","step","validatePropTypes","propTypes","_name","validateFragmentProps","fragment","keys","didWarnAboutKeySpread","jsxWithValidation","isStaticChildren","validType","sourceInfo","typeString","children","beforeExample","afterExample","jsxWithValidationStatic","jsxWithValidationDynamic","jsx","jsxs","reactJsxRuntime_development","jsxRuntimeModule","require$$1","_yuntoo_antdMeta","getCommonAttr","antd_1","renderEmptyState","options","description","iconUrl","Empty","_antDesign_icons","OneSearch","_context","__designMode","datasetId","oneSearchFilterKey","showYtFilter","setShowYtFilter","ytFetch","userInput","setUserInput","useState","searchLoading","setSearchLoading","modelProperties","setModelProperties","asyncGetModelProperties","datasetCode","datasetColumns","code","deleted","visible","extend","extendObj","asyncModelCallFilter","prompt","properties","userPrompt","res","onSearch","filter","Input","Button","FilterOutlined","LrSmartFilter","forwardRef","customProps","items","YtFilter","LrSmartCreate","YtForm","LrSmartUpdate","LrSmartDetail","LrSmartTable","columns","YtTable","listCacheClear","_listCacheClear","eq","other","eq_1","assocIndexOf","length","_assocIndexOf","arrayProto","splice","listCacheDelete","data","index","lastIndex","_listCacheDelete","listCacheGet","_listCacheGet","listCacheHas","_listCacheHas","listCacheSet","_listCacheSet","require$$2","require$$3","require$$4","ListCache","entries","entry","_ListCache","stackClear","_stackClear","stackDelete","result","_stackDelete","stackGet","_stackGet","stackHas","_stackHas","freeGlobal","global","_freeGlobal","freeSelf","root","_root","Symbol","_Symbol","objectProto","nativeObjectToString","symToStringTag","getRawTag","isOwn","tag","unmasked","_getRawTag","objectToString","_objectToString","nullTag","undefinedTag","baseGetTag","_baseGetTag","isObject","isObject_1","asyncTag","funcTag","genTag","proxyTag","isFunction","isFunction_1","coreJsData","_coreJsData","maskSrcKey","uid","isMasked","func","_isMasked","funcProto","funcToString","toSource","_toSource","reRegExpChar","reIsHostCtor","reIsNative","baseIsNative","pattern","_baseIsNative","getValue","_getValue","getNative","_getNative","Map","_Map","nativeCreate","_nativeCreate","hashClear","_hashClear","hashDelete","_hashDelete","HASH_UNDEFINED","hashGet","_hashGet","hashHas","_hashHas","hashSet","_hashSet","Hash","_Hash","mapCacheClear","_mapCacheClear","isKeyable","_isKeyable","getMapData","map","_getMapData","mapCacheDelete","_mapCacheDelete","mapCacheGet","_mapCacheGet","mapCacheHas","_mapCacheHas","mapCacheSet","size","_mapCacheSet","MapCache","_MapCache","LARGE_ARRAY_SIZE","stackSet","pairs","_stackSet","require$$5","Stack","_Stack","defineProperty","_defineProperty","baseAssignValue","_baseAssignValue","assignMergeValue","_assignMergeValue","createBaseFor","fromRight","iteratee","keysFunc","iterable","_createBaseFor","baseFor","_baseFor","freeExports","exports","freeModule","module","moduleExports","Buffer","allocUnsafe","cloneBuffer","buffer","isDeep","Uint8Array","_Uint8Array","cloneArrayBuffer","arrayBuffer","_cloneArrayBuffer","cloneTypedArray","typedArray","_cloneTypedArray","copyArray","_copyArray","objectCreate","baseCreate","proto","_baseCreate","overArg","transform","arg","_overArg","getPrototype","_getPrototype","isPrototype","Ctor","_isPrototype","initCloneObject","_initCloneObject","isObjectLike","isObjectLike_1","argsTag","baseIsArguments","_baseIsArguments","propertyIsEnumerable","isArguments","isArguments_1","isArray_1","MAX_SAFE_INTEGER","isLength","isLength_1","isArrayLike","isArrayLike_1","isArrayLikeObject","isArrayLikeObject_1","stubFalse","stubFalse_1","nativeIsBuffer","isBuffer","objectTag","objectCtorString","isPlainObject","isPlainObject_1","arrayTag","boolTag","dateTag","errorTag","mapTag","numberTag","regexpTag","setTag","stringTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","typedArrayTags","baseIsTypedArray","_baseIsTypedArray","baseUnary","_baseUnary","freeProcess","nodeUtil","types","nodeIsTypedArray","isTypedArray","isTypedArray_1","safeGet","_safeGet","assignValue","objValue","_assignValue","copyObject","customizer","isNew","newValue","_copyObject","baseTimes","n","_baseTimes","reIsUint","isIndex","_isIndex","arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","_arrayLikeKeys","nativeKeysIn","_nativeKeysIn","baseKeysIn","isProto","_baseKeysIn","keysIn","keysIn_1","toPlainObject","toPlainObject_1","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","baseMergeDeep","srcIndex","mergeFunc","srcValue","stacked","isCommon","isTyped","_baseMergeDeep","baseMerge","_baseMerge","identity","identity_1","apply","thisArg","_apply","nativeMax","overRest","start","otherArgs","_overRest","constant","constant_1","baseSetToString","string","_baseSetToString","HOT_COUNT","HOT_SPAN","nativeNow","shortOut","count","lastCalled","stamp","remaining","_shortOut","setToString","_setToString","baseRest","_baseRest","isIterateeCall","_isIterateeCall","createAssigner","assigner","sources","guard","_createAssigner","merge","merge_1","cdnThemeRegistry","convertCdnToEChartsTheme","cdnConfig","color","backgroundColor","textStyle","axisLine","splitLine","textColor","getTheme","themeName","cdnTheme","getDefaultTheme","defaultCdnTheme","YUNTOO_THEME","applyYuntooTheme","option","chartType","customTheme","defaultTheme","colorPalette","themeTextColor","themeBackgroundColor","themeBorderColor","themeSplitLineColor","titleConfig","common","byChartType","userTooltip","tooltipConfig","axis","axisNameConfig","axisItem","mergedAxisConfig","legendConfig","constraints","pieDefaultLegend","userSeries","hexToRgba","hex","alpha","r","seriesIndex","baseColor","gradientAreaStyle","getStatisticThemeColor","BusinessExecutor","funcStr","record","cleaned","safeGlobals","obj","allowedProps","validated","prop","businessExecutor","ChartDataProcessor","chartCard","statistic_config","valueField","valueStyle","restConfig","dataValue","finalValueStyle","errorMsg","errorCode","echarts_config","dataMapping","theme","dimensionField","dimensionAlias","processedOption","dimensionValues","processedMetrics","metric","processedData","hasRightAxis","userConfiguredYAxisArray","leftMetrics","rightMetrics","userSeriesConfig","firstMetric","seriesType","yAxisIndex","userRadarConfig","indicators","maxValue","radarData","xMetric","yMetric","uniqueDimensions","dimValue","seriesData","displayText","formatterStr","echarts_1","getErrorConfig","useEChartsInstances","chartRefs","useRef","chartInstances","initializationStatus","resizeObservers","initChart","useCallback","uniqueId","title","onInitialized","chartRef","rect","existingInstance","chartInstance","echarts.init","existingObserver","resizeObserver","resizeTimer","resizeAllCharts","destroyAllCharts","instance","observer","resetChartStatus","setChartRef","useChartRenderer","cardItem","chartData","statisticProps","cardIndex","className","style","__id","renderChartContent","display_type","errorConfig","Statistic","Result","processedStatisticProps","formatterString","onEChartsRefSet","el","content","statisticContainerStyle","useChartLifecycle","processedEChartsConfig","echartsManager","useEffect","echartsTitle","cardTitle","finalTitle","timeoutId","LrSmartChartBase","chartDataSource","dataSource","componentId","_uniqueId","actualDataSource","dataSourceId","deferredDataSource","useDeferredValue","apiError","useMemo","errorKey","tableData","renderChart","echartsRef","LrSmartChart","memo","prevProps","nextProps","prevData","nextData","isCardEqual","isSameIndex","LrSmartStatistic","enhancedCardItem","LrSmartEcharts","ErrorBoundaryContext","createContext","initialState","ErrorBoundary","_this$props$onReset","_this$props","_len","_key","_this$props$onError","_this$props2","prevState","didCatch","resetKeys","hasArrayChanged","_this$props$onReset2","_this$props3","fallbackRender","FallbackComponent","fallback","childToRender","createElement","LrSmartJsx","render","showErrorStark","setShowErrorStark","renderErrorFallback"],"mappings":"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AC5DO,EAAU1X,EAAQ3E,EAAQ8b,CAAQ,CACpC,CAAC,EAED,OAAA6C,GAAiBD,gCCHJE,GAAsD,CACjE,QAAW,CACT,KAAQ,OACR,YAAe,aACf,MAAS,YACT,OAAU,CACR,MAAS,CACP,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SAAA,EAEF,gBAAmB,UACnB,UAAa,CACX,MAAS,SAAA,EAEX,SAAY,CACV,UAAa,CACX,MAAS,SAAA,CACX,EAEF,UAAa,CACX,UAAa,CACX,MAAS,SAAA,CACX,CACF,CACF,EAEF,SAAY,CACV,KAAQ,OACR,YAAe,YACf,MAAS,YACT,OAAU,CACR,MAAS,CACP,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SAAA,EAEF,gBAAmB,UACnB,UAAa,CACX,MAAS,SAAA,EAEX,SAAY,CACV,UAAa,CACX,MAAS,SAAA,CACX,EAEF,UAAa,CACX,UAAa,CACX,MAAS,SAAA,CACX,CACF,CACF,EAEF,MAAS,CACP,KAAQ,OACR,YAAe,YACf,MAAS,WACT,OAAU,CACR,MAAS,CACP,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SAAA,EAEF,gBAAmB,UACnB,UAAa,CACX,MAAS,SAAA,EAEX,SAAY,CACV,UAAa,CACX,MAAS,SAAA,CACX,EAEF,UAAa,CACX,UAAa,CACX,MAAS,SAAA,CACX,CACF,CACF,EAEF,MAAS,CACP,KAAQ,OACR,YAAe,YACf,MAAS,YACT,OAAU,CACR,MAAS,CACP,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SAAA,EAEF,gBAAmB,UACnB,UAAa,CACX,MAAS,SAAA,EAEX,SAAY,CACV,UAAa,CACX,MAAS,SAAA,CACX,EAEF,UAAa,CACX,UAAa,CACX,MAAS,SAAA,CACX,CACF,CACF,EAEF,OAAU,CACR,KAAQ,OACR,YAAe,YACf,MAAS,UACT,OAAU,CACR,MAAS,CACP,UACA,UACA,UACA,UACA,UACA,SAAA,EAEF,gBAAmB,UACnB,UAAa,CACX,MAAS,SAAA,EAEX,SAAY,CACV,UAAa,CACX,MAAS,SAAA,CACX,EAEF,UAAa,CACX,UAAa,CACX,MAAS,SAAA,CACX,CACF,CACF,EAEF,OAAU,CACR,KAAQ,OACR,YAAe,WACf,MAAS,aACT,OAAU,CACR,MAAS,CACP,UACA,UACA,UACA,UACA,UACA,SAAA,EAEF,gBAAmB,UACnB,UAAa,CACX,MAAS,SAAA,EAEX,SAAY,CACV,UAAa,CACX,MAAS,SAAA,CACX,EAEF,UAAa,CACX,UAAa,CACX,MAAS,SAAA,CACX,CACF,CACF,EAEF,SAAY,CACV,KAAQ,OACR,YAAe,YACf,MAAS,WACT,OAAU,CACR,MAAS,CACP,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SAAA,EAEF,gBAAmB,mBACnB,UAAa,CACX,MAAS,SAAA,EAEX,SAAY,CACV,UAAa,CACX,MAAS,SAAA,CACX,EAEF,UAAa,CACX,UAAa,CACX,MAAS,SAAA,CACX,CACF,CACF,EAEF,MAAS,CACP,KAAQ,OACR,YAAe,aACf,MAAS,cACT,OAAU,CACR,MAAS,CACP,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SAAA,EAEF,gBAAmB,UACnB,UAAa,CACX,MAAS,SAAA,EAEX,SAAY,CACV,UAAa,CACX,MAAS,SAAA,CACX,EAEF,UAAa,CACX,UAAa,CACX,MAAS,SAAA,CACX,CACF,CACF,EAEF,SAAY,CACV,KAAQ,OACR,YAAe,YACf,MAAS,YACT,OAAU,CACR,MAAS,CACP,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SAAA,EAEF,gBAAmB,UACnB,UAAa,CACX,MAAS,SAAA,EAEX,SAAY,CACV,UAAa,CACX,MAAS,SAAA,CACX,EAEF,UAAa,CACX,UAAa,CACX,MAAS,SAAA,CACX,CACF,CACF,EAEF,OAAU,CACR,KAAQ,OACR,YAAe,YACf,MAAS,aACT,OAAU,CACR,MAAS,C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","x_google_ignoreList":[0,1,2,3,4,5,7,9,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,117,122]}