{"version":3,"file":"yuntoo-meta.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/antd.js","../../../../antd-ext/src/components/yt-button/index.tsx","../../../node_modules/.vite_external/lodash.js","../../../../antd-ext/src/components/yt-table/core/pipeline.ts","../../../../antd-ext/src/components/yt-table/format/text-formatter.tsx","../../../../antd-ext/src/components/yt-table/format/link-formatter.tsx","../../../../antd-ext/src/components/yt-table/format/number-formatter.tsx","../../../../antd-ext/src/components/yt-table/format/progress-formatter.tsx","../../../../antd-ext/src/components/yt-table/format/percent-formatter.tsx","../../../../antd-ext/src/components/yt-table/format/tag-formatter.tsx","../../../node_modules/.vite_external/dayjs.js","../../../../antd-ext/src/components/yt-table/format/date-formatter.tsx","../../../../antd-ext/src/components/yt-table/format/enum-formatter.tsx","../../../../antd-ext/src/components/yt-table/format/address-formatter.tsx","../../../node_modules/.vite_external/@ant-design_icons.js","../../../../../node_modules/.pnpm/@yuntoo+fetch@1.0.20_typescript@5.8.3/node_modules/@yuntoo/fetch/utils/is-node-env.ts","../../../../../node_modules/.pnpm/@yuntoo+fetch@1.0.20_typescript@5.8.3/node_modules/@yuntoo/fetch/utils/get-env.ts","../../../../../node_modules/.pnpm/@yuntoo+fetch@1.0.20_typescript@5.8.3/node_modules/@yuntoo/fetch/utils/get-api-prefix.ts","../../../../../node_modules/.pnpm/@yuntoo+fetch@1.0.20_typescript@5.8.3/node_modules/@yuntoo/fetch/fetch/process-response.ts","../../../../../node_modules/.pnpm/@yuntoo+fetch@1.0.20_typescript@5.8.3/node_modules/@yuntoo/fetch/utils/traceparent.ts","../../../../../node_modules/.pnpm/@yuntoo+fetch@1.0.20_typescript@5.8.3/node_modules/@yuntoo/fetch/utils/get-header.ts","../../../../../node_modules/.pnpm/@yuntoo+fetch@1.0.20_typescript@5.8.3/node_modules/@yuntoo/fetch/fetch/get.ts","../../../../../node_modules/.pnpm/@yuntoo+fetch@1.0.20_typescript@5.8.3/node_modules/@yuntoo/fetch/fetch/post.ts","../../../../../node_modules/.pnpm/@yuntoo+fetch@1.0.20_typescript@5.8.3/node_modules/@yuntoo/fetch/fetch/yt-fetch.ts","../../../../../node_modules/.pnpm/@yuntoo+fetch@1.0.20_typescript@5.8.3/node_modules/@yuntoo/fetch/utils/get-runtime-api-prefix.ts","../../../../antd-ext/src/components/yt-table/utils/upload-utils.ts","../../../../antd-ext/src/components/yt-table/utils/upload-list.tsx","../../../../antd-ext/src/components/yt-table/utils/file-preview-modal.tsx","../../../../antd-ext/src/components/yt-table/format/upload-formatter.tsx","../../../../antd-ext/src/components/yt-table/format/image-formatter.tsx","../../../../antd-ext/src/components/yt-table/format/user-formatter.tsx","../../../../antd-ext/src/components/yt-table/utils/file-preview.tsx","../../../../antd-ext/src/components/yt-table/format/file-formatter.tsx","../../../../antd-ext/src/components/yt-table/format/index.ts","../../../../antd-ext/src/components/yt-table/core/processors/columns-processor.tsx","../../../../antd-ext/src/components/yt-table/core/processors/props-processor.ts","../../../../antd-ext/src/components/yt-table/core/processors/state-processor.ts","../../../../antd-ext/src/components/yt-table/core/hooks/use-table-pipeline.ts","../../../../antd-ext/src/components/yt-table/components/column-set/utils.ts","../../../../antd-ext/src/components/yt-table/components/column-set/context.tsx","../../../../../node_modules/.pnpm/ahooks@3.7.8_react@18.3.1/node_modules/ahooks/es/utils/index.js","../../../../../node_modules/.pnpm/ahooks@3.7.8_react@18.3.1/node_modules/ahooks/es/utils/isDev.js","../../../../../node_modules/.pnpm/ahooks@3.7.8_react@18.3.1/node_modules/ahooks/es/utils/depsAreSame.js","../../../../../node_modules/.pnpm/ahooks@3.7.8_react@18.3.1/node_modules/ahooks/es/useLatest/index.js","../../../../../node_modules/.pnpm/ahooks@3.7.8_react@18.3.1/node_modules/ahooks/es/useUnmount/index.js","../../../../../node_modules/.pnpm/ahooks@3.7.8_react@18.3.1/node_modules/ahooks/es/utils/isBrowser.js","../../../../../node_modules/.pnpm/ahooks@3.7.8_react@18.3.1/node_modules/ahooks/es/utils/domTarget.js","../../../../../node_modules/.pnpm/ahooks@3.7.8_react@18.3.1/node_modules/ahooks/es/utils/createEffectWithTarget.js","../../../../../node_modules/.pnpm/ahooks@3.7.8_react@18.3.1/node_modules/ahooks/es/utils/useEffectWithTarget.js","../../../../../node_modules/.pnpm/ahooks@3.7.8_react@18.3.1/node_modules/ahooks/es/useDrag/index.js","../../../../../node_modules/.pnpm/ahooks@3.7.8_react@18.3.1/node_modules/ahooks/es/useDrop/index.js","../../../../../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/global/dist/index.js","../../../../../node_modules/.pnpm/resize-observer-polyfill@1.5.1/node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","../../../../antd-ext/src/components/yt-table/components/column-set/column-item.tsx","../../../../antd-ext/src/components/yt-table/components/column-set/fixed-columns.tsx","../../../../antd-ext/src/components/yt-table/components/column-set/dialog.tsx","../../../../antd-ext/src/components/yt-table/components/column-set/popup.tsx","../../../../antd-ext/src/components/yt-table/components/column-set/icons.tsx","../../../../antd-ext/src/components/yt-table/components/column-set/storage.ts","../../../../antd-ext/src/components/yt-table/components/column-set/column-set.tsx","../../../../antd-ext/src/components/yt-table/components/selection-total.tsx","../../../../antd-ext/src/components/yt-table/components/tool-bar.tsx","../../../../antd-ext/src/_utils/index.ts","../../../../antd-ext/src/components/yt-table/index.tsx","../../../../../node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/index.js","../../../../antd-ext/src/components/yt-layout/common/constant.ts","../../../../antd-ext/src/components/yt-layout/common/context.ts","../../../../../node_modules/.pnpm/eventemitter3@5.0.1/node_modules/eventemitter3/index.js","../../../../antd-ext/src/components/yt-layout/event.ts","../../../../antd-ext/src/components/yt-layout/util.ts","../../../../antd-ext/src/components/yt-layout/hooks/use-flex-class-names.ts","../../../../antd-ext/src/components/yt-layout/cell.tsx","../../../../antd-ext/src/components/yt-layout/block.tsx","../../../../antd-ext/src/components/yt-layout/section.tsx","../../../../antd-ext/src/components/yt-rich-editor/hooks/use-neditor-loader.js","../../../../antd-ext/src/components/yt-rich-editor/hooks/use-neditor-instance.js","../../../../antd-ext/src/components/yt-rich-editor/hooks/use-neditor-content.js","../../../../antd-ext/src/components/yt-rich-editor/index.tsx","../../../../antd-ext/src/components/yt-rule-tree/components/RelationBar.tsx","../../../../antd-ext/src/components/yt-rule-tree/utils.ts","../../../../antd-ext/src/components/yt-rule-tree/components/RuleTreeRule.tsx","../../../../antd-ext/src/components/yt-rule-tree/components/RuleGroupActions.tsx","../../../../antd-ext/src/components/yt-rule-tree/Context.ts","../../../../antd-ext/src/components/yt-rule-tree/components/RuleTreeRuleGroup.tsx","../../../../antd-ext/src/components/yt-rule-tree/hooks/useFieldState.ts","../../../../antd-ext/src/components/yt-rule-tree/index.tsx","../../../../antd-ext/src/components/yt-amount-input/utils.ts","../../../../antd-ext/src/components/yt-amount-input/index.tsx","../../../../antd-ext/src/components/yt-currency-select/currencyMap.ts","../../../../antd-ext/src/components/yt-currency-select/index.tsx","../../../src/_utils/form-item-register/comp.tsx","../../../src/components/yt-table/format/component-formatter.tsx","../../../src/components/yt-table/format/init.ts","../../../../../node_modules/.pnpm/dayjs@1.11.10/node_modules/dayjs/plugin/weekday.js","../../../../../node_modules/.pnpm/dayjs@1.11.10/node_modules/dayjs/plugin/localeData.js","../../../src/components/utils/date.ts","../../../src/components/utils/hoc.tsx","../../../src/components/skeleton/view.tsx","../../../src/components/slider/view.tsx","../../../src/components/slot/view.tsx","../../../src/components/utils/warning.ts","../../../src/components/tabs/view.tsx","../../../src/components/upload/view.tsx","../../../src/_position/button-position.ts","../../../src/_action/dialog/view.tsx","../../../src/_action/close-dialog/view.tsx","../../../src/_action/flow-action/view.tsx","../../../src/_action/message/view.tsx","../../../src/_utils/request.tsx","../../../src/_action/request/view.tsx","../../../../../node_modules/.pnpm/decode-uri-component@0.4.1/node_modules/decode-uri-component/index.js","../../../../../node_modules/.pnpm/filter-obj@5.1.0/node_modules/filter-obj/index.js","../../../../../node_modules/.pnpm/split-on-first@3.0.0/node_modules/split-on-first/index.js","../../../../../node_modules/.pnpm/query-string@9.2.1/node_modules/query-string/base.js","../../../src/_action/link/view.tsx","../../../src/_action/reset/view.tsx","../../../src/_action/submit/view.tsx","../../../src/_action/js-action/view.tsx","../../../src/_action/index.tsx","../../../src/_utils/const.ts","../../../src/_utils/utils.tsx","../../../src/components/card/view.tsx","../../../src/_utils/form-item.tsx","../../../src/form/yt-timepicker/view.tsx","../../../src/form/yt-input/view.tsx","../../../src/form/yt-input-number/view.tsx","../../../src/form/yt-amount-input/view.tsx","../../../src/_utils/find-parent-dialog.ts","../../../src/_utils/form-item-register/meta.ts","../../../src/form/yt-textarea/view.tsx","../../../src/form/yt-single-select/view.tsx","../../../src/form/yt-currency-select/view.tsx","../../../src/form/yt-multi-select/view.tsx","../../../src/form/yt-checkbox-group/view.tsx","../../../src/form/yt-radio-group/view.tsx","../../../src/form/yt-datepicker/view.tsx","../../../src/form/yt-cascader/view.tsx","../../../src/form/yt-switch/view.tsx","../../../src/form/yt-range-datepicker/view.tsx","../../../src/form/yt-range-timepicker/view.tsx","../../../src/form/yt-rich-editor/view.tsx","../../../src/form/yt-single-tree-select/view.tsx","../../../src/form/yt-multi-tree-select/view.tsx","../../../src/form/yt-transfer/view.tsx","../../../src/form/yt-input-password/view.tsx","../../../src/form/yt-rate/view.tsx","../../../../antd-ext/src/components/yt-table/utils/address-loader.ts","../../../src/form/yt-address-picker/view.tsx","../../../src/form/yt-range-input-number/view.tsx","../../../src/form/yt-upload/view.tsx","../../../../smart-schema-converter/src/const.ts","../../../src/form/yt-user-select/use-user-list.ts","../../../src/form/yt-user-select/user-select.tsx","../../../src/form/yt-user-select/view.tsx","../../../src/components/yt-drawer/view.tsx","../../../src/components/yt-filter/const.ts","../../../src/components/yt-filter/view.tsx","../../../src/components/yt-form/const.ts","../../../src/components/yt-form/view.tsx","../../../src/components/yt-layout/util.ts","../../../src/components/yt-layout/view.tsx","../../../src/components/yt-layout-block/view.tsx","../../../src/components/yt-modal/view.tsx","../../../../../node_modules/.pnpm/rc-pagination@5.0.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/rc-pagination/es/locale/zh_CN.js","../../../../../node_modules/.pnpm/@babel+runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/typeof.js","../../../../../node_modules/.pnpm/@babel+runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../../../../../node_modules/.pnpm/@babel+runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../../../../../node_modules/.pnpm/@babel+runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../../../../node_modules/.pnpm/@babel+runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../../../../../node_modules/.pnpm/rc-picker@4.9.2_dayjs@1.11.13_moment@2.30.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/rc-picker/es/locale/common.js","../../../../../node_modules/.pnpm/rc-picker@4.9.2_dayjs@1.11.13_moment@2.30.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/rc-picker/es/locale/zh_CN.js","../../../../../node_modules/.pnpm/antd@5.23.3_moment@2.30.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/antd/es/time-picker/locale/zh_CN.js","../../../../../node_modules/.pnpm/antd@5.23.3_moment@2.30.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/antd/es/date-picker/locale/zh_CN.js","../../../../../node_modules/.pnpm/antd@5.23.3_moment@2.30.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/antd/es/locale/zh_CN.js","../../../src/components/yt-page/view.tsx","../../../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/esm/v3/helpers/util.js","../../../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/esm/v3/ZodError.js","../../../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/esm/v3/locales/en.js","../../../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/esm/v3/errors.js","../../../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/esm/v3/helpers/parseUtil.js","../../../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/esm/v3/helpers/errorUtil.js","../../../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/esm/v3/types.js","../../../src/components/yt-table/utils/datasource-validate.ts","../../../src/components/yt-table/view.tsx","../../../../../node_modules/.pnpm/fast-equals@4.0.3/node_modules/fast-equals/dist/fast-equals.js","../../../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.js","../../../../../node_modules/.pnpm/react-grid-layout@1.5.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-grid-layout/build/fastRGLPropsEqual.js","../../../../../node_modules/.pnpm/react-grid-layout@1.5.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-grid-layout/build/utils.js","../../../../../node_modules/.pnpm/react-grid-layout@1.5.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-grid-layout/build/calculateUtils.js","../../../node_modules/.vite_external/react-dom.js","../../../node_modules/.vite_external/prop-types.js","../../../../../node_modules/.pnpm/react-draggable@4.5.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-draggable/build/cjs/utils/shims.js","../../../../../node_modules/.pnpm/react-draggable@4.5.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-draggable/build/cjs/utils/getPrefix.js","../../../../../node_modules/.pnpm/react-draggable@4.5.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-draggable/build/cjs/utils/domFns.js","../../../../../node_modules/.pnpm/react-draggable@4.5.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-draggable/build/cjs/utils/positionFns.js","../../../../../node_modules/.pnpm/react-draggable@4.5.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-draggable/build/cjs/utils/log.js","../../../../../node_modules/.pnpm/react-draggable@4.5.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-draggable/build/cjs/DraggableCore.js","../../../../../node_modules/.pnpm/react-draggable@4.5.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-draggable/build/cjs/Draggable.js","../../../../../node_modules/.pnpm/react-draggable@4.5.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-draggable/build/cjs/cjs.js","../../../../../node_modules/.pnpm/react-resizable@3.0.5_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-resizable/build/utils.js","../../../../../node_modules/.pnpm/react-resizable@3.0.5_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-resizable/build/propTypes.js","../../../../../node_modules/.pnpm/react-resizable@3.0.5_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-resizable/build/Resizable.js","../../../../../node_modules/.pnpm/react-resizable@3.0.5_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-resizable/build/ResizableBox.js","../../../../../node_modules/.pnpm/react-resizable@3.0.5_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-resizable/index.js","../../../../../node_modules/.pnpm/react-grid-layout@1.5.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-grid-layout/build/ReactGridLayoutPropTypes.js","../../../../../node_modules/.pnpm/react-grid-layout@1.5.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-grid-layout/build/GridItem.js","../../../../../node_modules/.pnpm/react-grid-layout@1.5.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-grid-layout/build/ReactGridLayout.js","../../../../../node_modules/.pnpm/react-grid-layout@1.5.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-grid-layout/build/responsiveUtils.js","../../../../../node_modules/.pnpm/react-grid-layout@1.5.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-grid-layout/build/ResponsiveReactGridLayout.js","../../../../../node_modules/.pnpm/react-grid-layout@1.5.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-grid-layout/build/components/WidthProvider.js","../../../../../node_modules/.pnpm/react-grid-layout@1.5.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-grid-layout/index.js","../../../src/components/yt-rgl-container/const.ts","../../../src/components/yt-rgl-container/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 = antd;","import React, { forwardRef, Ref } from \"react\";\nimport { Button } from \"antd\";\n\nimport \"./styles/index.less\";\n\nexport const YtButton: any = forwardRef((props: any, ref: Ref<any>) => {\n  const innerProps: any = {};\n\n  if (!props.href?.trim() || props.__designMode === \"design\") {\n    // 解决低代码编辑器中按钮设置href属性造成按钮点击重定向问题\n    innerProps.href = undefined;\n  }\n\n  return <Button className=\"yt-button\" {...props} {...innerProps} ref={ref} />;\n});\n","module.exports = _;","import type { YtTableProps } from \"../types\";\n\n/**\n * 处理列配置（第一阶段）- 统一处理所有列格式\n */\nexport function processColumns(props: YtTableProps): any[] {\n  if (!Array.isArray(props.columns)) return [];\n\n  // 统一处理所有列，保持原始顺序，只过滤隐藏列\n  return props.columns.filter((column: any) => {\n    // 对于 YtTable 格式的列，检查 hidden 属性\n    if (column && typeof column === \"object\" && \"format\" in column) {\n      return !column.hidden;\n    }\n    // 对于 antd 原生格式的列，直接保留\n    return true;\n  });\n}\n\n/**\n * 处理属性配置（第二阶段）\n */\nexport function processTableProps(\n  props: YtTableProps,\n  processedColumns: any[],\n) {\n  // 构建渐进式增强属性结构\n  const initialProcessedProps = {\n    // 增强的 antd Table 属性\n    antdTableProps: {\n      dataSource: props.dataSource,\n      rowKey: props.rowKey || \"id\",\n      columns: processedColumns,\n      bordered: props.tableStyle?.bordered,\n      locale: {\n        emptyText: props.tableStyle?.emptyText || \"暂无数据\",\n      },\n      tableLayout: \"auto\" as const,\n      scroll: {\n        x: \"max-content\",\n      },\n      ...props.otherTableProps,\n    },\n\n    // YtTable 独有的扩展功能\n    ytTableExtensionProps: {\n      toolbar: props.toolbar,\n      tableStyle: props.tableStyle,\n      showSelectionTotal: props.showSelectionTotal,\n      columnSetting: props.columnSetting,\n    },\n  };\n\n  // 如果提供了 handleProps 函数，则进行处理\n  return props.handleProps\n    ? props.handleProps(initialProcessedProps)\n    : initialProcessedProps;\n}\n","import React from \"react\";\nimport { Typography } from \"antd\";\nimport { FormatContext, FormatOptions } from \"./types\";\n\nconst { Text, Paragraph } = Typography;\n\nconst MAX_LENGTH = 200;\n\n/**\n * 文本格式化处理器\n * @param context 格式化上下文\n * @param options 格式化选项\n * @returns 格式化后的文本组件\n */\nexport function textFormatter(\n  context: FormatContext,\n  options: FormatOptions = {},\n) {\n  const { value } = context;\n  const { ellipsis, copyable, ...rest } = options;\n\n  if (value === null || value === undefined || value === \"\") {\n    return \"--\";\n  }\n\n  return (\n    <>\n      {String(value).length > MAX_LENGTH ? (\n        <Paragraph copyable={copyable} ellipsis={{ rows: 4 }} {...rest}>\n          {String(value)}\n        </Paragraph>\n      ) : (\n        <Text ellipsis={ellipsis} copyable={copyable} {...rest}>\n          {String(value)}\n        </Text>\n      )}\n    </>\n  );\n}\n","import React from \"react\";\nimport { Typography } from \"antd\";\nimport { FormatContext, FormatOptions } from \"./types\";\n\nconst { Link } = Typography;\n\n/**\n * 链接格式化处理器\n * @param context 格式化上下文\n * @param options 格式化选项\n * @returns 格式化后的链接组件\n */\nexport function linkFormatter(\n  context: FormatContext,\n  options: FormatOptions = {},\n) {\n  const { value } = context;\n  const { copyable, ellipsis, href, target = \"_blank\", ...rest } = options;\n\n  if (value === null || value === undefined || value === \"\") {\n    return \"--\";\n  }\n\n  // 使用 href 选项作为链接地址，如果没有则使用 value\n  const linkHref = href || String(value);\n  const linkText = String(value);\n\n  return (\n    <Link\n      href={linkHref}\n      target={target}\n      copyable={copyable}\n      ellipsis={ellipsis}\n      {...rest}\n    >\n      {linkText}\n    </Link>\n  );\n}\n","import React from \"react\";\nimport { Typography } from \"antd\";\nimport { FormatContext, FormatOptions } from \"./types\";\n\nconst { Text } = Typography;\n\n/**\n * 格式化数字\n * @param value 数字值\n * @param precision 精度（小数位数）\n * @param separator 是否使用千位分隔符\n * @returns 格式化后的数字字符串\n */\nfunction formatNumber(value: number, precision = 0, separator = true): string {\n  if (isNaN(value)) {\n    return \"\";\n  }\n\n  // 处理精度\n  const fixedValue = precision >= 0 ? value.toFixed(precision) : String(value);\n\n  // 添加千位分隔符\n  if (separator) {\n    const parts = fixedValue.split(\".\");\n    parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n    return parts.join(\".\");\n  }\n\n  return fixedValue;\n}\n\n/**\n * 数字格式化处理器\n * @param context 格式化上下文\n * @param options 格式化选项\n * @returns 格式化后的数字组件\n */\nexport function numberFormatter(\n  context: FormatContext,\n  options: FormatOptions = {},\n) {\n  const { value } = context;\n\n  if (value === null || value === undefined || value === \"\") {\n    return \"--\";\n  }\n\n  const {\n    precision = 0,\n    separator = true,\n    prefix = \"\",\n    suffix = \"\",\n    ...rest\n  } = options;\n\n  // 确保值是数字\n  const numValue = typeof value === \"string\" ? parseFloat(value) : value;\n\n  if (numValue === undefined || numValue === null || isNaN(numValue)) {\n    return \"--\";\n  }\n\n  const formattedValue = formatNumber(numValue, precision, separator);\n\n  return (\n    <Text\n      style={{\n        textAlign: \"right\",\n      }}\n      {...rest}\n    >\n      {prefix}\n      {formattedValue}\n      {suffix}\n    </Text>\n  );\n}\n","import React from \"react\";\nimport { Progress } from \"antd\";\nimport { FormatContext, FormatOptions } from \"./types\";\n\n/**\n * 进度条格式化处理器\n * @param context 格式化上下文\n * @param options 格式化选项\n * @returns 格式化后的进度条组件\n */\nexport function progressFormatter(\n  context: FormatContext,\n  options: FormatOptions = {},\n) {\n  const { value } = context;\n  if (value === null || value === undefined || value === \"\") {\n    return \"--\";\n  }\n  const { showInfo = true, size = \"default\", format, ...rest } = options;\n\n  // 确保值是数字并在 0-100 范围内\n  let percent = 0;\n  if (typeof value === \"number\") {\n    percent = Math.min(100, Math.max(0, value));\n  } else if (typeof value === \"string\") {\n    const parsed = parseFloat(value);\n    if (!isNaN(parsed)) {\n      percent = Math.min(100, Math.max(0, parsed));\n    }\n  }\n\n  return (\n    <Progress percent={percent} showInfo={showInfo} size={size} {...rest} />\n  );\n}\n","import React from \"react\";\nimport { Typography } from \"antd\";\nimport { FormatContext, FormatOptions } from \"./types\";\n\nconst { Text } = Typography;\n\n/**\n * 百分比格式化处理器\n * @param context 格式化上下文\n * @param options 格式化选项\n * @returns 格式化后的百分比组件\n */\nexport function percentFormatter(\n  context: FormatContext,\n  options: FormatOptions = {},\n) {\n  const { value } = context;\n  if (value === null || value === undefined || value === \"\") {\n    return \"--\";\n  }\n  const { precision = 0, showSymbol = true, ...rest } = options;\n\n  // 确保值是数字\n  let numValue: number;\n  if (typeof value === \"number\") {\n    numValue = value;\n  } else if (typeof value === \"string\") {\n    // 尝试解析百分比字符串（如 \"25%\"）\n    if (value.endsWith(\"%\")) {\n      numValue = parseFloat(value.slice(0, -1));\n    } else {\n      numValue = parseFloat(value);\n    }\n  } else {\n    return \"\";\n  }\n\n  if (isNaN(numValue)) {\n    return \"\";\n  }\n\n  // 格式化为百分比\n  const formattedValue = numValue.toFixed(precision);\n  const symbol = showSymbol ? \"%\" : \"\";\n\n  return (\n    <Text {...rest}>\n      {formattedValue}\n      {symbol}\n    </Text>\n  );\n}\n","import React from \"react\";\nimport { Tag } from \"antd\";\nimport { FormatContext, FormatOptions } from \"./types\";\n\n// 预设标签颜色映射\nconst tagColorMap: Record<string, string> = {\n  success: \"success\",\n  error: \"error\",\n  warning: \"warning\",\n  processing: \"processing\",\n  default: \"default\",\n  成功: \"success\",\n  失败: \"error\",\n  警告: \"warning\",\n  进行中: \"processing\",\n  默认: \"default\",\n};\n\n/**\n * 标签格式化处理器\n * @param context 格式化上下文\n * @param options 格式化选项\n * @returns 格式化后的标签组件\n */\nexport function tagFormatter(\n  context: FormatContext,\n  options: FormatOptions = {},\n) {\n  const { value } = context;\n  // 值到颜色的映射，优先级高于 tagColorMap\n  const { color, colorMapping, options: optionsList } = options;\n\n  if (value == null || value === \"\") return \"--\";\n\n  // 确定标签颜色\n  // 如果选项中直接提供了颜色，使用它 如果提供了自定义映射，尝试从中获取\n  const tagColor =\n    color ?? colorMapping?.[value] ?? tagColorMap[value as string];\n\n  // 根据 value 反查 label\n  const displayValue =\n    optionsList?.find((opt) => (opt.value ?? opt.key) === value)?.label ??\n    value;\n\n  return <Tag color={tagColor}>{String(displayValue)}</Tag>;\n}\n","module.exports = dayjs;","import React from \"react\";\nimport { Typography } from \"antd\";\nimport dayjs from \"dayjs\";\nimport { FormatContext, FormatOptions } from \"./types\";\n\nconst { Text } = Typography;\n\n/**\n * 格式化日期\n * @param value 日期值（可以是时间戳、字符串或Dayjs对象）\n * @param format 日期格式\n * @param valueType 值类型\n * @returns 格式化后的日期字符串\n */\nfunction formatDate(\n  value: any,\n  format = \"YYYY-MM-DD\",\n  valueType: \"timestamp\" | \"string\" | \"dayjs\" = \"string\",\n): string {\n  if (value === undefined || value === null || value === \"\") {\n    return \"\";\n  }\n\n  try {\n    let dayjsObj;\n\n    // 根据值类型创建 dayjs 对象\n    switch (valueType) {\n      case \"timestamp\":\n        // 如果是字符串形式的时间戳，先转为数字\n        const timestamp =\n          typeof value === \"string\" ? parseInt(value, 10) : value;\n        dayjsObj = dayjs(timestamp);\n        break;\n\n      case \"dayjs\":\n        // 已经是 dayjs 对象\n        dayjsObj = value;\n        break;\n\n      case \"string\":\n      default:\n        // 字符串日期\n        dayjsObj = dayjs(Number(value));\n        break;\n    }\n\n    // 检查是否有效日期\n    if (!dayjsObj.isValid()) {\n      return String(value);\n    }\n\n    return dayjsObj.format(format);\n  } catch (error) {\n    // 解析失败，返回原始值\n    return String(value);\n  }\n}\n\n/**\n * 日期格式化处理器\n * @param context 格式化上下文\n * @param options 格式化选项\n * @returns 格式化后的日期组件\n */\nexport function dateFormatter(\n  context: FormatContext,\n  options: FormatOptions = {},\n) {\n  const { value } = context;\n  if (value === null || value === undefined || value === \"\") {\n    return \"--\";\n  }\n  if (Array.isArray(value) && value.length === 0) return \"--\";\n\n  const {\n    format = \"YYYY-MM-DD\",\n    customFormat,\n    valueType = \"string\",\n    className,\n    style,\n  } = options;\n\n  // 使用自定义格式（如果提供）\n  const dateFormat =\n    format === \"custom\" && customFormat ? customFormat : format;\n\n  let formattedValue;\n\n  // 格式化日期\n  if (Array.isArray(value)) {\n    if (value.length === 1) {\n      formattedValue = `${(formatDate(value[0]), dateFormat, valueType)} - --`;\n    } else {\n      const dayStart = value[0]\n        ? formatDate(value[0], dateFormat, valueType)\n        : \"--\";\n      const dayEnd = value[1]\n        ? formatDate(value[1], dateFormat, valueType)\n        : \"--\";\n\n      formattedValue = `${dayStart} - ${dayEnd}`;\n    }\n  } else {\n    formattedValue = formatDate(value, dateFormat, valueType as any);\n  }\n\n  return (\n    <Text className={className} style={style}>\n      {formattedValue}\n    </Text>\n  );\n}\n","import React from \"react\";\nimport { Tag } from \"antd\";\nimport { FormatContext, FormatOptions } from \"./types\";\n\n/**\n * 枚举格式化处理器\n * 从 record[`${dataIndex}_label`] 获取枚举标签\n * 支持 showTag 选项：以 Tag 组件形式展示枚举值\n */\nexport function enumFormatter(\n  context: FormatContext,\n  options: FormatOptions = {},\n) {\n  const { value, dataIndex, record } = context;\n  const { type = \"select\", trueText, falseText, showTag } = options;\n\n  if (type === \"switch\") {\n    return Boolean(value) ? trueText || \"是\" : falseText || \"否\";\n  }\n\n  if (\n    value === null ||\n    value === undefined ||\n    value === \"\" ||\n    value.length === 0\n  ) {\n    return \"--\";\n  }\n\n  const labelOptions = record?.[`${dataIndex}_label`];\n\n  // 从 labelOptions 获取单个值的标签\n  const getLabel = (v: any): string => {\n    if (Array.isArray(labelOptions) && labelOptions.length > 0) {\n      const itemLabel = labelOptions?.find((item) => item.value === v)?.label;\n      if (itemLabel) return itemLabel;\n    }\n\n    // 没有匹配到或者没有下发 labelOptions 则直接返回值\n    return String(v);\n  };\n\n  // 渲染标签列表\n  const renderLabels = (labels: string[]) => {\n    if (labels.length === 0) return \"--\";\n    if (!showTag) return labels.join(\", \");\n\n    return (\n      <>\n        {labels.map((label, index) => (\n          <Tag key={index}>{label}</Tag>\n        ))}\n      </>\n    );\n  };\n\n  // 多选处理\n  if (Array.isArray(value)) {\n    const labels = value.map(getLabel).filter(Boolean);\n    return renderLabels(labels);\n  }\n\n  // 单选处理 - labelOptions 为数组时查找匹配项\n  if (Array.isArray(labelOptions) && labelOptions.length > 0) {\n    const matchedItem = labelOptions.find((item: any) => item.value === value);\n    if (matchedItem) {\n      const label = matchedItem.label;\n      return showTag ? <Tag>{label}</Tag> : label;\n    }\n  }\n\n  // 单选处理 - labelOptions 为对象时取其 label\n  if (\n    labelOptions &&\n    typeof labelOptions === \"object\" &&\n    \"label\" in labelOptions\n  ) {\n    const label = labelOptions.label;\n    return showTag ? <Tag>{label}</Tag> : label;\n  }\n\n  const label = getLabel(value);\n  return showTag ? <Tag>{label}</Tag> : label;\n}\n","import React from \"react\";\nimport { FormatContext } from \"./types\";\n\nexport function addressFormatter(context: FormatContext) {\n  const { value } = context;\n\n  if (!value?.length) return <span>--</span>;\n  if (typeof value === \"string\") return <span>{value}</span>;\n  if (!Array.isArray(value)) return <span>--</span>;\n\n  const displayText = value.map((item: any) => item.label).join(\" / \");\n  return <span>{displayText}</span>;\n}\n","module.exports = icons;","export function isNodeEnv(): boolean {\n  return (\n    typeof process !== \"undefined\" &&\n    process.versions != null &&\n    process.versions.node != null\n  );\n}\n","import type { IYTEnv } from \"../types/env\";\nimport { isNodeEnv } from \"./is-node-env\";\n\n/**\n * 获取当前环境\n * @returns 当前环境标\n */\nexport const getEnv = (): IYTEnv => {\n  if (isNodeEnv()) {\n    switch (process.env.NODE_ENV) {\n      case \"development\":\n        return \"local\";\n      case \"daily\":\n        return \"daily\";\n      case \"mini\":\n        return \"mini\";\n      default:\n        return \"online\";\n    }\n  }\n\n  try {\n    const { hostname } = location;\n\n    if (hostname.endsWith(\"mini.lovrabet.com\")) {\n      return \"mini\"; // 内网 mac mini 环境\n    }\n\n    if (hostname.endsWith(\"dev.lovrabet.com\")) {\n      return \"local\"; // 本地环境(127.0.0.1)\n    }\n\n    if (hostname.endsWith(\"daily.lovrabet.com\")) {\n      return \"daily\"; // 日常环境(公网)\n    }\n\n    if (hostname.split(\".\")[0]?.endsWith(\"-daily\")) {\n      return \"daily\"; // 日常环境\n    }\n  } catch (err) {\n    console.warn(\"[getEnv] cannot access location.hostname:\", err);\n  }\n\n  return \"online\"; // 正式环境(公网)\n};\n","import { getEnv } from \"./get-env\";\n\n/**\n * 根据当前域名获取当前环境的API前缀\n * yuntooai.com 为老域名，域名到期后可直接删除\n *\n * @returns 当前环境的API前缀\n * 根据当前环境返回对应的API前缀\n * - 内网 mac mini 环境: https://mac-mini-api-daily.office-inc.lovrabet.com\n * - 日常环境和本地环境: https://daily-api.lovrabet.com\n * - 正式环境: https://api.lovrabet.com\n */\nexport function getApiPrefix(env = getEnv()) {\n  const baseHostname = \"lovrabet.com\";\n\n  if (env === \"mini\") {\n    // 内网 mac mini 环境的API前缀\n    return `https://mac-mini-api-daily.office-inc.${baseHostname}`;\n  }\n\n  if (env === \"daily\" || env === \"local\") {\n    // 日常环境和本地环境都请求日常API\n    return `https://daily-api.${baseHostname}`;\n  }\n\n  // 正式环境请求线上API\n  return `https://api.${baseHostname}`;\n}\n","import type { IResponse } from \"../types/response\";\n\n/**\n * 处理请求\n */\nexport const processResponse = async <ResponseData>(response: Response) => {\n  if (response.ok) {\n    let result: IResponse<ResponseData>;\n    try {\n      result = await response.json();\n    } catch (e) {\n      const error = new Error(\"Failed to parse JSON response\");\n      error.response = response;\n      throw error;\n    }\n\n    if (!result?.success) {\n      const error = new Error(result.errorMsg);\n      error.response = result;\n      throw error;\n    }\n\n    return result.data;\n  }\n\n  const error = new Error(`HTTP error! status: ${response.status}`);\n  error.response = response;\n  throw error;\n};\n","import { isNodeEnv } from \"../utils/is-node-env\";\n\n/**\n * 默认从 html / headers 中获取，如果没有则生成新的 traceparent\n */\nfunction getTraceparent(headers?: HeadersInit): string | undefined {\n  if (headers) {\n    if (headers instanceof Headers) {\n      return headers.get(\"traceparent\") || undefined;\n    } else if (Array.isArray(headers)) {\n      const traceparentHeader = headers.find(\n        ([key]) => key.toLowerCase() === \"traceparent\",\n      );\n      return traceparentHeader ? traceparentHeader[1] : undefined;\n    } else {\n      const traceparentKey = Object.keys(headers).find(\n        (key) => key.toLowerCase() === \"traceparent\",\n      );\n      return traceparentKey\n        ? (headers as Record<string, string>)[traceparentKey]\n        : undefined;\n    }\n  }\n\n  if (isNodeEnv()) {\n    return undefined;\n  }\n\n  try {\n    return (\n      document\n        .querySelector('meta[name=\"traceparent\"]')\n        ?.getAttribute(\"content\") || undefined\n    );\n  } catch (e) {\n    // 在非浏览器环境下运行时，document 可能不可用\n    return undefined;\n  }\n}\n\n/**\n * 生成 traceparent\n */\nexport function generateTraceparent(headers?: HeadersInit) {\n  const parentTraceparent = getTraceparent(headers);\n  const traceId = parentTraceparent\n    ? parentTraceparent.split(\"-\")[1]\n    : Array.from(crypto.getRandomValues(new Uint8Array(16)))\n        .map((b) => b.toString(16).padStart(2, \"0\"))\n        .join(\"\");\n  // 生成 parentId\n  const parentId = Array.from(crypto.getRandomValues(new Uint8Array(8)))\n    .map((b) => b.toString(16).padStart(2, \"0\"))\n    .join(\"\");\n  const flags = \"01\";\n  return `00-${traceId}-${parentId}-${flags}`;\n}\n","export function getHeader(\n  headers: HeadersInit | undefined,\n  key: string,\n): string | undefined {\n  if (!headers) return undefined;\n  if (headers instanceof Headers) {\n    return headers.get(key) || undefined;\n  } else if (Array.isArray(headers)) {\n    const header = headers.find(([k]) => k.toLowerCase() === key.toLowerCase());\n    return header ? header[1] : undefined;\n  } else {\n    // Record<string, string>\n    const headerKey = Object.keys(headers).find(\n      (k) => k.toLowerCase() === key.toLowerCase(),\n    );\n    return headerKey\n      ? (headers as Record<string, string>)[headerKey]\n      : undefined;\n  }\n}\n","import { isNodeEnv } from \"../utils/is-node-env\";\nimport { processResponse } from \"./process-response\";\nimport { generateTraceparent } from \"../utils/traceparent\";\nimport { getHeader } from \"../utils/get-header\";\n\nexport const get = async <ResponseData>(\n  url: string,\n  params?: Record<string, any>,\n  originInit: RequestInit & { reqHeaders?: HeadersInit } = {},\n): Promise<ResponseData> => {\n  const { reqHeaders, ...init } = originInit;\n  const urlObj = isNodeEnv() ? new URL(url) : new URL(url, location.origin);\n  const cookie = getHeader(reqHeaders, \"cookie\");\n\n  // 如果请求链接包含 lovrabet.com 则带上cookie\n  const shouldIncludeCookies = urlObj.hostname.includes(\"lovrabet.com\");\n\n  if (params) {\n    for (const key of Object.keys(params)) {\n      urlObj.searchParams.append(key, String(params[key]));\n    }\n  }\n\n  const response = await fetch(urlObj.toString(), {\n    ...init,\n    headers: {\n      ...init.headers,\n      traceparent: generateTraceparent(reqHeaders),\n      ...(cookie ? { cookie } : {}),\n    },\n    credentials: shouldIncludeCookies ? \"include\" : init.credentials,\n  });\n\n  if (response.redirected) {\n    if (!isNodeEnv()) {\n      location.href = response.url;\n    }\n    // @ts-ignore 如果是重定向,则跳出了\n    return;\n  }\n\n  return await processResponse<ResponseData>(response);\n};\n","import { isNodeEnv } from \"../utils/is-node-env\";\nimport { processResponse } from \"./process-response\";\nimport { generateTraceparent } from \"../utils/traceparent\";\nimport { getHeader } from \"../utils/get-header\";\n\nexport const post = async <ResponseData>(\n  url: string,\n  body?: Record<string, any>,\n  originInit: RequestInit & { reqHeaders?: HeadersInit } = {},\n): Promise<ResponseData> => {\n  const { reqHeaders, ...init } = originInit;\n  const urlObj = isNodeEnv() ? new URL(url) : new URL(url, location.origin);\n  const cookie = getHeader(reqHeaders, \"cookie\");\n\n  // 如果请求链接包含 lovrabet.com 则带上cookie\n  const shouldIncludeCookies = urlObj.hostname.includes(\"lovrabet.com\");\n\n  const response = await fetch(url, {\n    ...init,\n    method: init.method || \"POST\",\n    headers: {\n      \"Content-Type\": \"application/json\",\n      ...init.headers,\n      traceparent: generateTraceparent(reqHeaders),\n      ...(cookie ? { cookie } : {}),\n    },\n    body: body && JSON.stringify(body),\n    credentials: shouldIncludeCookies ? \"include\" : init.credentials,\n  });\n\n  if (response.redirected) {\n    if (!isNodeEnv()) {\n      location.href = response.url;\n    }\n    // @ts-ignore 如果是重定向,则跳出了\n    return;\n  }\n\n  return await processResponse<ResponseData>(response);\n};\n","import { getApiPrefix } from \"../utils/get-api-prefix\";\nimport { get } from \"./get\";\nimport { post } from \"./post\";\n\nexport class YTFetch {\n  private baseURL = `${getApiPrefix()}`;\n\n  /**\n   * 创建请求实例\n   * @param config 配置对象\n   * @param config.baseURL 可选的基础 URL，所有相对路径请求将基于此 URL\n   */\n  constructor(config?: { baseURL?: string }) {\n    if (config?.baseURL) this.baseURL = config.baseURL;\n  }\n\n  /**\n   * 发送 GET 请求\n   * @param url 请求地址路径，可以是相对路径或绝对路径\n   * @param params 查询参数对象，会被序列化到 URL 中\n   * @param init 可选的请求配置参数，与标准 fetch API 的 RequestInit 一致\n   * @returns 返回一个 Promise，resolve 时返回请求的响应数据\n   * @template ResponseData 响应数据类型\n   * @template QueryParams 查询参数类型\n   */\n  get<ResponseData>(\n    url: string,\n    params?: Record<string, any>,\n    init: RequestInit & { reqHeaders?: HeadersInit } = {},\n  ) {\n    return get<ResponseData>(attachBaseURL(url, this.baseURL), params, init);\n  }\n\n  /**\n   * 发送 POST 请求\n   * @param url 请求地址路径，可以是相对路径或绝对路径\n   * @param body 请求体数据，会被序列化为 JSON 字符串\n   * @param init 可选的请求配置参数，与标准 fetch API 的 RequestInit 一致\n   * @returns 返回一个 Promise，resolve 时返回请求的响应数据\n   * @template ResponseData 响应数据类型\n   */\n  post<ResponseData>(\n    url: string,\n    body?: Record<string, any>,\n    init: RequestInit & { reqHeaders?: HeadersInit } = {},\n  ) {\n    return post<ResponseData>(attachBaseURL(url, this.baseURL), body, init);\n  }\n\n  /**\n   * 发送 GET 请求（get 方法的别名）\n   * @param url 请求地址路径，可以是相对路径或绝对路径\n   * @param params 查询参数对象，会被序列化到 URL 中\n   * @param init 可选的请求配置参数，与标准 fetch API 的 RequestInit 一致\n   * @returns 返回一个 Promise，resolve 时返回请求的响应数据\n   * @template ResponseData 响应数据类型\n   * @template QueryParams 查询参数类型\n   */\n  GET<ResponseData>(\n    url: string,\n    params?: Record<string, any>,\n    init: RequestInit & { reqHeaders?: HeadersInit } = {},\n  ) {\n    return this.get<ResponseData>(url, params, init);\n  }\n\n  /**\n   * 发送 POST 请求（post 方法的别名）\n   * @param url 请求地址路径，可以是相对路径或绝对路径\n   * @param body 请求体数据，会被序列化为 JSON 字符串\n   * @param init 可选的请求配置参数，与标准 fetch API 的 RequestInit 一致\n   * @returns 返回一个 Promise，resolve 时返回请求的响应数据\n   * @template ResponseData 响应数据类型\n   */\n  POST<ResponseData>(\n    url: string,\n    body?: Record<string, any>,\n    init: RequestInit & { reqHeaders?: HeadersInit } = {},\n  ) {\n    return this.post<ResponseData>(url, body, init);\n  }\n}\n\n/**\n * @param url API 地址\n * @param baseURL https://example.com/, api 口的基础路径\n * @returns 拼接后的完整 URL\n */\nfunction attachBaseURL(url: string, baseURL?: string) {\n  try {\n    // 若 url 是完整的 URL，则直接返回\n    return new URL(url).toString();\n  } catch {}\n\n  // 统一移除 baseURL 末尾的 /\n  baseURL = baseURL?.replace(/\\/+$/, \"\");\n\n  // 统一移除 url 开头的 /\n  url = url?.replace(/^\\/+/, \"\");\n\n  // 拼接\n  return `${baseURL}/${url}`;\n}\n","import { getEnv } from \"./get-env\";\nimport { isNodeEnv } from \"./is-node-env\";\n\n/**\n * 根据当前域名获取当前环境的运行时 API 前缀\n *\n * @returns 当前环境的 API 前缀\n * 根据当前环境返回对应的 API 前缀\n * - 独立化部署的场景, 优先使用配置\n * - 日常环境和本地环境: https://daily-runtime.lovrabet.com\n * - 正式环境: https://runtime.lovrabet.com\n */\nexport function getRuntimeApiPrefix(env = getEnv()) {\n  if (!isNodeEnv()) {\n    // 独立化部署的场景, 优先使用配置\n    if (window.__GLOBAL__?.deploymentConfig?.RUNTIME_API_DOMAIN) {\n      return window.__GLOBAL__.deploymentConfig.RUNTIME_API_DOMAIN;\n    }\n  }\n\n  if (env === \"daily\" || env === \"mini\" || env === \"local\") {\n    // 日常环境和本地环境都请求日常API\n    return `https://daily-runtime.lovrabet.com`;\n  }\n\n  // 正式环境请求线上API\n  return `https://runtime.lovrabet.com`;\n}\n","import { getEnv } from \"@yuntoo/fetch\";\n\n// 获取运行时域名\nexport function getRuntimeDomain() {\n  return getEnv() === \"online\"\n    ? \"https://runtime.lovrabet.com\"\n    : \"https://daily-runtime.lovrabet.com\";\n}\n\nexport interface FileItem {\n  fileName: string;\n  filePath: string;\n}\n\n// 文件图标映射\nexport const FILE_ICONS = {\n  word: \"https://i.lovrabet.com/u/AZtKF-cgcAC7GlsnsfVzWQ.png\",\n  excel: \"https://i.lovrabet.com/u/AZtKF4mXcACeg9qSqN-4Mw.png\",\n  ppt: \"https://i.lovrabet.com/u/AZtKF9NacACOGT4ibyN6KQ.png\",\n  pdf: \"https://i.lovrabet.com/u/AZtKF8DmcACfWJKNRXc26A.png\",\n  other: \"https://i.lovrabet.com/u/AZtKF6ptcACNiu5wDPtQOg.png\",\n};\n\n// 文件类型映射\nexport const FILE_TYPE_MAP: Record<string, keyof typeof FILE_ICONS> = {\n  doc: \"word\",\n  docx: \"word\",\n  xls: \"excel\",\n  xlsx: \"excel\",\n  ppt: \"ppt\",\n  pptx: \"ppt\",\n  pdf: \"pdf\",\n};\n\n/**\n * 判断文件是否为图片\n * @param name 文件名\n * @returns 是否为图片\n */\nexport const isImageFile = (name: string): boolean => {\n  const ext = name.split(\".\").pop()?.toLowerCase() || \"\";\n  return [\"jpg\", \"jpeg\", \"png\", \"gif\", \"bmp\", \"webp\", \"svg\"].includes(ext);\n};\n\n/**\n * 判断文件是否需要使用在线预览服务\n * @param name 文件名\n * @returns 是否需要在线预览\n */\nexport const needsOnlineViewer = (name: string): boolean => {\n  const ext = name.split(\".\").pop()?.toLowerCase() || \"\";\n  return [\"doc\", \"docx\", \"xls\", \"xlsx\", \"ppt\", \"pptx\"].includes(ext);\n};\n\n/**\n * 获取文件预览 URL（使用微软 Office Online Viewer）\n * @param fileUrl 文件 URL\n * @param fileName 文件名\n * @returns 预览 URL\n */\nexport const getPreviewUrl = (fileUrl: string, fileName: string): string => {\n  if (needsOnlineViewer(fileName)) {\n    return `https://view.officeapps.live.com/op/view.aspx?src=${encodeURIComponent(fileUrl)}`;\n  }\n  return fileUrl;\n};\n\n/**\n * 根据文件 URL 获取对应的图标\n * @param url 文件 URL\n * @returns 图标 URL\n */\nexport const getFileIcon = (url: string): string => {\n  const ext = url.split(\".\").pop()?.toLowerCase() || \"\";\n  return FILE_ICONS[FILE_TYPE_MAP[ext] || \"other\"];\n};\n\n/**\n * 通过 YTUpload 上传的组件，获取文件真实 oss 地址\n * @param filePath 文件路径\n * @returns 文件 URL\n */\nexport async function getFileUrl(filePath: string): Promise<string> {\n  if (!filePath) throw new Error(\"未获取到文件路径\");\n\n  // 请求接口获取文件 URL\n  const domain = getRuntimeDomain();\n  const response = await fetch(`${domain}/api/common/queryFileUrl`, {\n    method: \"POST\",\n    credentials: \"include\",\n    headers: { \"Content-Type\": \"application/json\" },\n    body: JSON.stringify({ filePath }),\n  });\n\n  if (!response.ok) throw new Error(`请求失败: ${response.status}`);\n\n  const data = await response.json();\n  const fileUrl = data?.data?.fileUrl;\n\n  if (!fileUrl) throw new Error(\"未获取到文件地址\");\n\n  return fileUrl;\n}\n\n/**\n * 预览附件 - 通过 filePath 获取真实 URL 并新建浏览器 tab 打开\n * @param file 文件信息\n */\nexport async function previewFile(file: FileItem): Promise<void> {\n  try {\n    const { filePath } = file;\n    const fileUrl = await getFileUrl(filePath);\n    window.open(fileUrl, \"_blank\");\n  } catch (error) {\n    console.error(\"预览失败:\", error);\n    throw error;\n  }\n}\n","import React from \"react\";\nimport { Space, Typography } from \"antd\";\nimport { PaperClipOutlined } from \"@ant-design/icons\";\nimport { previewFile, type FileItem } from \"./upload-utils\";\n\nconst { Link } = Typography;\n\n/**\n * 上传文件预览组件\n */\nexport interface UploadListProps {\n  files: FileItem[];\n}\n\nexport const UploadList: React.FC<UploadListProps> = ({ files }) => {\n  // 处理空值或非数组情况\n  if (!files || !Array.isArray(files) || files.length === 0) {\n    return <span>--</span>;\n  }\n\n  return (\n    <Space size={4} direction=\"vertical\">\n      {files.map((file: FileItem, index: number) => (\n        <div\n          key={file.filePath || index}\n          style={{\n            color: \"#284cc0\",\n          }}\n        >\n          <PaperClipOutlined\n            style={{\n              marginRight: 6,\n              fontSize: 14,\n            }}\n          />\n          <Link\n            onClick={(e) => {\n              previewFile(file);\n            }}\n          >\n            {file.fileName || `附件${index + 1}`}\n          </Link>\n        </div>\n      ))}\n    </Space>\n  );\n};\n","import React from \"react\";\nimport { Modal } from \"antd\";\nimport { getPreviewUrl } from \"./upload-utils\";\n\ninterface FilePreviewModalProps {\n  visible: boolean;\n  fileUrl?: string;\n  fileName: string;\n  onCancel: () => void;\n  width?: string | number;\n}\n\n/**\n * 文件预览 Modal 组件\n * 用于在 Modal 中预览文件（支持 Office 在线预览）\n */\nexport const FilePreviewModal: React.FC<FilePreviewModalProps> = ({\n  visible,\n  fileUrl,\n  fileName,\n  onCancel,\n  width = \"60%\",\n}) => {\n  return (\n    <Modal\n      className=\"file-formatter-item-modal\"\n      open={visible}\n      onCancel={onCancel}\n      width={width}\n      footer={null}\n      destroyOnClose\n      title={fileName}\n    >\n      {fileUrl && (\n        <iframe\n          src={getPreviewUrl(fileUrl, fileName)}\n          className=\"file-formatter-item-preview\"\n        />\n      )}\n    </Modal>\n  );\n};\n","import React, { useState, useEffect, useMemo } from \"react\";\nimport { Space, Image, Typography } from \"antd\";\nimport { EyeOutlined } from \"@ant-design/icons\";\nimport { FormatContext, FormatOptions } from \"./types\";\nimport { UploadList } from \"../utils/upload-list\";\nimport { FilePreviewModal } from \"../utils/file-preview-modal\";\nimport {\n  isImageFile,\n  getFileIcon,\n  getFileUrl,\n  type FileItem,\n} from \"../utils/upload-utils\";\nimport \"./index.less\";\n\nconst { Link } = Typography;\nconst MAX_DISPLAY_COUNT = 3;\n\ninterface FileItemWithUrl extends FileItem {\n  fileUrl?: string;\n}\n\nconst UploadPreview: React.FC<{ files: FileItem[] }> = ({ files }) => {\n  const [expanded, setExpanded] = useState(false);\n  const [urlRecord, setUrlRecord] = useState<Record<string, string>>({});\n  const [currentPreviewFile, setCurrentPreviewFile] =\n    useState<FileItemWithUrl | null>(null);\n  const [previewVisible, setPreviewVisible] = useState(false);\n\n  const loadFileUrl = async (file: FileItem) => {\n    if (urlRecord[file.filePath]) return urlRecord[file.filePath];\n\n    try {\n      const url = await getFileUrl(file.filePath);\n      setUrlRecord((prev) => ({ ...prev, [file.filePath]: url }));\n      return url;\n    } catch (error) {\n      console.error(\"获取文件 URL 失败:\", error);\n      return undefined;\n    }\n  };\n\n  const displayFiles = useMemo(\n    () => (expanded ? files : files.slice(0, MAX_DISPLAY_COUNT)),\n    [expanded, files],\n  );\n\n  const hasMore = useMemo(() => files.length > MAX_DISPLAY_COUNT, [files]);\n\n  useEffect(() => {\n    const visibleImageFiles = files\n      .slice(0, MAX_DISPLAY_COUNT)\n      .filter(\n        (file) => isImageFile(file.fileName) && !urlRecord[file.filePath],\n      );\n\n    visibleImageFiles.forEach((file) => {\n      loadFileUrl(file);\n    });\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [files]);\n\n  const handleExpand = () => {\n    if (!expanded) {\n      const hiddenImageFiles = files\n        .slice(MAX_DISPLAY_COUNT)\n        .filter(\n          (file) => isImageFile(file.fileName) && !urlRecord[file.filePath],\n        );\n\n      hiddenImageFiles.forEach((file) => {\n        loadFileUrl(file);\n      });\n    }\n\n    setExpanded(!expanded);\n  };\n\n  const handlePreview = async (file: FileItem) => {\n    const url = await loadFileUrl(file);\n\n    setCurrentPreviewFile({ ...file, fileUrl: url });\n    setPreviewVisible(true);\n  };\n\n  const closePreview = () => {\n    setPreviewVisible(false);\n    setCurrentPreviewFile(null);\n  };\n\n  if (!files?.length) return <span>--</span>;\n\n  return (\n    <>\n      <Space size={8} wrap>\n        <div className=\"upload-formatter-display\">\n          <Image.PreviewGroup>\n            {displayFiles.map((file, index) => {\n              const isImg = isImageFile(file.fileName);\n              const key = file.filePath || index;\n              const url = urlRecord[file.filePath];\n\n              return isImg ? (\n                <div key={key} className=\"upload-formatter-image\">\n                  <Image src={url} alt={file.fileName} width={40} height={40} />\n                </div>\n              ) : (\n                <div\n                  key={key}\n                  className=\"upload-formatter-file\"\n                  onClick={() => handlePreview(file)}\n                >\n                  <img src={getFileIcon(file.fileName)} alt={file.fileName} />\n                  <div className=\"upload-formatter-file-mask\">\n                    <EyeOutlined className=\"upload-formatter-file-icon\" />\n                  </div>\n                </div>\n              );\n            })}\n          </Image.PreviewGroup>\n        </div>\n\n        {hasMore && (\n          <Link onClick={handleExpand}>\n            {expanded ? \"收起\" : `+${files.length - MAX_DISPLAY_COUNT}`}\n          </Link>\n        )}\n      </Space>\n\n      <FilePreviewModal\n        visible={previewVisible}\n        fileUrl={currentPreviewFile?.fileUrl}\n        fileName={currentPreviewFile?.fileName || \"\"}\n        onCancel={closePreview}\n        width=\"60%\"\n      />\n    </>\n  );\n};\n\nexport function uploadFormatter(\n  context: FormatContext,\n  options: FormatOptions = {},\n) {\n  const { value } = context;\n  const { showPreview } = options;\n\n  if (!value?.length) return <span>--</span>;\n\n  return showPreview ? (\n    <UploadPreview files={value} />\n  ) : (\n    <UploadList files={value} />\n  );\n}\n","import React from \"react\";\nimport { Image } from \"antd\";\nimport { FormatContext, FormatOptions } from \"./types\";\n\n/**\n * 图片格式化处理器\n * @param context 格式化上下文\n * @param options 格式化选项\n * @returns 格式化后的图片预览组件\n */\nexport function imageFormatter(\n  context: FormatContext,\n  options: FormatOptions = {},\n) {\n  const { value } = context;\n  const { width = 40, height = 40 } = options;\n\n  if (!value || typeof value !== \"string\") return \"--\";\n\n  return (\n    <Image\n      src={value}\n      width={width}\n      height={height}\n      style={{ objectFit: \"cover\", borderRadius: 4 }}\n    />\n  );\n}\n","import React from \"react\";\nimport { Avatar, Space } from \"antd\";\nimport { FormatContext, FormatOptions } from \"./types\";\n\nexport function userFormatter(context: FormatContext, options: FormatOptions) {\n  const { value, dataIndex, record } = context;\n\n  // 空值和异常值，返回 --\n  if (\n    value === null ||\n    value === undefined ||\n    value.length === 0 ||\n    !Array.isArray(value)\n  )\n    return \"--\";\n\n  const labelDataIndex = `${dataIndex}_label`;\n  // 对应选中项的完整原始数据\n  const labelOptions = record[labelDataIndex];\n\n  // 没有下发原始值 兜底用 value 值\n  if (\n    !labelOptions ||\n    !Array.isArray(labelOptions) ||\n    labelOptions.length === 0\n  ) {\n    return value\n      .map((v: any) => {\n        if (typeof v === \"object\" && v !== null && \"code\" in v) {\n          return v.code;\n        }\n        return v;\n      })\n      .join(\", \");\n  }\n\n  // 下发原始值，拼成展示值\n  return (\n    <Space size=\"small\" wrap>\n      {labelOptions.map((item: any, index: number) => {\n        // 如果有头像且不为空，展示头像 + 名称\n        if (item.avatar && item.avatar.trim()) {\n          return (\n            <Space key={index} size={4}>\n              <Avatar size=\"small\" src={item.avatar} />\n              <span>{item.displayName}</span>\n            </Space>\n          );\n        }\n        // 没有头像，只展示名称\n        return <span key={index}>{item.displayName}</span>;\n      })}\n    </Space>\n  );\n}\n","import React, { useState } from \"react\";\nimport { EyeOutlined } from \"@ant-design/icons\";\nimport { getFileIcon } from \"./upload-utils\";\nimport { FilePreviewModal } from \"./file-preview-modal\";\n\n/**\n * 文件预览组件\n * 显示文件图标，点击后在 Modal 中预览文件\n */\nexport const FilePreview: React.FC<{ value: string }> = ({ value }) => {\n  const [previewVisible, setPreviewVisible] = useState(false);\n\n  // 从 URL 中提取文件名\n  const fileName = value.split(\"/\").pop() || value;\n  const iconUrl = getFileIcon(fileName);\n\n  const handlePreview = (e: React.MouseEvent) => {\n    e.stopPropagation();\n    setPreviewVisible(true);\n  };\n\n  return (\n    <>\n      <div className=\"file-formatter-item\" onClick={handlePreview}>\n        <img src={iconUrl} alt={fileName} />\n        <div className=\"file-formatter-item-mask\">\n          <EyeOutlined className=\"file-formatter-item-icon\" />\n        </div>\n      </div>\n\n      <FilePreviewModal\n        visible={previewVisible}\n        fileUrl={value}\n        fileName={fileName}\n        onCancel={() => setPreviewVisible(false)}\n        width=\"60%\"\n      />\n    </>\n  );\n};\n","import React from \"react\";\nimport { FormatContext, FormatOptions } from \"./types\";\nimport { FilePreview } from \"../utils/file-preview\";\n\n/**\n * 文件格式化处理器\n * 用于展示和预览文件链接\n */\nexport function fileFormatter(\n  context: FormatContext,\n  options: FormatOptions = {},\n) {\n  const { value } = context;\n\n  if (!value || typeof value !== \"string\") {\n    return \"--\";\n  }\n\n  return <FilePreview value={value} />;\n}\n","import { ReactNode } from \"react\";\nimport { FormatContext, FormatOptions, FormattersRegistry } from \"./types\";\nimport \"./index.less\";\n\n// 格式化处理器注册表\nconst formatters: FormattersRegistry = {};\n\n/**\n * 注册格式化处理器\n * @param type 格式化类型\n * @param formatter 格式化处理函数\n */\nexport function registerFormatter(\n  type: string,\n  formatter: (context: FormatContext, options?: FormatOptions) => ReactNode,\n): void {\n  formatters[type] = formatter;\n}\n\n/**\n * 获取格式化处理器\n * @param type 格式化类型\n * @returns 格式化处理函数，如果不存在则返回默认文本处理器\n */\nexport function getFormatter(\n  type: string,\n): (context: FormatContext, options?: FormatOptions) => ReactNode {\n  return formatters[type] || formatters[\"text\"] || defaultFormatter;\n}\n\n/**\n * 默认格式化处理器，直接显示值\n */\nfunction defaultFormatter(context: FormatContext): ReactNode {\n  return context.value !== undefined ? String(context.value) : \"\";\n}\n\n/**\n * 格式化值\n * @param type 格式化类型\n * @param context 格式化上下文\n * @param options 格式化选项\n * @returns 格式化后的React节点\n */\nexport function formatValue(\n  type: string,\n  context: FormatContext,\n  options?: FormatOptions,\n): ReactNode {\n  const formatter = getFormatter(type);\n  return formatter(context, options);\n}\n\n// 导出所有格式化类型\nexport * from \"./types\";\n\n// 延迟导入各格式化处理器，避免循环依赖\n// 注意：必须在实际使用前导入这些模块，以确保格式化处理器被正确注册\nimport { textFormatter } from \"./text-formatter\";\nimport { linkFormatter } from \"./link-formatter\";\nimport { numberFormatter } from \"./number-formatter\";\nimport { progressFormatter } from \"./progress-formatter\";\nimport { percentFormatter } from \"./percent-formatter\";\nimport { tagFormatter } from \"./tag-formatter\";\nimport { dateFormatter } from \"./date-formatter\";\nimport { enumFormatter } from \"./enum-formatter\";\nimport { addressFormatter } from \"./address-formatter\";\nimport { uploadFormatter } from \"./upload-formatter\";\nimport { imageFormatter } from \"./image-formatter\";\nimport { userFormatter } from \"./user-formatter\";\nimport { fileFormatter } from \"./file-formatter\";\n\nregisterFormatter(\"text\", textFormatter);\nregisterFormatter(\"link\", linkFormatter);\nregisterFormatter(\"number\", numberFormatter);\nregisterFormatter(\"progress\", progressFormatter);\nregisterFormatter(\"percent\", percentFormatter);\nregisterFormatter(\"tag\", tagFormatter);\nregisterFormatter(\"date\", dateFormatter);\nregisterFormatter(\"datetime\", dateFormatter);\nregisterFormatter(\"enum\", enumFormatter);\n// yuntooEnum 已合并到 enumFormatter，保持向后兼容\nregisterFormatter(\"yuntooEnum\", enumFormatter);\nregisterFormatter(\"address\", addressFormatter);\nregisterFormatter(\"upload\", uploadFormatter);\nregisterFormatter(\"image\", imageFormatter);\nregisterFormatter(\"user\", userFormatter);\nregisterFormatter(\"file\", fileFormatter);\n","import React from \"react\";\nimport type { IColumn, ProcessedColumn, EnhancedColumn } from \"../../types\";\nimport { formatValue, FormatContext } from \"../../format\";\n\n/**\n * 统一处理所有列格式 - 保持原始顺序\n */\nexport function processAllColumns(\n  columns: EnhancedColumn[],\n  operateButtons?: (currentRowKey: string, currentRow: any) => React.ReactNode,\n): ProcessedColumn[] {\n  // 处理所有列，保持原始顺序\n  const processedColumns = columns.map((column: any) => {\n    // 检查是否是 YtTable 格式的列（包含 format 属性）\n    if (column && typeof column === \"object\" && \"format\" in column) {\n      return processYtColumn(column);\n    } else {\n      // antd 原生格式的列，直接返回（可能需要一些基础处理）\n      return processAntdColumn(column);\n    }\n  });\n\n  // 如果有操作按钮，添加操作列到末尾\n  if (operateButtons) {\n    processedColumns.push({\n      title: \"操作\",\n      key: \"operation\",\n      fixed: \"right\",\n      width: 180,\n      render: (_, record, index) => (\n        <div className=\"yt-table-operate-buttons\">\n          {operateButtons(record.id || String(index), record)}\n        </div>\n      ),\n    });\n  }\n\n  return processedColumns;\n}\n\n/**\n * 处理 YtTable 格式的单个列\n */\nfunction processYtColumn(column: IColumn): ProcessedColumn {\n  const {\n    title,\n    dataIndex,\n    width,\n    lock,\n    align,\n    format,\n    formatOptions,\n    ...otherProps\n  } = column;\n\n  const processedDataIndex =\n    typeof dataIndex === \"string\" && dataIndex.includes(\".\")\n      ? dataIndex.split(\".\")\n      : dataIndex;\n\n  const columnConfig: ProcessedColumn = {\n    title: title || \"\",\n    dataIndex: processedDataIndex,\n    key: dataIndex,\n    width,\n    render: (value: any, record: any, index: number) => {\n      const context: FormatContext = {\n        value,\n        record,\n        index,\n        dataIndex: processedDataIndex,\n      };\n\n      if (format) {\n        return formatValue(format, context, formatOptions);\n      }\n\n      return <div className=\"yt-table-cell\">{String(value || \"\")}</div>;\n    },\n    ...otherProps,\n  };\n\n  // 处理对齐方式\n  if (align) {\n    columnConfig.align = align;\n  } else if (format === \"number\" || format === \"percent\") {\n    columnConfig.align = \"right\";\n  }\n\n  // 处理固定列\n  if (lock) {\n    columnConfig.fixed = lock;\n  }\n\n  return columnConfig;\n}\n\n/**\n * 处理 Antd 原生格式的单个列\n */\nfunction processAntdColumn(column: any): ProcessedColumn {\n  // antd 原生列基本上不需要额外处理，直接返回\n  // 如果需要统一的处理逻辑，可以在这里添加\n  return { ...column };\n}\n","import type { YtTableProps, ProcessedProps } from \"../../types\";\n\n/**\n * 构建初始的渐进式增强属性结构\n */\nexport function buildInitialProps(\n  props: YtTableProps,\n  processedColumns: any[],\n): ProcessedProps {\n  return {\n    // 增强的 antd Table 属性（熟悉的基础 + 可选追加）\n    antdTableProps: {\n      // === antd 原生属性（零学习成本）===\n      dataSource: props.dataSource,\n      rowKey: props.rowKey || \"id\",\n      columns: processedColumns,\n      bordered: props.tableStyle?.bordered,\n      locale: {\n        emptyText: props.tableStyle?.emptyText || \"暂无数据\",\n      },\n      tableLayout: \"auto\" as const,\n      scroll: {\n        x: \"max-content\",\n      },\n      loading: props.loading || false,\n      ...props.otherTableProps,\n    },\n\n    // YtTable 独有的扩展功能（学会了就是加分）\n    ytTableExtensionProps: {\n      toolbar: props.toolbar,\n      tableStyle: props.tableStyle,\n      showSelectionTotal: props.showSelectionTotal,\n      columnSetting: props.columnSetting,\n    },\n  };\n}\n\n/**\n * 完整的属性处理流程\n */\nexport function processProps(\n  props: YtTableProps,\n  processedColumns: any[],\n): ProcessedProps {\n  const initialProps = buildInitialProps(props, processedColumns);\n\n  // 如果提供了 handleProps 函数，则进行处理\n  if (props.handleProps) {\n    try {\n      return props.handleProps(initialProps);\n    } catch (error) {\n      console.error(\"🚨 [YtTable] handleProps 函数执行失败:\", error);\n      console.error(\"📋 [YtTable] 原始属性:\", initialProps);\n      console.warn(\n        \"⚠️ [YtTable] 将使用原始属性继续渲染，请检查 handleProps 函数实现\",\n      );\n\n      // 发生错误时返回原始属性，确保组件能正常渲染\n      return initialProps;\n    }\n  }\n\n  return initialProps;\n}\n","import { useState, useEffect, useMemo } from \"react\";\nimport { TableRowSelection } from \"antd/es/table/interface\";\nimport { TablePaginationConfig } from \"antd/es/table\";\nimport type {\n  YtTableProps,\n  ProcessedProps,\n  IRowSelection,\n  IPagination,\n  ProcessedColumn,\n} from \"../../types\";\n\n/**\n * 处理行选择配置\n */\nfunction processRowSelection(\n  rowSelection?: IRowSelection,\n): TableRowSelection<any> | undefined {\n  if (!rowSelection || !rowSelection.enable) {\n    return undefined;\n  }\n\n  const { selectedRowKeys = [], onChange, isDisabled } = rowSelection;\n\n  return {\n    selectedRowKeys,\n    // @ts-ignore\n    onChange,\n    getCheckboxProps: (record: any) => {\n      // 使用提供的禁用逻辑\n      const disabled = isDisabled\n        ? isDisabled(\n            record.id || \"\",\n            selectedRowKeys,\n            selectedRowKeys.map((key) => ({ id: key })), // 简单模拟selectedRows\n          )\n        : false;\n\n      return {\n        disabled,\n      };\n    },\n    // 设置默认列宽\n    columnWidth: 48,\n    // 固定选择列在左侧\n    fixed: true,\n  };\n}\n\n/**\n * 处理分页配置\n */\nfunction processPagination(\n  pagination?: IPagination,\n): false | TablePaginationConfig {\n  // 如果不启用分页，返回false\n  if (!pagination || !pagination.enable) {\n    return false;\n  }\n\n  const {\n    current = 1,\n    pageSize = 10,\n    totalCount,\n    pageSizeOptions = [10, 20, 50, 100],\n    onChange,\n  } = pagination;\n\n  return {\n    current,\n    pageSize,\n    total: totalCount,\n    pageSizeOptions: pageSizeOptions.map((size) => String(size)),\n    showSizeChanger: true,\n    showQuickJumper: true,\n    showTotal: (total) => `共 ${total} 条数据`,\n    onChange,\n  };\n}\n\n/**\n * 处理状态配置（Hook 版本）\n */\nexport function useProcessState(\n  props: YtTableProps,\n  processedProps: ProcessedProps,\n) {\n  const { antdTableProps, ytTableExtensionProps } = processedProps;\n  const { columns: finalColumns } = antdTableProps;\n\n  // 管理列配置状态（用于列设置功能）\n  const [columns, setColumns] = useState<ProcessedColumn[]>(finalColumns || []);\n\n  // 当外部 finalColumns 变化时更新内部状态\n  useEffect(() => {\n    setColumns(finalColumns || []);\n  }, [finalColumns]);\n\n  // 最终渲染的列（支持列设置中的隐藏功能）\n  const renderColumns = useMemo(() => {\n    if (!Array.isArray(columns)) return [];\n\n    return columns.filter((column: ProcessedColumn) => {\n      if (column && typeof column === \"object\") {\n        if (\"hidden\" in column && column.hidden === true) {\n          return false;\n        }\n        if (\"isShown\" in column && column.isShown === false) {\n          return false;\n        }\n      }\n      return true;\n    });\n  }, [columns]);\n\n  // 处理行选择配置\n  const rowSelectionConfig = processRowSelection(props.rowSelection);\n\n  // 处理分页配置\n  const paginationConfig = processPagination(props.pagination);\n\n  return {\n    renderColumns,\n    rowSelectionConfig,\n    paginationConfig,\n    columnsState: {\n      columns,\n      setColumns,\n    },\n    // 传递扩展属性\n    ytTableExtensionProps,\n    // 传递其他 antd 属性（排除 columns）\n    restAntdProps: (() => {\n      const { columns: _, ...rest } = antdTableProps;\n      return rest;\n    })(),\n  };\n}\n","import { useMemo } from \"react\";\nimport type { YtTableProps } from \"../../types\";\nimport { processColumns } from \"../pipeline\";\nimport { processAllColumns } from \"../processors/columns-processor\";\nimport { processProps } from \"../processors/props-processor\";\nimport { useProcessState } from \"../processors/state-processor\";\n\n/**\n * 表格数据处理管道 Hook\n *\n * 这是 YtTable 的核心数据流管道，按以下顺序处理：\n * 1. 列处理：统一处理所有列格式，保持原始顺序 + operateButtons\n * 2. 属性处理：handleProps 渐进式增强\n * 3. 状态处理：React 状态管理 + 最终渲染数据\n */\nexport function useTablePipeline(props: YtTableProps) {\n  // 第一阶段：列处理 - 统一处理所有列格式，保持原始顺序\n  const processedColumns = useMemo(() => {\n    const filteredColumns = processColumns(props);\n\n    // 统一处理所有列（包括添加操作列）\n    return processAllColumns(filteredColumns, props.operateButtons);\n  }, [props.columns, props.operateButtons]);\n\n  // 第二阶段：属性处理\n  const processedProps = useMemo(() => {\n    return processProps(props, processedColumns);\n  }, [props, processedColumns]);\n\n  // 第三阶段：状态处理\n  const finalResult = useProcessState(props, processedProps);\n\n  return finalResult;\n}\n","import { IColumn } from \"../../types\";\nimport { isFunction } from \"lodash\";\n\n/**\n * 格式化列配置\n * 确保每一列都有正确的属性\n */\nexport function formatColumns(columns: IColumn[]): IColumn[] {\n  if (!columns || !Array.isArray(columns)) {\n    return [];\n  }\n\n  return columns.map((column) => ({\n    ...column,\n    hidden: !!column.hidden, // 确保 hidden 是 boolean 类型\n  }));\n}\n\n/**\n * 获取列的唯一标识数组\n */\nexport function getColumnKeys(columns: IColumn[]): string[] {\n  if (!columns || !Array.isArray(columns)) {\n    return [];\n  }\n\n  return columns.map((column) => column.dataIndex);\n}\n\n/**\n * 左侧固定列最大数量\n */\nexport const LEFT_FIX_MAX_NUM = 5;\n\n/**\n * 右侧固定列最大数量\n */\nexport const RIGHT_FIX_MAX_NUM = 5;\n\nexport function getParent(\n  dom: HTMLElement,\n  match: (dom: HTMLElement) => boolean,\n  maxLevel = 5,\n) {\n  if (dom && isFunction(match) && maxLevel > 0) {\n    let level = 0;\n    let nowDom = dom;\n    while (level < maxLevel) {\n      nowDom = nowDom?.parentElement as HTMLElement;\n      if (match(nowDom)) {\n        return nowDom;\n      }\n      level++;\n    }\n  }\n  return dom;\n}\n","import React, {\n  createContext,\n  useCallback,\n  useEffect,\n  useMemo,\n  useState,\n} from \"react\";\nimport { IColumn, IColumnSettingContext } from \"../../types\";\nimport { formatColumns, getColumnKeys } from \"./utils\";\n\n// 创建上下文\nexport const ColumnSettingContext = createContext<IColumnSettingContext>({\n  columns: [],\n  setColumns: () => {},\n  fixLeftColumns: [],\n  fixRightColumns: [],\n  noFixColumns: [],\n  columnKeys: [],\n  checkedColumnKeys: [],\n  checkedAll: false,\n  updateColumns: () => {},\n  cancelUpdateColumns: () => {},\n});\n\n// 上下文提供者组件\nexport function ColumnSettingProvider({\n  isDialog,\n  columns: originColumns,\n  setColumns: setOriginColumns,\n  hasRowDetail,\n  children,\n}: {\n  isDialog?: boolean;\n  hasRowDetail?: boolean;\n  columns: IColumn[];\n  setColumns: (columns: IColumn[], type?: string) => void;\n  children: React.ReactNode;\n}) {\n  // 格式化列配置\n  const [columns, setColumns] = useState(formatColumns(originColumns));\n\n  // 已选中的列 dataIndex\n  const checkedColumnKeys = useMemo(() => {\n    return columns.reduce<string[]>((result, item) => {\n      if (item.hidden) return result;\n      return [...result, item.dataIndex];\n    }, []);\n  }, [columns]);\n\n  // 当原始列配置变更时，重新格式化\n  useEffect(() => {\n    setColumns(formatColumns(originColumns));\n  }, [originColumns]);\n\n  // 列的唯一标识集合\n  const columnKeys = useMemo(() => {\n    return getColumnKeys(originColumns);\n  }, [originColumns]);\n\n  // 固定在左侧的列\n  const fixLeftColumns = useMemo(() => {\n    if (hasRowDetail) {\n      return [];\n    }\n    return columns.filter((item) => {\n      return item.lock === \"left\" || item.lock === true;\n    });\n  }, [columns, hasRowDetail]);\n\n  // 固定在右侧的列\n  const fixRightColumns = useMemo(() => {\n    if (hasRowDetail) {\n      return [];\n    }\n    return columns.filter((item) => item.lock === \"right\");\n  }, [columns, hasRowDetail]);\n\n  // 不固定的列\n  const noFixColumns = useMemo(() => {\n    if (hasRowDetail) {\n      return columns;\n    }\n    return columns.filter((item) => !item.lock);\n  }, [columns, hasRowDetail]);\n\n  // 更新列配置\n  const updateColumns = useCallback(() => {\n    setOriginColumns(columns, \"user\");\n  }, [columns, setOriginColumns]);\n\n  // 取消列配置变更\n  const cancelUpdateColumns = useCallback(() => {\n    setColumns(formatColumns(originColumns));\n  }, [originColumns]);\n\n  // 上下文值\n  const contextValue = {\n    isDialog,\n    columns,\n    setColumns,\n    fixLeftColumns,\n    fixRightColumns,\n    noFixColumns,\n    columnKeys,\n    checkedColumnKeys,\n    checkedAll: checkedColumnKeys.length === columns.length,\n    updateColumns,\n    cancelUpdateColumns,\n  };\n\n  return (\n    <ColumnSettingContext.Provider value={contextValue}>\n      {children}\n    </ColumnSettingContext.Provider>\n  );\n}\n","export var isObject = function (value) {\n  return value !== null && typeof value === 'object';\n};\nexport var isFunction = function (value) {\n  return typeof value === 'function';\n};\nexport var isString = function (value) {\n  return typeof value === 'string';\n};\nexport var isBoolean = function (value) {\n  return typeof value === 'boolean';\n};\nexport var isNumber = function (value) {\n  return typeof value === 'number';\n};\nexport var isUndef = function (value) {\n  return typeof value === 'undefined';\n};","var isDev = process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'test';\nexport default isDev;","export default function depsAreSame(oldDeps, deps) {\n  if (oldDeps === deps) return true;\n  for (var i = 0; i < oldDeps.length; i++) {\n    if (!Object.is(oldDeps[i], deps[i])) return false;\n  }\n  return true;\n}","import { useRef } from 'react';\nfunction useLatest(value) {\n  var ref = useRef(value);\n  ref.current = value;\n  return ref;\n}\nexport default useLatest;","import { useEffect } from 'react';\nimport useLatest from '../useLatest';\nimport { isFunction } from '../utils';\nimport isDev from '../utils/isDev';\nvar useUnmount = function (fn) {\n  if (isDev) {\n    if (!isFunction(fn)) {\n      console.error(\"useUnmount expected parameter is a function, got \".concat(typeof fn));\n    }\n  }\n  var fnRef = useLatest(fn);\n  useEffect(function () {\n    return function () {\n      fnRef.current();\n    };\n  }, []);\n};\nexport default useUnmount;","var isBrowser = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nexport default isBrowser;","import { isFunction } from './index';\nimport isBrowser from './isBrowser';\nexport function getTargetElement(target, defaultElement) {\n  if (!isBrowser) {\n    return undefined;\n  }\n  if (!target) {\n    return defaultElement;\n  }\n  var targetElement;\n  if (isFunction(target)) {\n    targetElement = target();\n  } else if ('current' in target) {\n    targetElement = target.current;\n  } else {\n    targetElement = target;\n  }\n  return targetElement;\n}","import { useRef } from 'react';\nimport useUnmount from '../useUnmount';\nimport depsAreSame from './depsAreSame';\nimport { getTargetElement } from './domTarget';\nvar createEffectWithTarget = function (useEffectType) {\n  /**\n   *\n   * @param effect\n   * @param deps\n   * @param target target should compare ref.current vs ref.current, dom vs dom, ()=>dom vs ()=>dom\n   */\n  var useEffectWithTarget = function (effect, deps, target) {\n    var hasInitRef = useRef(false);\n    var lastElementRef = useRef([]);\n    var lastDepsRef = useRef([]);\n    var unLoadRef = useRef();\n    useEffectType(function () {\n      var _a;\n      var targets = Array.isArray(target) ? target : [target];\n      var els = targets.map(function (item) {\n        return getTargetElement(item);\n      });\n      // init run\n      if (!hasInitRef.current) {\n        hasInitRef.current = true;\n        lastElementRef.current = els;\n        lastDepsRef.current = deps;\n        unLoadRef.current = effect();\n        return;\n      }\n      if (els.length !== lastElementRef.current.length || !depsAreSame(els, lastElementRef.current) || !depsAreSame(deps, lastDepsRef.current)) {\n        (_a = unLoadRef.current) === null || _a === void 0 ? void 0 : _a.call(unLoadRef);\n        lastElementRef.current = els;\n        lastDepsRef.current = deps;\n        unLoadRef.current = effect();\n      }\n    });\n    useUnmount(function () {\n      var _a;\n      (_a = unLoadRef.current) === null || _a === void 0 ? void 0 : _a.call(unLoadRef);\n      // for react-refresh\n      hasInitRef.current = false;\n    });\n  };\n  return useEffectWithTarget;\n};\nexport default createEffectWithTarget;","import { useEffect } from 'react';\nimport createEffectWithTarget from './createEffectWithTarget';\nvar useEffectWithTarget = createEffectWithTarget(useEffect);\nexport default useEffectWithTarget;","import useLatest from '../useLatest';\nimport { getTargetElement } from '../utils/domTarget';\nimport useEffectWithTarget from '../utils/useEffectWithTarget';\nvar useDrag = function (data, target, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  var optionsRef = useLatest(options);\n  var dataRef = useLatest(data);\n  useEffectWithTarget(function () {\n    var targetElement = getTargetElement(target);\n    if (!(targetElement === null || targetElement === void 0 ? void 0 : targetElement.addEventListener)) {\n      return;\n    }\n    var onDragStart = function (event) {\n      var _a, _b;\n      (_b = (_a = optionsRef.current).onDragStart) === null || _b === void 0 ? void 0 : _b.call(_a, event);\n      event.dataTransfer.setData('custom', JSON.stringify(dataRef.current));\n    };\n    var onDragEnd = function (event) {\n      var _a, _b;\n      (_b = (_a = optionsRef.current).onDragEnd) === null || _b === void 0 ? void 0 : _b.call(_a, event);\n    };\n    targetElement.setAttribute('draggable', 'true');\n    targetElement.addEventListener('dragstart', onDragStart);\n    targetElement.addEventListener('dragend', onDragEnd);\n    return function () {\n      targetElement.removeEventListener('dragstart', onDragStart);\n      targetElement.removeEventListener('dragend', onDragEnd);\n    };\n  }, [], target);\n};\nexport default useDrag;","import useLatest from '../useLatest';\nimport { getTargetElement } from '../utils/domTarget';\nimport useEffectWithTarget from '../utils/useEffectWithTarget';\nimport { useRef } from 'react';\nvar useDrop = function (target, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  var optionsRef = useLatest(options);\n  // https://stackoverflow.com/a/26459269\n  var dragEnterTarget = useRef();\n  useEffectWithTarget(function () {\n    var targetElement = getTargetElement(target);\n    if (!(targetElement === null || targetElement === void 0 ? void 0 : targetElement.addEventListener)) {\n      return;\n    }\n    var onData = function (dataTransfer, event) {\n      var uri = dataTransfer.getData('text/uri-list');\n      var dom = dataTransfer.getData('custom');\n      if (dom && optionsRef.current.onDom) {\n        var data = dom;\n        try {\n          data = JSON.parse(dom);\n        } catch (e) {\n          data = dom;\n        }\n        optionsRef.current.onDom(data, event);\n        return;\n      }\n      if (uri && optionsRef.current.onUri) {\n        optionsRef.current.onUri(uri, event);\n        return;\n      }\n      if (dataTransfer.files && dataTransfer.files.length && optionsRef.current.onFiles) {\n        optionsRef.current.onFiles(Array.from(dataTransfer.files), event);\n        return;\n      }\n      if (dataTransfer.items && dataTransfer.items.length && optionsRef.current.onText) {\n        dataTransfer.items[0].getAsString(function (text) {\n          optionsRef.current.onText(text, event);\n        });\n      }\n    };\n    var onDragEnter = function (event) {\n      var _a, _b;\n      event.preventDefault();\n      event.stopPropagation();\n      dragEnterTarget.current = event.target;\n      (_b = (_a = optionsRef.current).onDragEnter) === null || _b === void 0 ? void 0 : _b.call(_a, event);\n    };\n    var onDragOver = function (event) {\n      var _a, _b;\n      event.preventDefault();\n      (_b = (_a = optionsRef.current).onDragOver) === null || _b === void 0 ? void 0 : _b.call(_a, event);\n    };\n    var onDragLeave = function (event) {\n      var _a, _b;\n      if (event.target === dragEnterTarget.current) {\n        (_b = (_a = optionsRef.current).onDragLeave) === null || _b === void 0 ? void 0 : _b.call(_a, event);\n      }\n    };\n    var onDrop = function (event) {\n      var _a, _b;\n      event.preventDefault();\n      onData(event.dataTransfer, event);\n      (_b = (_a = optionsRef.current).onDrop) === null || _b === void 0 ? void 0 : _b.call(_a, event);\n    };\n    var onPaste = function (event) {\n      var _a, _b;\n      onData(event.clipboardData, event);\n      (_b = (_a = optionsRef.current).onPaste) === null || _b === void 0 ? void 0 : _b.call(_a, event);\n    };\n    targetElement.addEventListener('dragenter', onDragEnter);\n    targetElement.addEventListener('dragover', onDragOver);\n    targetElement.addEventListener('dragleave', onDragLeave);\n    targetElement.addEventListener('drop', onDrop);\n    targetElement.addEventListener('paste', onPaste);\n    return function () {\n      targetElement.removeEventListener('dragenter', onDragEnter);\n      targetElement.removeEventListener('dragover', onDragOver);\n      targetElement.removeEventListener('dragleave', onDragLeave);\n      targetElement.removeEventListener('drop', onDrop);\n      targetElement.removeEventListener('paste', onPaste);\n    };\n  }, [], target);\n};\nexport default useDrop;","const global = globalThis || void 0 || self;\n\nexport { global as default, global };\n//# sourceMappingURL=index.js.map\n","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n    if (typeof Map !== 'undefined') {\r\n        return Map;\r\n    }\r\n    /**\r\n     * Returns index in provided array that matches the specified key.\r\n     *\r\n     * @param {Array<Array>} arr\r\n     * @param {*} key\r\n     * @returns {number}\r\n     */\r\n    function getIndex(arr, key) {\r\n        var result = -1;\r\n        arr.some(function (entry, index) {\r\n            if (entry[0] === key) {\r\n                result = index;\r\n                return true;\r\n            }\r\n            return false;\r\n        });\r\n        return result;\r\n    }\r\n    return /** @class */ (function () {\r\n        function class_1() {\r\n            this.__entries__ = [];\r\n        }\r\n        Object.defineProperty(class_1.prototype, \"size\", {\r\n            /**\r\n             * @returns {boolean}\r\n             */\r\n            get: function () {\r\n                return this.__entries__.length;\r\n            },\r\n            enumerable: true,\r\n            configurable: true\r\n        });\r\n        /**\r\n         * @param {*} key\r\n         * @returns {*}\r\n         */\r\n        class_1.prototype.get = function (key) {\r\n            var index = getIndex(this.__entries__, key);\r\n            var entry = this.__entries__[index];\r\n            return entry && entry[1];\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @param {*} value\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.set = function (key, value) {\r\n            var index = getIndex(this.__entries__, key);\r\n            if (~index) {\r\n                this.__entries__[index][1] = value;\r\n            }\r\n            else {\r\n                this.__entries__.push([key, value]);\r\n            }\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.delete = function (key) {\r\n            var entries = this.__entries__;\r\n            var index = getIndex(entries, key);\r\n            if (~index) {\r\n                entries.splice(index, 1);\r\n            }\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.has = function (key) {\r\n            return !!~getIndex(this.__entries__, key);\r\n        };\r\n        /**\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.clear = function () {\r\n            this.__entries__.splice(0);\r\n        };\r\n        /**\r\n         * @param {Function} callback\r\n         * @param {*} [ctx=null]\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.forEach = function (callback, ctx) {\r\n            if (ctx === void 0) { ctx = null; }\r\n            for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n                var entry = _a[_i];\r\n                callback.call(ctx, entry[1], entry[0]);\r\n            }\r\n        };\r\n        return class_1;\r\n    }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n    if (typeof global !== 'undefined' && global.Math === Math) {\r\n        return global;\r\n    }\r\n    if (typeof self !== 'undefined' && self.Math === Math) {\r\n        return self;\r\n    }\r\n    if (typeof window !== 'undefined' && window.Math === Math) {\r\n        return window;\r\n    }\r\n    // eslint-disable-next-line no-new-func\r\n    return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n    if (typeof requestAnimationFrame === 'function') {\r\n        // It's required to use a bounded function because IE sometimes throws\r\n        // an \"Invalid calling object\" error if rAF is invoked without the global\r\n        // object on the left hand side.\r\n        return requestAnimationFrame.bind(global$1);\r\n    }\r\n    return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n    var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n    /**\r\n     * Invokes the original callback function and schedules new invocation if\r\n     * the \"proxy\" was called during current request.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function resolvePending() {\r\n        if (leadingCall) {\r\n            leadingCall = false;\r\n            callback();\r\n        }\r\n        if (trailingCall) {\r\n            proxy();\r\n        }\r\n    }\r\n    /**\r\n     * Callback invoked after the specified delay. It will further postpone\r\n     * invocation of the original function delegating it to the\r\n     * requestAnimationFrame.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function timeoutCallback() {\r\n        requestAnimationFrame$1(resolvePending);\r\n    }\r\n    /**\r\n     * Schedules invocation of the original function.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function proxy() {\r\n        var timeStamp = Date.now();\r\n        if (leadingCall) {\r\n            // Reject immediately following calls.\r\n            if (timeStamp - lastCallTime < trailingTimeout) {\r\n                return;\r\n            }\r\n            // Schedule new call to be in invoked when the pending one is resolved.\r\n            // This is important for \"transitions\" which never actually start\r\n            // immediately so there is a chance that we might miss one if change\r\n            // happens amids the pending invocation.\r\n            trailingCall = true;\r\n        }\r\n        else {\r\n            leadingCall = true;\r\n            trailingCall = false;\r\n            setTimeout(timeoutCallback, delay);\r\n        }\r\n        lastCallTime = timeStamp;\r\n    }\r\n    return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserverController.\r\n     *\r\n     * @private\r\n     */\r\n    function ResizeObserverController() {\r\n        /**\r\n         * Indicates whether DOM listeners have been added.\r\n         *\r\n         * @private {boolean}\r\n         */\r\n        this.connected_ = false;\r\n        /**\r\n         * Tells that controller has subscribed for Mutation Events.\r\n         *\r\n         * @private {boolean}\r\n         */\r\n        this.mutationEventsAdded_ = false;\r\n        /**\r\n         * Keeps reference to the instance of MutationObserver.\r\n         *\r\n         * @private {MutationObserver}\r\n         */\r\n        this.mutationsObserver_ = null;\r\n        /**\r\n         * A list of connected observers.\r\n         *\r\n         * @private {Array<ResizeObserverSPI>}\r\n         */\r\n        this.observers_ = [];\r\n        this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n        this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n    }\r\n    /**\r\n     * Adds observer to observers list.\r\n     *\r\n     * @param {ResizeObserverSPI} observer - Observer to be added.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.addObserver = function (observer) {\r\n        if (!~this.observers_.indexOf(observer)) {\r\n            this.observers_.push(observer);\r\n        }\r\n        // Add listeners if they haven't been added yet.\r\n        if (!this.connected_) {\r\n            this.connect_();\r\n        }\r\n    };\r\n    /**\r\n     * Removes observer from observers list.\r\n     *\r\n     * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.removeObserver = function (observer) {\r\n        var observers = this.observers_;\r\n        var index = observers.indexOf(observer);\r\n        // Remove observer if it's present in registry.\r\n        if (~index) {\r\n            observers.splice(index, 1);\r\n        }\r\n        // Remove listeners if controller has no connected observers.\r\n        if (!observers.length && this.connected_) {\r\n            this.disconnect_();\r\n        }\r\n    };\r\n    /**\r\n     * Invokes the update of observers. It will continue running updates insofar\r\n     * it detects changes.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.refresh = function () {\r\n        var changesDetected = this.updateObservers_();\r\n        // Continue running updates if changes have been detected as there might\r\n        // be future ones caused by CSS transitions.\r\n        if (changesDetected) {\r\n            this.refresh();\r\n        }\r\n    };\r\n    /**\r\n     * Updates every observer from observers list and notifies them of queued\r\n     * entries.\r\n     *\r\n     * @private\r\n     * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n     *      dimensions of it's elements.\r\n     */\r\n    ResizeObserverController.prototype.updateObservers_ = function () {\r\n        // Collect observers that have active observations.\r\n        var activeObservers = this.observers_.filter(function (observer) {\r\n            return observer.gatherActive(), observer.hasActive();\r\n        });\r\n        // Deliver notifications in a separate cycle in order to avoid any\r\n        // collisions between observers, e.g. when multiple instances of\r\n        // ResizeObserver are tracking the same element and the callback of one\r\n        // of them changes content dimensions of the observed target. Sometimes\r\n        // this may result in notifications being blocked for the rest of observers.\r\n        activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n        return activeObservers.length > 0;\r\n    };\r\n    /**\r\n     * Initializes DOM listeners.\r\n     *\r\n     * @private\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.connect_ = function () {\r\n        // Do nothing if running in a non-browser environment or if listeners\r\n        // have been already added.\r\n        if (!isBrowser || this.connected_) {\r\n            return;\r\n        }\r\n        // Subscription to the \"Transitionend\" event is used as a workaround for\r\n        // delayed transitions. This way it's possible to capture at least the\r\n        // final state of an element.\r\n        document.addEventListener('transitionend', this.onTransitionEnd_);\r\n        window.addEventListener('resize', this.refresh);\r\n        if (mutationObserverSupported) {\r\n            this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n            this.mutationsObserver_.observe(document, {\r\n                attributes: true,\r\n                childList: true,\r\n                characterData: true,\r\n                subtree: true\r\n            });\r\n        }\r\n        else {\r\n            document.addEventListener('DOMSubtreeModified', this.refresh);\r\n            this.mutationEventsAdded_ = true;\r\n        }\r\n        this.connected_ = true;\r\n    };\r\n    /**\r\n     * Removes DOM listeners.\r\n     *\r\n     * @private\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.disconnect_ = function () {\r\n        // Do nothing if running in a non-browser environment or if listeners\r\n        // have been already removed.\r\n        if (!isBrowser || !this.connected_) {\r\n            return;\r\n        }\r\n        document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n        window.removeEventListener('resize', this.refresh);\r\n        if (this.mutationsObserver_) {\r\n            this.mutationsObserver_.disconnect();\r\n        }\r\n        if (this.mutationEventsAdded_) {\r\n            document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n        }\r\n        this.mutationsObserver_ = null;\r\n        this.mutationEventsAdded_ = false;\r\n        this.connected_ = false;\r\n    };\r\n    /**\r\n     * \"Transitionend\" event handler.\r\n     *\r\n     * @private\r\n     * @param {TransitionEvent} event\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n        var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n        // Detect whether transition may affect dimensions of an element.\r\n        var isReflowProperty = transitionKeys.some(function (key) {\r\n            return !!~propertyName.indexOf(key);\r\n        });\r\n        if (isReflowProperty) {\r\n            this.refresh();\r\n        }\r\n    };\r\n    /**\r\n     * Returns instance of the ResizeObserverController.\r\n     *\r\n     * @returns {ResizeObserverController}\r\n     */\r\n    ResizeObserverController.getInstance = function () {\r\n        if (!this.instance_) {\r\n            this.instance_ = new ResizeObserverController();\r\n        }\r\n        return this.instance_;\r\n    };\r\n    /**\r\n     * Holds reference to the controller's instance.\r\n     *\r\n     * @private {ResizeObserverController}\r\n     */\r\n    ResizeObserverController.instance_ = null;\r\n    return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n    for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n        var key = _a[_i];\r\n        Object.defineProperty(target, key, {\r\n            value: props[key],\r\n            enumerable: false,\r\n            writable: false,\r\n            configurable: true\r\n        });\r\n    }\r\n    return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n    // Assume that the element is an instance of Node, which means that it\r\n    // has the \"ownerDocument\" property from which we can retrieve a\r\n    // corresponding global object.\r\n    var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n    // Return the local global object if it's not possible extract one from\r\n    // provided element.\r\n    return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n    return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n    var positions = [];\r\n    for (var _i = 1; _i < arguments.length; _i++) {\r\n        positions[_i - 1] = arguments[_i];\r\n    }\r\n    return positions.reduce(function (size, position) {\r\n        var value = styles['border-' + position + '-width'];\r\n        return size + toFloat(value);\r\n    }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n    var positions = ['top', 'right', 'bottom', 'left'];\r\n    var paddings = {};\r\n    for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n        var position = positions_1[_i];\r\n        var value = styles['padding-' + position];\r\n        paddings[position] = toFloat(value);\r\n    }\r\n    return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n *      to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n    var bbox = target.getBBox();\r\n    return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n    // Client width & height properties can't be\r\n    // used exclusively as they provide rounded values.\r\n    var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n    // By this condition we can catch all non-replaced inline, hidden and\r\n    // detached elements. Though elements with width & height properties less\r\n    // than 0.5 will be discarded as well.\r\n    //\r\n    // Without it we would need to implement separate methods for each of\r\n    // those cases and it's not possible to perform a precise and performance\r\n    // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n    // gives wrong results for elements with width & height less than 0.5.\r\n    if (!clientWidth && !clientHeight) {\r\n        return emptyRect;\r\n    }\r\n    var styles = getWindowOf(target).getComputedStyle(target);\r\n    var paddings = getPaddings(styles);\r\n    var horizPad = paddings.left + paddings.right;\r\n    var vertPad = paddings.top + paddings.bottom;\r\n    // Computed styles of width & height are being used because they are the\r\n    // only dimensions available to JS that contain non-rounded values. It could\r\n    // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n    // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n    var width = toFloat(styles.width), height = toFloat(styles.height);\r\n    // Width & height include paddings and borders when the 'border-box' box\r\n    // model is applied (except for IE).\r\n    if (styles.boxSizing === 'border-box') {\r\n        // Following conditions are required to handle Internet Explorer which\r\n        // doesn't include paddings and borders to computed CSS dimensions.\r\n        //\r\n        // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n        // properties then it's either IE, and thus we don't need to subtract\r\n        // anything, or an element merely doesn't have paddings/borders styles.\r\n        if (Math.round(width + horizPad) !== clientWidth) {\r\n            width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n        }\r\n        if (Math.round(height + vertPad) !== clientHeight) {\r\n            height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n        }\r\n    }\r\n    // Following steps can't be applied to the document's root element as its\r\n    // client[Width/Height] properties represent viewport area of the window.\r\n    // Besides, it's as well not necessary as the <html> itself neither has\r\n    // rendered scroll bars nor it can be clipped.\r\n    if (!isDocumentElement(target)) {\r\n        // In some browsers (only in Firefox, actually) CSS width & height\r\n        // include scroll bars size which can be removed at this step as scroll\r\n        // bars are the only difference between rounded dimensions + paddings\r\n        // and \"client\" properties, though that is not always true in Chrome.\r\n        var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n        var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n        // Chrome has a rather weird rounding of \"client\" properties.\r\n        // E.g. for an element with content width of 314.2px it sometimes gives\r\n        // the client width of 315px and for the width of 314.7px it may give\r\n        // 314px. And it doesn't happen all the time. So just ignore this delta\r\n        // as a non-relevant.\r\n        if (Math.abs(vertScrollbar) !== 1) {\r\n            width -= vertScrollbar;\r\n        }\r\n        if (Math.abs(horizScrollbar) !== 1) {\r\n            height -= horizScrollbar;\r\n        }\r\n    }\r\n    return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n    // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n    // interface.\r\n    if (typeof SVGGraphicsElement !== 'undefined') {\r\n        return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n    }\r\n    // If it's so, then check that element is at least an instance of the\r\n    // SVGElement and that it has the \"getBBox\" method.\r\n    // eslint-disable-next-line no-extra-parens\r\n    return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n        typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element (<html>).\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n    return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n    if (!isBrowser) {\r\n        return emptyRect;\r\n    }\r\n    if (isSVGGraphicsElement(target)) {\r\n        return getSVGContentRect(target);\r\n    }\r\n    return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n    var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n    // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n    var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n    var rect = Object.create(Constr.prototype);\r\n    // Rectangle's properties are not writable and non-enumerable.\r\n    defineConfigurable(rect, {\r\n        x: x, y: y, width: width, height: height,\r\n        top: y,\r\n        right: x + width,\r\n        bottom: height + y,\r\n        left: x\r\n    });\r\n    return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n    return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n    /**\r\n     * Creates an instance of ResizeObservation.\r\n     *\r\n     * @param {Element} target - Element to be observed.\r\n     */\r\n    function ResizeObservation(target) {\r\n        /**\r\n         * Broadcasted width of content rectangle.\r\n         *\r\n         * @type {number}\r\n         */\r\n        this.broadcastWidth = 0;\r\n        /**\r\n         * Broadcasted height of content rectangle.\r\n         *\r\n         * @type {number}\r\n         */\r\n        this.broadcastHeight = 0;\r\n        /**\r\n         * Reference to the last observed content rectangle.\r\n         *\r\n         * @private {DOMRectInit}\r\n         */\r\n        this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n        this.target = target;\r\n    }\r\n    /**\r\n     * Updates content rectangle and tells whether it's width or height properties\r\n     * have changed since the last broadcast.\r\n     *\r\n     * @returns {boolean}\r\n     */\r\n    ResizeObservation.prototype.isActive = function () {\r\n        var rect = getContentRect(this.target);\r\n        this.contentRect_ = rect;\r\n        return (rect.width !== this.broadcastWidth ||\r\n            rect.height !== this.broadcastHeight);\r\n    };\r\n    /**\r\n     * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n     * from the corresponding properties of the last observed content rectangle.\r\n     *\r\n     * @returns {DOMRectInit} Last observed content rectangle.\r\n     */\r\n    ResizeObservation.prototype.broadcastRect = function () {\r\n        var rect = this.contentRect_;\r\n        this.broadcastWidth = rect.width;\r\n        this.broadcastHeight = rect.height;\r\n        return rect;\r\n    };\r\n    return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n    /**\r\n     * Creates an instance of ResizeObserverEntry.\r\n     *\r\n     * @param {Element} target - Element that is being observed.\r\n     * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n     */\r\n    function ResizeObserverEntry(target, rectInit) {\r\n        var contentRect = createReadOnlyRect(rectInit);\r\n        // According to the specification following properties are not writable\r\n        // and are also not enumerable in the native implementation.\r\n        //\r\n        // Property accessors are not being used as they'd require to define a\r\n        // private WeakMap storage which may cause memory leaks in browsers that\r\n        // don't support this type of collections.\r\n        defineConfigurable(this, { target: target, contentRect: contentRect });\r\n    }\r\n    return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserver.\r\n     *\r\n     * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n     *      when one of the observed elements changes it's content dimensions.\r\n     * @param {ResizeObserverController} controller - Controller instance which\r\n     *      is responsible for the updates of observer.\r\n     * @param {ResizeObserver} callbackCtx - Reference to the public\r\n     *      ResizeObserver instance which will be passed to callback function.\r\n     */\r\n    function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n        /**\r\n         * Collection of resize observations that have detected changes in dimensions\r\n         * of elements.\r\n         *\r\n         * @private {Array<ResizeObservation>}\r\n         */\r\n        this.activeObservations_ = [];\r\n        /**\r\n         * Registry of the ResizeObservation instances.\r\n         *\r\n         * @private {Map<Element, ResizeObservation>}\r\n         */\r\n        this.observations_ = new MapShim();\r\n        if (typeof callback !== 'function') {\r\n            throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n        }\r\n        this.callback_ = callback;\r\n        this.controller_ = controller;\r\n        this.callbackCtx_ = callbackCtx;\r\n    }\r\n    /**\r\n     * Starts observing provided element.\r\n     *\r\n     * @param {Element} target - Element to be observed.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.observe = function (target) {\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        // Do nothing if current environment doesn't have the Element interface.\r\n        if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n            return;\r\n        }\r\n        if (!(target instanceof getWindowOf(target).Element)) {\r\n            throw new TypeError('parameter 1 is not of type \"Element\".');\r\n        }\r\n        var observations = this.observations_;\r\n        // Do nothing if element is already being observed.\r\n        if (observations.has(target)) {\r\n            return;\r\n        }\r\n        observations.set(target, new ResizeObservation(target));\r\n        this.controller_.addObserver(this);\r\n        // Force the update of observations.\r\n        this.controller_.refresh();\r\n    };\r\n    /**\r\n     * Stops observing provided element.\r\n     *\r\n     * @param {Element} target - Element to stop observing.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.unobserve = function (target) {\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        // Do nothing if current environment doesn't have the Element interface.\r\n        if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n            return;\r\n        }\r\n        if (!(target instanceof getWindowOf(target).Element)) {\r\n            throw new TypeError('parameter 1 is not of type \"Element\".');\r\n        }\r\n        var observations = this.observations_;\r\n        // Do nothing if element is not being observed.\r\n        if (!observations.has(target)) {\r\n            return;\r\n        }\r\n        observations.delete(target);\r\n        if (!observations.size) {\r\n            this.controller_.removeObserver(this);\r\n        }\r\n    };\r\n    /**\r\n     * Stops observing all elements.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.disconnect = function () {\r\n        this.clearActive();\r\n        this.observations_.clear();\r\n        this.controller_.removeObserver(this);\r\n    };\r\n    /**\r\n     * Collects observation instances the associated element of which has changed\r\n     * it's content rectangle.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.gatherActive = function () {\r\n        var _this = this;\r\n        this.clearActive();\r\n        this.observations_.forEach(function (observation) {\r\n            if (observation.isActive()) {\r\n                _this.activeObservations_.push(observation);\r\n            }\r\n        });\r\n    };\r\n    /**\r\n     * Invokes initial callback function with a list of ResizeObserverEntry\r\n     * instances collected from active resize observations.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.broadcastActive = function () {\r\n        // Do nothing if observer doesn't have active observations.\r\n        if (!this.hasActive()) {\r\n            return;\r\n        }\r\n        var ctx = this.callbackCtx_;\r\n        // Create ResizeObserverEntry instance for every active observation.\r\n        var entries = this.activeObservations_.map(function (observation) {\r\n            return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n        });\r\n        this.callback_.call(ctx, entries, ctx);\r\n        this.clearActive();\r\n    };\r\n    /**\r\n     * Clears the collection of active observations.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.clearActive = function () {\r\n        this.activeObservations_.splice(0);\r\n    };\r\n    /**\r\n     * Tells whether observer has active observations.\r\n     *\r\n     * @returns {boolean}\r\n     */\r\n    ResizeObserverSPI.prototype.hasActive = function () {\r\n        return this.activeObservations_.length > 0;\r\n    };\r\n    return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserver.\r\n     *\r\n     * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n     *      dimensions of the observed elements change.\r\n     */\r\n    function ResizeObserver(callback) {\r\n        if (!(this instanceof ResizeObserver)) {\r\n            throw new TypeError('Cannot call a class as a function.');\r\n        }\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        var controller = ResizeObserverController.getInstance();\r\n        var observer = new ResizeObserverSPI(callback, controller, this);\r\n        observers.set(this, observer);\r\n    }\r\n    return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n    'observe',\r\n    'unobserve',\r\n    'disconnect'\r\n].forEach(function (method) {\r\n    ResizeObserver.prototype[method] = function () {\r\n        var _a;\r\n        return (_a = observers.get(this))[method].apply(_a, arguments);\r\n    };\r\n});\n\nvar index = (function () {\r\n    // Export existing implementation if available.\r\n    if (typeof global$1.ResizeObserver !== 'undefined') {\r\n        return global$1.ResizeObserver;\r\n    }\r\n    return ResizeObserver;\r\n})();\n\nexport default index;\n","import React, { useContext, useRef, useState } from \"react\";\nimport { Button, Checkbox, Tooltip } from \"antd\";\nimport { useDrag, useDrop } from \"ahooks\";\nimport {\n  VerticalAlignTopOutlined,\n  VerticalAlignBottomOutlined,\n  UndoOutlined,\n  MenuOutlined,\n} from \"@ant-design/icons\";\nimport { IColumn } from \"../../types\";\nimport { ColumnSettingContext } from \"./context\";\nimport { LEFT_FIX_MAX_NUM, RIGHT_FIX_MAX_NUM } from \"./utils\";\nimport { getParent } from \"./utils\";\n\n// 列项组件属性\ninterface ColumnItemProps {\n  dataItem: IColumn;\n  position: \"left\" | \"right\" | \"center\";\n  index: number;\n  showIndex?: boolean;\n}\n\n// 列项组件\nexport const ColumnItem: React.FC<ColumnItemProps> = ({\n  dataItem,\n  position,\n  index,\n  showIndex = false,\n}) => {\n  const { fixLeftColumns, fixRightColumns, setColumns } =\n    useContext(ColumnSettingContext);\n  // DOM引用\n  const domRef = useRef<HTMLDivElement>(null);\n  // 悬停状态，表示拖拽位置\n  const [isHovering, setIsHovering] = useState<\"bottom\" | \"top\" | false>(false);\n  // 拖拽放置位置\n  const dropPosition = useRef(\"bottom\");\n\n  // 检查是否可以左侧固定\n  const canFixLeft =\n    position !== \"left\" && fixLeftColumns.length < LEFT_FIX_MAX_NUM;\n\n  // 检查是否可以右侧固定\n  const canFixRight =\n    position !== \"right\" && fixRightColumns.length < RIGHT_FIX_MAX_NUM;\n\n  // 设置列的固定状态（左侧）\n  const fixLeft = () => {\n    setColumns((prev) => {\n      const updated = prev.map((item) => {\n        if (item.dataIndex === dataItem.dataIndex) {\n          return { ...item, lock: \"left\" as const };\n        }\n        return item;\n      });\n\n      // 对列进行重新排序，确保固定列在正确位置\n      return reorderColumns(updated);\n    });\n  };\n\n  // 设置列的固定状态（右侧）\n  const fixRight = () => {\n    setColumns((prev) => {\n      const updated = prev.map((item) => {\n        if (item.dataIndex === dataItem.dataIndex) {\n          return { ...item, lock: \"right\" as const };\n        }\n        return item;\n      });\n\n      // 对列进行重新排序，确保固定列在正确位置\n      return reorderColumns(updated);\n    });\n  };\n\n  // 取消列的固定状态\n  const unfix = () => {\n    setColumns((prev) => {\n      const updated = prev.map((item) => {\n        if (item.dataIndex === dataItem.dataIndex) {\n          return { ...item, lock: undefined };\n        }\n        return item;\n      });\n\n      // 对列进行重新排序，确保固定列在正确位置\n      return reorderColumns(updated);\n    });\n  };\n\n  // 重新排序列，确保固定列在正确位置\n  const reorderColumns = (columns: IColumn[]): IColumn[] => {\n    // 提取所有左侧固定列\n    const leftFixed = columns.filter(\n      (col) => col.lock === \"left\" || col.lock === true,\n    );\n\n    // 提取所有右侧固定列\n    const rightFixed = columns.filter((col) => col.lock === \"right\");\n\n    // 提取所有非固定列\n    const notFixed = columns.filter((col) => !col.lock);\n\n    // 合并重新排序后的列\n    return [...leftFixed, ...notFixed, ...rightFixed];\n  };\n\n  // 处理列的选中/取消选中\n  const onCheckChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n    const checked = e.target.checked;\n    setColumns((prev) => {\n      return prev.map((item) => {\n        if (item.dataIndex === dataItem.dataIndex) {\n          return { ...item, hidden: !checked };\n        }\n        return item;\n      });\n    });\n  };\n\n  // 拖拽功能\n  useDrag(dataItem.dataIndex, domRef, {\n    onDragStart: (event) => {\n      event.dataTransfer.setData(\"text\", dataItem.dataIndex);\n    },\n  });\n\n  // 放置功能\n  useDrop(domRef, {\n    onText: (dragKey) => {\n      if (dragKey === dataItem.dataIndex) return;\n\n      setColumns((prev) => {\n        const dragItem = prev.find((item) => item.dataIndex === dragKey);\n        if (!dragItem) return prev;\n\n        // 先进行正常的拖拽操作\n        const reordered = prev\n          .filter((item) => item.dataIndex !== dragKey)\n          .reduce((result, item) => {\n            if (item.dataIndex === dataItem.dataIndex) {\n              if (dropPosition.current === \"top\") {\n                return [...result, dragItem, item];\n              }\n              return [...result, item, dragItem];\n            }\n            return [...result, item];\n          }, []);\n\n        // 然后确保固定列在正确的位置\n        return reorderColumns(reordered);\n      });\n    },\n    onDragEnter: (event) => {\n      const itemElement = getParent(\n        event.currentTarget as HTMLElement,\n        (el: HTMLElement) => el.className.includes(\"yt-table-column-item\"),\n      );\n\n      if (itemElement?.getBoundingClientRect) {\n        const { top, height } = itemElement.getBoundingClientRect();\n        const halfLineTop = top + height / 2;\n        setIsHovering(event.clientY > halfLineTop ? \"bottom\" : \"top\");\n        dropPosition.current = event.clientY > halfLineTop ? \"bottom\" : \"top\";\n      } else {\n        setIsHovering(\"bottom\");\n      }\n    },\n    onDragLeave: () => setIsHovering(false),\n    onDrop: () => setIsHovering(false),\n  });\n\n  // 应用悬停状态的类名\n  const className = `yt-table-column-item ${\n    isHovering === \"top\" ? \"yt-table-column-item-top\" : \"\"\n  } ${isHovering === \"bottom\" ? \"yt-table-column-item-bottom\" : \"\"}`;\n\n  return (\n    <div ref={domRef} className={className} draggable>\n      {/* 左侧内容：索引、复选框和标题 */}\n      <div className=\"yt-table-column-item-left\">\n        {showIndex && (\n          <span className=\"yt-table-column-index\">{index + 1}</span>\n        )}\n        <Checkbox checked={!dataItem.hidden} onChange={onCheckChange} />\n        <span className=\"yt-table-column-title\">{dataItem.title}</span>\n      </div>\n\n      {/* 右侧内容：操作按钮 */}\n      <div className=\"yt-table-column-item-right\">\n        {/* 左侧固定按钮 */}\n        {position !== \"left\" ? (\n          <Tooltip\n            title={canFixLeft ? \"固定在左侧\" : `最多固定${LEFT_FIX_MAX_NUM}列`}\n          >\n            <Button\n              type=\"text\"\n              size=\"small\"\n              disabled={!canFixLeft}\n              onClick={fixLeft}\n              icon={<VerticalAlignTopOutlined />}\n            />\n          </Tooltip>\n        ) : (\n          <Tooltip title=\"取消固定\">\n            <Button\n              type=\"text\"\n              size=\"small\"\n              onClick={unfix}\n              icon={<UndoOutlined />}\n            />\n          </Tooltip>\n        )}\n\n        {/* 右侧固定按钮 */}\n        {position !== \"right\" ? (\n          <Tooltip\n            title={\n              canFixRight ? \"固定在右侧\" : `最多固定${RIGHT_FIX_MAX_NUM}列`\n            }\n          >\n            <Button\n              type=\"text\"\n              size=\"small\"\n              disabled={!canFixRight}\n              onClick={fixRight}\n              icon={<VerticalAlignBottomOutlined />}\n            />\n          </Tooltip>\n        ) : (\n          <Tooltip title=\"取消固定\">\n            <Button\n              type=\"text\"\n              size=\"small\"\n              onClick={unfix}\n              icon={<UndoOutlined />}\n            />\n          </Tooltip>\n        )}\n\n        {/* 拖拽图标 */}\n        <Tooltip title=\"拖动调整顺序\">\n          <MenuOutlined\n            style={{ cursor: \"move\", color: \"rgba(0, 0, 0, 0.45)\" }}\n          />\n        </Tooltip>\n      </div>\n    </div>\n  );\n};\n","import React, { useContext } from \"react\";\nimport { ColumnSettingContext } from \"./context\";\nimport { ColumnItem } from \"./column-item\";\nimport { LEFT_FIX_MAX_NUM, RIGHT_FIX_MAX_NUM } from \"./utils\";\n\n// 左侧固定列组件\nexport const FixedLeftColumns: React.FC = () => {\n  const { fixLeftColumns } = useContext(ColumnSettingContext);\n\n  if (!fixLeftColumns.length) {\n    return (\n      <div className=\"yt-table-column-setting-wrapper\">\n        <div className=\"yt-table-column-setting-wrapper-title\">\n          固定在左侧(最多固定{LEFT_FIX_MAX_NUM}个)\n        </div>\n        <div className=\"yt-table-column-setting-wrapper-null\">\n          暂无固定项，请从「不固定」池选择固定\n        </div>\n      </div>\n    );\n  }\n\n  return (\n    <div className=\"yt-table-column-setting-wrapper\">\n      <div className=\"yt-table-column-setting-wrapper-title\">\n        固定在左侧(最多固定{LEFT_FIX_MAX_NUM}个)\n      </div>\n      <div className=\"yt-table-column-setting\">\n        {fixLeftColumns.map((dataItem, index) => (\n          <ColumnItem\n            position=\"left\"\n            dataItem={dataItem}\n            key={dataItem.dataIndex}\n            index={index}\n          />\n        ))}\n      </div>\n    </div>\n  );\n};\n\n// 右侧固定列组件\nexport const FixedRightColumns: React.FC = () => {\n  const { fixRightColumns } = useContext(ColumnSettingContext);\n\n  if (!fixRightColumns.length) {\n    return (\n      <div className=\"yt-table-column-setting-wrapper\">\n        <div className=\"yt-table-column-setting-wrapper-title\">\n          固定在右侧(最多固定{RIGHT_FIX_MAX_NUM}个)\n        </div>\n        <div className=\"yt-table-column-setting-wrapper-null\">\n          暂无固定项，请从「不固定」池选择固定\n        </div>\n      </div>\n    );\n  }\n\n  return (\n    <div className=\"yt-table-column-setting-wrapper\">\n      <div className=\"yt-table-column-setting-wrapper-title\">\n        固定在右侧(最多固定{RIGHT_FIX_MAX_NUM}个)\n      </div>\n      <div className=\"yt-table-column-setting\">\n        {fixRightColumns.map((dataItem, index) => (\n          <ColumnItem\n            position=\"right\"\n            dataItem={dataItem}\n            key={dataItem.dataIndex}\n            index={index}\n          />\n        ))}\n      </div>\n    </div>\n  );\n};\n","import React, { useContext } from \"react\";\nimport { Modal, Checkbox, Button } from \"antd\";\nimport { IColumnSettingDialogProps } from \"../../types\";\nimport { ColumnSettingContext } from \"./context\";\nimport { FixedLeftColumns, FixedRightColumns } from \"./fixed-columns\";\nimport { ColumnItem } from \"./column-item\";\n\n// 不固定列区域组件\nconst NoFixColumns: React.FC = () => {\n  const { noFixColumns } = useContext(ColumnSettingContext);\n\n  return (\n    <div className=\"yt-table-column-setting-dialog-no-fix\">\n      {noFixColumns.length > 0 && (\n        <div className=\"yt-table-column-setting\">\n          {noFixColumns.map((item, index) => (\n            <ColumnItem\n              showIndex\n              position=\"center\"\n              dataItem={item}\n              key={item.dataIndex}\n              index={index}\n            />\n          ))}\n        </div>\n      )}\n    </div>\n  );\n};\n\n// 列设置对话框组件\nexport const ColumnSettingDialog: React.FC<IColumnSettingDialogProps> = ({\n  visible,\n  setVisible,\n}) => {\n  const {\n    checkedColumnKeys,\n    checkedAll,\n    setColumns,\n    updateColumns,\n    cancelUpdateColumns,\n  } = useContext(ColumnSettingContext);\n\n  // 取消操作\n  const handleCancel = () => {\n    cancelUpdateColumns();\n    setVisible(false);\n  };\n\n  // 确认操作\n  const handleOk = () => {\n    updateColumns();\n    setVisible(false);\n  };\n\n  // 全选/取消全选\n  const handleCheckAll = (e: React.ChangeEvent<HTMLInputElement>) => {\n    const checked = e.target.checked;\n    setColumns((prev) => {\n      return prev.map((item) => ({ ...item, hidden: !checked }));\n    });\n  };\n\n  // 自定义页脚\n  const footer = (\n    <div className=\"yt-table-column-setting-dialog-footer\">\n      <Checkbox\n        checked={checkedAll}\n        onChange={handleCheckAll}\n        indeterminate={!!checkedColumnKeys.length && !checkedAll}\n      />\n      <span className=\"yt-table-column-setting-dialog-checkall-text\">全选</span>\n      <Button style={{ marginLeft: 16 }} onClick={handleCancel}>\n        取消\n      </Button>\n      <Button type=\"primary\" style={{ marginLeft: 8 }} onClick={handleOk}>\n        确认\n      </Button>\n    </div>\n  );\n\n  return (\n    <Modal\n      open={visible}\n      onCancel={handleCancel}\n      onOk={handleOk}\n      title=\"列设置\"\n      footer={footer}\n      width={800}\n    >\n      <div className=\"yt-table-column-setting-dialog\">\n        {/* 固定列区域 */}\n        <div className=\"yt-table-column-setting-dialog-fix\">\n          <FixedLeftColumns />\n          <FixedRightColumns />\n        </div>\n\n        {/* 不固定列区域 */}\n        <NoFixColumns />\n      </div>\n    </Modal>\n  );\n};\n","import React, { useContext } from \"react\";\nimport { Button } from \"antd\";\nimport { IColumnSettingPopupProps } from \"../../types\";\nimport { ColumnSettingContext } from \"./context\";\nimport { FixedLeftColumns, FixedRightColumns } from \"./fixed-columns\";\nimport { ColumnItem } from \"./column-item\";\n\n// 列设置弹出层组件\nexport const ColumnSettingPopup: React.FC<IColumnSettingPopupProps> = ({\n  onCancel,\n  onConfirm,\n}) => {\n  const { fixLeftColumns, fixRightColumns, noFixColumns, updateColumns } =\n    useContext(ColumnSettingContext);\n\n  // 确认按钮点击事件\n  const handleConfirm = () => {\n    updateColumns();\n    if (onConfirm) onConfirm();\n  };\n\n  return (\n    <>\n      <div className=\"yt-table-column-setting-wrapper yt-table-column-setting-popup-wrapper\">\n        {/* 左侧固定列区域 */}\n        <FixedLeftColumns />\n\n        {/* 不固定列区域 */}\n        {(fixLeftColumns.length > 0 || fixRightColumns.length > 0) && (\n          <div className=\"yt-table-column-setting-wrapper-title\">不固定</div>\n        )}\n\n        {/* 显示不固定列列表 */}\n        {noFixColumns.length > 0 && (\n          <div className=\"yt-table-column-setting\">\n            {noFixColumns.map((item, index) => (\n              <ColumnItem\n                position=\"center\"\n                dataItem={item}\n                key={item.dataIndex}\n                index={index}\n              />\n            ))}\n          </div>\n        )}\n\n        {/* 右侧固定列区域 */}\n        <FixedRightColumns />\n      </div>\n\n      {/* 底部操作按钮 */}\n      <div className=\"yt-table-column-setting-footer\">\n        <Button onClick={onCancel}>取消</Button>\n        <Button type=\"primary\" onClick={handleConfirm}>\n          确认\n        </Button>\n      </div>\n    </>\n  );\n};\n","import * as React from \"react\";\nimport { SettingOutlined } from \"@ant-design/icons\";\n\n// 图标组件属性\ninterface IconProps {\n  activate?: boolean;\n  color?: string;\n}\n\n/**\n * 列设置图标\n */\nexport function ColumnSetIcon({ activate, color }: IconProps) {\n  return (\n    <SettingOutlined\n      className={activate ? \"yt-table-icon-column-set-highlight\" : \"\"}\n      style={{\n        color: color || \"inherit\",\n        fontSize: \"16px\",\n      }}\n    />\n  );\n}\n","import { IColumn } from \"../../types\";\n\n// 列设置本地存储的前缀\nconst STORAGE_PREFIX = \"yt-table-column-setting-\";\n\n// 仅存储的列配置属性类型\nexport interface IStoredColumnSetting {\n  dataIndex: string;\n  hidden?: boolean;\n  lock?: \"left\" | \"right\" | boolean;\n}\n\n/**\n * 保存列设置到本地存储\n * @param key 存储键名\n * @param columns 列配置\n */\nexport const saveColumnSetting = (key: string, columns: IColumn[]): void => {\n  if (!key) return;\n\n  try {\n    // 只存储必要的属性\n    const storedData: IStoredColumnSetting[] = columns.map((column) => ({\n      dataIndex: column.dataIndex,\n      hidden: column.hidden,\n      lock: column.lock,\n    }));\n\n    localStorage.setItem(`${STORAGE_PREFIX}${key}`, JSON.stringify(storedData));\n  } catch (error) {\n    console.error(\"保存列设置失败:\", error);\n  }\n};\n\n/**\n * 从本地存储读取列设置\n * @param key 存储键名\n */\nexport const getColumnSetting = (\n  key: string,\n): IStoredColumnSetting[] | null => {\n  if (!key) return null;\n\n  try {\n    const stored = localStorage.getItem(`${STORAGE_PREFIX}${key}`);\n    if (!stored) return null;\n\n    return JSON.parse(stored) as IStoredColumnSetting[];\n  } catch (error) {\n    console.error(\"读取列设置失败:\", error);\n    return null;\n  }\n};\n\n/**\n * 合并列设置\n * 只修改 hidden 和 lock 属性，保留原有列的其他属性\n * @param originalColumns 原始列配置\n * @param storedSettings 存储的列设置\n */\nexport const mergeColumnSettings = (\n  originalColumns: IColumn[],\n  storedSettings: IStoredColumnSetting[] | null,\n): IColumn[] => {\n  if (!storedSettings) return originalColumns;\n\n  // 创建一个 dataIndex 到存储设置的映射\n  const settingsMap = new Map<string, IStoredColumnSetting>();\n  storedSettings.forEach((setting) => {\n    settingsMap.set(setting.dataIndex, setting);\n  });\n\n  // 合并列配置，只更新 hidden 和 lock 属性\n  return originalColumns.map((column) => {\n    const storedSetting = settingsMap.get(column.dataIndex);\n    if (!storedSetting) return column;\n\n    return {\n      ...column,\n      hidden: storedSetting.hidden,\n      lock: storedSetting.lock,\n    };\n  });\n};\n\n/**\n * 清除列设置\n * @param key 存储键名\n */\nexport const clearColumnSetting = (key: string): void => {\n  if (!key) return;\n\n  try {\n    localStorage.removeItem(`${STORAGE_PREFIX}${key}`);\n  } catch (error) {\n    console.error(\"清除列设置失败:\", error);\n  }\n};\n","import * as React from \"react\";\nimport { Tooltip, Dropdown } from \"antd\";\nimport { IColumnSettingProps } from \"../../types\";\nimport { ColumnSettingProvider } from \"./context\";\nimport { ColumnSettingDialog } from \"./dialog\";\nimport { ColumnSettingPopup } from \"./popup\";\nimport { ColumnSetIcon } from \"./icons\";\nimport {\n  getColumnSetting,\n  mergeColumnSettings,\n  saveColumnSetting,\n} from \"./storage\";\n\nimport \"./column-set.less\";\n\n/**\n * 列设置组件\n * 提供表格列的显示/隐藏、排序和固定功能，支持本地存储\n */\nexport default function YtColumnSet({\n  columns: initialColumns,\n  setColumns: onSetColumns,\n  zIndex,\n  hasRowDetail = false,\n  storageKey,\n}: IColumnSettingProps) {\n  // 对话框显示状态\n  const [dialogVisible, setDialogVisible] = React.useState(false);\n  // 下拉菜单显示状态\n  const [dropdownVisible, setDropdownVisible] = React.useState(false);\n\n  // 初始化时，尝试从本地存储读取列配置\n  const mergedColumns = React.useMemo(() => {\n    if (!storageKey) return initialColumns;\n\n    const storedSettings = getColumnSetting(storageKey);\n    return mergeColumnSettings(initialColumns, storedSettings);\n  }, [initialColumns, storageKey]);\n\n  // 内部列状态\n  const [columns, setColumns] = React.useState(mergedColumns);\n\n  // 当初始列或存储键变化时，重新合并列配置\n  React.useEffect(() => {\n    setColumns(mergedColumns);\n  }, [mergedColumns]);\n\n  // 包装列更新方法，实现本地存储\n  const handleSetColumns = (newColumns: typeof columns, type?: string) => {\n    setColumns(newColumns);\n    onSetColumns(newColumns, type);\n\n    // 如果有存储键，保存到本地存储\n    if (storageKey) {\n      saveColumnSetting(storageKey, newColumns);\n    }\n  };\n\n  // 点击列设置按钮\n  const handleClick = () => {\n    if (!columns?.length) return;\n\n    // 列数大于15时使用对话框，否则使用下拉菜单\n    if (columns.length > 15) {\n      setDialogVisible(true);\n    } else {\n      setDropdownVisible(true);\n    }\n  };\n\n  // 关闭下拉菜单\n  const closeDropdown = () => {\n    setDropdownVisible(false);\n  };\n\n  // 下拉菜单内容\n  const dropdownContent = (\n    <div className=\"yt-table-column-setting-dropdown\">\n      <ColumnSettingProvider\n        columns={columns}\n        setColumns={handleSetColumns}\n        hasRowDetail={hasRowDetail}\n      >\n        <ColumnSettingPopup\n          onCancel={closeDropdown}\n          onConfirm={closeDropdown}\n        />\n      </ColumnSettingProvider>\n    </div>\n  );\n\n  return (\n    <>\n      {/* 列设置按钮和下拉菜单 */}\n      <Dropdown\n        open={dropdownVisible}\n        onOpenChange={setDropdownVisible}\n        trigger={[]}\n        overlay={dropdownContent}\n        getPopupContainer={(triggerNode) =>\n          (triggerNode.parentNode as HTMLElement) || document.body\n        }\n        overlayStyle={{ zIndex }}\n      >\n        <Tooltip title=\"列设置\" overlayStyle={{ wordBreak: \"keep-all\" }}>\n          <div className=\"yt-table-toolbar-settings-item\" onClick={handleClick}>\n            <ColumnSetIcon\n              activate={dialogVisible || dropdownVisible}\n              color={dialogVisible || dropdownVisible ? \"#2f6cf7\" : \"unset\"}\n            />\n          </div>\n        </Tooltip>\n      </Dropdown>\n\n      {/* 列设置对话框 */}\n      <ColumnSettingProvider\n        isDialog\n        columns={columns}\n        setColumns={handleSetColumns}\n        hasRowDetail={hasRowDetail}\n      >\n        <ColumnSettingDialog\n          visible={dialogVisible}\n          setVisible={setDialogVisible}\n        />\n      </ColumnSettingProvider>\n    </>\n  );\n}\n","import React from \"react\";\nimport { InfoCircleFilled } from \"@ant-design/icons\";\n\nimport \"./selection-total.less\";\n\ninterface SelectionTotalProps {\n  /**\n   * 选中的行数\n   */\n  selectedCount: number;\n  /**\n   * 总行数\n   */\n  totalCount: number;\n}\n\n/**\n * 表格选择总计组件\n * 显示已选择的行数和总行数\n */\nconst SelectionTotal: React.FC<SelectionTotalProps> = ({\n  selectedCount,\n  totalCount,\n}) => {\n  return (\n    <div className={`yt-table-selection-total`}>\n      <div className=\"yt-table-selection-total-left\">\n        <InfoCircleFilled className=\"yt-table-selection-total-icon\" />\n        <span className=\"yt-table-selection-total-text\">\n          已选择\n          <span className=\"yt-table-selection-total-bold\">{selectedCount}</span>\n          条 / 总计\n          <span className=\"yt-table-selection-total-total\">{totalCount}</span>条\n        </span>\n      </div>\n    </div>\n  );\n};\n\nexport default SelectionTotal;\n","import React from \"react\";\nimport { Space } from \"antd\";\nimport { YtColumnSet } from \"./index\";\nimport { ProcessedColumn } from \"../types\";\nimport SelectionTotal from \"../components/selection-total\";\nimport \"./tool-bar.less\";\n\ninterface ToolBarProps {\n  selectedButtons?: (selectedRowKeys: string[]) => React.ReactNode;\n  globalButtons?: () => React.ReactNode;\n  exportButtons?: () => React.ReactNode;\n  selectedRowKeys: string[];\n  columnSetting?: {\n    enable: boolean;\n    columns: ProcessedColumn[];\n    setColumns: (columns: ProcessedColumn[], type?: string) => void;\n    hasRowDetail?: boolean;\n    zIndex?: number;\n    storageKey?: string;\n  };\n  rowSelectionConfig?: {\n    selectedCount: number;\n    totalCount: number;\n  };\n}\n\n/**\n * 表格工具栏组件\n */\nconst ToolBar: React.FC<ToolBarProps> = ({\n  selectedButtons,\n  globalButtons,\n  exportButtons,\n  selectedRowKeys,\n  columnSetting,\n  rowSelectionConfig,\n}) => {\n  return (\n    <div className=\"yt-table-toolbar\">\n      <div className=\"yt-table-toolbar-left\">\n        {rowSelectionConfig && (\n          <SelectionTotal\n            selectedCount={rowSelectionConfig.selectedCount}\n            totalCount={rowSelectionConfig.totalCount}\n          />\n        )}\n        {selectedButtons && <Space>{selectedButtons(selectedRowKeys)}</Space>}\n        {exportButtons && <Space>{exportButtons()}</Space>}\n      </div>\n      <div className=\"yt-table-toolbar-right\">\n        {globalButtons && <Space>{globalButtons()}</Space>}\n\n        {columnSetting?.enable && (\n          <YtColumnSet\n            columns={columnSetting.columns}\n            setColumns={columnSetting.setColumns}\n            zIndex={columnSetting.zIndex || 1000}\n            hasRowDetail={columnSetting.hasRowDetail}\n            storageKey={columnSetting.storageKey}\n          />\n        )}\n      </div>\n    </div>\n  );\n};\n\nexport default ToolBar;\n","// 获取通用属性, 用于最终渲染在dom上\nexport const getCommonAttr = (props) => {\n  if (props?.__id) {\n    return {\n      \"data-node-id\": props?.__id,\n    };\n  }\n  return {};\n};\n","import React from \"react\";\nimport _ from \"lodash\";\nimport { Table } from \"antd\";\nimport type { YtTableProps } from \"./types\";\nimport { useTablePipeline } from \"./core/hooks/use-table-pipeline\";\nimport ToolBar from \"./components/tool-bar\";\nimport { getCommonAttr } from \"../../_utils\";\nimport \"./styles/index.less\";\n\n/**\n * YtTable 增强表格组件\n *\n * 基于 Pipeline 架构的精简版本：\n * 1. 使用 useTablePipeline 处理所有数据流\n * 2. 渲染所有 UI 组件\n */\nexport const YtTable: React.FC<YtTableProps> = React.forwardRef<\n  HTMLDivElement,\n  YtTableProps\n>((props, ref) => {\n  // 深度合并 customProps 到原始 props，使用 useMemo 避免循环渲染\n  const mergedProps = React.useMemo(() => {\n    const { customProps, handleProps, ...restProps } = props;\n\n    // 如果没有 customProps，直接返回原始 props（去掉 customProps 字段）\n    if (!customProps || Object.keys(customProps).length === 0) {\n      return { ...restProps, handleProps };\n    }\n\n    // 深度合并 customProps 到 restProps\n    return { ..._.merge({}, restProps, customProps), handleProps };\n  }, [props]);\n\n  // 使用 Pipeline 处理所有数据流\n  const {\n    renderColumns,\n    rowSelectionConfig,\n    paginationConfig,\n    columnsState,\n    ytTableExtensionProps,\n    restAntdProps,\n  } = useTablePipeline(mergedProps);\n\n  const { toolbar, showSelectionTotal, columnSetting } = ytTableExtensionProps;\n  const { columns, setColumns } = columnsState;\n\n  return (\n    <div\n      className=\"yt-table-container w-full relative\"\n      {...getCommonAttr(props)}\n      ref={ref}\n    >\n      {/* 工具栏 */}\n      {toolbar?.enable && (\n        <ToolBar\n          selectedButtons={toolbar.selectedButtons}\n          globalButtons={toolbar.globalButtons}\n          exportButtons={toolbar.exportButtons}\n          selectedRowKeys={props.rowSelection?.selectedRowKeys || []}\n          columnSetting={\n            columnSetting?.enable\n              ? {\n                  enable: true,\n                  columns,\n                  setColumns,\n                  hasRowDetail: columnSetting.hasRowDetail,\n                  zIndex: columnSetting.zIndex,\n                  storageKey: columnSetting.storageKey,\n                }\n              : undefined\n          }\n          rowSelectionConfig={\n            showSelectionTotal\n              ? {\n                  selectedCount: rowSelectionConfig.selectedRowKeys.length,\n                  totalCount: paginationConfig ? paginationConfig.total : 0,\n                }\n              : undefined\n          }\n        />\n      )}\n\n      {/* 表格 - 使用 Pipeline 处理后的数据 */}\n      <Table\n        {...restAntdProps}\n        columns={renderColumns}\n        rowSelection={rowSelectionConfig}\n        pagination={paginationConfig}\n      />\n    </div>\n  );\n});\n\nYtTable.displayName = \"YtTable\";\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import { BreakPoints } from \"../types\";\n\n// 默认断点列信息\nexport const DEFAULT_BREAK_POINTS: BreakPoints = [\n  {\n    width: 750,\n    maxContentWidth: 750,\n    numberOfColumns: 4,\n  },\n  {\n    width: 960,\n    maxContentWidth: 960,\n    numberOfColumns: 8,\n  },\n  {\n    width: 1200,\n    maxContentWidth: 1200,\n    numberOfColumns: 12,\n  },\n  {\n    width: Infinity,\n    maxContentWidth: Infinity,\n    numberOfColumns: 12,\n  },\n];\n\n// css 别名处理\nexport const ALIGN_ALIAS_MAP = {\n  left: \"start\",\n  right: \"end\",\n  middle: \"center\",\n};\n\nexport const VER_ALIGN_ALIAS_MAP = {\n  top: \"start\",\n  middle: \"center\",\n  bottom: \"end\",\n};\n\nexport const SECTION = \"YtLayoutSection\";\nexport const BLOCK = \"YtLayoutBlock\";\n\n/**\n * 页面响应式断点变化时触发\n */\nexport const PageColumnChange = \"PageColumnChange\";\n","import { createContext } from \"react\";\nimport { last } from \"lodash\";\nimport { DEFAULT_BREAK_POINTS } from \"./constant\";\nimport { BreakPoint, LayoutContextProps } from \"../types\";\n\nconst lastBreakPoint = last(DEFAULT_BREAK_POINTS) as BreakPoint;\n\n// 默认的布局上下文参数\nexport const defaultContext: LayoutContextProps = {\n  prefix: \"yt-layout-\",\n  noPadding: false,\n  sectionGap: undefined,\n  blockGap: undefined,\n  gridGap: undefined,\n  maxNumberOfColumns: lastBreakPoint.numberOfColumns || 12,\n  breakPoint: lastBreakPoint,\n};\n\nexport default createContext<LayoutContextProps>(defaultContext);\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n  Events.prototype = Object.create(null);\n\n  //\n  // This hack is needed because the `__proto__` property is still inherited in\n  // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n  //\n  if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n  this.fn = fn;\n  this.context = context;\n  this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n  if (typeof fn !== 'function') {\n    throw new TypeError('The listener must be a function');\n  }\n\n  var listener = new EE(fn, context || emitter, once)\n    , evt = prefix ? prefix + event : event;\n\n  if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n  else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n  else emitter._events[evt] = [emitter._events[evt], listener];\n\n  return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n  if (--emitter._eventsCount === 0) emitter._events = new Events();\n  else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n  this._events = new Events();\n  this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n  var names = []\n    , events\n    , name;\n\n  if (this._eventsCount === 0) return names;\n\n  for (name in (events = this._events)) {\n    if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n  }\n\n  if (Object.getOwnPropertySymbols) {\n    return names.concat(Object.getOwnPropertySymbols(events));\n  }\n\n  return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n  var evt = prefix ? prefix + event : event\n    , handlers = this._events[evt];\n\n  if (!handlers) return [];\n  if (handlers.fn) return [handlers.fn];\n\n  for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n    ee[i] = handlers[i].fn;\n  }\n\n  return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n  var evt = prefix ? prefix + event : event\n    , listeners = this._events[evt];\n\n  if (!listeners) return 0;\n  if (listeners.fn) return 1;\n  return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return false;\n\n  var listeners = this._events[evt]\n    , len = arguments.length\n    , args\n    , i;\n\n  if (listeners.fn) {\n    if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n    switch (len) {\n      case 1: return listeners.fn.call(listeners.context), true;\n      case 2: return listeners.fn.call(listeners.context, a1), true;\n      case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n      case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n      case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n      case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n    }\n\n    for (i = 1, args = new Array(len -1); i < len; i++) {\n      args[i - 1] = arguments[i];\n    }\n\n    listeners.fn.apply(listeners.context, args);\n  } else {\n    var length = listeners.length\n      , j;\n\n    for (i = 0; i < length; i++) {\n      if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n      switch (len) {\n        case 1: listeners[i].fn.call(listeners[i].context); break;\n        case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n        case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n        case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n        default:\n          if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n            args[j - 1] = arguments[j];\n          }\n\n          listeners[i].fn.apply(listeners[i].context, args);\n      }\n    }\n  }\n\n  return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n  return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n  return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return this;\n  if (!fn) {\n    clearEvent(this, evt);\n    return this;\n  }\n\n  var listeners = this._events[evt];\n\n  if (listeners.fn) {\n    if (\n      listeners.fn === fn &&\n      (!once || listeners.once) &&\n      (!context || listeners.context === context)\n    ) {\n      clearEvent(this, evt);\n    }\n  } else {\n    for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n      if (\n        listeners[i].fn !== fn ||\n        (once && !listeners[i].once) ||\n        (context && listeners[i].context !== context)\n      ) {\n        events.push(listeners[i]);\n      }\n    }\n\n    //\n    // Reset the array, or remove it completely if we have no more listeners.\n    //\n    if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n    else clearEvent(this, evt);\n  }\n\n  return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n  var evt;\n\n  if (event) {\n    evt = prefix ? prefix + event : event;\n    if (this._events[evt]) clearEvent(this, evt);\n  } else {\n    this._events = new Events();\n    this._eventsCount = 0;\n  }\n\n  return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n  module.exports = EventEmitter;\n}\n","import { EventEmitter } from \"eventemitter3\";\n\nexport const events = new EventEmitter();\n\nexport function emitEvent(eventName, ...args) {\n  if (events && eventName) {\n    events?.emit(eventName, ...args);\n  }\n}\n\nexport function onEvent(eventName, func) {\n  if (events && eventName && typeof func === \"function\") {\n    events?.on(eventName, func);\n  }\n}\n","import { DEFAULT_BREAK_POINTS, PageColumnChange } from \"./common/constant\";\nimport { BreakPoint, BreakPoints } from \"./types\";\nimport { defaultContext } from \"./common/context\";\nimport { debounce, isNumber, isString } from \"lodash\";\nimport { emitEvent } from \"./event\";\n\n/**\n * 获取当前屏幕断点\n * @param breakPoints\n */\nexport function getCurBreakPoint(\n  breakPoints: BreakPoints,\n  container?: HTMLElement | null,\n): BreakPoint {\n  let screenWidths: number[] = [];\n  const tmpMap: any = {};\n  const availWidth = container\n    ? container?.clientWidth\n    : document.body.clientWidth;\n\n  // console.info('当前容器', container || document.body, '；当前容器宽度', availWidth);\n\n  breakPoints.forEach((bp) => {\n    const { width } = bp;\n    screenWidths.push(width);\n    tmpMap[width] = bp;\n  });\n\n  screenWidths = screenWidths.sort((a, b) => a - b);\n\n  const len = screenWidths.length;\n\n  let ret = tmpMap[screenWidths[0]];\n\n  if (availWidth > screenWidths[len - 1]) {\n    ret = tmpMap[screenWidths[len - 1]];\n  } else {\n    for (let i = 1; i < len; i++) {\n      const breakPoint = tmpMap[screenWidths[i]];\n\n      if (screenWidths[i - 1] <= availWidth && availWidth < screenWidths[i]) {\n        ret = breakPoint;\n      }\n    }\n  }\n\n  return ret;\n}\n\n/**\n * 获取最大断点列数\n */\nexport function getMaxNumberOfColumns(\n  breakPoints: BreakPoints = DEFAULT_BREAK_POINTS,\n): number {\n  const screenWidths = breakPoints.map((bp) => bp.width);\n  const maxWidth = Math.max(...screenWidths);\n  // @ts-ignore\n  const bp = breakPoints.find((breakPoint) => breakPoint?.width === maxWidth);\n\n  return bp?.numberOfColumns || 12;\n}\n\n/**\n * 是否为标准的预设尺寸\n * @param val\n */\nexport function isPresetSize(val: string): boolean {\n  return [\"small\", \"medium\", \"large\"].indexOf(val) > -1;\n}\n\n/**\n * 为数值包裹自动单位\n * eg:\n *  wrapUnit(2) -> 2px\n *  wrapUnit('2em') -> 2em\n * @param value\n * @param unit\n */\nexport function wrapUnit(value: number | string | undefined, unit = \"px\") {\n  return isNumber(value) ? `${value}${unit}` : value;\n}\n\n/**\n * 是否为一个有效的 gap 值:\n * eg: 0.9 / -9px / auto\n * @param val\n */\nexport function isValidGap(val: any): boolean {\n  const gapValReg = /^-?[0-9]*\\.?[0-9]+([a-z|A-z]*)$/;\n  return (\n    isNumber(val) || (isString(val) && (gapValReg.test(val) || val === \"auto\"))\n  );\n}\n\n/**\n * 获取最终的 gap 值\n * @param contextGap 上下文中的 gap 值\n * @param propGap 属性中定义的 gap 值\n */\nexport function getGapVal(contextGap: any, propGap: any) {\n  if (isValidGap(propGap)) {\n    return wrapUnit(propGap);\n  } else if (isValidGap(contextGap)) {\n    return wrapUnit(contextGap);\n  }\n  return undefined;\n}\n\nfunction calPageClassNames(config?: { container?: HTMLElement | null }) {\n  const bp = getCurBreakPoint(DEFAULT_BREAK_POINTS, config?.container);\n\n  const { body } = document;\n  if (body) {\n    const cls = body?.className;\n    if (typeof bp.numberOfColumns === \"number\") {\n      const prefix = `${defaultContext.prefix}page--col-`;\n      const index = cls?.indexOf(prefix);\n      const pattern = /(yt-layout-page--col-)\\d+/;\n      // @ts-ignore\n      const currentNumberOfColumn = +cls\n        ?.match?.(pattern)?.[0]\n        ?.replace(prefix, \"\");\n\n      if (index !== -1) {\n        if (currentNumberOfColumn !== bp.numberOfColumns) {\n          body.className = cls?.replace(\n            pattern,\n            `${prefix}${bp.numberOfColumns}`,\n          );\n        }\n        emitEvent(PageColumnChange, bp);\n      } else {\n        body.className = `${cls} ${prefix}${bp.numberOfColumns}`;\n        emitEvent(PageColumnChange, bp);\n      }\n    }\n  }\n}\n\nexport const debounceCalPageClassNames = debounce(\n  (config?: { container?: HTMLElement | null }) => {\n    calPageClassNames?.(config);\n  },\n  500,\n  {\n    leading: true,\n  },\n);\n\nexport const debounceCalPageClassNames2 = debounce(\n  (config?: any) => {\n    calPageClassNames?.(config);\n  },\n  500,\n  {\n    leading: true,\n  },\n);\n","import { useContext } from \"react\";\nimport classNames from \"classnames\";\nimport { isNumber, isString } from \"lodash\";\nimport Context from \"../common/context\";\nimport { LayoutContextProps } from \"../types\";\n\n// 通过判断容器 props 值，给容器设置class，由 class 控制容器 flex 样式\nconst useFlexClassNames = (props: any) => {\n  const { autoFit, width, height, style } = props;\n\n  const { prefix } = useContext<LayoutContextProps>(Context);\n  const clsPrefix = `${prefix}flex-item`;\n\n  const validWidth = width || style?.width;\n  const validHeight =\n    isNumber(height) || (isString(height) && height !== \"\")\n      ? height\n      : undefined;\n  const validMinHeight = style?.minHeight;\n\n  let isDefault = false;\n  let isAutoFit = false;\n  let isValidWidth = false;\n  let isValidHeight = false;\n\n  if (autoFit) {\n    isAutoFit = true;\n  } else if (validHeight || validMinHeight || validWidth) {\n    isValidHeight = validHeight || validMinHeight;\n    isValidWidth = validWidth;\n  } else {\n    isDefault = true;\n  }\n\n  return classNames({\n    [`${clsPrefix}-default`]: isDefault,\n    [`${clsPrefix}-auto-fit`]: isAutoFit,\n    [`${clsPrefix}-valid-width`]: isValidWidth,\n    [`${clsPrefix}-valid-height`]: isValidHeight,\n  });\n};\n\nexport default useFlexClassNames;\n","import React, {\n  ForwardRefExoticComponent,\n  forwardRef,\n  useContext,\n  CSSProperties,\n  ForwardRefRenderFunction,\n  useMemo,\n} from \"react\";\nimport classNames from \"classnames\";\n\nimport Context from \"./common/context\";\nimport { VER_ALIGN_ALIAS_MAP } from \"./common/constant\";\nimport { isValidGap, wrapUnit } from \"./util\";\nimport useFlexClassNames from \"./hooks/use-flex-class-names\";\nimport { LayoutCellProps, LayoutContextProps, TypeMark } from \"./types\";\n\ntype ICell = ForwardRefExoticComponent<LayoutCellProps> & TypeMark;\n\n/**\n * 单元格容器(默认垂直方向的 flex 布局容器)\n */\nconst Cell: ForwardRefRenderFunction<HTMLDivElement, LayoutCellProps> = (\n  props,\n  ref,\n) => {\n  const {\n    className,\n    children,\n    verAlign,\n    width,\n    height,\n    block = false,\n    direction = \"ver\",\n    align,\n    style,\n    // 父级元素处理 autoFit 的相关布局\n    autoFit,\n    gap,\n    ...others\n  } = props;\n  const { prefix } = useContext<LayoutContextProps>(Context);\n  const clsPrefix = `${prefix}cell`;\n\n  const validWidth = width || style?.width;\n  const newStyle: CSSProperties = useMemo(\n    () => ({\n      ...(!block\n        ? {\n            display: \"flex\",\n            flexDirection: direction === \"ver\" ? \"column\" : \"row\",\n          }\n        : null),\n      ...(verAlign\n        ? {\n            // @ts-ignore\n            justifyContent: VER_ALIGN_ALIAS_MAP[verAlign] || verAlign,\n          }\n        : null),\n      ...(width ? { width: wrapUnit(width) } : null),\n      ...(height ? { height: wrapUnit(height) } : null),\n      ...(isValidGap(gap) ? { gap: wrapUnit(gap) } : null),\n      // 有 width 或者 style.width 的时候，设置 flexBasis 宽度\n      ...(validWidth ? { flexBasis: wrapUnit(validWidth) } : null),\n      ...style,\n    }),\n    [block, direction, verAlign, width, height, gap, style, validWidth],\n  );\n\n  const flexClassNames = useFlexClassNames(props);\n\n  return (\n    <div\n      {...others}\n      ref={ref}\n      className={classNames(clsPrefix, className, flexClassNames, {\n        [`${clsPrefix}-align--${align}`]: align,\n      })}\n      style={newStyle}\n    >\n      {children}\n    </div>\n  );\n};\n\nconst RefCell: ICell = forwardRef(Cell);\n\nRefCell.displayName = \"Cell\";\nRefCell.typeMark = \"Cell\";\n\nexport default RefCell;\n","import React, {\n  useContext,\n  forwardRef,\n  ForwardedRef,\n  ForwardRefExoticComponent,\n  ForwardRefRenderFunction,\n} from \"react\";\nimport classNames from \"classnames\";\nimport Context from \"./common/context\";\nimport Cell from \"./cell\";\nimport { LayoutBlockProps, LayoutContextProps, TypeMark } from \"./types\";\n\ntype IBlock = ForwardRefExoticComponent<LayoutBlockProps> & TypeMark;\n\n/**\n * 区块,默认 flex 布局\n * @param props\n * @param ref\n * @constructor\n */\nconst Block: ForwardRefRenderFunction<any, LayoutBlockProps> = (\n  props,\n  ref: ForwardedRef<any>,\n) => {\n  const {\n    className,\n    extra,\n    width,\n    contentClassName,\n    contentStyle = {},\n    span: spanProp,\n    children,\n    align,\n    verAlign,\n    ...others\n  } = props;\n  const { prefix, maxNumberOfColumns } =\n    useContext<LayoutContextProps>(Context);\n\n  let span = spanProp;\n\n  if (!span || span > maxNumberOfColumns || span <= 0) {\n    span = maxNumberOfColumns;\n  }\n\n  const clsPrefix = `${prefix}block`;\n\n  const blockCls = classNames(className, clsPrefix, {\n    [`${clsPrefix}--span-${span}`]: span > 0,\n  });\n\n  return (\n    <Cell\n      {...others}\n      width={width}\n      verAlign={verAlign}\n      className={blockCls}\n      // @ts-ignore\n      ref={ref}\n    >\n      {children}\n    </Cell>\n  );\n};\n\nconst RefBlock: IBlock = forwardRef(Block);\n\nRefBlock.displayName = \"Block\";\n\nRefBlock.typeMark = \"Block\";\n\nexport default RefBlock;\n","import React, {\n  Children,\n  cloneElement,\n  forwardRef,\n  ReactElement,\n  ReactNode,\n  useContext,\n  useEffect,\n  useMemo,\n  useRef,\n  useState,\n} from \"react\";\nimport classNames from \"classnames\";\nimport Context from \"./common/context\";\nimport {\n  debounceCalPageClassNames,\n  debounceCalPageClassNames2,\n  getGapVal,\n  isValidGap,\n  wrapUnit,\n} from \"./util\";\nimport Block from \"./block\";\nimport { LayoutSectionProps, LayoutContextProps } from \"./types\";\nimport { isNil } from \"lodash\";\nimport { onEvent } from \"./event\";\nimport { PageColumnChange } from \"./common/constant\";\n\n/**\n * 获取计算后的子节点\n * @param children\n * @param numberOfColumns\n * @param maxNumberOfColumns\n */\nfunction getValidChildren(\n  children: ReactNode,\n  numberOfColumns: number,\n  maxNumberOfColumns: number,\n) {\n  const newChildren = wrapBlock(children, maxNumberOfColumns);\n\n  return calBlockSpan(newChildren as ReactElement[], numberOfColumns);\n}\n\n/**\n * 为非 Block 节点，包裹 Block 子元素\n * @param children\n * @param maxNumberOfColumns\n * @return ReactNode[]\n */\nfunction wrapBlock(children: ReactNode, maxNumberOfColumns: number) {\n  let tmp: ReactNode[] = [];\n  const ret: ReactNode[] = [];\n  const validChildList = Children.toArray(children).filter(\n    (child) => !isNil(child),\n  );\n\n  validChildList.forEach((child: any, index) => {\n    if (child?.type === Block || child?.type?.typeMark === \"Block\") {\n      if (tmp.length > 0) {\n        ret.push(\n          <Block key={`cs-${index}`} span={maxNumberOfColumns}>\n            {tmp}\n          </Block>,\n        );\n        tmp = [];\n      }\n\n      ret.push(child);\n\n      if (tmp.length > 0) {\n        ret.push(\n          <Block key={`cs-${index}`} span={maxNumberOfColumns}>\n            {[...tmp]}\n          </Block>,\n        );\n        tmp = [];\n      }\n    } else {\n      tmp.push(child);\n    }\n\n    if (index === validChildList.length - 1 && tmp.length > 0) {\n      ret.push(\n        <Block key={`cs-${index}`} span={maxNumberOfColumns}>\n          {[...tmp]}\n        </Block>,\n      );\n      tmp = [];\n    }\n  });\n\n  return ret;\n}\n\n/**\n * 为 Block 自动调整列宽\n * @param children\n * @param numberOfColumns\n */\nfunction calBlockSpan(\n  originalChildren: ReactElement[],\n  numberOfColumns: number,\n) {\n  const hiddenChildrenList: any[] = [];\n  const children = originalChildren.filter((child, index) => {\n    // @ts-ignore\n    const { _context, _uniqueId } = child?.props || {};\n    if (_context && _uniqueId) {\n      const hidden = _context?.$?.(_uniqueId)?.props?.hidden;\n      if (hidden) {\n        hiddenChildrenList.push([index, child]);\n      }\n      return hidden !== true;\n    }\n    return true;\n  });\n\n  let ret: ReactElement[] = [];\n  let stack: ReactElement[] = [];\n  let counter = 0;\n  const len = children.length;\n\n  for (let i = 0; i < len; i++) {\n    const child = children[i];\n\n    // @ts-ignore\n    const span: number = +child.props?.span;\n    // MODIFY 读取 span 属性\n    // const span: number = +child.props?._layout?.span;\n\n    if (span < numberOfColumns) {\n      if (span + counter <= numberOfColumns) {\n        stack.push(child);\n        counter += span;\n      } else {\n        ret = [...ret, ...adjustColWidth(stack, counter, numberOfColumns)];\n        stack = [child];\n        counter = span;\n      }\n    } else {\n      if (stack.length > 0) {\n        ret = [...ret, ...adjustColWidth(stack, counter, numberOfColumns)];\n        stack = [];\n        counter = 0;\n      }\n\n      ret = [\n        ...ret,\n        ...adjustColWidth([child], numberOfColumns, numberOfColumns),\n      ];\n    }\n\n    if (i === len - 1 && stack.length > 0) {\n      ret = [...ret, ...adjustColWidth(stack, counter, numberOfColumns)];\n    }\n  }\n  if (hiddenChildrenList.length > 0) {\n    hiddenChildrenList.forEach((item) => {\n      ret.splice(item[0], 0, item[1]);\n    });\n  }\n  return ret;\n}\n\n/**\n * 重算列宽\n * @param blockNodes\n * @param totalSpan\n * @param maxColNum\n */\nfunction adjustColWidth(\n  blockNodes: ReactElement[],\n  totalSpan: number,\n  maxColNum: number,\n) {\n  return blockNodes.map((item) => {\n    // @ts-ignore\n    const { span } = item.props;\n\n    return cloneElement(item, {\n      // @ts-ignore\n      ...item.props,\n      span: Math.round((span / totalSpan) * maxColNum),\n    });\n\n    // MODIFY 设置 span 属性\n    // const span = +item.props?._layout?.span;\n    // return cloneElement(item, {\n    //   ...item.props,\n    //   _layout: {\n    //     ...item.props?._layout,\n    //     span: Math.round((span / totalSpan) * maxColNum),\n    //   }\n    // });\n  });\n}\n\n/**\n * @description 为容器绑定resize事件(默认监听window的resize事件)\n * @param container\n * @returns\n */\nfunction addResizeListener(container?: HTMLElement | null) {\n  debounceCalPageClassNames();\n  window.addEventListener(\"resize\", debounceCalPageClassNames2);\n}\n\n/**\n * 章节\n * @param props\n * @param ref\n */\nconst Section = forwardRef<HTMLDivElement, LayoutSectionProps>((props, ref) => {\n  const { className, children, gap: blockGapProp, ...others } = props;\n\n  const containerRef = useRef(null);\n\n  const {\n    prefix,\n    blockGap: blockGapContext,\n    breakPoint: { numberOfColumns },\n    maxNumberOfColumns,\n  } = useContext<LayoutContextProps>(Context);\n  const [realNumberOfColumns, setRealNumberOfColumns] =\n    useState<number>(numberOfColumns);\n\n  useEffect(() => {\n    setRealNumberOfColumns(numberOfColumns);\n  }, [numberOfColumns]);\n\n  useEffect(() => {\n    onEvent(PageColumnChange, (payload) => {\n      if (typeof payload?.numberOfColumns === \"number\") {\n        setRealNumberOfColumns(payload.numberOfColumns);\n      }\n    });\n    addResizeListener(containerRef?.current);\n  }, []);\n\n  const clsPrefix = `${prefix}section`;\n  // classNames\n  const sectionCls = classNames(clsPrefix, className);\n  const blockWrapperCls = `${clsPrefix}-block-wrapper`;\n  const innerContainerWithoutHead = classNames(\n    `${clsPrefix}-inner-without-head`,\n  );\n\n  // 此处定义的是 blockGap\n  const gap = getGapVal(blockGapContext, blockGapProp);\n\n  const blockWrapperStyle = useMemo(() => {\n    return {\n      ...(isValidGap(gap)\n        ? {\n            gridColumnGap: wrapUnit(gap),\n            gridRowGap: wrapUnit(gap),\n          }\n        : null),\n    };\n  }, [gap]);\n\n  const newChildren = useMemo(\n    () => getValidChildren(children, realNumberOfColumns, maxNumberOfColumns),\n    [children, realNumberOfColumns, maxNumberOfColumns],\n  );\n\n  return (\n    <div {...others} className={sectionCls} ref={ref}>\n      <div\n        className={classNames(innerContainerWithoutHead, blockWrapperCls)}\n        style={blockWrapperStyle}\n        ref={containerRef}\n      >\n        {newChildren}\n      </div>\n    </div>\n  );\n});\n\nSection.displayName = \"Section\";\n// @ts-ignore\nSection.typeMark = \"Section\";\n\nexport default Section;\n","import { useState, useEffect } from \"react\";\n/**\n * NEditor 脚本加载 hook\n * @param neditorPath NEditor 资源路径\n * @returns 加载状态和错误信息\n */\nexport const useNEditorLoader = (\n  neditorPath = \"https://coreuat.cninsure.net/cbsweb/js/appjs/userregister/uRegisterConfigContract/neditor/\",\n) => {\n  // NEditor JS 资源加载完成\n  const [neditorLoaded, setNEditorLoaded] = useState(false);\n  // 加载错误\n  const [loadError, setLoadError] = useState(null);\n  useEffect(() => {\n    // 如果已经加载过 NEditor，则不再重复加载\n    if (window.UE) {\n      setNEditorLoaded(true);\n      return;\n    }\n    // 设置 UEditor 的基础路径\n    window.UEDITOR_HOME_URL = neditorPath;\n    try {\n      // 加载配置文件\n      const configScript = document.createElement(\"script\");\n      configScript.src = `${neditorPath}neditor.config.js`;\n      configScript.async = false;\n      // 加载主体文件\n      const mainScript = document.createElement(\"script\");\n      mainScript.src = `${neditorPath}neditor.all.min.js`;\n      mainScript.async = false;\n      // 加载服务文件\n      const serviceScript = document.createElement(\"script\");\n      serviceScript.src = `${neditorPath}neditor.service.js`;\n      serviceScript.async = false;\n      // 监听脚本加载完成事件\n      let loadedScripts = 0;\n      const onScriptLoad = () => {\n        loadedScripts++;\n        if (loadedScripts === 3) {\n          // 所有脚本加载完成\n          window.NEDITOR_UPLOAD = \"\";\n          setNEditorLoaded(true);\n        }\n      };\n      configScript.onload = onScriptLoad;\n      mainScript.onload = onScriptLoad;\n      serviceScript.onload = onScriptLoad;\n      const onScriptError = (error) => {\n        console.error(\"NEditor 脚本加载失败:\", error);\n        setLoadError(\"NEditor 资源加载失败，请检查网络连接或资源地址\");\n      };\n      configScript.onerror = onScriptError;\n      mainScript.onerror = onScriptError;\n      serviceScript.onerror = onScriptError;\n      // 将脚本添加到文档中\n      document.body.appendChild(configScript);\n      // 确保按顺序加载脚本\n      configScript.onload = () => {\n        document.body.appendChild(mainScript);\n        mainScript.onload = () => {\n          document.body.appendChild(serviceScript);\n          serviceScript.onload = () => {\n            setNEditorLoaded(true);\n          };\n        };\n      };\n      // 组件卸载时移除脚本\n      return () => {\n        try {\n          if (document.body.contains(configScript)) {\n            document.body.removeChild(configScript);\n          }\n          if (document.body.contains(mainScript)) {\n            document.body.removeChild(mainScript);\n          }\n          if (document.body.contains(serviceScript)) {\n            document.body.removeChild(serviceScript);\n          }\n        } catch (e) {\n          console.error(\"移除脚本时出错:\", e);\n        }\n      };\n    } catch (error) {\n      console.error(\"NEditor 加载错误:\", error);\n      setLoadError(`加载失败: ${error}`);\n    }\n  }, [neditorPath]);\n  return { neditorLoaded, loadError };\n};\n","import { useState, useEffect, useRef } from \"react\";\n/**\n * NEditor 实例管理 hook\n * @param id 编辑器容器ID\n * @param neditorLoaded 编辑器脚本是否加载完成\n * @param config 编辑器配置\n * @param readOnly 是否只读\n * @param placeholder 占位符\n * @param onReady 编辑器就绪回调\n * @param onFocus 编辑器聚焦回调\n * @param onBlur 编辑器失焦回调\n * @returns 编辑器实例和操作方法\n */\nexport const useNEditorInstance = (\n  propsId,\n  neditorLoaded,\n  config = {},\n  readOnly = false,\n  placeholder = \"请输入内容...\",\n  onReady,\n  onFocus,\n  onBlur,\n) => {\n  const editorRef = useRef(null);\n  const [editorReady, setEditorReady] = useState(false);\n  const id = useRef(\n    propsId || \"neditor-\" + Math.random().toString(36).substring(2, 9),\n  );\n  // 初始化编辑器\n  useEffect(() => {\n    if (!neditorLoaded || !window.UE) return;\n    // 防止重复初始化\n    if (editorRef.current) {\n      return;\n    }\n    try {\n      // 初始化编辑器配置\n      const editorConfig = Object.assign(\n        Object.assign(Object.assign({}, window.UEDITOR_CONFIG || {}), config),\n        { readonly: readOnly },\n      );\n      // 创建编辑器实例\n      setTimeout(() => {\n        try {\n          editorRef.current = window.UE.getEditor(id.current, editorConfig);\n          // 监听编辑器准备就绪事件\n          editorRef.current.addListener(\"ready\", () => {\n            console.log(\"[YtRichEditor] 编辑器准备就绪\");\n            // 设置占位符\n            if (placeholder && editorRef.current.setPlaceholder) {\n              editorRef.current.setPlaceholder(placeholder);\n            }\n            setEditorReady(true);\n            // 触发就绪回调\n            if (onReady) {\n              onReady(editorRef.current);\n            }\n            // 直接设置不生效，需要延迟设置\n            setTimeout(() => {\n              editorRef.current.setEnabled();\n            }, 100);\n          });\n          // 监听焦点事件\n          if (onFocus) {\n            editorRef.current.addListener(\"focus\", onFocus);\n          }\n          // 监听失焦事件\n          if (onBlur) {\n            editorRef.current.addListener(\"blur\", onBlur);\n          }\n        } catch (e) {\n          console.error(\"初始化编辑器时出错:\", e);\n        }\n      }, 100); // 延迟初始化，确保 DOM 已完全准备好\n      // 组件卸载时销毁编辑器\n      return () => {\n        console.log(\"[YtRichEditor] 卸载编辑器\");\n        try {\n          if (editorRef.current) {\n            editorRef.current.destroy();\n            if (window.UE) {\n              window.UE.delEditor(id.current);\n            }\n            editorRef.current = null;\n          }\n        } catch (e) {\n          console.error(\"销毁编辑器时出错:\", e);\n        }\n      };\n    } catch (error) {\n      console.error(\"NEditor 初始化错误:\", error);\n    }\n  }, [neditorLoaded]);\n  // 监听 readOnly 属性变化\n  useEffect(() => {\n    if (editorReady && editorRef.current) {\n      try {\n        editorRef.current.setDisabled(readOnly);\n      } catch (e) {\n        console.error(\"设置只读状态时出错:\", e);\n      }\n    }\n  }, [readOnly, editorReady]);\n  // 设置编辑器内容\n  const setContent = (content) => {\n    try {\n      if (editorRef.current && editorReady) {\n        editorRef.current.setContent(content);\n      }\n    } catch (e) {\n      console.error(\"设置内容时出错:\", e);\n    }\n  };\n  // 获取编辑器内容\n  const getContent = () => {\n    try {\n      if (editorRef.current && editorReady) {\n        return editorRef.current.getContent() || \"\";\n      }\n    } catch (e) {\n      console.error(\"获取内容时出错:\", e);\n    }\n    return \"\";\n  };\n  // 获取编辑器纯文本内容\n  const getContentTxt = () => {\n    try {\n      if (editorRef.current && editorReady) {\n        return editorRef.current.getContentTxt() || \"\";\n      }\n    } catch (e) {\n      console.error(\"获取纯文本内容时出错:\", e);\n    }\n    return \"\";\n  };\n  // 插入内容\n  const insertHtml = (html) => {\n    try {\n      if (editorRef.current && editorReady) {\n        editorRef.current.setContent(html, true);\n      }\n    } catch (e) {\n      console.error(\"插入 HTML 时出错:\", e);\n    }\n  };\n  // 聚焦\n  const focus = () => {\n    try {\n      if (editorRef.current && editorReady) {\n        editorRef.current.focus();\n      }\n    } catch (e) {\n      console.error(\"聚焦时出错:\", e);\n    }\n  };\n  // 获取焦点所在元素\n  const isFocus = () => {\n    try {\n      if (editorRef.current && editorReady) {\n        return editorRef.current.isFocus() || false;\n      }\n    } catch (e) {\n      console.error(\"检查焦点时出错:\", e);\n    }\n    return false;\n  };\n  return {\n    id: id.current,\n    editorRef,\n    editorReady,\n    setContent,\n    getContent,\n    getContentTxt,\n    insertHtml,\n    focus,\n    isFocus,\n  };\n};\n","import { useState, useEffect, useRef } from \"react\";\n/**\n * NEditor 内容同步 hook\n * 每隔一秒检查内容变化，不再依赖 contentChange 事件\n *\n * @param editorReady 编辑器就绪状态\n * @param getContent 获取编辑器内容的方法\n * @param value 当前值\n * @param onChange 内容变化回调\n * @returns 当前内容\n */\nexport const useNEditorContent = ({\n  editorReady,\n  getContent,\n  setContent,\n  value,\n  onChange,\n}) => {\n  // 记录当前内容\n  const [innerContent, setInnerContent] = useState(\"\");\n  // 用于定时器的引用\n  const timerRef = useRef(null);\n  // 上次获取的内容，用于对比变化\n  const prevContentRef = useRef(\"\");\n  // 更新内容的函数\n  const updateContent = () => {\n    if (!editorReady) return;\n    console.log(\"[YtRichEditor] 更新内容\", getContent());\n    try {\n      const newContent = getContent();\n      // 只有内容变化时才触发更新\n      if (newContent !== prevContentRef.current) {\n        prevContentRef.current = newContent;\n        setInnerContent(newContent);\n        // 触发外部 onChange 回调\n        if (onChange) {\n          onChange(newContent);\n        }\n      }\n    } catch (e) {\n      console.error(\"获取编辑器内容时出错:\", e);\n    }\n  };\n  // 初始化定时器\n  useEffect(() => {\n    if (!editorReady) return;\n    // 启动定时器，每秒获取内容\n    timerRef.current = window.setInterval(updateContent, 1000);\n    // 组件卸载时清除定时器\n    return () => {\n      if (timerRef.current !== null) {\n        clearInterval(timerRef.current);\n        timerRef.current = null;\n      }\n    };\n  }, [editorReady]);\n  // 处理外部 value 属性变化，更新内部内容\n  useEffect(() => {\n    console.log(\n      \"[YtRichEditor] 外部 value 变化\",\n      value !== innerContent,\n      editorReady,\n    );\n    // 仅当外部 value 变化且与当前内容不同时更新状态\n    if (\n      editorReady &&\n      value !== innerContent &&\n      value !== prevContentRef.current\n    ) {\n      console.log(\"[YtRichEditor] 更新内容\", value);\n      setContent(value);\n      setInnerContent(value);\n      prevContentRef.current = value;\n    }\n  }, [value, editorReady]);\n  return innerContent;\n};\n","import React, { forwardRef, useRef, useImperativeHandle } from \"react\";\nimport { YtRichEditorProps } from \"./types\";\nimport classNames from \"classnames\";\nimport {\n  useNEditorLoader,\n  useNEditorInstance,\n  useNEditorContent,\n} from \"./hooks\";\n\n// 定义全局的 window 接口，包含 UE 变量（NEditor也使用相同的全局变量）\ndeclare global {\n  interface Window {\n    UE: {\n      getEditor: (id: string, options?: any) => any;\n      delEditor: (id: string) => void;\n    };\n    UEDITOR_CONFIG?: any;\n    NEDITOR_UPLOAD?: string;\n    UEDITOR_HOME_URL?: string;\n  }\n}\n\n/**\n * 富文本编辑器组件\n */\nexport const YtRichEditor = forwardRef((props: YtRichEditorProps, ref) => {\n  const {\n    id: propsId,\n    className,\n    style,\n    config = {},\n    // value 必须为字符串，否则会报错\n    value = \"\",\n    placeholder = \"请输入内容...\",\n    readOnly = false,\n    onChange,\n    onFocus,\n    onBlur,\n    onReady,\n  } = props;\n\n  const containerRef = useRef<HTMLDivElement>(null);\n  const editorContainerRef = useRef<HTMLDivElement>(null);\n\n  // 加载 NEditor 脚本\n  const { neditorLoaded, loadError } = useNEditorLoader();\n\n  // 初始化编辑器实例\n  const {\n    id,\n    editorRef,\n    editorReady,\n    setContent,\n    getContent,\n    getContentTxt,\n    insertHtml,\n    focus,\n    isFocus,\n  } = useNEditorInstance(\n    propsId,\n    neditorLoaded,\n    config,\n    readOnly,\n    placeholder,\n    onReady,\n    onFocus,\n    onBlur,\n  );\n\n  console.log(\"[YtRichEditor] 组件渲染\", id);\n\n  // 使用定时内容更新，代替 contentChange 事件\n  useNEditorContent({\n    editorReady,\n    value,\n    onChange,\n    getContent,\n    setContent,\n  });\n\n  // 暴露编辑器方法给父组件\n  useImperativeHandle(ref, () => ({\n    // 获取编辑器实例\n    getEditor: () => editorRef.current,\n    // 获取编辑器内容\n    getContent,\n    // 获取编辑器纯文本内容\n    getContentTxt,\n    // 设置编辑器内容\n    setContent,\n    // 插入内容\n    insertHtml,\n    // 聚焦\n    focus,\n    // 获取焦点所在元素\n    isFocus,\n    // 编辑器是否就绪\n    isReady: () => editorReady,\n  }));\n\n  // 渲染加载中或错误状态\n  const renderLoadingState = () => {\n    if (loadError) {\n      return (\n        <div className=\"error-wrapper\">\n          <div className=\"error-text\">{loadError}</div>\n        </div>\n      );\n    }\n\n    return (\n      <div className=\"loading-wrapper\">\n        <div className=\"loading-text\">加载编辑器中...</div>\n      </div>\n    );\n  };\n\n  return (\n    <div\n      className={classNames(\"yt-rich-editor\", className)}\n      style={style}\n      ref={containerRef}\n    >\n      {/* NEditor 编辑器容器 */}\n      <div\n        key={id}\n        id={id}\n        ref={editorContainerRef}\n        style={{ width: \"100%\", height: \"100%\" }}\n      ></div>\n\n      {/* 加载状态或错误提示 */}\n      {!editorReady && renderLoadingState()}\n    </div>\n  );\n});\n","import React, { FC, CSSProperties } from \"react\";\nimport { Button } from \"antd\";\nimport { YtRuleTreeValueCompare } from \"../types\";\nimport \"./RelationBar.less\";\n\ninterface RelationBarProps {\n  value?: YtRuleTreeValueCompare;\n  onChange: (value: YtRuleTreeValueCompare) => void;\n  style?: CSSProperties;\n  /** 是否禁用 */\n  disabled?: boolean;\n}\n\nconst VALUE_TEXT: Record<YtRuleTreeValueCompare, string> = {\n  or: \"或\",\n  and: \"且\",\n};\n\nexport const RelationBar: FC<RelationBarProps> = ({\n  onChange,\n  value = \"and\",\n  style,\n  disabled,\n}) => {\n  return (\n    <div className=\"yt-rule-tree-relation-bar\" style={style}>\n      <Button\n        type=\"text\"\n        size=\"small\"\n        className={`yt-rule-tree-relation-bar-action ${\n          disabled ? \"yt-rule-tree-relation-bar-action--disabled\" : \"\"\n        }`}\n        onClick={\n          disabled ? undefined : () => onChange(value === \"or\" ? \"and\" : \"or\")\n        }\n        disabled={disabled}\n      >\n        {VALUE_TEXT[value]}\n      </Button>\n    </div>\n  );\n};\n\nRelationBar.displayName = \"RelationBar\";\n","import { flatten } from \"lodash\";\nimport type {\n  GroupConfigValue,\n  YtRuleTreeRuleValue,\n  YtRuleTreeValidateError,\n  YtRuleTreeValidateErrorPath,\n  YtRuleTreeValue,\n  YtRuleTreeProps,\n} from \"./types\";\n\nexport const initializeFieldValue = (): YtRuleTreeRuleValue => ({});\nexport const initializeValue: (config?: GroupConfigValue) => YtRuleTreeValue = (\n  config?,\n) => ({\n  compare: config?.compare || \"and\",\n  atoms: [initializeFieldValue()],\n  whens: [],\n});\n\nexport const isEmptyValue = (value?: string) =>\n  value === \"\" || value === null || value === undefined;\n\nconst REQUIRED_MESSAGE = \"该字段是必填字段\";\n\nconst validateFieldValueRequird = (\n  value: YtRuleTreeRuleValue,\n  path: YtRuleTreeValidateErrorPath,\n) => {\n  const errors = [\n    isEmptyValue(value?.left?.value) && {\n      message: REQUIRED_MESSAGE,\n      path: [...path, \"left\"],\n      value,\n    },\n    isEmptyValue(value?.op) && {\n      message: REQUIRED_MESSAGE,\n      path: [...path, \"op\"],\n      value,\n    },\n    isEmptyValue(value?.right?.value) && {\n      message: REQUIRED_MESSAGE,\n      path: [...path, \"right\"],\n      value,\n    },\n  ];\n  return errors.filter((vo): vo is YtRuleTreeValidateError => !!vo);\n};\n\nconst walkYtRuleTreeValue = (\n  value: YtRuleTreeValue,\n  cb: (atom: YtRuleTreeRuleValue, path: YtRuleTreeValidateErrorPath) => void,\n  path: YtRuleTreeValidateErrorPath,\n) => {\n  if (Array.isArray(value?.atoms)) {\n    value.atoms.forEach((atom, index) => cb(atom, [...path, \"atoms\", index]));\n  }\n  if (Array.isArray(value?.whens)) {\n    value.whens.forEach((when, index) => {\n      walkYtRuleTreeValue(when, cb, [...path, \"whens\", index]);\n    });\n  }\n};\n\nexport const validateRequired = (value: YtRuleTreeValue) => {\n  let items: YtRuleTreeValidateError[][] = [];\n  walkYtRuleTreeValue(\n    value,\n    (atom, path) => {\n      const errors = validateFieldValueRequird(atom, path);\n      if (errors.length > 0) {\n        items.push(errors);\n      }\n    },\n    [],\n  );\n  return flatten(items);\n};\n\n/**\n * 解析分组配置，根据给定的树索引找到匹配的配置值\n * @param config - 规则树的分组配置对象\n * @param treeIndex - 树结构的索引字符串，以点分隔\n * @returns - 匹配到的分组配置值对象，如果没有匹配项则返回空对象\n */\nexport function parseGroupConfig(\n  config: YtRuleTreeProps[\"groupConfig\"],\n  treeIndex: string,\n): GroupConfigValue {\n  if (!config) return {};\n  const treeIndexArr = treeIndex.split(\".\");\n  let ret = {};\n  const configIndexes = Object.keys(config);\n  configIndexes.forEach((configIndex) => {\n    const configIndexArr = configIndex.split(\".\");\n    if (configIndexArr.length !== treeIndexArr.length) return;\n    const notMatch = treeIndexArr.find((treeLevel, index) => {\n      const configLevel = configIndexArr[index];\n      if (configLevel === \"*\") return;\n      return configLevel !== treeLevel;\n    });\n    if (!notMatch) {\n      ret = config[configIndex];\n    }\n  });\n\n  return ret;\n}\n","import React, { FC, ChangeEvent } from \"react\";\nimport { Select, Space, Input, Form } from \"antd\";\nimport { CopyOutlined, DeleteOutlined } from \"@ant-design/icons\";\nimport { YtRuleTreeRuleProps } from \"../types\";\n\nimport \"./RuleTreeRule.less\";\n\ninterface ValidateInfo {\n  validateStatus: \"success\" | \"error\";\n  help: string;\n}\n\n/** 规则树单条规则渲染 */\nexport const RuleTreeRule: FC<YtRuleTreeRuleProps> = ({\n  value,\n  onDelete,\n  onChange,\n  onCopy,\n  index,\n  operators,\n  fields,\n  required,\n  disabled,\n  copyable,\n}) => {\n  const validateRequired = (val?: string): ValidateInfo => {\n    if (required && !val) {\n      return {\n        validateStatus: \"error\",\n        help: \"请填写该字段\",\n      };\n    }\n\n    return {\n      validateStatus: \"success\",\n      help: \"\",\n    };\n  };\n  return (\n    <Space className=\"rule-tree-rule-item\">\n      <Form.Item {...validateRequired(value?.left?.value)}>\n        <Select\n          value={value?.left?.value}\n          labelInValue\n          options={fields.map((item) => ({\n            label: item.label,\n            value: item.value,\n          }))}\n          style={{ minWidth: 160 }}\n          placeholder=\"选择字段\"\n          disabled={disabled}\n          allowClear={false}\n          showSearch\n          filterOption={(\n            input: string,\n            option?: { label: string; value: string },\n          ) =>\n            (option?.label?.toString() || \"\")\n              .toLowerCase()\n              .includes(input.toLowerCase())\n          }\n          onChange={(val: any) =>\n            onChange(index, {\n              ...value,\n              left: { value: val.value, label: val.label?.toString() || \"\" },\n            })\n          }\n        />\n      </Form.Item>\n      <Form.Item {...validateRequired(value?.op)}>\n        <Select\n          value={value?.op}\n          options={operators.map((item) => ({\n            label: item.label,\n            value: item.value,\n          }))}\n          style={{ minWidth: 100 }}\n          placeholder=\"选择操作符\"\n          disabled={disabled}\n          onChange={(val: any) =>\n            onChange(index, {\n              ...value,\n              op: val,\n            })\n          }\n        />\n      </Form.Item>\n      <Form.Item {...validateRequired(value?.right?.value)}>\n        <Input\n          disabled={disabled}\n          value={value?.right?.value}\n          style={{ minWidth: 200 }}\n          onChange={(e: ChangeEvent<HTMLInputElement>) =>\n            onChange(index, {\n              ...value,\n              right: {\n                ...value?.right,\n                value: e.target.value,\n              },\n            })\n          }\n        />\n      </Form.Item>\n      {!disabled && (\n        <Space className=\"rule-actions\">\n          {onDelete && (\n            <DeleteOutlined\n              className=\"rule-tree-rule-rmeove\"\n              onClick={() => onDelete(index)}\n            />\n          )}\n          {copyable && <CopyOutlined onClick={() => onCopy(index)} />}\n        </Space>\n      )}\n    </Space>\n  );\n};\n\nRuleTreeRule.displayName = \"RuleTreeRule\";\n","import React from \"react\";\nimport { Space, Button } from \"antd\";\nimport type { ButtonProps } from \"antd/es/button\";\n\ninterface RuleGroupActionsProps {\n  addAtom: () => void;\n  addWhen: () => void;\n  copyable: boolean;\n  deletable: boolean;\n  enabledAddNew: boolean;\n  enabledAddNewGroup: boolean;\n  disabled: boolean;\n  onDelete: (index: number) => void;\n  onCopy: (index: number) => void;\n  onMove: (index: number, direction: \"up\" | \"down\") => void;\n  index: number;\n  root?: boolean;\n}\n\nconst RuleGroupActions = ({\n  addAtom,\n  addWhen,\n  enabledAddNew,\n  enabledAddNewGroup,\n  copyable,\n  deletable,\n  disabled,\n  onDelete,\n  onCopy,\n  onMove,\n  index,\n  root,\n}: RuleGroupActionsProps) => {\n  const transientBtnProps: ButtonProps = {\n    type: \"link\",\n    className: \"transient-btn\",\n    disabled,\n  };\n  return (\n    <Space className=\"group-actions\">\n      {enabledAddNew && (\n        <Button type=\"primary\" disabled={disabled} onClick={() => addAtom()}>\n          新增\n        </Button>\n      )}\n      {enabledAddNewGroup && (\n        <Button disabled={disabled} onClick={() => addWhen()}>\n          新增组\n        </Button>\n      )}\n      {!root && !disabled && (\n        <>\n          {copyable && (\n            <Button {...transientBtnProps} onClick={() => onCopy(index)}>\n              复制组\n            </Button>\n          )}\n          {deletable && (\n            <Button {...transientBtnProps} onClick={() => onDelete(index)}>\n              移除组\n            </Button>\n          )}\n          <Button {...transientBtnProps} onClick={() => onMove(index, \"up\")}>\n            上移\n          </Button>\n          <Button {...transientBtnProps} onClick={() => onMove(index, \"down\")}>\n            下移\n          </Button>\n        </>\n      )}\n    </Space>\n  );\n};\n\nexport default RuleGroupActions;\n","import React from \"react\";\nimport type { YtRuleTreeProps } from \"./types\";\n\ninterface RuleTreeContext {\n  globalEnabledAddNew: boolean;\n  globalEnabledAddNewGroup: boolean;\n  groupConfig?: YtRuleTreeProps[\"groupConfig\"];\n  atomCopyable?: YtRuleTreeProps[\"atomCopyable\"];\n  groupCopyable?: YtRuleTreeProps[\"groupCopyable\"];\n}\n\nexport default React.createContext<RuleTreeContext>({\n  globalEnabledAddNew: true,\n  globalEnabledAddNewGroup: true,\n  groupConfig: undefined,\n  atomCopyable: true,\n  groupCopyable: true,\n});\n","import React, { FC, useContext } from \"react\";\nimport { Space } from \"antd\";\nimport { WarningOutlined } from \"@ant-design/icons\";\nimport { RelationBar } from \"./RelationBar\";\nimport {\n  YtRuleTreeValue,\n  YtRuleTreeRuleValue,\n  YtRuleTreeRuleGroupProps,\n} from \"../types\";\nimport {\n  initializeFieldValue,\n  initializeValue,\n  parseGroupConfig,\n} from \"../utils\";\nimport { RuleTreeRule } from \"./RuleTreeRule\";\nimport RuleGroupActions from \"./RuleGroupActions\";\nimport Context from \"../Context\";\nimport \"./RuleTreeRuleGroup.less\";\n\nconst EmptyNotice = (\n  <Space className=\"yt-rule-tree-placeholder\" size={4}>\n    <WarningOutlined style={{ fontSize: \"12px\", color: \"#ffa500\" }} />\n    <span>请新增数据进行编辑</span>\n  </Space>\n);\n\nexport const RuleTreeRuleGroup: FC<YtRuleTreeRuleGroupProps> = ({\n  root,\n  value,\n  onChange,\n  onDelete,\n  onCopy,\n  onMove,\n  index,\n  operators,\n  fields,\n  disabled,\n  required,\n  renderRule = (props) => <RuleTreeRule {...props} />,\n  treeIndex,\n}) => {\n  const { atoms = [], whens = [], compare = \"and\" } = value || {};\n  const {\n    globalEnabledAddNew,\n    globalEnabledAddNewGroup,\n    groupConfig,\n    atomCopyable,\n    groupCopyable,\n  } = useContext(Context);\n  const config = parseGroupConfig(groupConfig, treeIndex);\n  const enabledAddNewGroup =\n    config.enabledAddNewGroup ?? globalEnabledAddNewGroup;\n  const enabledAddNew = config.enabledAddNew ?? globalEnabledAddNew;\n  const deletable = true; // 未来可能需要支配配置\n  const copyable = groupCopyable;\n  // 更新当前值\n  function updateValue<K extends \"compare\" | \"atoms\" | \"whens\">(\n    key: K,\n    val: YtRuleTreeValue[K],\n  ) {\n    onChange(index, {\n      ...value,\n      [key]: val,\n    });\n  }\n  // 更新字段\n  const updateAtom = (idx: number, val: YtRuleTreeRuleValue) =>\n    updateValue(\n      \"atoms\",\n      atoms.map((vo, idx2) => (idx2 === idx ? val : vo)),\n    );\n  // 移除字段\n  const removeAtom = (idx: number) =>\n    updateValue(\n      \"atoms\",\n      atoms.filter((_, i) => i !== idx),\n    );\n  // 复制字段\n  const copyAtom = (idx: number) => {\n    const newAtoms = [...atoms];\n    newAtoms.splice(idx + 1, 0, atoms[idx]);\n    return updateValue(\"atoms\", newAtoms);\n  };\n  // 新增字段组\n  const addWhen = () => {\n    const nextWhenConfig = parseGroupConfig(\n      groupConfig,\n      `${treeIndex}.${whens.length}`,\n    );\n    updateValue(\"whens\", [...whens, initializeValue(nextWhenConfig)]);\n  };\n  // 更新字段组\n  const updateWhen = (idx: number, val: YtRuleTreeValue) =>\n    updateValue(\n      \"whens\",\n      whens.map((vo, idx2) => (idx2 === idx ? val : vo)),\n    );\n  // 移除字段组\n  const removeWhen = (idx: number) =>\n    updateValue(\n      \"whens\",\n      whens.filter((_, i) => i !== idx),\n    );\n  // 复制字段组\n  const copyWhen = (idx: number) => {\n    const newWhens = [...whens];\n    newWhens.splice(idx + 1, 0, whens[idx]);\n    updateValue(\"whens\", newWhens);\n  };\n  // 移动字段组\n  const moveWhen = (idx: number, direction: \"up\" | \"down\") => {\n    const newWhens = [...whens];\n    const [item] = newWhens.splice(idx, 1);\n    newWhens.splice(direction === \"up\" ? idx - 1 : idx + 1, 0, item);\n    updateValue(\"whens\", newWhens);\n  };\n  // 新增字段\n  const addAtom = () =>\n    updateValue(\"atoms\", [...atoms, initializeFieldValue()]);\n  // FIXME: 定位可以更优雅些\n  const onMouseOver: React.MouseEventHandler<HTMLDivElement> = (ev) => {\n    ev.stopPropagation();\n    const groupDom = ev.currentTarget;\n    groupDom.classList.add(\"mouseover\");\n  };\n  const onMouseOut: React.MouseEventHandler<HTMLDivElement> = (ev) => {\n    ev.stopPropagation();\n    const groupDom = ev.currentTarget;\n    groupDom.classList.remove(\"mouseover\");\n  };\n\n  return (\n    <div\n      className=\"yt-rule-tree-rule-group\"\n      onMouseOver={onMouseOver}\n      onMouseOut={onMouseOut}\n    >\n      <RelationBar\n        style={{ marginRight: 4 }}\n        onChange={(val) => updateValue(\"compare\", val)}\n        value={config.compare ?? compare}\n        disabled={\"compare\" in config || disabled}\n      />\n      <Space direction=\"vertical\" className=\"group-body\">\n        {!atoms.length && !whens.length && EmptyNotice}\n        {atoms.map((vo, idx) => (\n          <div key={idx}>\n            {renderRule({\n              value: vo,\n              index: idx,\n              operators,\n              fields,\n              disabled,\n              required,\n              copyable: atomCopyable,\n              onChange: updateAtom,\n              onDelete: removeAtom,\n              onCopy: copyAtom,\n            })}\n          </div>\n        ))}\n        {whens.map((vo, idx) => (\n          <RuleTreeRuleGroup\n            operators={operators}\n            fields={fields}\n            disabled={disabled}\n            key={idx}\n            index={idx}\n            value={vo}\n            onChange={updateWhen}\n            onCopy={copyWhen}\n            onDelete={removeWhen}\n            onMove={moveWhen}\n            required={required}\n            renderRule={renderRule}\n            treeIndex={`${treeIndex}.${idx}`}\n          />\n        ))}\n        <RuleGroupActions\n          index={index}\n          root={root}\n          enabledAddNew={Boolean(enabledAddNew)}\n          enabledAddNewGroup={Boolean(enabledAddNewGroup)}\n          copyable={Boolean(copyable)}\n          deletable={Boolean(deletable)}\n          disabled={Boolean(disabled)}\n          addAtom={addAtom}\n          addWhen={addWhen}\n          onMove={onMove!}\n          onDelete={onDelete!}\n          onCopy={onCopy!}\n        />\n      </Space>\n    </div>\n  );\n};\nRuleTreeRuleGroup.displayName = \"FieldGroup\";\n","import {\n  SetStateAction,\n  useCallback,\n  useEffect,\n  useRef,\n  useState,\n} from \"react\";\n\nexport interface FieldState<Value, OnChangeOtherArgs extends any[]> {\n  /** 受控值 */\n  value?: Value;\n  /** 默认值 */\n  defaultValue?: Value | (() => Value);\n  /** 值改变执行回调 */\n  onChange?: (val: Value, ...args: OnChangeOtherArgs) => void;\n}\n\ntype SetFieldState<Value, OnChangeOtherArgs extends any[]> = (\n  val: SetStateAction<Value>,\n  ...args: OnChangeOtherArgs\n) => void;\n\n/**\n * 用于处理受控和非受控状态\n *\n * @param options.value 受控值\n * @param options.defaultValue 默认值\n * @param options.onChange 值改变执行回调\n * @returns [value, setValue]\n */\nexport function useFieldState<\n  Value = unknown,\n  OnChangeOtherArgs extends any[] = [],\n>(\n  options: FieldState<Value, OnChangeOtherArgs>,\n  isCtrl = \"value\" in options,\n): [Value | undefined, SetFieldState<Value, OnChangeOtherArgs>] {\n  const [value, setValue] = useState<Value | undefined>(options.defaultValue);\n\n  const originSetState = useRef<SetFieldState<Value, OnChangeOtherArgs>>();\n  originSetState.current = (action, ...args) => {\n    const val =\n      typeof action === \"function\" ? (action as Function)(value) : action;\n\n    if (!isCtrl) {\n      setValue(val);\n    }\n    if (options.onChange) {\n      options.onChange(val, ...args);\n    }\n  };\n\n  const setState = useCallback<SetFieldState<Value, OnChangeOtherArgs>>(\n    (...args) => originSetState.current?.(...args),\n    [],\n  );\n\n  useEffect(() => {\n    if (isCtrl) {\n      setValue(options.value);\n    }\n  }, [isCtrl, options.value]);\n\n  return [isCtrl ? options.value : value, setState];\n}\n","import React, { memo } from \"react\";\nimport { RuleTreeRuleGroup } from \"./components/RuleTreeRuleGroup\";\nimport { initializeValue, parseGroupConfig } from \"./utils\";\nimport { YtRuleTreeProps } from \"./types\";\nimport { useFieldState } from \"./hooks/useFieldState\";\nimport RuleTreeContext from \"./Context\";\n\n/**\n * @title 规则树\n *\n * @description 规则引擎配套前端组件，用于树状规则配置，组件使用参考左侧用例。\n *\n * - ✅ 支持无限扩展层级\n * - ✅ 无 Formily 解构\n */\nexport const YtRuleTree: React.FC<YtRuleTreeProps> = memo<YtRuleTreeProps>(\n  (props) => {\n    const defaultValue = initializeValue(\n      parseGroupConfig(props.groupConfig, \"0\"),\n    );\n\n    const [value, onChange] = useFieldState(\n      {\n        value: props.value,\n        onChange: props.onChange,\n        defaultValue: props.defaultValue || defaultValue,\n      },\n      \"value\" in props,\n    );\n\n    // 确保value不是undefined\n    const safeValue = value || defaultValue;\n\n    return (\n      <RuleTreeContext.Provider\n        value={{\n          globalEnabledAddNew: props.enabledAddNew ?? true,\n          globalEnabledAddNewGroup: props.enabledAddNewGroup ?? true,\n          groupConfig: props.groupConfig,\n          atomCopyable: props.atomCopyable ?? true,\n          groupCopyable: props.groupCopyable ?? true,\n        }}\n      >\n        <RuleTreeRuleGroup\n          root\n          operators={props.operators}\n          fields={props.fields}\n          disabled={props.disabled}\n          required={props.required}\n          renderRule={props.renderRule}\n          value={safeValue}\n          index={0}\n          treeIndex=\"0\"\n          onChange={(_, val) => onChange(val)}\n        />\n      </RuleTreeContext.Provider>\n    );\n  },\n);\n\nexport type {\n  YtRuleTreeRuleProps,\n  YtRuleTreeValue,\n  YtRuleTreeRuleValue,\n  YtRuleTreeOperator,\n  YtRuleTreeField,\n  YtRuleTreeValidateError,\n  YtRuleTreeProps,\n} from \"./types\";\n\nexport { validateRequired } from \"./utils\";\n","export function inputValueBalloonFormatter(inputValue: number | null): string {\n  if (\n    inputValue === null ||\n    inputValue === undefined ||\n    isNaN(Number(inputValue))\n  ) {\n    return \"\";\n  }\n\n  let displayNumber = 0;\n  let unit = \"\";\n\n  if (inputValue >= 1000 && inputValue < 10000) {\n    displayNumber = Math.floor(inputValue / 1000);\n    unit = \"千\";\n  } else if (inputValue >= 10000 && inputValue < 100000000) {\n    displayNumber = Math.floor(inputValue / 10000);\n    unit = \"万\";\n  } else if (inputValue >= 100000000 && inputValue < 100000000000) {\n    displayNumber = Math.floor(inputValue / 100000000);\n    unit = \"亿\";\n  } else if (inputValue >= 100000000000) {\n    displayNumber = Math.floor(inputValue / 100000000000);\n    unit = \"千亿\";\n  }\n\n  return displayNumber > 0 ? `${displayNumber}${unit}` : \"\";\n}\n\nexport function inputValueFormatter(\n  precision: number,\n): (value: number | null) => string {\n  return (value: number | null) => {\n    // 转换为数字处理\n    const numValue = parseFloat(String(value).replace(/,/g, \"\"));\n\n    if (isNaN(numValue)) {\n      return \"\";\n    }\n\n    // 格式化数字，添加千分位分隔符\n    const parts = numValue.toFixed(precision).split(\".\");\n    parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n\n    const formattedValue = parts.join(\".\");\n    return formattedValue;\n  };\n}\n","import React, { useState, useEffect } from \"react\";\nimport { InputNumber, Tooltip } from \"antd\";\nimport type { InputNumberProps } from \"antd\";\nimport { inputValueFormatter, inputValueBalloonFormatter } from \"./utils\";\n\nimport \"./index.less\";\n\nexport interface YtAmountInputProps extends InputNumberProps {\n  /**\n   * 是否显示格式化气泡\n   * @default true\n   */\n  showTooltip?: boolean;\n  /**\n   * 气泡位置\n   * @default 'top'\n   */\n  tooltipPlacement?: \"top\" | \"bottom\" | \"left\" | \"right\";\n}\n\n/**\n * 金额输入框组件\n */\nexport const YtAmountInput: React.FC<YtAmountInputProps> = ({\n  value,\n  onChange,\n  showTooltip = true,\n  tooltipPlacement = \"top\",\n  precision = 2,\n  ...restProps\n}) => {\n  const [inputValue, setInputValue] = useState<number | null>(value ?? null);\n  const [tooltipVisible, setTooltipVisible] = useState<boolean>(false);\n\n  useEffect(() => {\n    setInputValue(value ?? null);\n  }, [value]);\n\n  const formattedValue = inputValueBalloonFormatter(inputValue);\n\n  const handleChange = (value: number | null) => {\n    setInputValue(value);\n    onChange?.(value);\n    const newFormattedValue = inputValueBalloonFormatter(value);\n\n    // 当有值且需要显示时才显示气泡\n    setTooltipVisible(showTooltip && !!value && !!newFormattedValue);\n  };\n\n  return (\n    <div className=\"yt-amount-input-wrapper\">\n      <Tooltip\n        title={formattedValue}\n        open={tooltipVisible}\n        placement={tooltipPlacement}\n        overlayClassName=\"yt-amount-input-tooltip\"\n      >\n        <InputNumber\n          className=\"yt-amount-input\"\n          value={inputValue}\n          onChange={handleChange}\n          precision={precision}\n          onFocus={() => {\n            if (inputValue && showTooltip && formattedValue) {\n              setTooltipVisible(true);\n            }\n          }}\n          formatter={inputValueFormatter(precision)}\n          onBlur={() => setTooltipVisible(false)}\n          {...restProps}\n        />\n      </Tooltip>\n    </div>\n  );\n};\n","// 遵循规范 https://zh.wikipedia.org/wiki/ISO_4217\nexport interface CurrencyItem {\n  icon: string;\n  country: string;\n  value: string;\n  label: string;\n  precision: string;\n  /**\n   * 扩展的货币类型需要指定国家/地区图片\n   */\n  img?: string;\n}\n\nconst currencyMap: Record<string, CurrencyItem> = {\n  AED: {\n    icon: \"🇦🇪\",\n    country: \"AE\",\n    value: \"AED\",\n    label: \"阿联酋迪拉姆\",\n    precision: \"2\",\n  },\n  AFN: {\n    icon: \"🇦🇫\",\n    country: \"AF\",\n    value: \"AFN\",\n    label: \"阿富汗尼\",\n    precision: \"2\",\n  },\n  ALL: {\n    icon: \"🇦🇱\",\n    country: \"AL\",\n    value: \"ALL\",\n    label: \"阿尔巴尼亚列克\",\n    precision: \"2\",\n  },\n  AMD: {\n    icon: \"🇦🇲\",\n    country: \"AM\",\n    value: \"AMD\",\n    label: \"亚美尼亚德拉姆\",\n    precision: \"2\",\n  },\n  ANG: {\n    icon: \"🇨🇼\",\n    country: \"CW\",\n    value: \"ANG\",\n    label: \"荷属安的列斯盾\",\n    precision: \"2\",\n  },\n  AOA: {\n    icon: \"🇦🇴\",\n    country: \"AO\",\n    value: \"AOA\",\n    label: \"安哥拉宽扎\",\n    precision: \"2\",\n  },\n  ARS: {\n    icon: \"🇦🇷\",\n    country: \"AR\",\n    value: \"ARS\",\n    label: \"阿根廷比索\",\n    precision: \"2\",\n  },\n  AUD: {\n    icon: \"🇦🇺\",\n    country: \"AU\",\n    value: \"AUD\",\n    label: \"澳大利亚元\",\n    precision: \"2\",\n  },\n  AWG: {\n    icon: \"🇦🇼\",\n    country: \"AW\",\n    value: \"AWG\",\n    label: \"阿鲁巴弗罗林\",\n    precision: \"2\",\n  },\n  AZN: {\n    icon: \"🇦🇿\",\n    country: \"AZ\",\n    value: \"AZN\",\n    label: \"阿塞拜疆马纳特\",\n    precision: \"2\",\n  },\n  BAM: {\n    icon: \"🇧🇦\",\n    country: \"BA\",\n    value: \"BAM\",\n    label: \"可兑换马克\",\n    precision: \"2\",\n  },\n  BBD: {\n    icon: \"🇧🇧\",\n    country: \"BB\",\n    value: \"BBD\",\n    label: \"巴巴多斯元\",\n    precision: \"2\",\n  },\n  BDT: {\n    icon: \"🇧🇩\",\n    country: \"BD\",\n    value: \"BDT\",\n    label: \"孟加拉塔卡\",\n    precision: \"2\",\n  },\n  BGN: {\n    icon: \"🇧🇬\",\n    country: \"BG\",\n    value: \"BGN\",\n    label: \"保加利亚列弗\",\n    precision: \"2\",\n  },\n  BHD: {\n    icon: \"🇧🇭\",\n    country: \"BH\",\n    value: \"BHD\",\n    label: \"巴林第纳尔\",\n    precision: \"2\",\n  },\n  BIF: {\n    icon: \"🇧🇮\",\n    country: \"BI\",\n    value: \"BIF\",\n    label: \"布隆迪法郎\",\n    precision: \"2\",\n  },\n  BMD: {\n    icon: \"🇧🇲\",\n    country: \"BM\",\n    value: \"BMD\",\n    label: \"百慕大元\",\n    precision: \"2\",\n  },\n  BND: {\n    icon: \"🇧🇳\",\n    country: \"BN\",\n    value: \"BND\",\n    label: \"文莱元\",\n    precision: \"2\",\n  },\n  BOB: {\n    icon: \"🇧🇴\",\n    country: \"BO\",\n    value: \"BOB\",\n    label: \"玻利维亚诺\",\n    precision: \"2\",\n  },\n  BRL: {\n    icon: \"🇧🇷\",\n    country: \"BR\",\n    value: \"BRL\",\n    label: \"巴西雷亚尔\",\n    precision: \"2\",\n  },\n  BSD: {\n    icon: \"🇧🇸\",\n    country: \"BS\",\n    value: \"BSD\",\n    label: \"巴哈马元\",\n    precision: \"2\",\n  },\n  BTN: {\n    icon: \"🇧🇹\",\n    country: \"BT\",\n    value: \"BTN\",\n    label: \"不丹努尔特鲁姆\",\n    precision: \"2\",\n  },\n  BWP: {\n    icon: \"🇧🇼\",\n    country: \"BW\",\n    value: \"BWP\",\n    label: \"博茨瓦纳普拉\",\n    precision: \"2\",\n  },\n  BYN: {\n    icon: \"🇧🇾\",\n    country: \"BY\",\n    value: \"BYN\",\n    label: \"白俄罗斯卢布\",\n    precision: \"2\",\n  },\n  BZD: {\n    icon: \"🇧🇿\",\n    country: \"BZ\",\n    value: \"BZD\",\n    label: \"伯利兹元\",\n    precision: \"2\",\n  },\n  CAD: {\n    icon: \"🇨🇦\",\n    country: \"CA\",\n    value: \"CAD\",\n    label: \"加拿大元\",\n    precision: \"2\",\n  },\n  CDF: {\n    icon: \"🇨🇩\",\n    country: \"CD\",\n    value: \"CDF\",\n    label: \"刚果法郎\",\n    precision: \"2\",\n  },\n  CHF: {\n    icon: \"🇨🇭\",\n    country: \"CH\",\n    value: \"CHF\",\n    label: \"瑞士法郎\",\n    precision: \"2\",\n  },\n  CLP: {\n    icon: \"🇨🇱\",\n    country: \"CL\",\n    value: \"CLP\",\n    label: \"智利比索\",\n    precision: \"0\",\n  },\n  CNY: {\n    icon: \"🇨🇳\",\n    country: \"CN\",\n    value: \"CNY\",\n    label: \"人民币元\",\n    precision: \"2\",\n  },\n  CNH: {\n    icon: \"🇨🇳\",\n    country: \"CN\",\n    value: \"CNH\",\n    label: \"离岸人民币\",\n    precision: \"2\",\n  },\n  COP: {\n    icon: \"🇨🇴\",\n    country: \"CO\",\n    value: \"COP\",\n    label: \"哥伦比亚比索\",\n    precision: \"2\",\n  },\n  CRC: {\n    icon: \"🇨🇷\",\n    country: \"CR\",\n    value: \"CRC\",\n    label: \"哥斯达黎加科朗\",\n    precision: \"2\",\n  },\n  CUP: {\n    icon: \"🇨🇺\",\n    country: \"CU\",\n    value: \"CUP\",\n    label: \"古巴比索\",\n    precision: \"2\",\n  },\n  CVE: {\n    icon: \"🇨🇻\",\n    country: \"CV\",\n    value: \"CVE\",\n    label: \"佛得角埃斯库多\",\n    precision: \"0\",\n  },\n  CZK: {\n    icon: \"🇨🇿\",\n    country: \"CZ\",\n    value: \"CZK\",\n    label: \"捷克克朗\",\n    precision: \"2\",\n  },\n  DJF: {\n    icon: \"🇩🇯\",\n    country: \"DJ\",\n    value: \"DJF\",\n    label: \"吉布提法郎\",\n    precision: \"0\",\n  },\n  DKK: {\n    icon: \"🇩🇰\",\n    country: \"DK\",\n    value: \"DKK\",\n    label: \"丹麦克朗\",\n    precision: \"2\",\n  },\n  DOP: {\n    icon: \"🇩🇴\",\n    country: \"DO\",\n    value: \"DOP\",\n    label: \"多米尼加比索\",\n    precision: \"2\",\n  },\n  DZD: {\n    icon: \"🇩🇿\",\n    country: \"DZ\",\n    value: \"DZD\",\n    label: \"阿尔及利亚第纳尔\",\n    precision: \"2\",\n  },\n  EGP: {\n    icon: \"🇪🇬\",\n    country: \"EG\",\n    value: \"EGP\",\n    label: \"埃及镑\",\n    precision: \"2\",\n  },\n  ERN: {\n    icon: \"🇪🇷\",\n    country: \"ER\",\n    value: \"ERN\",\n    label: \"厄立特里亚纳克法\",\n    precision: \"2\",\n  },\n  ETB: {\n    icon: \"🇪🇹\",\n    country: \"ET\",\n    value: \"ETB\",\n    label: \"埃塞俄比亚比尔\",\n    precision: \"2\",\n  },\n  EUR: {\n    icon: \"🇪🇺\",\n    country: \"EU\",\n    value: \"EUR\",\n    label: \"欧元\",\n    precision: \"2\",\n  },\n  FJD: {\n    icon: \"🇫🇯\",\n    country: \"FJ\",\n    value: \"FJD\",\n    label: \"斐济元\",\n    precision: \"2\",\n  },\n  FKP: {\n    icon: \"🇫🇰\",\n    country: \"FK\",\n    value: \"FKP\",\n    label: \"福克兰群岛镑\",\n    precision: \"2\",\n  },\n  GBP: {\n    icon: \"🇬🇧\",\n    country: \"GB\",\n    value: \"GBP\",\n    label: \"英镑\",\n    precision: \"2\",\n  },\n  GEL: {\n    icon: \"🇬🇪\",\n    country: \"GE\",\n    value: \"GEL\",\n    label: \"格鲁吉亚拉里\",\n    precision: \"2\",\n  },\n  GHS: {\n    icon: \"🇬🇭\",\n    country: \"GH\",\n    value: \"GHS\",\n    label: \"加纳塞地\",\n    precision: \"2\",\n  },\n  GIP: {\n    icon: \"🇬🇮\",\n    country: \"GI\",\n    value: \"GIP\",\n    label: \"直布罗陀镑\",\n    precision: \"2\",\n  },\n  GMD: {\n    icon: \"🇬🇲\",\n    country: \"GM\",\n    value: \"GMD\",\n    label: \"冈比亚达拉西\",\n    precision: \"2\",\n  },\n  GNF: {\n    icon: \"🇬🇳\",\n    country: \"GN\",\n    value: \"GNF\",\n    label: \"几内亚法郎\",\n    precision: \"0\",\n  },\n  GTQ: {\n    icon: \"🇬🇹\",\n    country: \"GT\",\n    value: \"GTQ\",\n    label: \"危地马拉格查尔\",\n    precision: \"2\",\n  },\n  GYD: {\n    icon: \"🇬🇾\",\n    country: \"GY\",\n    value: \"GYD\",\n    label: \"圭亚那元\",\n    precision: \"2\",\n  },\n  HKD: {\n    icon: \"🇭🇰\",\n    country: \"CN\",\n    value: \"HKD\",\n    label: \"港元\",\n    precision: \"2\",\n  },\n  HNL: {\n    icon: \"🇭🇳\",\n    country: \"HN\",\n    value: \"HNL\",\n    label: \"洪都拉斯伦皮拉\",\n    precision: \"2\",\n  },\n  HTG: {\n    icon: \"🇭🇹\",\n    country: \"HT\",\n    value: \"HTG\",\n    label: \"海地古德\",\n    precision: \"2\",\n  },\n  HUF: {\n    icon: \"🇭🇺\",\n    country: \"HU\",\n    value: \"HUF\",\n    label: \"匈牙利福林\",\n    precision: \"0\",\n  },\n  IDR: {\n    icon: \"🇮🇩\",\n    country: \"ID\",\n    value: \"IDR\",\n    label: \"印尼盾\",\n    precision: \"2\",\n  },\n  ILS: {\n    icon: \"🇮🇱\",\n    country: \"IL\",\n    value: \"ILS\",\n    label: \"以色列新谢克尔\",\n    precision: \"2\",\n  },\n  INR: {\n    icon: \"🇮🇳\",\n    country: \"IN\",\n    value: \"INR\",\n    label: \"印度卢比\",\n    precision: \"2\",\n  },\n  IQD: {\n    icon: \"🇮🇶\",\n    country: \"IQ\",\n    value: \"IQD\",\n    label: \"伊拉克第纳尔\",\n    precision: \"3\",\n  },\n  IRR: {\n    icon: \"🇮🇷\",\n    country: \"IR\",\n    value: \"IRR\",\n    label: \"伊朗里亚尔\",\n    precision: \"2\",\n  },\n  ISK: {\n    icon: \"🇮🇸\",\n    country: \"IS\",\n    value: \"ISK\",\n    label: \"冰岛克朗\",\n    precision: \"0\",\n  },\n  JMD: {\n    icon: \"🇯🇲\",\n    country: \"JM\",\n    value: \"JMD\",\n    label: \"牙买加元\",\n    precision: \"2\",\n  },\n  JOD: {\n    icon: \"🇯🇴\",\n    country: \"JO\",\n    value: \"JOD\",\n    label: \"约旦第纳尔\",\n    precision: \"3\",\n  },\n  JPY: {\n    icon: \"🇯🇵\",\n    country: \"JP\",\n    value: \"JPY\",\n    label: \"日圆\",\n    precision: \"0\",\n  },\n  KES: {\n    icon: \"🇰🇪\",\n    country: \"KE\",\n    value: \"KES\",\n    label: \"肯尼亚先令\",\n    precision: \"2\",\n  },\n  KHR: {\n    icon: \"🇰🇭\",\n    country: \"KH\",\n    value: \"KHR\",\n    label: \"柬埔寨瑞尔\",\n    precision: \"2\",\n  },\n  KMF: {\n    icon: \"🇰🇲\",\n    country: \"KM\",\n    value: \"KMF\",\n    label: \"科摩罗法郎\",\n    precision: \"0\",\n  },\n  KPW: {\n    icon: \"🇰🇵\",\n    country: \"KP\",\n    value: \"KPW\",\n    label: \"朝鲜圆\",\n    precision: \"2\",\n  },\n  KRW: {\n    icon: \"🇰🇷\",\n    country: \"KR\",\n    value: \"KRW\",\n    label: \"韩元\",\n    precision: \"0\",\n  },\n  KWD: {\n    icon: \"🇰🇼\",\n    country: \"KW\",\n    value: \"KWD\",\n    label: \"科威特第纳尔\",\n    precision: \"3\",\n  },\n  KYD: {\n    icon: \"🇰🇾\",\n    country: \"KY\",\n    value: \"KYD\",\n    label: \"开曼群岛元\",\n    precision: \"2\",\n  },\n  KZT: {\n    icon: \"🇰🇿\",\n    country: \"KZ\",\n    value: \"KZT\",\n    label: \"哈萨克斯坦坚戈\",\n    precision: \"2\",\n  },\n  LAK: {\n    icon: \"🇱🇦\",\n    country: \"LA\",\n    value: \"LAK\",\n    label: \"老挝基普\",\n    precision: \"2\",\n  },\n  LBP: {\n    icon: \"🇱🇧\",\n    country: \"LB\",\n    value: \"LBP\",\n    label: \"黎巴嫩镑\",\n    precision: \"2\",\n  },\n  LKR: {\n    icon: \"🇱🇰\",\n    country: \"LK\",\n    value: \"LKR\",\n    label: \"斯里兰卡卢比\",\n    precision: \"2\",\n  },\n  LRD: {\n    icon: \"🇱🇷\",\n    country: \"LR\",\n    value: \"LRD\",\n    label: \"利比里亚元\",\n    precision: \"2\",\n  },\n  LSL: {\n    icon: \"🇱🇸\",\n    country: \"LS\",\n    value: \"LSL\",\n    label: \"莱索托洛蒂\",\n    precision: \"2\",\n  },\n  LYD: {\n    icon: \"🇱🇾\",\n    country: \"LY\",\n    value: \"LYD\",\n    label: \"利比亚第纳尔\",\n    precision: \"3\",\n  },\n  MAD: {\n    icon: \"🇲🇦\",\n    country: \"MA\",\n    value: \"MAD\",\n    label: \"摩洛哥迪尔汗\",\n    precision: \"2\",\n  },\n  MDL: {\n    icon: \"🇲🇩\",\n    country: \"MD\",\n    value: \"MDL\",\n    label: \"摩尔多瓦列伊\",\n    precision: \"2\",\n  },\n  MGA: {\n    icon: \"🇲🇬\",\n    country: \"MG\",\n    value: \"MGA\",\n    label: \"马达加斯加阿里亚里\",\n    precision: \"1\",\n  },\n  MKD: {\n    icon: \"🇲🇰\",\n    country: \"MK\",\n    value: \"MKD\",\n    label: \"马其顿代纳尔\",\n    precision: \"2\",\n  },\n  MMK: {\n    icon: \"🇲🇲\",\n    country: \"MM\",\n    value: \"MMK\",\n    label: \"缅元\",\n    precision: \"2\",\n  },\n  MNT: {\n    icon: \"🇲🇳\",\n    country: \"MN\",\n    value: \"MNT\",\n    label: \"蒙古图格里克\",\n    precision: \"2\",\n  },\n  MOP: {\n    icon: \"🇲🇴\",\n    country: \"CN\",\n    value: \"MOP\",\n    label: \"澳门币\",\n    precision: \"2\",\n  },\n  MRU: {\n    icon: \"🇲🇷\",\n    country: \"MR\",\n    value: \"MRU\",\n    label: \"毛里塔尼亚乌吉亚\",\n    precision: \"1\",\n  },\n  MUR: {\n    icon: \"🇲🇺\",\n    country: \"MU\",\n    value: \"MUR\",\n    label: \"毛里求斯卢比\",\n    precision: \"2\",\n  },\n  MVR: {\n    icon: \"🇲🇻\",\n    country: \"MV\",\n    value: \"MVR\",\n    label: \"马尔代夫拉菲亚\",\n    precision: \"2\",\n  },\n  MWK: {\n    icon: \"🇲🇼\",\n    country: \"MW\",\n    value: \"MWK\",\n    label: \"马拉维克瓦查\",\n    precision: \"2\",\n  },\n  MXN: {\n    icon: \"🇲🇽\",\n    country: \"MX\",\n    value: \"MXN\",\n    label: \"墨西哥比索\",\n    precision: \"2\",\n  },\n  MYR: {\n    icon: \"🇲🇾\",\n    country: \"MY\",\n    value: \"MYR\",\n    label: \"马来西亚令吉\",\n    precision: \"2\",\n  },\n  MZN: {\n    icon: \"🇲🇿\",\n    country: \"MZ\",\n    value: \"MZN\",\n    label: \"莫桑比克梅蒂卡尔\",\n    precision: \"2\",\n  },\n  NAD: {\n    icon: \"🇳🇦\",\n    country: \"NA\",\n    value: \"NAD\",\n    label: \"纳米比亚元\",\n    precision: \"2\",\n  },\n  NGN: {\n    icon: \"🇳🇬\",\n    country: \"NG\",\n    value: \"NGN\",\n    label: \"尼日利亚奈拉\",\n    precision: \"2\",\n  },\n  NIO: {\n    icon: \"🇳🇮\",\n    country: \"NI\",\n    value: \"NIO\",\n    label: \"尼加拉瓜科多巴\",\n    precision: \"2\",\n  },\n  NOK: {\n    icon: \"🇳🇴\",\n    country: \"NO\",\n    value: \"NOK\",\n    label: \"挪威克朗\",\n    precision: \"2\",\n  },\n  NPR: {\n    icon: \"🇳🇵\",\n    country: \"NP\",\n    value: \"NPR\",\n    label: \"尼泊尔卢比\",\n    precision: \"2\",\n  },\n  NZD: {\n    icon: \"🇳🇿\",\n    country: \"NZ\",\n    value: \"NZD\",\n    label: \"新西兰元\",\n    precision: \"2\",\n  },\n  OMR: {\n    icon: \"🇴🇲\",\n    country: \"OM\",\n    value: \"OMR\",\n    label: \"阿曼里亚尔\",\n    precision: \"3\",\n  },\n  PAB: {\n    icon: \"🇵🇦\",\n    country: \"PA\",\n    value: \"PAB\",\n    label: \"巴拿马巴波亚\",\n    precision: \"2\",\n  },\n  PEN: {\n    icon: \"🇵🇪\",\n    country: \"PE\",\n    value: \"PEN\",\n    label: \"秘鲁索尔\",\n    precision: \"2\",\n  },\n  PGK: {\n    icon: \"🇵🇬\",\n    country: \"PG\",\n    value: \"PGK\",\n    label: \"巴布亚新几内亚基那\",\n    precision: \"2\",\n  },\n  PHP: {\n    icon: \"🇵🇭\",\n    country: \"PH\",\n    value: \"PHP\",\n    label: \"菲律宾比索\",\n    precision: \"2\",\n  },\n  PKR: {\n    icon: \"🇵🇰\",\n    country: \"PK\",\n    value: \"PKR\",\n    label: \"巴基斯坦卢比\",\n    precision: \"2\",\n  },\n  PLN: {\n    icon: \"🇵🇱\",\n    country: \"PL\",\n    value: \"PLN\",\n    label: \"波兰兹罗提\",\n    precision: \"2\",\n  },\n  PYG: {\n    icon: \"🇵🇾\",\n    country: \"PY\",\n    value: \"PYG\",\n    label: \"巴拉圭瓜拉尼\",\n    precision: \"0\",\n  },\n  QAR: {\n    icon: \"🇶🇦\",\n    country: \"QA\",\n    value: \"QAR\",\n    label: \"卡塔尔里亚尔\",\n    precision: \"2\",\n  },\n  RON: {\n    icon: \"🇷🇴\",\n    country: \"RO\",\n    value: \"RON\",\n    label: \"罗马尼亚列伊\",\n    precision: \"2\",\n  },\n  RSD: {\n    icon: \"🇷🇸\",\n    country: \"RS\",\n    value: \"RSD\",\n    label: \"塞尔维亚第纳尔\",\n    precision: \"2\",\n  },\n  RUB: {\n    icon: \"🇷🇺\",\n    country: \"RU\",\n    value: \"RUB\",\n    label: \"俄罗斯卢布\",\n    precision: \"2\",\n  },\n  RWF: {\n    icon: \"🇷🇼\",\n    country: \"RW\",\n    value: \"RWF\",\n    label: \"卢旺达法郎\",\n    precision: \"0\",\n  },\n  SAR: {\n    icon: \"🇸🇦\",\n    country: \"SA\",\n    value: \"SAR\",\n    label: \"沙特里亚尔\",\n    precision: \"2\",\n  },\n  SBD: {\n    icon: \"🇸🇧\",\n    country: \"SB\",\n    value: \"SBD\",\n    label: \"所罗门群岛元\",\n    precision: \"2\",\n  },\n  SCR: {\n    icon: \"🇸🇨\",\n    country: \"SC\",\n    value: \"SCR\",\n    label: \"塞舌尔卢比\",\n    precision: \"2\",\n  },\n  SDG: {\n    icon: \"🇸🇩\",\n    country: \"SD\",\n    value: \"SDG\",\n    label: \"苏丹镑\",\n    precision: \"2\",\n  },\n  SEK: {\n    icon: \"🇸🇪\",\n    country: \"SE\",\n    value: \"SEK\",\n    label: \"瑞典克朗\",\n    precision: \"2\",\n  },\n  SGD: {\n    icon: \"🇸🇬\",\n    country: \"SG\",\n    value: \"SGD\",\n    label: \"新加坡元\",\n    precision: \"2\",\n  },\n  SHP: {\n    icon: \"🇸🇭\",\n    country: \"SH\",\n    value: \"SHP\",\n    label: \"圣赫勒拿镑\",\n    precision: \"2\",\n  },\n  SLL: {\n    icon: \"🇸🇱\",\n    country: \"SL\",\n    value: \"SLL\",\n    label: \"塞拉利昂利昂\",\n    precision: \"2\",\n  },\n  SOS: {\n    icon: \"🇸🇴\",\n    country: \"SO\",\n    value: \"SOS\",\n    label: \"索马里先令\",\n    precision: \"2\",\n  },\n  SRD: {\n    icon: \"🇸🇷\",\n    country: \"SR\",\n    value: \"SRD\",\n    label: \"苏里南元\",\n    precision: \"2\",\n  },\n  SSP: {\n    icon: \"🇸🇸\",\n    country: \"SS\",\n    value: \"SSP\",\n    label: \"南苏丹镑\",\n    precision: \"2\",\n  },\n  STN: {\n    icon: \"🇸🇹\",\n    country: \"ST\",\n    value: \"STN\",\n    label: \"圣多美和普林西比多布拉\",\n    precision: \"2\",\n  },\n  SYP: {\n    icon: \"🇸🇾\",\n    country: \"SY\",\n    value: \"SYP\",\n    label: \"叙利亚镑\",\n    precision: \"2\",\n  },\n  SZL: {\n    icon: \"🇸🇿\",\n    country: \"SZ\",\n    value: \"SZL\",\n    label: \"斯威士兰里兰吉尼\",\n    precision: \"2\",\n  },\n  THB: {\n    icon: \"🇹🇭\",\n    country: \"TH\",\n    value: \"THB\",\n    label: \"泰铢\",\n    precision: \"2\",\n  },\n  TJS: {\n    icon: \"🇹🇯\",\n    country: \"TJ\",\n    value: \"TJS\",\n    label: \"塔吉克斯坦索莫尼\",\n    precision: \"2\",\n  },\n  TMT: {\n    icon: \"🇹🇲\",\n    country: \"TM\",\n    value: \"TMT\",\n    label: \"土库曼斯坦马纳特\",\n    precision: \"2\",\n  },\n  TND: {\n    icon: \"🇹🇳\",\n    country: \"TN\",\n    value: \"TND\",\n    label: \"突尼斯第纳尔\",\n    precision: \"3\",\n  },\n  TOP: {\n    icon: \"🇹🇴\",\n    country: \"TO\",\n    value: \"TOP\",\n    label: \"汤加潘加\",\n    precision: \"2\",\n  },\n  TRY: {\n    icon: \"🇹🇷\",\n    country: \"TR\",\n    value: \"TRY\",\n    label: \"土耳其里拉\",\n    precision: \"2\",\n  },\n  TTD: {\n    icon: \"🇹🇹\",\n    country: \"TT\",\n    value: \"TTD\",\n    label: \"特立尼达和多巴哥元\",\n    precision: \"2\",\n  },\n  TWD: {\n    icon: \"🇨🇳\",\n    country: \"CN\",\n    value: \"TWD\",\n    label: \"新台币\",\n    precision: \"2\",\n  },\n  TZS: {\n    icon: \"🇹🇿\",\n    country: \"TZ\",\n    value: \"TZS\",\n    label: \"坦桑尼亚先令\",\n    precision: \"2\",\n  },\n  UAH: {\n    icon: \"🇺🇦\",\n    country: \"UA\",\n    value: \"UAH\",\n    label: \"乌克兰格里夫纳\",\n    precision: \"2\",\n  },\n  UGX: {\n    icon: \"🇺🇬\",\n    country: \"UG\",\n    value: \"UGX\",\n    label: \"乌干达先令\",\n    precision: \"0\",\n  },\n  USD: {\n    icon: \"🇺🇸\",\n    country: \"US\",\n    value: \"USD\",\n    label: \"美元\",\n    precision: \"2\",\n  },\n  UYU: {\n    icon: \"🇺🇾\",\n    country: \"UY\",\n    value: \"UYU\",\n    label: \"乌拉圭比索\",\n    precision: \"2\",\n  },\n  UZS: {\n    icon: \"🇺🇿\",\n    country: \"UZ\",\n    value: \"UZS\",\n    label: \"乌兹别克斯坦索姆\",\n    precision: \"2\",\n  },\n  VES: {\n    icon: \"🇻🇪\",\n    country: \"VE\",\n    value: \"VES\",\n    label: \"委内瑞拉玻利瓦尔\",\n    precision: \"2\",\n  },\n  VND: {\n    icon: \"🇻🇳\",\n    country: \"VN\",\n    value: \"VND\",\n    label: \"越南盾\",\n    precision: \"0\",\n  },\n  VUV: {\n    icon: \"🇻🇺\",\n    country: \"VU\",\n    value: \"VUV\",\n    label: \"瓦努阿图瓦图\",\n    precision: \"0\",\n  },\n  WST: {\n    icon: \"🇼🇸\",\n    country: \"WS\",\n    value: \"WST\",\n    label: \"萨摩亚塔拉\",\n    precision: \"2\",\n  },\n  XAF: {\n    icon: \"🇨🇫\",\n    country: \"CF\",\n    value: \"XAF\",\n    label: \"中非法郎\",\n    precision: \"2\",\n  },\n  XCD: {\n    icon: \"🇦🇮\",\n    country: \"AI\",\n    value: \"XCD\",\n    label: \"东加勒比元\",\n    precision: \"2\",\n  },\n  XOF: {\n    icon: \"🇳🇪\",\n    country: \"NE\",\n    value: \"XOF\",\n    label: \"西非法郎\",\n    precision: \"0\",\n  },\n  YER: {\n    icon: \"🇾🇪\",\n    country: \"YE\",\n    value: \"YER\",\n    label: \"也门里亚尔\",\n    precision: \"2\",\n  },\n  ZAR: {\n    icon: \"🇿🇦\",\n    country: \"ZA\",\n    value: \"ZAR\",\n    label: \"南非兰特\",\n    precision: \"2\",\n  },\n  ZMW: {\n    icon: \"🇿🇲\",\n    country: \"ZM\",\n    value: \"ZMW\",\n    label: \"赞比亚克瓦查\",\n    precision: \"2\",\n  },\n\n  // 过时的货币代码\n  AFA: {\n    icon: \"🇦🇫\",\n    country: \"AF\",\n    value: \"AFA\",\n    label: \"阿富汗尼\",\n    precision: \"2\",\n  }, // -> AFN\n  ARA: {\n    icon: \"🇦🇷\",\n    country: \"AR\",\n    value: \"ARA\",\n    label: \"阿根廷奥斯特拉尔\",\n    precision: \"2\",\n  }, // -> ARS\n  BEF: {\n    icon: \"🇧🇪\",\n    country: \"BE\",\n    value: \"BEF\",\n    label: \"比利时法郎\",\n    precision: \"2\",\n  }, // -> EUR\n  BRC: {\n    icon: \"🇧🇷\",\n    country: \"BR\",\n    value: \"BRC\",\n    label: \"巴西克鲁扎多\",\n    precision: \"2\",\n  }, // -> BRL\n  DEM: {\n    icon: \"🇩🇪\",\n    country: \"DE\",\n    value: \"DEM\",\n    label: \"德国马克\",\n    precision: \"2\",\n  }, // -> EUR\n  ESB: {\n    icon: \"🇪🇸\",\n    country: \"ES\",\n    value: \"ESB\",\n    label: \"西班牙比塞塔（B账户）\",\n    precision: \"0\",\n  }, // -> EUR\n  ESP: {\n    icon: \"🇪🇸\",\n    country: \"ES\",\n    value: \"ESP\",\n    label: \"西班牙比塞塔\",\n    precision: \"0\",\n  }, // -> EUR\n  FRF: {\n    icon: \"🇫🇷\",\n    country: \"FR\",\n    value: \"FRF\",\n    label: \"法国法郎\",\n    precision: \"2\",\n  }, // -> EUR\n  ITL: {\n    icon: \"🇮🇹\",\n    country: \"IT\",\n    value: \"ITL\",\n    label: \"意大利里拉\",\n    precision: \"0\",\n  }, // -> EUR\n  LVL: {\n    icon: \"🇱🇻\",\n    country: \"LV\",\n    value: \"LVL\",\n    label: \"拉脱维亚拉特\",\n    precision: \"2\",\n  }, // -> EUR\n  NLG: {\n    icon: \"🇳🇱\",\n    country: \"NL\",\n    value: \"NLG\",\n    label: \"荷兰盾\",\n    precision: \"2\",\n  }, // -> EUR\n  MGF: {\n    icon: \"🇲🇬\",\n    country: \"MG\",\n    value: \"MGF\",\n    label: \"马达加斯加法郎\",\n    precision: \"2\",\n  }, // -> MGA\n  MZM: {\n    icon: \"🇲🇿\",\n    country: \"MZ\",\n    value: \"MZM\",\n    label: \"莫桑比克梅蒂卡尔\",\n    precision: \"2\",\n  }, // -> MZN\n  PEI: {\n    icon: \"🇵🇪\",\n    country: \"PE\",\n    value: \"PEI\",\n    label: \"秘鲁印地\",\n    precision: \"2\",\n  }, // -> PEN\n  ROL: {\n    icon: \"🇷🇴\",\n    country: \"RO\",\n    value: \"ROL\",\n    label: \"罗马尼亚列伊\",\n    precision: \"2\",\n  }, // -> RON\n  SRG: {\n    icon: \"🇸🇷\",\n    country: \"SR\",\n    value: \"SRG\",\n    label: \"苏里南盾\",\n    precision: \"2\",\n  }, // -> SRD\n  SUR: {\n    icon: \"🇷🇺\",\n    country: \"RU\",\n    value: \"SUR\",\n    label: \"苏联卢布\",\n    precision: \"2\",\n  }, // -> RUB\n  TMM: {\n    icon: \"🇹🇲\",\n    country: \"TM\",\n    value: \"TMM\",\n    label: \"土库曼斯坦马纳特\",\n    precision: \"0\",\n  }, // -> TMT\n  TRL: {\n    icon: \"🇹🇷\",\n    country: \"TR\",\n    value: \"TRL\",\n    label: \"土耳其里拉\",\n    precision: \"0\",\n  }, // -> TRY\n  UGS: {\n    icon: \"🇺🇬\",\n    country: \"UG\",\n    value: \"UGS\",\n    label: \"乌干达先令\",\n    precision: \"0\",\n  }, // -> UGX\n  VEB: {\n    icon: \"🇻🇪\",\n    country: \"VE\",\n    value: \"VEB\",\n    label: \"委内瑞拉玻利瓦尔\",\n    precision: \"2\",\n  }, // -> VES\n  VEF: {\n    icon: \"🇻🇪\",\n    country: \"VE\",\n    value: \"VEF\",\n    label: \"委内瑞拉玻利瓦尔\",\n    precision: \"2\",\n  }, // -> VES\n};\n\nexport default currencyMap;\n","import React, { forwardRef } from \"react\";\nimport cx from \"classnames\";\nimport { Select, Tag } from \"antd\";\nimport type { SelectProps } from \"antd\";\nimport CURRENCY_MAP from \"./currencyMap\";\n\nimport \"./index.less\";\n\nexport interface CurrencyItem {\n  icon: string;\n  country: string;\n  value: string;\n  label: string;\n  precision: string;\n  img?: string;\n}\n\nexport interface YtCurrencySelectProps extends Omit<SelectProps, \"onChange\"> {\n  /**\n   * 扩展的货币类型\n   */\n  extraCurrencyMap?: Record<string, CurrencyItem>;\n  /**\n   * 数据源\n   */\n  dataSource?: Array<{ value: string; label: string; [key: string]: any }>;\n  /**\n   * 值变化时的回调\n   */\n  onChange?: (value: string, actionType: string, item: any) => void;\n}\n\n// 创建默认数据源\nconst createDefaultDataSource = (\n  extraCurrencyMap?: Record<string, CurrencyItem>,\n) => {\n  const allCurrencyMap = { ...CURRENCY_MAP, ...extraCurrencyMap };\n  return Object.keys(allCurrencyMap).map((code) => {\n    const currency = allCurrencyMap[code];\n    return {\n      value: code,\n      label: code,\n      ...currency,\n    };\n  });\n};\n\n// 频繁使用的币种排在前面\nexport const FREQ_CURRENCY = [\"CNY\", \"USD\", \"HKD\", \"JPY\", \"EUR\", \"GBP\", \"TWD\"];\nexport const ALL_CURRENCIES = [\n  ...FREQ_CURRENCY,\n  ...Object.keys(CURRENCY_MAP).filter((code) => !FREQ_CURRENCY.includes(code)),\n];\n\nexport const YtCurrencySelect = forwardRef<any, YtCurrencySelectProps>(\n  (props, ref) => {\n    const { className, dataSource, extraCurrencyMap, onChange, ...otherProps } =\n      props;\n\n    // 使用传入的数据源或创建默认数据源\n    const finalDataSource =\n      dataSource || createDefaultDataSource(extraCurrencyMap);\n\n    // 渲染国家/地区图标\n    const renderCountryIcon = (currencyDetail?: CurrencyItem) => {\n      if (!currencyDetail) return null;\n\n      if (currencyDetail.img) {\n        return (\n          <img\n            className=\"yt-currency-select-country-icon\"\n            src={currencyDetail.img}\n            alt={currencyDetail.value}\n          />\n        );\n      }\n\n      if (currencyDetail.country) {\n        return (\n          <img\n            className=\"yt-currency-select-country-icon\"\n            src={`//g.alicdn.com/whale/cdn-resource/0.0.13/country-flags/${currencyDetail.country.toLowerCase()}.svg`}\n            width={18}\n            alt={currencyDetail.country}\n          />\n        );\n      }\n\n      return (\n        <div\n          className=\"yt-currency-select-country-icon\"\n          style={{ width: \"18px\" }}\n        />\n      );\n    };\n\n    // 处理 onChange 事件\n    const handleChange = (value: string, option: any) => {\n      if (onChange) {\n        onChange(value, \"select\", option);\n      }\n    };\n\n    // 过滤功能\n    const filterOption = (input: string, option: any) => {\n      const label = option?.value || \"\";\n      return label.toLowerCase().indexOf(input.toLowerCase()) >= 0;\n    };\n\n    // 自定义渲染下拉选项\n    const optionRender = (option: any) => {\n      const { data } = option;\n      const allCurrencyMap = { ...CURRENCY_MAP, ...extraCurrencyMap };\n      const currencyDetail = allCurrencyMap[data.value];\n\n      return (\n        <div className=\"yt-currency-select-menu-item\">\n          <div className=\"yt-currency-select-menu-item-header\">\n            {renderCountryIcon(currencyDetail)}\n            <div className=\"currency-value\">{currencyDetail?.value}</div>\n          </div>\n          <div className=\"yt-currency-select-menu-item-footer\">\n            {currencyDetail?.label}\n          </div>\n        </div>\n      );\n    };\n\n    // 自定义渲染选中项\n    const customTagRender = (props: any) => {\n      const { value } = props;\n      const allCurrencyMap = { ...CURRENCY_MAP, ...extraCurrencyMap };\n      const currencyDetail = allCurrencyMap[value];\n\n      return (\n        <Tag className=\"yt-currency-select-value\">\n          {renderCountryIcon(currencyDetail)}\n          <div className=\"currency-value\">{currencyDetail?.value}</div>\n        </Tag>\n      );\n    };\n\n    return (\n      <Select\n        className={cx(\"yt-currency-select\", className)}\n        popupClassName=\"yt-currency-select-popup\"\n        placeholder={\"请选择币种\"}\n        options={finalDataSource.map((item) => ({\n          label: item.label || item,\n          value: item.value || item,\n        }))}\n        optionRender={optionRender}\n        tagRender={customTagRender}\n        filterOption={filterOption}\n        onChange={handleChange}\n        ref={ref}\n        {...otherProps}\n      />\n    );\n  },\n);\n\nYtCurrencySelect.displayName = \"CurrencySelect\";\n","import { Tooltip } from \"antd\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport classnames from \"classnames\";\n\nexport const filerItemComp = new Map<string, any>();\n\nexport function registerFormItemComponent(componentName: string, comp: any) {\n  filerItemComp.set(componentName, comp);\n  // 通知所有订阅者，触发依赖此注册表的组件安全地重新渲染\n  queueMicrotask(() => {\n    formItemComponentListeners.forEach((listener) => {\n      try {\n        listener();\n      } catch (err) {\n        // 保证单个监听报错不影响其他监听\n        console.error(\"form item component registry listener error\", err);\n      }\n    });\n  });\n  return comp;\n}\n\n(window as any).registerFormItemComponent = registerFormItemComponent;\n\nexport function getComponentByComponentName(componentName: string) {\n  return filerItemComp.get(componentName);\n}\n\n// ---- 注册变更订阅能力，供动态注册后触发渲染 ----\ntype FormItemComponentListener = () => void;\nconst formItemComponentListeners = new Set<FormItemComponentListener>();\n\nexport function subscribeFormItemComponentRegistry(\n  listener: FormItemComponentListener,\n) {\n  formItemComponentListeners.add(listener);\n  return () => {\n    formItemComponentListeners.delete(listener);\n  };\n}\n\n// React 组件中可直接使用该 hook 来在注册变更时触发一次更新\nexport function useFormItemComponentRegistryVersion() {\n  const [version, setVersion] = useState(0);\n  useEffect(() => {\n    return subscribeFormItemComponentRegistry(() => {\n      // 自增版本以触发重新渲染\n      setVersion((v) => v + 1);\n    });\n  }, []);\n\n  return version;\n}\n\nexport function Label({ label, rules }: any) {\n  const labelRef = useRef<HTMLDivElement>(null);\n  const [isOverflow, setIsOverflow] = useState(false);\n  const required = rules?.some((rule: any) => rule?.type === \"required\");\n  useEffect(() => {\n    if (labelRef.current) {\n      const { scrollWidth, clientWidth } = labelRef.current;\n      setIsOverflow(scrollWidth > clientWidth); // 判断是否超出宽度\n    }\n  }, [label]);\n\n  if (!label) {\n    return null;\n  }\n\n  return (\n    // @ts-ignore\n    <Tooltip title={isOverflow ? label : undefined}>\n      <div\n        ref={labelRef}\n        className={classnames(\"yt-form-item-label\", {\n          \"yt-form-item-label-required\": required,\n        })}\n      >\n        {label}\n      </div>\n    </Tooltip>\n  );\n}\n","import React from \"react\";\nimport { FormatContext, FormatOptions } from \"@yuntoo/antd-ext\";\nimport {\n  getComponentByComponentName,\n  useFormItemComponentRegistryVersion,\n} from \"../../../_utils/form-item-register/comp\";\n\nexport interface ComponentFormatOptions extends FormatOptions {\n  /** 组件名称 */\n  componentName: string;\n  /** 传递给组件的额外属性 */\n  componentProps?: Record<string, any>;\n}\n\n/**\n * 自定义组件格式化器\n * 根据formatOptions中的componentName渲染对应的组件\n */\nexport const componentFormatter = (\n  context: FormatContext,\n  options?: ComponentFormatOptions,\n): React.ReactNode => {\n  if (!options?.componentName) {\n    return context.value !== undefined ? String(context.value) : \"\";\n  }\n\n  // 包裹一个具备动态注册感知能力的渲染组件。\n  // 好处：即使初始时组件尚未注册，也能在注册后自动刷新渲染。\n  function RegistryAwareRenderer() {\n    // 订阅注册表版本变化，触发一次重新渲染\n    useFormItemComponentRegistryVersion();\n\n    const DynamicComponent = getComponentByComponentName(options.componentName);\n\n    // 准备传递给组件的属性\n    const componentProps = {\n      value: context.value,\n      record: context.record,\n      index: context.index,\n      dataIndex: context.dataIndex,\n      // 预览必须为是\n      preview: true,\n      // 分支：预览表格属性，用于组件进一步区分展示\n      previewInTable: true,\n      ...options.componentProps,\n    };\n\n    if (!DynamicComponent) {\n      // 未找到时给出占位文本，但仍保持订阅，等待后续注册完成自动刷新\n      console.warn(`组件 \"${options.componentName}\" 未找到`);\n      return context.value ? String(context.value) : \"--\";\n    }\n\n    return <DynamicComponent {...componentProps} />;\n  }\n\n  return <RegistryAwareRenderer />;\n};\n","import { registerFormatter } from \"@yuntoo/antd-ext\";\nimport { componentFormatter } from \"./component-formatter\";\n\n/**\n * 初始化低码层专有的格式化器\n * 这个函数应该在应用启动时调用，确保低码层的格式化器被正确注册\n */\nexport function initLowCodeFormatters() {\n  registerFormatter(\"component\", componentFormatter);\n}\n\n// 自动执行初始化\ninitLowCodeFormatters();","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_weekday=t()}(this,(function(){\"use strict\";return function(e,t){t.prototype.weekday=function(e){var t=this.$locale().weekStart||0,i=this.$W,n=(i<t?i+7:i)-t;return this.$utils().u(e)?n:this.subtract(n,\"day\").add(e,\"day\")}}}));","!function(n,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(n=\"undefined\"!=typeof globalThis?globalThis:n||self).dayjs_plugin_localeData=e()}(this,(function(){\"use strict\";return function(n,e,t){var r=e.prototype,o=function(n){return n&&(n.indexOf?n:n.s)},u=function(n,e,t,r,u){var i=n.name?n:n.$locale(),a=o(i[e]),s=o(i[t]),f=a||s.map((function(n){return n.slice(0,r)}));if(!u)return f;var d=i.weekStart;return f.map((function(n,e){return f[(e+(d||0))%7]}))},i=function(){return t.Ls[t.locale()]},a=function(n,e){return n.formats[e]||function(n){return n.replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(n,e,t){return e||t.slice(1)}))}(n.formats[e.toUpperCase()])},s=function(){var n=this;return{months:function(e){return e?e.format(\"MMMM\"):u(n,\"months\")},monthsShort:function(e){return e?e.format(\"MMM\"):u(n,\"monthsShort\",\"months\",3)},firstDayOfWeek:function(){return n.$locale().weekStart||0},weekdays:function(e){return e?e.format(\"dddd\"):u(n,\"weekdays\")},weekdaysMin:function(e){return e?e.format(\"dd\"):u(n,\"weekdaysMin\",\"weekdays\",2)},weekdaysShort:function(e){return e?e.format(\"ddd\"):u(n,\"weekdaysShort\",\"weekdays\",3)},longDateFormat:function(e){return a(n.$locale(),e)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};r.localeData=function(){return s.bind(this)()},t.localeData=function(){var n=i();return{firstDayOfWeek:function(){return n.weekStart||0},weekdays:function(){return t.weekdays()},weekdaysShort:function(){return t.weekdaysShort()},weekdaysMin:function(){return t.weekdaysMin()},months:function(){return t.months()},monthsShort:function(){return t.monthsShort()},longDateFormat:function(e){return a(n,e)},meridiem:n.meridiem,ordinal:n.ordinal}},t.months=function(){return u(i(),\"months\")},t.monthsShort=function(){return u(i(),\"monthsShort\",\"months\",3)},t.weekdays=function(n){return u(i(),\"weekdays\",null,null,n)},t.weekdaysShort=function(n){return u(i(),\"weekdaysShort\",\"weekdays\",3,n)},t.weekdaysMin=function(n){return u(i(),\"weekdaysMin\",\"weekdays\",2,n)}}}));","// 简单判断时间是否是数字类型的字符串或者数字，保证服务端数据提交不会报错\nexport const isValidDateValue = (value: any): boolean => {\n  if (value === null) return true;\n\n  const valueType = typeof value;\n\n  if (valueType === \"string\" || valueType === \"number\") {\n    return isTimestamp(value);\n  }\n\n  return false;\n};\n\n/**\n * 处理各种类型的时间值,确保返回的是合法的时间戳\n * @param v 时间值\n * @returns 时间戳\n */\nexport const transformDateValue = (dateValue: string | number): number => {\n  // 如果是时间戳，则直接返回\n  if (isTimestamp(dateValue)) {\n    return Number(dateValue);\n  }\n\n  // 如果是字符串，并且是合法的时间字符串，则转换为时间戳\n  if (typeof dateValue === \"string\" && isValidDate(dateValue)) {\n    return new Date(dateValue).getTime();\n  }\n\n  // 如果上面都没有匹配到，则认为是非法的时间值，直接返回当前日期的时间戳\n  return new Date().getTime();\n};\n\n/**\n * 简单判断是否是合法的时间戳\n * @param value 时间值\n * @returns 是否是合法的时间戳\n */\nconst isTimestamp = (value: string | number) => {\n  const numValue = Number(value);\n\n  // 判断是否是有效数字\n  if (isNaN(numValue)) return false;\n\n  // 检查是否为整数\n  if (!Number.isInteger(numValue)) return false;\n\n  if (numValue <= 0) return false;\n\n  return true;\n};\n\n/**\n * 判断是否是合法的时间字符串\n * @param value 时间字符串\n * @returns 是否是合法的时间字符串\n */\nconst isValidDate = (dateStr: string): boolean => {\n  const date = new Date(dateStr);\n  return !isNaN(date.getTime());\n};\n","import React, { ComponentType } from \"react\";\nimport dayjs, { Dayjs } from \"dayjs\";\nimport weekday from \"dayjs/plugin/weekday\";\nimport localeData from \"dayjs/plugin/localeData\";\nimport { get, set, has } from \"lodash\";\nimport { transformDateValue } from \"./date\";\n\n// 扩展 dayjs 插件，确保 Datepicker 组件拿到的 dayjs 对象是完整的\ndayjs.extend(weekday);\ndayjs.extend(localeData);\n\nfunction convertProps(\n  props: Record<string, any>,\n  list: string[],\n  mapper: (v: any, key: string) => any,\n) {\n  const out: Record<string, any> = {};\n  list.forEach((key) => {\n    if (has(props, key)) {\n      set(out, key, mapper(get(props, key), key));\n    }\n  });\n  return out;\n}\n\n/**\n * 某些组件会用React.Children.only检查子节点\n * 需要做处理避免报错\n */\nexport function withSingleChild(\n  Comp: ComponentType<any>,\n  needsConvert = [\"children\"],\n) {\n  return (props: any) => {\n    const convertedProps = convertProps(props, needsConvert, (prop) => {\n      let node = React.Children.toArray(prop)[0];\n      if (node === null || typeof node !== \"object\") {\n        node = <div>{node}</div>;\n      }\n      return node;\n    });\n\n    return <Comp {...(props as any)} {...(convertedProps as any)} />;\n  };\n}\n\nexport function withSingleFunctionChild(Comp: ComponentType<any>) {\n  return (props: any) => {\n    const { children } = props;\n\n    let node;\n    if (typeof children === \"function\") {\n      node = children;\n    }\n    if (\n      Array.isArray(children) &&\n      children.length === 1 &&\n      typeof children[0] === \"function\"\n    ) {\n      node = children[0];\n    }\n\n    if (node) {\n      return <Comp {...(props as any)}>{node}</Comp>;\n    }\n    return <div>{children}</div>;\n  };\n}\n\n/**\n * dayjs对象在序列化后会被转为字符串\n * 需要让日期类组件支持接受字符串值\n */\nexport function withDayjsProps(\n  Comp: ComponentType<any>,\n  needsConvert = [\"value\", \"defaultValue\"],\n) {\n  return (props: any) => {\n    const convertedProps = convertProps(props, needsConvert, (prop) => {\n      if (prop) {\n        if (Array.isArray(prop)) {\n          return prop.map((v) =>\n            dayjs.isDayjs?.(v) ? v : dayjs(transformDateValue(v)),\n          );\n        }\n        return dayjs.isDayjs?.(prop) ? prop : dayjs(transformDateValue(prop));\n      }\n    });\n\n    return (\n      <Comp\n        {...(props as any)}\n        {...(convertedProps as any)}\n        onChange={(value: Dayjs | Dayjs[], dateString: string | string[]) => {\n          if (props.onChange) {\n            // 将 dayjs 对象转换为时间戳，服务端接口需要 timestamp 类型\n            if (Array.isArray(value)) {\n              props.onChange(\n                value.map((v) => v.valueOf()),\n                dateString,\n              );\n            } else {\n              props.onChange(value?.valueOf(), dateString);\n            }\n          }\n        }}\n      />\n    );\n  };\n}\n","import { Skeleton as OriginalSleleton } from \"antd\";\nimport { withSingleChild } from \"../utils/hoc\";\n\nconst Skeleton = withSingleChild(OriginalSleleton, [\"children\"]);\nexport default Skeleton;\n","import React from \"react\";\nimport { Slider } from \"antd\";\nconst SliderOuter = (props: any) => {\n  const { range } = props;\n  let { defaultValue } = props;\n  if (range) {\n    defaultValue = Array.isArray(defaultValue)\n      ? defaultValue\n      : [0, defaultValue];\n  } else {\n    defaultValue = Array.isArray(defaultValue)\n      ? defaultValue[1] || defaultValue[0]\n      : defaultValue;\n  }\n  return <Slider {...props} defaultValue={defaultValue}></Slider>;\n};\n\nexport default SliderOuter;\n","import { Component } from \"react\";\n\nclass Slot extends Component {\n  static displayName = \"Slot\";\n\n  static componentMetadata = {\n    componentName: \"Slot\",\n    configure: {\n      props: [\n        {\n          name: \"___title\",\n          title: {\n            type: \"i18n\",\n            \"en-US\": \"Slot Title\",\n            \"zh-CN\": \"插槽标题\",\n          },\n          setter: \"StringSetter\",\n          defaultValue: \"插槽容器\",\n        },\n        {\n          name: \"___params\",\n          title: {\n            type: \"i18n\",\n            \"en-US\": \"Slot Params\",\n            \"zh-CN\": \"插槽入参\",\n          },\n          setter: {\n            componentName: \"ArraySetter\",\n            props: {\n              itemSetter: {\n                componentName: \"StringSetter\",\n                props: {\n                  placeholder: {\n                    type: \"i18n\",\n                    \"zh-CN\": \"参数名称\",\n                    \"en-US\": \"Argument Name\",\n                  },\n                },\n              },\n            },\n          },\n        },\n      ],\n      component: {\n        isContainer: true,\n      },\n      // events/className/style/general/directives\n      supports: false,\n    },\n  };\n\n  render() {\n    const { children } = this.props;\n    return <>{children}</>;\n  }\n}\n\nexport default Slot;\n","export const warning = (...args: any[]) => {\n  console.warn(args);\n};\n","import React, { Component } from \"react\";\nimport { TabPaneProps, Tabs as OriginalTabs } from \"antd\";\nimport { warning } from \"../utils/warning\";\nimport type { Tab } from \"rc-tabs/lib/interface\";\n\nclass Tabs extends Component<any> {\n  state = {\n    activeKey: this.props.activeKey ?? this.props.defaultActiveKey,\n  };\n\n  private _handleChange = (key: string) => {\n    this.setActiveKey(key);\n  };\n\n  // 编辑器里可以通过 this.$(refId).setActiveKey(key) 调用\n  setActiveKey = (key: string) => {\n    const { onChange = () => {} } = this.props;\n    this.setState({ activeKey: key });\n    onChange(key);\n  };\n\n  // 编辑器里可以通过 this.$(refId).getActiveKey() 调用\n  getActiveKey = () => {\n    return this.state.activeKey;\n  };\n\n  render() {\n    const { props } = this;\n    const { activeKey } = this.state;\n\n    const { children } = props;\n\n    let items = props.items;\n\n    // props.items 存在，只认 props.items\n    // 兼容代码：props.childrens 反推 props.items\n    if (!props.items && Array.isArray(children) && children.length > 0) {\n      warning(\"Tabs.TabPane is deprecated. Please use `items` directly.\");\n      items = children\n        .map((node: React.ReactElement<TabPaneProps>) => {\n          if (React.isValidElement(node)) {\n            const { key, props } = node;\n            const { tab, ...restProps } = props || {};\n            const item: Tab = {\n              key: String(key),\n              ...restProps,\n              label: tab,\n            };\n            return item;\n          }\n          return null;\n        })\n        .filter(Boolean);\n    }\n\n    return (\n      <OriginalTabs\n        {...props}\n        items={items}\n        activeKey={activeKey}\n        onChange={this._handleChange}\n      />\n    );\n  }\n}\n\n(Tabs as any).TabPane = OriginalTabs.TabPane;\n\nexport default Tabs;\n","import { Upload as OriginalUpload } from \"antd\";\nimport { withSingleChild } from \"../utils/hoc\";\n\nconst Upload = withSingleChild(OriginalUpload, [\"children\"]);\nexport default Upload;\n","export const ButtonPosition = {\n  /******************** 按钮区域 ********************/\n  // 表单按钮\n  FORM_FOOTER: \"BUTTON_POSITION_FORM_FOOTER\",\n\n  // 卡片右上角行动区\n  CARD_ACTION: \"BUTTON_POSITION_CARD_ACTION\",\n\n  // 表格按钮\n  TABLE_SELECTED_BUTTONS: \"BUTTON_POSITION_TABLE_SELECTED_BUTTONS\",\n  TABLE_TOOL_BUTTONS: \"BUTTON_POSITION_TABLE_TOOL_BUTTONS\",\n  TABLE_OPERATE_BUTTONS: \"BUTTON_POSITION_TABLE_OPERATE_BUTTONS\",\n  TABLE_EXPORT_BUTTONS: \"BUTTON_POSITION_TABLE_EXPORT_BUTTONS\",\n\n  // 抽屉&模态框底部按钮\n  DIALOG_FOOTER: \"BUTTON_POSITION_DIALOG_FOOTER\",\n\n  FILTER_OPERATE_BUTTONS: \"BUTTON_POSITION_FILTER_OPERATE_BUTTONS\",\n\n  /******************** 回调事件 ********************/\n  // form 的回调事件\n  FORM_EVENT: \"BUTTON_POSITION_FORM_EVENT\",\n  // filter 的回调事件\n  FILTER_EVENT: \"BUTTON_POSITION_FILTER_EVENT\",\n  // table 的回调事件\n  TABLE_EVENT: \"BUTTON_POSITION_TABLE_EVENT\",\n} as const;\n\nexport type ButtonPositionKey = keyof typeof ButtonPosition;\nexport type ButtonPositionValue = (typeof ButtonPosition)[ButtonPositionKey];\n\nexport const ALL_BUTTON_POSITION_LIST = Object.values(ButtonPosition);\n","import { ALL_BUTTON_POSITION_LIST } from \"../../_position/button-position\";\nimport { ActionConfig } from \"../type\";\n\nexport interface DialogOption {\n  _bindDialog?: string;\n}\n\nexport const config = {\n  value: \"dialog\",\n  position: ALL_BUTTON_POSITION_LIST,\n  action: (config: ActionConfig<DialogOption>) => {\n    const { actionConfig, _context } = config || {};\n    if (actionConfig && _context) {\n      const { options = {} } = actionConfig;\n      const { _bindDialog } = options;\n      if (_bindDialog) {\n        const dialogNode = _context.$(_bindDialog);\n        dialogNode?.open?.();\n      }\n    }\n  },\n};\n","import { ALL_BUTTON_POSITION_LIST } from \"../../_position/button-position\";\nimport { ActionConfig } from \"../type\";\n\nexport interface CloseDialogOption {\n  _bindDialog?: string;\n}\n\nexport const config = {\n  value: \"closeDialog\",\n  position: ALL_BUTTON_POSITION_LIST,\n  action: (config: ActionConfig<CloseDialogOption>) => {\n    const { actionConfig, _context } = config || {};\n    if (actionConfig && _context) {\n      const { options = {} } = actionConfig;\n      const { _bindDialog } = options;\n      if (_bindDialog) {\n        const dialogNode = _context.$(_bindDialog);\n        dialogNode?.close?.();\n      }\n    }\n  },\n};\n","import { ALL_BUTTON_POSITION_LIST } from \"../../_position/button-position\";\nimport { executeFlowAction } from \"../index\";\n\nexport const config = {\n  value: \"flowAction\",\n  position: ALL_BUTTON_POSITION_LIST,\n  action: async (config, ...otherArgs) => {\n    const { actionConfig, position, _context } = config || {};\n    const { options } = actionConfig || {};\n    const { flowList } = options;\n    if (Array.isArray(flowList) && flowList.length > 0) {\n      return executeFlowAction({\n        flowList,\n        _context,\n        position,\n        config,\n        otherArgs,\n      });\n    }\n  },\n};\n","import { ALL_BUTTON_POSITION_LIST } from \"../../_position/button-position\";\nimport { message } from \"antd\";\nimport { ActionConfig } from \"../type\";\nimport { calculateTextExprValue } from \"../../_utils/utils\";\n\nexport interface MessageOption {\n  type: \"success\" | \"warning\" | \"error\" | \"info\" | \"loading\";\n  content?: string;\n  duration?: number;\n}\n\nexport const config = {\n  value: \"message\",\n  position: ALL_BUTTON_POSITION_LIST,\n  action: (config: ActionConfig<MessageOption>) => {\n    const { actionConfig } = config || {};\n\n    const { options } = actionConfig || {};\n\n    const type = calculateTextExprValue(options?.type, {\n      recordDataSource: config,\n    });\n\n    const content = calculateTextExprValue(options?.content, {\n      recordDataSource: config,\n    });\n\n    message?.[type]?.({\n      ...options,\n      type: type || \"success\",\n      content,\n    });\n  },\n};\n","import { Modal, message } from \"antd\";\n\nconst { confirm } = Modal;\n\ninterface ConfirmConfig {\n  enable?: boolean;\n  type?: string;\n  title?: string;\n  content?: string;\n}\n\ninterface ResponseConfig {\n  errorToastMsg?: string;\n  enableErrorToast?: boolean;\n  enableSuccessToast?: boolean;\n  successToastMsg?: string;\n}\n\nexport interface RequestOption {\n  _bindDataSource?: string;\n  confirmConfig?: ConfirmConfig;\n  responseConfig?: ResponseConfig;\n  _autoBindDataSourceParams?: boolean;\n  _bindDataSourceParams?: (extraParams: any) => any;\n}\n\ninterface RequestConfig extends RequestOption {\n  _context?: any;\n  extraParams?: Record<string, unknown>;\n}\n\nfunction doubleConfirm({\n  confirmConfig,\n  action,\n  onCancel,\n}: {\n  confirmConfig?: ConfirmConfig;\n  action: () => void;\n  onCancel?: () => void;\n}) {\n  const { enable, type, title, content } = confirmConfig || {};\n\n  if (!enable) {\n    action();\n    return;\n  }\n\n  confirm({\n    title: title || \"通知\",\n    content: content || \"\",\n    okText: \"确定\",\n    cancelText: \"取消\",\n    okType: type === \"warning\" ? \"danger\" : \"primary\",\n    onOk: () => {\n      action();\n    },\n    onCancel,\n  });\n}\n\nfunction makeRequest(config: RequestConfig) {\n  const {\n    _context,\n    _bindDataSource,\n    confirmConfig,\n    responseConfig,\n    extraParams,\n    _autoBindDataSourceParams,\n    _bindDataSourceParams,\n  } = config || {};\n\n  return new Promise((resolve, reject) => {\n    const request = () => {\n      // 支持自动携带传入参数或自定义参数处理逻辑\n      let finalParams;\n      if (_autoBindDataSourceParams) {\n        finalParams = extraParams;\n      } else {\n        finalParams =\n          typeof _bindDataSourceParams === \"function\"\n            ? _bindDataSourceParams(extraParams)\n            : undefined;\n      }\n\n      // load 传递的参数优先级高于数据源配置的请求处理函数，内部会进行 merge 处理\n      _context?.dataSourceMap[_bindDataSource]\n        ?.load?.(finalParams)\n        .then((res) => {\n          resolve(res);\n          if (responseConfig?.enableSuccessToast) {\n            message.success(responseConfig?.successToastMsg || \"请求成功\");\n          }\n        })\n        .catch((err) => {\n          if (responseConfig?.enableErrorToast) {\n            // 构建错误消息：优先错误对象中提取信息,其次使用自定义错误信息，最后兜底文案\n            const errorCode = err?.response?.errorCode;\n            const errorMsg = err?.response?.errorMsg;\n            if (errorMsg) {\n              message.error(errorCode ? `${errorCode}: ${errorMsg}` : errorMsg);\n              return;\n            }\n\n            let errorMessage = responseConfig?.errorToastMsg;\n            message.error(errorMessage || \"请求失败\");\n          }\n          reject(err);\n        });\n    };\n\n    doubleConfirm({\n      confirmConfig,\n      action: request,\n      onCancel: () => {\n        reject();\n      },\n    });\n  });\n}\n\nexport { makeRequest };\n","import { ALL_BUTTON_POSITION_LIST } from \"../../_position/button-position\";\nimport { ActionConfig } from \"../type\";\nimport { makeRequest, RequestOption } from \"../../_utils/request\";\n\nexport const config = {\n  value: \"request\",\n  position: ALL_BUTTON_POSITION_LIST,\n  action: async (config: ActionConfig<RequestOption>) => {\n    const { actionConfig, _context, extraParams } = config || {};\n\n    const {\n      _bindDataSource,\n      _bindDataSourceParams,\n      _autoBindDataSourceParams,\n      confirmConfig,\n      responseConfig,\n    } = actionConfig?.options || {};\n\n    const data = await makeRequest({\n      _context,\n      _bindDataSource,\n      _bindDataSourceParams,\n      _autoBindDataSourceParams,\n      confirmConfig,\n      responseConfig,\n      extraParams: extraParams as Record<string, unknown> | undefined,\n    });\n\n    return data;\n  },\n};\n","const token = '%[a-f0-9]{2}';\nconst singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nconst multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tconst left = components.slice(0, split);\n\tconst right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch {\n\t\tlet tokens = input.match(singleMatcher) || [];\n\n\t\tfor (let i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tconst replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD',\n\t};\n\n\tlet match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch {\n\t\t\tconst result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tconst entries = Object.keys(replaceMap);\n\n\tfor (const key of entries) {\n\t\t// Replace all decoded components\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nexport default function decodeUriComponent(encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n}\n","export function includeKeys(object, predicate) {\n\tconst result = {};\n\n\tif (Array.isArray(predicate)) {\n\t\tfor (const key of predicate) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor?.enumerable) {\n\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// `Reflect.ownKeys()` is required to retrieve symbol properties\n\t\tfor (const key of Reflect.ownKeys(object)) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor.enumerable) {\n\t\t\t\tconst value = object[key];\n\t\t\t\tif (predicate(key, value, object)) {\n\t\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function excludeKeys(object, predicate) {\n\tif (Array.isArray(predicate)) {\n\t\tconst set = new Set(predicate);\n\t\treturn includeKeys(object, key => !set.has(key));\n\t}\n\n\treturn includeKeys(object, (key, value, object) => !predicate(key, value, object));\n}\n","export default function splitOnFirst(string, separator) {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (string === '' || separator === '') {\n\t\treturn [];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n}\n","import decodeComponent from 'decode-uri-component';\nimport {includeKeys} from 'filter-obj';\nimport splitOnFirst from 'split-on-first';\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\n// eslint-disable-next-line unicorn/prefer-code-point\nconst strictUriEncode = string => encodeURIComponent(string).replaceAll(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result, [encode(key, options), '[', index, ']'].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t[encode(key, options), '[]'].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[]=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t[encode(key, options), ':list='].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), ':list=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSeparator = options.arrayFormat === 'bracket-separator'\n\t\t\t\t? '[]='\n\t\t\t\t: '=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSeparator, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\tencode(key, options),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], value];\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], value];\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : (value === null ? value : decode(value, options));\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null\n\t\t\t\t\t? []\n\t\t\t\t\t: decode(value, options).split(options.arrayFormatSeparator);\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], ...arrayValue];\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...[accumulator[key]].flat(), value];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction parseValue(value, options, type) {\n\tif (type === 'string' && typeof value === 'string') {\n\t\treturn value;\n\t}\n\n\tif (typeof type === 'function' && typeof value === 'string') {\n\t\treturn type(value);\n\t}\n\n\tif (type === 'boolean' && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\treturn value.toLowerCase() === 'true';\n\t}\n\n\tif (type === 'boolean' && value !== null && (value.toLowerCase() === '1' || value.toLowerCase() === '0')) {\n\t\treturn value.toLowerCase() === '1';\n\t}\n\n\tif (type === 'string[]' && options.arrayFormat !== 'none' && typeof value === 'string') {\n\t\treturn [value];\n\t}\n\n\tif (type === 'number[]' && options.arrayFormat !== 'none' && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\treturn [Number(value)];\n\t}\n\n\tif (type === 'number' && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\treturn Number(value);\n\t}\n\n\tif (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\treturn value.toLowerCase() === 'true';\n\t}\n\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\treturn Number(value);\n\t}\n\n\treturn value;\n}\n\nexport function extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nexport function parse(query, options) {\n\toptions = {\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false,\n\t\ttypes: Object.create(null),\n\t\t...options,\n\t};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst returnValue = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn returnValue;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn returnValue;\n\t}\n\n\tfor (const parameter of query.split('&')) {\n\t\tif (parameter === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst parameter_ = options.decode ? parameter.replaceAll('+', ' ') : parameter;\n\n\t\tlet [key, value] = splitOnFirst(parameter_, '=');\n\n\t\tif (key === undefined) {\n\t\t\tkey = parameter_;\n\t\t}\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : (['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options));\n\t\tformatter(decode(key, options), value, returnValue);\n\t}\n\n\tfor (const [key, value] of Object.entries(returnValue)) {\n\t\tif (typeof value === 'object' && value !== null && options.types[key] !== 'string') {\n\t\t\tfor (const [key2, value2] of Object.entries(value)) {\n\t\t\t\tconst type = options.types[key] ? options.types[key].replace('[]', '') : undefined;\n\t\t\t\tvalue[key2] = parseValue(value2, options, type);\n\t\t\t}\n\t\t} else if (typeof value === 'object' && value !== null && options.types[key] === 'string') {\n\t\t\treturnValue[key] = Object.values(value).join(options.arrayFormatSeparator);\n\t\t} else {\n\t\t\treturnValue[key] = parseValue(value, options, options.types[key]);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn returnValue;\n\t}\n\n\t// TODO: Remove the use of `reduce`.\n\t// eslint-disable-next-line unicorn/no-array-reduce\n\treturn (options.sort === true ? Object.keys(returnValue).sort() : Object.keys(returnValue).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = returnValue[key];\n\t\tresult[key] = Boolean(value) && typeof value === 'object' && !Array.isArray(value) ? keysSorter(value) : value;\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexport function stringify(object, options) {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\t...options,\n\t};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key]))\n\t\t|| (options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const [key, value] of Object.entries(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = value;\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n}\n\nexport function parseUrl(url, options) {\n\toptions = {\n\t\tdecode: true,\n\t\t...options,\n\t};\n\n\tlet [url_, hash] = splitOnFirst(url, '#');\n\n\tif (url_ === undefined) {\n\t\turl_ = url;\n\t}\n\n\treturn {\n\t\turl: url_?.split('?')?.[0] ?? '',\n\t\tquery: parse(extract(url), options),\n\t\t...(options && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}),\n\t};\n}\n\nexport function stringifyUrl(object, options) {\n\toptions = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true,\n\t\t...options,\n\t};\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = extract(object.url);\n\n\tconst query = {\n\t\t...parse(queryFromUrl, {sort: false, ...options}),\n\t\t...object.query,\n\t};\n\n\tlet queryString = stringify(query, options);\n\tqueryString &&= `?${queryString}`;\n\n\tlet hash = getHash(object.url);\n\tif (typeof object.fragmentIdentifier === 'string') {\n\t\tconst urlObjectForFragmentEncode = new URL(url);\n\t\turlObjectForFragmentEncode.hash = object.fragmentIdentifier;\n\t\thash = options[encodeFragmentIdentifier] ? urlObjectForFragmentEncode.hash : `#${object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n}\n\nexport function pick(input, filter, options) {\n\toptions = {\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false,\n\t\t...options,\n\t};\n\n\tconst {url, query, fragmentIdentifier} = parseUrl(input, options);\n\n\treturn stringifyUrl({\n\t\turl,\n\t\tquery: includeKeys(query, filter),\n\t\tfragmentIdentifier,\n\t}, options);\n}\n\nexport function exclude(input, filter, options) {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn pick(input, exclusionFilter, options);\n}\n","import { ALL_BUTTON_POSITION_LIST } from \"../../_position/button-position\";\nimport {\n  executeFunction,\n  getRealizeValue,\n  handleRequestParams,\n} from \"../../_utils/utils\";\nimport qs from \"query-string\";\nimport { ActionConfig } from \"../type\";\n\nexport interface LinkOption {\n  url: string;\n  redirectType: \"current\" | \"open\" | \"back\";\n  urlParams: Array<{ label: string; value: string }>;\n}\n\nexport const config = {\n  value: \"link\",\n  position: ALL_BUTTON_POSITION_LIST,\n  action: (config: ActionConfig<LinkOption>) => {\n    const { actionConfig, _context } = config;\n\n    const { options } = actionConfig || {};\n\n    if (options) {\n      const { url, redirectType, urlParams = [] } = options;\n\n      if (!url) {\n        return;\n      }\n\n      if (redirectType === \"back\") {\n        window?.history?.back?.();\n        return;\n      }\n\n      let search = \"\";\n      if (urlParams && urlParams.length > 0) {\n        const temp = handleRequestParams(urlParams, {\n          urlParamsDataSource: _context?.state?.urlParams,\n        });\n        search = qs.stringify(temp);\n      }\n\n      let realUrl = url; // TODO: 支持解析变量\n\n      // 支持 JSFunction 类型\n      if (typeof url === \"function\") {\n        realUrl = executeFunction(url, _context);\n      }\n\n      if (realUrl.indexOf(\"?\") !== -1) {\n        if (search) {\n          realUrl += `&${search}`;\n        }\n      } else if (search) {\n        realUrl += `?${search}`;\n      }\n\n      if (redirectType === \"current\") {\n        if (typeof window.jumpTo === \"function\") {\n          const tempList = realUrl?.split(\"?\");\n          window.jumpTo({\n            pathname: tempList?.[0],\n            search: tempList?.[1],\n            reload: true,\n          });\n        } else {\n          location.href = realUrl;\n        }\n      } else if (redirectType === \"open\") {\n        if (typeof window.jumpTo === \"function\") {\n          const tempList = realUrl?.split(\"?\");\n          window.jumpTo({\n            pathname: tempList?.[0],\n            search: tempList?.[1],\n            type: \"_blank\",\n          });\n        } else {\n          window.open(realUrl);\n        }\n      }\n    }\n  },\n};\n","import { ALL_BUTTON_POSITION_LIST } from \"../../_position/button-position\";\nimport { ActionConfig } from \"../type\";\n\nexport interface ResetOption {\n  _bindForm?: string;\n}\n\nexport const config = {\n  value: \"reset\",\n  position: ALL_BUTTON_POSITION_LIST,\n  action: (config: ActionConfig<ResetOption>) => {\n    const { actionConfig, _context } = config || {};\n    if (actionConfig && _context) {\n      const { options = {} } = actionConfig;\n      const { _bindForm } = options;\n      if (_bindForm) {\n        const formNode = _context.$(_bindForm);\n        formNode?.getFormInstance()?.resetFields();\n      }\n    }\n  },\n};\n","import { ALL_BUTTON_POSITION_LIST } from \"../../_position/button-position\";\nimport { ActionConfig } from \"../type\";\nimport { makeRequest, RequestOption } from \"../../_utils/request\";\n\nexport interface SubmitOption extends RequestOption {\n  _bindForm?: string;\n}\n\nexport const config = {\n  value: \"submit\",\n  position: ALL_BUTTON_POSITION_LIST,\n  action: async (config: ActionConfig<SubmitOption>) => {\n    const { actionConfig, _context } = config || {};\n    if (actionConfig && _context) {\n      const { options = {} } = actionConfig;\n      const {\n        _bindForm,\n        _bindDataSource,\n        confirmConfig,\n        responseConfig,\n        _autoBindDataSourceParams,\n        _bindDataSourceParams,\n      } = options;\n\n      const formInstance = _context.$(_bindForm)?.getFormInstance();\n\n      if (!formInstance) {\n        return;\n      }\n\n      const values = await formInstance?.validateFields?.();\n      const data = await makeRequest({\n        _context,\n        _bindDataSource,\n        confirmConfig,\n        responseConfig,\n        extraParams: values,\n        _autoBindDataSourceParams,\n        _bindDataSourceParams,\n      });\n\n      return data;\n    }\n  },\n};\n","import { ALL_BUTTON_POSITION_LIST } from \"../../_position/button-position\";\nimport { ActionConfig } from \"../type\";\n\nexport interface JSActionOption {\n  jsFunction?: (config: any) => void;\n}\n\nexport const config = {\n  value: \"jsAction\",\n  position: ALL_BUTTON_POSITION_LIST,\n  action: async (config: ActionConfig<JSActionOption>) => {\n    const { actionConfig } = config || {};\n\n    const { jsFunction } = actionConfig?.options || {};\n    if (typeof jsFunction === \"function\") {\n      try {\n        // 传递 actionConfig 给 jsFunction，包含所有上下文信息\n        return await jsFunction(actionConfig);\n      } catch (error) {\n        console.error(\"jsAction 执行错误:\", error);\n        throw error;\n      }\n    } else {\n      console.warn(\"jsAction: jsFunction 未定义或不是函数\");\n    }\n  },\n};\n","/**\n * @file 动作运行时主入口\n * @description 该文件负责管理和执行平台中的所有\"动作\"，包括内置动作和动态注册的动作。\n * 它提供了注册、获取和执行动作的核心功能，是动作机制的运行时引擎。\n * \"编辑态\"的动作配置入口通常在同级的 `prototype-index.tsx` 文件中。\n */\n\nimport { getActionItemFunc, getRealizeValue } from \"../_utils/utils\";\n\n// ------------------- 导入内置动作模块 -------------------\n// 每个动作模块都包含一个 `config` 对象，定义了动作的元数据和行为\nimport { config as dialog } from \"./dialog/view\";\nimport { config as closeDialog } from \"./close-dialog/view\";\nimport { config as flowAction } from \"./flow-action/view\";\nimport { config as message } from \"./message/view\";\nimport { config as request } from \"./request/view\";\nimport { config as link } from \"./link/view\";\nimport { config as reset } from \"./reset/view\";\nimport { config as submit } from \"./submit/view\";\nimport { config as jsAction } from \"./js-action/view\";\n\n// ------------------- 动作注册与管理 -------------------\n\n/**\n * 动作注册表\n * @description 存储所有可用动作的映射，键为动作名称，值为动作配置。\n */\nconst actionMap = {\n  flowAction,\n  dialog,\n  closeDialog,\n  message,\n  request,\n  link,\n  reset,\n  submit,\n  jsAction,\n};\n\n// ------------------- 动作获取与分发 -------------------\n\n/**\n * 创建一个用于获取动作项的工厂函数\n * @description getActionItemFunc 是一个高阶函数，返回一个根据 actionMap 获取具体动作属性的函数\n */\nexport const getActionItem = getActionItemFunc({ actionMap });\n\n/**\n * 根据动作配置获取可执行的动作函数\n * @param {object} actionConfig - 动作配置，包含 optType 和 position\n * @returns {Function | undefined} - 返回一个可执行的动作函数，如果找不到则返回 undefined\n */\nexport function getAction(actionConfig) {\n  const { optType, position } = actionConfig || {};\n  if (optType) {\n    // getActionItem 用于从配置中安全地获取 'action' 属性\n    const action = getActionItem({\n      position,\n      actionName: optType,\n      propKey: \"action\",\n    });\n\n    if (typeof action === \"function\") {\n      return action;\n    }\n  }\n}\n\n/**\n * 获取动作的运行时定义\n * @param {string} actionName - 动作的名称\n * @returns {object | undefined} - 返回动作的完整定义对象\n */\nexport function getActionRuntimeItem(actionName) {\n  let result;\n  if (actionName) {\n    result = actionMap[actionName];\n  }\n  return result;\n}\n\n// ------------------- 动作执行引擎 -------------------\n\n/**\n * 执行单个事件关联的动作\n * @description 根据事件类型，从事件列表中找到对应的事件，并执行其关联的动作。\n * @param {object} config - 执行配置\n * @param {string} config.eventType - 当前触发的事件类型 (e.g., 'onClick')\n * @param {Array<object>} config.events - 组件上绑定的事件列表\n * @param {object} config._context - 执行上下文\n * @param {string} config.position - 动作执行的位置\n * @param {object} config.extraParams - 额外参数\n * @param {object} config.formInstance - 表单实例\n * @param {boolean} config.needSuccessToast - 是否需要成功提示\n * @param {Event} config.e - 原始事件对象\n */\nexport function executeEvent(config) {\n  const {\n    eventType,\n    events,\n    _context,\n    position,\n    extraParams,\n    formInstance,\n    needSuccessToast,\n    e,\n  } = config || {};\n  if (eventType && Array.isArray(events) && events.length > 0) {\n    for (const item of events) {\n      const { name: eventName } = item;\n      if (eventName === eventType) {\n        const action = getAction({ ...item, position });\n        if (typeof action === \"function\") {\n          action({\n            actionConfig: {\n              ...item,\n              position,\n              options: {\n                ...item,\n              },\n            },\n            position,\n            state: _context?.state,\n            extraParams,\n            _context,\n            formInstance,\n            needSuccessToast,\n            e,\n          });\n        }\n      }\n    }\n  }\n}\n\n/**\n * 执行一个动作流 (Flow)\n * @description 按照顺序执行一系列预定义的动作。支持条件判断和结果传递。\n * @param {object} params - 执行参数\n * @param {Array<object>} params.flowList - 要执行的动作流列表\n * @param {object} params._context - 执行上下文\n * @param {string} params.position - 动作执行的位置\n * @param {Array} params.otherArgs - 其他参数\n * @param {object} params.config - 全局配置\n * @returns {Promise<Array>} - 返回一个包含每个动作执行结果的数组\n */\nexport async function executeFlowAction(params) {\n  const { _context, position, otherArgs, config } = params || {};\n  // 复制一份 flowList 以免修改原始数据\n  const flowList = [...(params?.flowList || [])];\n\n  if (config?.e && config.e.persist) {\n    // 在异步操作中保持对 React 事件对象的引用\n    // See: https://legacy.reactjs.org/docs/legacy-event-pooling.html\n    config.e.persist();\n  }\n\n  const result = [];\n  for (let index = 0; index < flowList.length; index++) {\n    const item = flowList[index];\n    const { active, optType } = item || {};\n    // TODO: 'active' 属性应支持变量解析，以实现动态启用/禁用某个流程节点\n    const isActive = active;\n\n    if (!isActive) {\n      continue;\n    }\n\n    // 1. 获取动作函数\n    let action = getAction({\n      ...item,\n      position,\n    });\n    // 2. 如果标准方式获取不到，尝试从组件定义中获取\n    if (!action) {\n      const componentDefine = getActionRuntimeItem(optType);\n      const component = getRealizeValue(componentDefine?.component);\n      if (typeof component?.action === \"function\") {\n        action = component.action;\n      }\n    }\n\n    // 3. 执行动作\n    let flowResult;\n    if (typeof action === \"function\") {\n      // 传递给动作函数的参数 - 确保结构正确\n      const actionParams = {\n        ...config,\n\n        // 基础参数\n        _context,\n        position,\n        extraParams: config?.extraParams,\n        needSuccessToast: false, // 在流程中，通常不单独提示，由流程结束时统一处理\n\n        // 动作配置\n        actionConfig: {\n          ...item,\n          position,\n          options: item.options || {},\n          getFlowActionInfo: () => {\n            return {\n              currentFlowIndex: index,\n              flowList,\n            };\n          },\n\n          // 其他基础参数\n          _context,\n          extraParams: config?.extraParams,\n          needSuccessToast: false, // 在流程中，通常不单独提示，由流程结束时统一处理\n        },\n\n        // 流程相关\n        actionRunEnv: \"flowAction\", // 标记当前运行环境为 'flowAction'\n        getFlowActionInfo: () => {\n          return {\n            currentFlowIndex: index,\n            flowList,\n          };\n        },\n\n        // 事件相关\n        e: config?.e,\n        formInstance: config?.formInstance,\n        state: _context?.state,\n      };\n\n      flowResult = await action(actionParams, ...otherArgs);\n    }\n\n    // 4. 对动作结果进行处理 (如果动作定义了 handleFlowResult)\n    const handleFlowResult = getActionItem({\n      position,\n      actionName: optType,\n      propKey: \"handleFlowResult\",\n    });\n    if (typeof handleFlowResult === \"function\") {\n      flowResult = handleFlowResult(flowResult);\n    }\n\n    // 5. 将结果存储在流程项中，并收集到总结果里\n    flowList[index].__flow_results__ = flowResult;\n    if (flowResult && _context) {\n      _context.state.valueOf[optType + index] = flowResult;\n    }\n\n    result.push(flowResult);\n  }\n  return result;\n}\n","export const __urlParams__ = \"__urlParams__\";\nexport const __record__ = \"__record__\";\nexport const __index__ = \"__index__\";\nexport const __state__ = \"__state__\";\nexport const __ds__ = \"__ds__\";\nexport const __blank__ = \"__blank__\";\n\nexport const __dataSource__ = \"__dataSource__\";\nexport const __tableCurrentRow__ = \"__tableCurrentRow__\";\nexport const __extraParam__ = \"__extraParam__\";\n","import React from \"react\";\nimport { isPlainObject, isFunction, get } from \"lodash\";\nimport { Button, ButtonProps, Dropdown } from \"antd\";\nimport { getAction } from \"../_action\";\nimport {\n  ALL_BUTTON_POSITION_LIST,\n  ButtonPosition,\n} from \"../_position/button-position\";\nimport { MakeButtonsConfig, MakeDropDownButtonsConfig } from \"../types/button\";\nimport {\n  __blank__,\n  __dataSource__,\n  __ds__,\n  __extraParam__,\n  __record__,\n  __tableCurrentRow__,\n  __urlParams__,\n} from \"./const\";\n\n// simple uuid\nexport function uuid() {\n  return ((Math.random() * 1e6) >> 0).toString(36);\n}\n\nexport function getRealizeValue(v) {\n  if (v && typeof v.realize === \"function\") {\n    return v.realize();\n  }\n  return v;\n}\n\nexport function executeFunction(func: unknown, ...rest: any[]) {\n  if (typeof func === \"function\") {\n    let result;\n    try {\n      result = func(...rest);\n    } catch (e) {\n      // ignore\n    }\n    return result;\n  }\n}\n\nexport function isArrayNotEmpty(list: unknown): list is any[] {\n  return Array.isArray(list) && list.length > 0;\n}\n\nexport function isTextExpr(str) {\n  if (typeof str === \"string\" && str.length > 0) {\n    if (str === __blank__) {\n      return {\n        prefix: __blank__,\n      };\n    } else if (str.startsWith(`${__record__}`)) {\n      return {\n        prefix: __record__,\n        value: str.replace(`${__record__}.`, \"\"),\n      };\n    } else if (str.startsWith(__urlParams__)) {\n      return {\n        prefix: __urlParams__,\n        value: str.replace(`${__urlParams__}.`, \"\"),\n      };\n    } else if (str.startsWith(__ds__)) {\n      if (str.endsWith(__ds__)) {\n        const dataSourceName = str.slice(6, str.lastIndexOf(__ds__));\n        return {\n          prefix: __ds__,\n          dataSourceName,\n        };\n      } else {\n        const index = str.indexOf(`${__ds__}.`);\n        if (index > 0) {\n          const dataSourceName = str.slice(6, index);\n          const value = str.slice(index + 7);\n          if (value && dataSourceName) {\n            return {\n              prefix: __ds__,\n              value,\n              dataSourceName,\n            };\n          }\n        }\n      }\n    }\n  }\n  return false;\n}\n\nfunction isValueObjectExpr(obj) {\n  return !!(isPlainObject(obj) && obj.group && obj.param);\n}\n\nexport function calculateTextExprValue(\n  originValue,\n  config: {\n    urlParamsDataSource?: any;\n    recordDataSource?: any;\n    state?: any;\n    extraParamList?: any[];\n    extraParam?: any;\n    getExtraParam?: () => any;\n  } = {},\n) {\n  const textExpr = isTextExpr(originValue);\n  const {\n    urlParamsDataSource,\n    recordDataSource,\n    state,\n    extraParamList = [],\n    extraParam,\n    getExtraParam,\n  } = config;\n  if (textExpr) {\n    const { prefix, value: textExprValue, dataSourceName } = textExpr;\n    let temp;\n    if (prefix === __blank__) {\n      temp = undefined;\n    } else if (prefix === __record__) {\n      temp = recordDataSource;\n    } else if (prefix === __urlParams__) {\n      temp = urlParamsDataSource;\n    } else if (prefix === __ds__ && dataSourceName) {\n      temp = state?.[dataSourceName];\n    }\n    if (textExprValue) {\n      return get(temp, textExprValue);\n    } else {\n      return temp;\n    }\n  } else if (typeof originValue === \"function\") {\n    try {\n      let extra = extraParamList;\n      if (!Array.isArray(extra)) {\n        extra = [];\n      }\n      return originValue(recordDataSource, state, ...extra);\n    } catch (e) {\n      return;\n    }\n  } else if (isValueObjectExpr(originValue)) {\n    const { group, param, secondParam, thirdParam } = originValue;\n    if (group && param) {\n      let result;\n      let realExtraParam = extraParam;\n      if (typeof getExtraParam === \"function\") {\n        realExtraParam = executeFunction(getExtraParam);\n      }\n      const objExprArgMap = {\n        [__record__]: recordDataSource,\n        [__dataSource__]: state,\n        [__extraParam__]: realExtraParam,\n      };\n      if (secondParam) {\n        result = get(\n          objExprArgMap,\n          `${group}.${param}.${secondParam}${\n            thirdParam ? `.${thirdParam}` : \"\"\n          }`,\n        );\n      } else {\n        result = get(objExprArgMap, `${group}.${param}`);\n      }\n      return result;\n    }\n  }\n  return originValue;\n}\n\nexport function handleRequestParams(params, config: any = {}) {\n  let result = {};\n  const { flexibleParams = false } = config;\n  if (typeof params === \"function\") {\n    const temp = calculateTextExprValue(params, config);\n    if (isPlainObject(temp) || (isFunction(temp) && flexibleParams)) {\n      result = temp;\n    }\n  } else if (params && params.length > 0) {\n    params.forEach((item) => {\n      if (item) {\n        // label 是参数名，value 是函数，执行后的结果是参数值\n        const { label, value } = item;\n        if (label && value !== undefined) {\n          result[label] = calculateTextExprValue(value, config);\n        }\n      }\n    });\n  }\n  return result;\n}\n\nexport function getActionItemFunc({ actionMap }) {\n  return function getActionItem({\n    position,\n    actionName,\n    propKey,\n  }: {\n    position: string;\n    actionName: string;\n    propKey?: string;\n  }) {\n    let result;\n    if (actionName) {\n      const item = actionMap[actionName];\n      const newPositionList = Object.values(ButtonPosition);\n      if (newPositionList.length !== ALL_BUTTON_POSITION_LIST.length) {\n        Object.assign(ALL_BUTTON_POSITION_LIST, newPositionList);\n      }\n\n      if (item && item.position && item.position.includes(position)) {\n        if (!item.label) {\n          item.label = item.title;\n        }\n        if (!item.value) {\n          item.value = item.componentName;\n        }\n        if (propKey) {\n          result = item[propKey];\n        } else {\n          result = item;\n        }\n      }\n    }\n    return result;\n  };\n}\n\nexport function getRunTimeItem(componentMap, componentName) {\n  let result;\n  if (componentName) {\n    result = componentMap[componentName];\n  }\n  return result;\n}\n\nexport function makeButtons(config: MakeButtonsConfig): React.ReactNode {\n  const { buttons, _context, extraParams, handleCustomConfig, resultHandle } =\n    config;\n\n  if (React.isValidElement(buttons)) return buttons;\n  if (!Array.isArray(buttons) || !buttons.length) return null;\n\n  return buttons\n    .map((button, index) => {\n      const item = handleCustomConfig?.(button) ?? button;\n      const {\n        primaryKey,\n        optType,\n        position,\n        hidden: _hidden,\n        disabled,\n        onClick,\n        type,\n        title,\n        icon,\n        ...rest\n      } = item;\n\n      if (_hidden) return null;\n\n      const btnProps: ButtonProps = {\n        ...rest,\n        type,\n        disabled: !!disabled,\n      };\n\n      const action = getAction({ ...item, position });\n      if (action) {\n        const actionConfig = {\n          actionConfig: { ...item, position, _context, extraParams },\n          position,\n          _context,\n          extraParams,\n        };\n\n        if (typeof onClick === \"function\") {\n          btnProps.onClick = async (\n            e: React.MouseEvent<Element, MouseEvent>,\n          ) => {\n            await executeFunction(onClick, e);\n            await action({ ...actionConfig, e }, e);\n          };\n        } else {\n          btnProps.onClick = (e: React.MouseEvent<Element, MouseEvent>) => {\n            e?.stopPropagation?.();\n            action({ ...actionConfig, e }, e).then((res: any[]) => {\n              resultHandle?.(res);\n            });\n          };\n        }\n      }\n\n      return (\n        <Button key={index} {...btnProps}>\n          {title}\n        </Button>\n      );\n    })\n    .filter(Boolean);\n}\n\nexport function makeDropdownButton(\n  config: MakeDropDownButtonsConfig,\n): React.ReactNode {\n  const {\n    buttons,\n    mainButton,\n    _context,\n    extraParams,\n    loading,\n    handleCustomConfig,\n    beforeMainButtonOnClick,\n    resultHandle,\n  } = config;\n\n  if (!mainButton) return;\n\n  const processedMainButton = handleCustomConfig?.(mainButton) ?? mainButton;\n\n  // 生成下拉菜单项\n  const menuItems = buttons\n    .map((button, index) => {\n      const processedButton = handleCustomConfig?.(button) ?? button;\n      const { position, hidden: _hidden, disabled, title } = processedButton;\n\n      if (_hidden) return null;\n\n      const action = getAction({ ...processedButton, position });\n\n      return {\n        key: index.toString(),\n        label: title,\n        disabled: !!disabled,\n        onClick: () => {\n          const actionConfig = {\n            actionConfig: {\n              ...processedButton,\n              position,\n              _context,\n              extraParams,\n            },\n            position,\n            _context,\n            extraParams,\n          };\n\n          if (action) {\n            action(actionConfig).then((res: any[]) => {\n              resultHandle?.(res);\n            });\n          }\n        },\n      };\n    })\n    .filter(Boolean);\n\n  // 处理主按钮的点击事件\n  const dropdownButtonProps: any = {\n    menu: { items: menuItems || [] },\n    loading,\n  };\n\n  const { position, disabled } = processedMainButton;\n\n  // 设置按钮属性\n  if (disabled !== undefined) {\n    dropdownButtonProps.disabled = !!disabled;\n  }\n\n  // 处理主按钮的 action 和 onClick\n  const action = getAction({ ...processedMainButton, position });\n\n  if (action) {\n    const actionConfig = {\n      actionConfig: { ...processedMainButton, position, _context, extraParams },\n      position,\n      _context,\n      extraParams,\n    };\n\n    dropdownButtonProps.onClick = (\n      e: React.MouseEvent<Element, MouseEvent>,\n    ) => {\n      e?.stopPropagation?.();\n\n      // 执行 beforeMainButtonOnClick，如果返回 false 则不继续执行\n      if (beforeMainButtonOnClick && beforeMainButtonOnClick() === false) {\n        return;\n      }\n\n      action({ ...actionConfig, e }, e).then((res: any[]) => {\n        resultHandle?.(res);\n      });\n    };\n  }\n\n  return (\n    <Dropdown.Button {...dropdownButtonProps}>\n      {processedMainButton?.title}\n    </Dropdown.Button>\n  );\n}\n","import React from \"react\";\nimport { Card as UICard } from \"antd\";\nimport { makeButtons } from \"../../_utils/utils\";\nimport { ButtonPosition } from \"../../_position/button-position\";\n\nconst Card = (props) => {\n  const { actions: actionConfig, children, _context, ...rest } = props || {};\n\n  const actions = makeButtons({\n    buttons: actionConfig,\n    handleCustomConfig: (button) => {\n      return {\n        ...button,\n        position: ButtonPosition.CARD_ACTION,\n      };\n    },\n    _context,\n  });\n\n  return (\n    <UICard {...rest} actions={actions}>\n      {children}\n    </UICard>\n  );\n};\n\nexport default Card;\n","import React from \"react\";\nimport { FormItemProps } from \"antd\";\nimport { YtFormItemProps } from \"../types/form\";\nimport { Label } from \"../_utils/form-item-register/comp\";\n\n// 组件内把 props 分类\nexport const processFormItemProps = (\n  formItemProps: YtFormItemProps,\n  formInstance?: any,\n): {\n  formItem: FormItemProps;\n  component: Record<string, any>;\n  formValue?: any;\n  formLabel?: any;\n  preview?: boolean;\n} => {\n  if (!formItemProps) return { formItem: {}, component: {} };\n\n  const {\n    componentName: _componentName,\n    tip: _tip,\n    formSpan: _formSpan,\n    span: _span,\n    rules,\n    label,\n    placeholder,\n    disabled,\n    readonly,\n    options,\n    optionsRequest,\n    formValue,\n    formLabel,\n    preview,\n    extendProps,\n    form: formFromProps, // 从 props 中提取 form\n    ...restFormItemProps\n  } = formItemProps;\n\n  const form = formInstance || formFromProps;\n\n  const processedRules = (() => {\n    if (!Array.isArray(rules)) return rules;\n    if (rules?.length === 0) return [];\n\n    return rules?.map((rule: any) => {\n      if (rule.type === \"custom\" && rule.validator) {\n        if (typeof rule.validator === \"string\") {\n          try {\n            if (!form) {\n              return {\n                ...rule,\n                validator: () =>\n                  Promise.reject(new Error(rule.message || \"表单实例未初始化\")),\n              };\n            }\n\n            const validatorFnCode = rule.validator;\n            const factory = new Function(\n              \"getFieldValue\",\n              \"getFieldsValue\",\n              \"setFieldsValue\",\n              `return ${validatorFnCode}`,\n            );\n            const validatorFn = factory(\n              form.getFieldValue,\n              form.getFieldsValue,\n              form.setFieldsValue,\n            );\n\n            return {\n              ...rule,\n              validator: validatorFn,\n            };\n          } catch (e) {\n            console.error(\"validator 转换失败:\", e, rule.validator);\n\n            return {\n              ...rule,\n              validator: () =>\n                Promise.reject(new Error(rule.message || \"验证函数解析失败\")),\n            };\n          }\n        }\n\n        // 如果已经是函数，直接返回\n        return rule;\n      }\n\n      if (rule.type === \"required\") {\n        return {\n          ...rule,\n          required: true,\n        };\n      }\n\n      if (rule.type === \"pattern\") {\n        return {\n          ...rule,\n          pattern: rule.pattern,\n        };\n      }\n\n      return rule;\n    });\n  })();\n\n  return {\n    formItem: {\n      label: <Label label={label} rules={rules} />,\n      rules: processedRules,\n      ...restFormItemProps,\n    },\n    component: {\n      placeholder,\n      disabled,\n      readonly,\n      options,\n      optionsRequest,\n      ...extendProps,\n    },\n    formValue,\n    formLabel,\n    preview,\n  };\n};\n","import React from \"react\";\nimport { Form, TimePicker } from \"antd\";\nimport { registerFormItemComponent } from \"../../_utils/form-item-register/comp\";\nimport { withDayjsProps } from \"../../components/utils/hoc\";\nimport { processFormItemProps } from \"../../_utils/form-item\";\n\n// 对时间组件保留 withDayjsProps 处理 dayjs 对象序列化\nconst WrappedTimePicker = withDayjsProps(TimePicker, [\"defaultValue\", \"value\"]);\n\nconst YtTimePicker = (props: any) => {\n  const { formItem, component } = processFormItemProps(props);\n\n  return (\n    <Form.Item {...formItem}>\n      <WrappedTimePicker\n        className=\"yt-time-picker\"\n        placeholder=\"请选择时间\"\n        format=\"HH:mm:ss\"\n        {...component}\n      />\n    </Form.Item>\n  );\n};\n\nexport default registerFormItemComponent(\"YtTimePicker\", YtTimePicker);\n","import React from \"react\";\nimport { Input, Form } from \"antd\";\nimport { InputProps } from \"antd/es/input\";\nimport { registerFormItemComponent } from \"../../_utils/form-item-register/comp\";\nimport { processFormItemProps } from \"../../_utils/form-item\";\nimport { YtFormItemProps } from \"../../types/form\";\n\nconst defaultProps = {\n  allowClear: true,\n};\n\nconst YtInput = (props: YtFormItemProps<InputProps>) => {\n  const { formItem, component, preview, formValue } =\n    processFormItemProps(props);\n\n  return (\n    <Form.Item {...formItem}>\n      {preview ? (\n        <span>{formValue || \"--\"}</span>\n      ) : (\n        <Input {...defaultProps} {...component} />\n      )}\n    </Form.Item>\n  );\n};\n\nexport default registerFormItemComponent(\"YtInput\", YtInput);\n","import React, { useMemo } from \"react\";\nimport { InputNumber, Form } from \"antd\";\nimport { InputNumberProps } from \"antd/es/input-number\";\nimport { registerFormItemComponent } from \"../../_utils/form-item-register/comp\";\nimport { processFormItemProps } from \"../../_utils/form-item\";\nimport { YtFormItemProps } from \"../../types/form\";\n\nconst YtInputNumber = (props: YtFormItemProps<InputNumberProps>) => {\n  const { formItem, component, preview, formValue } =\n    processFormItemProps(props);\n\n  const formValueText = useMemo(\n    () =>\n      formValue === undefined || formValue === null || formValue === \"\"\n        ? \"--\"\n        : formValue,\n    [formValue],\n  );\n\n  return (\n    <Form.Item {...formItem}>\n      {preview ? <span>{formValueText}</span> : <InputNumber {...component} />}\n    </Form.Item>\n  );\n};\n\nexport default registerFormItemComponent(\"YtInputNumber\", YtInputNumber);\n","import React from \"react\";\nimport { Form } from \"antd\";\nimport { YtAmountInput as SourceAmountInput } from \"@yuntoo/antd-ext\";\nimport { registerFormItemComponent } from \"../../_utils/form-item-register/comp\";\nimport { processFormItemProps } from \"../../_utils/form-item\";\n\nconst YtAmountInput = (props: any) => {\n  const { formItem, component = {} } = processFormItemProps(props);\n\n  return (\n    <Form.Item {...formItem}>\n      <SourceAmountInput {...component} />\n    </Form.Item>\n  );\n};\n\nexport default registerFormItemComponent(\"YtAmountInput\", YtAmountInput);\n","// 从 rootRef.current 往上查找到 role=\"dialog\" 的元素\nexport const findDialogElement = (rootRef: React.RefObject<any>) => {\n  let element = rootRef.current;\n  while (element && element.getAttribute(\"role\") !== \"dialog\") {\n    element = element.parentElement;\n  }\n  return element;\n};\n","export const filerItemMeta = new Map<string, any>();\nexport const formItemMeta = new Map<string, any>();\n\nexport function registerFormItemMeta(meta: any) {\n  if (meta?.position?.includes?.(\"filter\")) {\n    filerItemMeta.set(meta.componentName, meta);\n  }\n  if (meta?.position?.includes?.(\"form\")) {\n    formItemMeta.set(meta.componentName, meta);\n  }\n\n  // console.log('registerFormItemMeta', filerItemMeta);\n  return meta;\n}\n\nwindow.registerFormItemMeta = registerFormItemMeta;\n\nexport function getFilerItemMetByComponentName(componentName: string) {\n  return filerItemMeta.get(componentName);\n}\n\nexport function getFilterItemMetas() {\n  const filerItemMetas = Array.from(filerItemMeta.values());\n  return filerItemMetas.map((meta) => {\n    const metaProps =\n      typeof meta?.props === \"function\" ? meta?.props(\"filter\") : meta?.props;\n    return {\n      title: \"字段设置\",\n      display: \"block\",\n      type: \"group\",\n      componentName: meta.componentName,\n      items: [\n        {\n          name: \"position\",\n          propType: \"string\",\n          setter: \"StringSetter\",\n          defaultValue: \"filter\",\n          condition: () => false,\n        },\n        ...metaProps,\n      ],\n      condition: (field) => {\n        const v = field.parent.getValue();\n        return v?.componentName === meta.componentName;\n      },\n      getFormItemDefaultProps: meta.getFormItemDefaultProps,\n    };\n  });\n}\n\nexport function getFilterItemOptions() {\n  const filerItemMetas = Array.from(filerItemMeta.values());\n  const opts = filerItemMetas.map((meta) => {\n    let thumbUrl;\n    if (Array.isArray(meta.snippets) && meta.snippets[0]?.screenshot) {\n      thumbUrl = meta.snippets[0].screenshot;\n    }\n    return {\n      label: meta.title,\n      value: meta.componentName,\n      thumbUrl,\n    };\n  });\n  return opts;\n}\n\nexport function getFormItemOptions() {\n  const formItemMetas = Array.from(formItemMeta.values());\n  const opts = formItemMetas.map((meta) => {\n    let thumbUrl;\n    if (Array.isArray(meta.snippets) && meta.snippets[0]?.screenshot) {\n      thumbUrl = meta.snippets[0].screenshot;\n    }\n    return {\n      label: meta.title,\n      value: meta.componentName,\n      thumbUrl,\n    };\n  });\n  return opts;\n}\n\nexport function getFormItemMetas() {\n  const formItemMetas = Array.from(formItemMeta.values());\n  return formItemMetas.map((meta) => {\n    const metaProps =\n      typeof meta?.props === \"function\" ? meta?.props(\"form\") : meta?.props;\n    return {\n      title: \"字段设置\",\n      display: \"block\",\n      type: \"group\",\n      componentName: meta.componentName,\n      items: [\n        {\n          name: \"position\",\n          propType: \"string\",\n          setter: \"StringSetter\",\n          defaultValue: \"form\",\n          condition: () => false,\n        },\n        ...metaProps,\n      ],\n      condition: (field) => {\n        const v = field.parent.getValue();\n        return v?.componentName === meta.componentName;\n      },\n      getFormItemDefaultProps: meta.getFormItemDefaultProps,\n    };\n  });\n}\n","import React, { useMemo } from \"react\";\nimport { Input, Form } from \"antd\";\nimport { TextAreaProps } from \"antd/es/input\";\nimport { registerFormItemComponent, processFormItemProps } from \"../../_utils\";\nimport { YtFormItemProps } from \"../../types/form\";\n\nconst YtTextArea = (props: YtFormItemProps<TextAreaProps>) => {\n  const { formItem, component, preview, formValue } =\n    processFormItemProps(props);\n\n  const formValueText = useMemo(\n    () =>\n      formValue ? (\n        <div style={{ whiteSpace: \"pre-wrap\", wordBreak: \"break-word\" }}>\n          {formValue}\n        </div>\n      ) : (\n        \"--\"\n      ),\n    [formValue],\n  );\n\n  return (\n    <Form.Item {...formItem}>\n      {preview ? (\n        formValueText\n      ) : (\n        <Input.TextArea autoSize={{ minRows: 2 }} allowClear {...component} />\n      )}\n    </Form.Item>\n  );\n};\n\nexport default registerFormItemComponent(\"YtTextArea\", YtTextArea);\n","import React, { useMemo } from \"react\";\nimport { Form, Select } from \"antd\";\nimport { SelectProps } from \"antd/es/select\";\nimport { registerFormItemComponent } from \"../../_utils/form-item-register/comp\";\nimport { processFormItemProps } from \"../../_utils/form-item\";\nimport { YtFormItemProps } from \"../../types/form\";\n\nimport \"./view.less\";\n\nconst defaultProps = {\n  allowClear: true,\n  showSearch: true,\n  optionFilterProp: \"label\",\n};\n\nconst YtSingleSelect = (props: YtFormItemProps<SelectProps>) => {\n  const {\n    formItem,\n    component = {},\n    preview,\n    formValue,\n    formLabel,\n  } = processFormItemProps(props);\n\n  const { options } = component;\n\n  // 预览模式下，取值展示优先级\n  // 1. formLabel\n  // 2. formValue 是 LabeledValue 类型，则返回 label\n  // 3. formValue 是 options 的 value，则返回 label\n  // 4. 没有匹配到，则返回 formValue\n  // 5. formValue 没有或者为空，则返回 --\n  const selectValue = useMemo(() => {\n    // 如果 formLabel 存在，则返回 formLabel\n    if (formLabel) {\n      // formLabel 是 LabeledValue 类型，则返回 label\n      if (typeof formLabel === \"object\" && \"label\" in formLabel) {\n        return formLabel.label;\n      }\n\n      // formLabel 是数组类型\n      if (Array.isArray(formLabel) && \"label\" in formLabel[0]) {\n        return formLabel[0]?.label;\n      }\n    }\n\n    // 如果 formValue 为空，则返回 --\n    if (!formValue || formValue === \"\") {\n      return \"--\";\n    }\n\n    // 如果 formValue 是 LabeledValue 类型，则返回 label\n    if (typeof formValue === \"object\" && \"label\" in formValue) {\n      return formValue.label;\n    }\n\n    // options 为空，则不执行下面的匹配逻辑\n    if (!options || options.length === 0 || !Array.isArray(options)) {\n      return formValue;\n    }\n\n    // 如果 formValue 是 options 的 value，则返回 label\n    const option = options.find((option) => option.value === formValue);\n    if (option) {\n      return option.label;\n    } else {\n      // 未匹配到 options 的 value，认为是非法的值，则返回 value 本身\n      return formValue;\n    }\n  }, [formValue, formLabel, options]);\n\n  return (\n    <Form.Item {...formItem}>\n      {preview ? (\n        <span>{selectValue}</span>\n      ) : (\n        <Select {...defaultProps} {...component} />\n      )}\n    </Form.Item>\n  );\n};\n\nexport default registerFormItemComponent(\"YtSingleSelect\", YtSingleSelect);\n","import React from \"react\";\nimport { Form } from \"antd\";\nimport { YtCurrencySelect as SourceCurrencySelect } from \"@yuntoo/antd-ext\";\nimport { registerFormItemComponent } from \"../../_utils/form-item-register/comp\";\nimport { processFormItemProps } from \"../../_utils/form-item\";\nimport \"./view.less\";\n\nconst YtCurrencySelect = (props: any) => {\n  const { formItem, component } = processFormItemProps(props);\n\n  return (\n    <Form.Item {...formItem}>\n      <SourceCurrencySelect {...component} />\n    </Form.Item>\n  );\n};\n\nexport default registerFormItemComponent(\"YtCurrencySelect\", YtCurrencySelect);\n","import React, { useMemo } from \"react\";\nimport { Select, Form } from \"antd\";\nimport { SelectProps } from \"antd/es/select\";\nimport { registerFormItemComponent, processFormItemProps } from \"../../_utils\";\nimport { YtFormItemProps } from \"../../types/form\";\n\nconst defaultProps = {\n  allowClear: true,\n  showSearch: true,\n  optionFilterProp: \"label\",\n};\n\nconst YtMultiSelect = (props: YtFormItemProps<Omit<SelectProps, \"mode\">>) => {\n  const {\n    formItem,\n    component = {},\n    preview,\n    formValue,\n  } = processFormItemProps(props);\n\n  const { options, mode: _, ...restProps } = component;\n\n  const selectValue = useMemo(() => {\n    if (!formValue || formValue.length === 0 || !Array.isArray(formValue))\n      return \"--\";\n    if (!options || options.length === 0 || !Array.isArray(options))\n      return formValue.join(\",\");\n\n    const { matchedLabels, unmatchedValues } = formValue.reduce(\n      (acc, item) => {\n        const option = options.find((option) => option.value === item);\n        if (option) {\n          acc.matchedLabels.push(option.label);\n        } else {\n          acc.unmatchedValues.push(item);\n        }\n        return acc;\n      },\n      { matchedLabels: [], unmatchedValues: [] },\n    );\n\n    return matchedLabels.length > 0\n      ? matchedLabels.join(\",\") +\n          (unmatchedValues.length > 0 ? \",\" + unmatchedValues.join(\",\") : \"\")\n      : formValue.join(\",\");\n  }, [formValue]);\n\n  return (\n    <Form.Item {...formItem}>\n      {preview ? (\n        <span>{selectValue}</span>\n      ) : (\n        <Select\n          mode=\"multiple\"\n          options={options}\n          {...defaultProps}\n          {...restProps}\n        />\n      )}\n    </Form.Item>\n  );\n};\n\nexport default registerFormItemComponent(\"YtMultiSelect\", YtMultiSelect);\n","import React from \"react\";\nimport { Checkbox } from \"antd\";\nimport { Form } from \"antd\";\nimport { registerFormItemComponent } from \"../../_utils/form-item-register/comp\";\nimport { processFormItemProps } from \"../../_utils/form-item\";\n\nconst YtCheckboxGroup = (props: any) => {\n  const { formItem, component } = processFormItemProps(props);\n\n  return (\n    <Form.Item {...formItem}>\n      <Checkbox.Group {...component} />\n    </Form.Item>\n  );\n};\n\nexport default registerFormItemComponent(\"YtCheckboxGroup\", YtCheckboxGroup);\n","import React, { useMemo } from \"react\";\nimport { Radio, Form } from \"antd\";\nimport { RadioProps } from \"antd/es/radio\";\nimport { registerFormItemComponent } from \"../../_utils/form-item-register/comp\";\nimport { processFormItemProps } from \"../../_utils/form-item\";\nimport { YtFormItemProps } from \"../../types/form\";\n\nconst YtRadioGroup = (props: YtFormItemProps<RadioProps>) => {\n  const {\n    formItem,\n    component = {},\n    preview,\n    formValue,\n    formLabel,\n  } = processFormItemProps(props);\n  const { options } = component;\n  const hasOptions =\n    Array.isArray(options) && options.some((opt) => opt.value || opt.label);\n\n  const displayValue = useMemo(() => {\n    if (formLabel?.label) return formLabel.label;\n    if (Array.isArray(formLabel) && formLabel[0]?.label)\n      return formLabel[0].label;\n    if (!formValue) return \"--\";\n    if (!hasOptions) return formValue;\n\n    return options.find((opt) => opt.value === formValue)?.label || formValue;\n  }, [options, formLabel, formValue, hasOptions]);\n\n  return (\n    <Form.Item {...formItem}>\n      {preview ? (\n        <span>{displayValue}</span>\n      ) : hasOptions ? (\n        <Radio.Group {...component} />\n      ) : (\n        <span style={{ color: \"#999\" }}>无选项</span>\n      )}\n    </Form.Item>\n  );\n};\n\nexport default registerFormItemComponent(\"YtRadioGroup\", YtRadioGroup);\n","import React, { useMemo } from \"react\";\nimport { DatePicker, Form } from \"antd\";\nimport { DatePickerProps } from \"antd/es/date-picker\";\nimport { withDayjsProps } from \"../../components/utils/hoc\";\nimport { registerFormItemComponent, processFormItemProps } from \"../../_utils\";\nimport { YtFormItemProps } from \"../../types/form\";\nimport dayjs from \"dayjs\";\n\nimport \"./view.less\";\n\nconst WrappedDatePicker = withDayjsProps(DatePicker, [\n  \"defaultPickerValue\",\n  \"defaultValue\",\n  \"showTime.defaultValue\",\n  \"value\",\n]);\n\nconst YtDatePicker = (props: YtFormItemProps<DatePickerProps>) => {\n  const {\n    formItem,\n    component = {},\n    preview,\n    formValue, // 服务端处理回来的数据类型是时间戳\n  } = processFormItemProps(props);\n\n  const { showTime } = component;\n  const format = showTime ? \"YYYY-MM-DD HH:mm:ss\" : \"YYYY-MM-DD\";\n\n  const formValueText = useMemo(() => {\n    if (!formValue) {\n      return \"--\";\n    }\n\n    // 如果已经是 YYYY-MM-DD 格式，直接返回\n    if (\n      typeof formValue === \"string\" &&\n      /^\\d{4}-\\d{2}-\\d{2}$/.test(formValue)\n    ) {\n      return formValue;\n    }\n\n    // 如果是数字或者数字字符串，当做时间戳处理\n    const numValue = Number(formValue);\n    if (!isNaN(numValue) && numValue > 0) {\n      try {\n        return dayjs(numValue).format(format);\n      } catch (error) {\n        console.warn(\"Failed to parse timestamp:\", formValue, error);\n      }\n    }\n\n    // 尝试直接解析日期字符串\n    try {\n      const date = dayjs(formValue);\n      if (date.isValid()) {\n        return date.format(format);\n      }\n    } catch (error) {\n      console.warn(\"Failed to parse date string:\", formValue, error);\n    }\n\n    return \"--\";\n  }, [formValue]);\n\n  return (\n    <Form.Item {...formItem}>\n      {preview ? (\n        <span>{formValueText}</span>\n      ) : (\n        <WrappedDatePicker {...component} />\n      )}\n    </Form.Item>\n  );\n};\n\nexport default registerFormItemComponent(\"YtDatePicker\", YtDatePicker);\n","import React, { useMemo } from \"react\";\nimport { Cascader, Form } from \"antd\";\nimport { CascaderProps } from \"antd/es/cascader\";\nimport { registerFormItemComponent } from \"../../_utils/form-item-register/comp\";\nimport { processFormItemProps } from \"../../_utils/form-item\";\nimport { YtFormItemProps } from \"../../types/form\";\nimport \"./view.less\";\n\nconst YtCascader = (props: YtFormItemProps<CascaderProps>) => {\n  const {\n    formItem,\n    component = {},\n    preview,\n    formValue,\n  } = processFormItemProps(props);\n  const { options } = component;\n\n  const findCascaderLabels = (options, selectedValues) => {\n    const labels = [];\n\n    const findLabels = (opts, values, level = 0) => {\n      if (!opts || !values || level >= values.length) return;\n      const currentValue = values[level];\n      const currentOption = opts.find((opt) => opt.value === currentValue);\n\n      if (currentOption) {\n        labels.push(currentOption.label);\n        if (currentOption.children && level + 1 < values.length) {\n          findLabels(currentOption.children, values, level + 1);\n        }\n      } else {\n        // 没有匹配到，则前面匹配 label 的和后面的 value 直接拼接\n        labels.push(values.slice(level));\n      }\n    };\n\n    findLabels(options, selectedValues);\n    return labels;\n  };\n\n  const formValueText = useMemo(() => {\n    if (!Array.isArray(formValue) || formValue.length === 0) return \"--\";\n    if (!Array.isArray(options) || options.length === 0)\n      return formValue.join(\",\");\n    const labels = findCascaderLabels(options, formValue);\n    return labels?.length > 0 ? labels.join(\",\") : \"--\";\n  }, [formValue, options]);\n\n  return (\n    <Form.Item {...formItem}>\n      {preview ? <span>{formValueText}</span> : <Cascader {...component} />}\n    </Form.Item>\n  );\n};\n\nexport default registerFormItemComponent(\"YtCascader\", YtCascader);\n","import React from \"react\";\nimport { Form, Switch } from \"antd\";\nimport { SwitchProps } from \"antd/es/switch\";\nimport { registerFormItemComponent } from \"../../_utils/form-item-register/comp\";\nimport { processFormItemProps } from \"../../_utils/form-item\";\nimport { YtFormItemProps } from \"../../types/form\";\n\nconst YtSwitch = (props: YtFormItemProps<SwitchProps>) => {\n  const { formItem, component, preview, formValue } =\n    processFormItemProps(props);\n\n  return (\n    <Form.Item {...formItem}>\n      {preview ? (\n        <span>{formValue ? \"是\" : \"否\"}</span>\n      ) : (\n        <Switch {...component} />\n      )}\n    </Form.Item>\n  );\n};\n\nexport default registerFormItemComponent(\"YtSwitch\", YtSwitch);\n","import React, { useMemo } from \"react\";\nimport { DatePicker, Form } from \"antd\";\nimport { RangePickerProps } from \"antd/es/date-picker\";\nimport { registerFormItemComponent, processFormItemProps } from \"../../_utils\";\nimport { withDayjsProps } from \"../../components/utils/hoc\";\nimport { YtFormItemProps } from \"../../types/form\";\nimport dayjs from \"dayjs\";\n\nconst { RangePicker } = DatePicker;\nconst defaultProps = {\n  placeholder: [\"开始日期\", \"结束日期\"],\n  className: \"yt-range-date-picker\",\n};\n\nconst YtRangeDatePicker = withDayjsProps(RangePicker, [\n  \"defaultPickerValue\",\n  \"defaultValue\",\n  \"showTime.defaultValue\",\n  \"value\",\n]);\n\nconst YtRangeDatePickerItem = (props: YtFormItemProps<RangePickerProps>) => {\n  const {\n    formItem,\n    component = {},\n    preview,\n    formValue,\n  } = processFormItemProps(props);\n\n  const { className, showTime, ...restComponent } = component;\n  const format = showTime ? \"YYYY-MM-DD HH:mm:ss\" : \"YYYY-MM-DD\";\n\n  const formValueText = useMemo(() => {\n    // 合法情况\n    if (formValue && Array.isArray(formValue)) {\n      if (formValue.length === 2) {\n        const dayStart = formValue[0]\n          ? dayjs(Number(formValue[0])).format(format)\n          : \"--\";\n        const dayEnd = formValue[1]\n          ? dayjs(Number(formValue[1])).format(format)\n          : \"--\";\n        return `${dayStart} ~ ${dayEnd}`;\n      }\n\n      // 单个日期，默认显示为开始日期\n      if (formValue.length === 1) {\n        const day = dayjs(Number(formValue[0])).format(format);\n        return `${day} ~ --`;\n      }\n    }\n\n    return \"--\";\n  }, [formValue]);\n\n  return (\n    <Form.Item {...formItem}>\n      {preview ? (\n        <span>{formValueText}</span>\n      ) : (\n        <YtRangeDatePicker\n          className={`yt-range-date-picker ${className}`}\n          showTime={showTime}\n          {...defaultProps}\n          {...restComponent}\n        />\n      )}\n    </Form.Item>\n  );\n};\n\nexport default registerFormItemComponent(\n  \"YtRangeDatePicker\",\n  YtRangeDatePickerItem,\n);\n","import React from \"react\";\nimport { Form, TimePicker } from \"antd\";\nimport { registerFormItemComponent } from \"../../_utils/form-item-register/comp\";\nimport { withDayjsProps } from \"../../components/utils/hoc\";\nimport { processFormItemProps } from \"../../_utils/form-item\";\n\n// 对时间组件保留 withDayjsProps 处理 dayjs 对象序列化\nconst WrappedRangeTimePicker = withDayjsProps(TimePicker.RangePicker, [\n  \"defaultValue\",\n  \"value\",\n]);\n\nconst YtRangeTimePicker = (props: any) => {\n  const { formItem, component } = processFormItemProps(props);\n\n  return (\n    <Form.Item {...formItem}>\n      <WrappedRangeTimePicker\n        className=\"yt-range-time-picker\"\n        placeholder={[\"开始时间\", \"结束时间\"]}\n        format=\"HH:mm:ss\"\n        {...component}\n      />\n    </Form.Item>\n  );\n};\n\nexport default registerFormItemComponent(\n  \"YtRangeTimePicker\",\n  YtRangeTimePicker,\n);\n","import React, { useEffect, useState } from \"react\";\nimport { Form, Spin } from \"antd\";\nimport { registerFormItemComponent, processFormItemProps } from \"../../_utils\";\nimport \"./view.less\";\n\n// 临时把版本号固定，后续 KV 平台支持配置，再单独配置富文本版本号\nconst RICH_EDITOR_VERSION = \"1.1.2\";\nconst RICH_EDITOR_BASE_URL = `https://g.lovrabet.com/dist/rich-editor/${RICH_EDITOR_VERSION}`;\nconst RICH_EDITOR_JS_URL = `${RICH_EDITOR_BASE_URL}/index.umd.js`;\n\nlet loadPromise: Promise<void> | null = null;\n\n// 动态加载富文本编辑器资源\nconst loadRichEditor = (): Promise<void> => {\n  if (loadPromise) {\n    return loadPromise;\n  }\n\n  loadPromise = new Promise((resolve, reject) => {\n    // 确保 window.process 存在,避免 UMD 模块报错\n    if (!(window as any).process) {\n      (window as any).process = { env: {} };\n    }\n\n    // 加载 JS\n    const script = document.createElement(\"script\");\n    script.src = RICH_EDITOR_JS_URL;\n    script.async = true;\n    script.onload = () => resolve();\n    script.onerror = () =>\n      reject(new Error(`富文本组件加载失败 ${RICH_EDITOR_JS_URL}`));\n\n    document.head.appendChild(script);\n  });\n\n  return loadPromise;\n};\n\nconst YtRichEditor = (props: any) => {\n  const { formItem, component, formValue, preview } =\n    processFormItemProps(props);\n\n  // 检查富文本资源是否已经加载\n  const isLoaded = !!(window as any).YTRichEditor;\n  const [status, setStatus] = useState<\"loading\" | \"loaded\" | \"error\">(\n    isLoaded ? \"loaded\" : \"loading\",\n  );\n\n  useEffect(() => {\n    // 如果已经加载过，直接返回\n    if (isLoaded) return;\n\n    loadRichEditor()\n      .then(() => {\n        setStatus(\"loaded\");\n      })\n      .catch((err) => {\n        console.error(\"加载富文本组件失败\", err);\n        setStatus(\"error\");\n      });\n  }, []);\n\n  if (status === \"error\") {\n    return (\n      <Form.Item {...formItem}>\n        <div className=\"yt-rich-editor-error\">加载富文本编辑器失败</div>\n      </Form.Item>\n    );\n  }\n\n  if (status === \"loading\") {\n    return (\n      <Form.Item {...formItem}>\n        <div className=\"yt-rich-editor-loading\">\n          <Spin tip=\"加载富文本编辑器...\" />\n        </div>\n      </Form.Item>\n    );\n  }\n\n  // 富文本编辑器加载完成后，使用全局暴露的组件\n  // UMD 模块直接导出为 window.YTRichEditor\n  const YTRichEditor = (window as any).YTRichEditor;\n\n  if (!YTRichEditor) {\n    return (\n      <Form.Item {...formItem}>\n        <div className=\"yt-rich-editor-not-found\">富文本编辑器组件未找到</div>\n      </Form.Item>\n    );\n  }\n\n  // 预览模式：使用 YTRichEditor.Preview 组件\n  if (preview) {\n    const PreviewComponent = YTRichEditor.Preview;\n\n    if (!PreviewComponent) {\n      // 如果 Preview 组件不存在，降级到原始 HTML 渲染\n      return (\n        <Form.Item {...formItem}>\n          {formValue ? (\n            <div\n              className=\"yt-rich-editor-preview rich-editor-content\"\n              dangerouslySetInnerHTML={{ __html: formValue }}\n            />\n          ) : (\n            <span>--</span>\n          )}\n        </Form.Item>\n      );\n    }\n\n    return (\n      <Form.Item {...formItem}>\n        <PreviewComponent content={formValue} />\n      </Form.Item>\n    );\n  }\n\n  // 编辑模式\n  return (\n    <Form.Item {...formItem}>\n      <YTRichEditor {...component} id={props.name} defaultValue={formValue} />\n    </Form.Item>\n  );\n};\n\nexport default registerFormItemComponent(\"YtRichEditor\", YtRichEditor);\n","import React from \"react\";\nimport { Form } from \"antd\";\nimport { TreeSelect } from \"antd\";\nimport { registerFormItemComponent } from \"../../_utils/form-item-register/comp\";\nimport { processFormItemProps } from \"../../_utils/form-item\";\nimport \"./view.less\";\n\nconst YtSingleTreeSelect = (props: any) => {\n  const { formItem, component } = processFormItemProps(props);\n\n  return (\n    <Form.Item {...formItem}>\n      <TreeSelect {...component} />\n    </Form.Item>\n  );\n};\n\nexport default registerFormItemComponent(\n  \"YtSingleTreeSelect\",\n  YtSingleTreeSelect,\n);\n","import React from \"react\";\nimport { Form, TreeSelect } from \"antd\";\nimport { registerFormItemComponent } from \"../../_utils/form-item-register/comp\";\nimport { processFormItemProps } from \"../../_utils/form-item\";\nimport \"./view.less\";\n\nconst YtMultiTreeSelect = (props: any) => {\n  const { formItem, component } = processFormItemProps(props);\n\n  return (\n    <Form.Item {...formItem}>\n      <TreeSelect {...component} multiple />\n    </Form.Item>\n  );\n};\n\nexport default registerFormItemComponent(\n  \"YtMultiTreeSelect\",\n  YtMultiTreeSelect,\n);\n","import React from \"react\";\nimport { Form, Transfer } from \"antd\";\nimport { registerFormItemComponent } from \"../../_utils/form-item-register/comp\";\nimport { processFormItemProps } from \"../../_utils/form-item\";\nimport \"./view.less\";\n\nconst YtTransfer = (props: any) => {\n  const { formItem, component } = processFormItemProps(props);\n\n  return (\n    <Form.Item {...formItem}>\n      <Transfer {...component} />\n    </Form.Item>\n  );\n};\n\nexport default registerFormItemComponent(\"YtTransfer\", YtTransfer);\n","import React from \"react\";\nimport { Input, Form } from \"antd\";\nimport { registerFormItemComponent } from \"../../_utils/form-item-register/comp\";\nimport { processFormItemProps } from \"../../_utils/form-item\";\n\nconst YtInputPassword = (props: any) => {\n  const { formItem, component } = processFormItemProps(props);\n\n  return (\n    <Form.Item {...formItem}>\n      <Input.Password {...component} />\n    </Form.Item>\n  );\n};\n\nexport default registerFormItemComponent(\"YtInputPassword\", YtInputPassword);\n","import React from \"react\";\nimport { Form, Rate } from \"antd\";\nimport { registerFormItemComponent } from \"../../_utils/form-item-register/comp\";\nimport { processFormItemProps } from \"../../_utils/form-item\";\n\nconst YtRate = (props: any) => {\n  const { formItem, component } = processFormItemProps(props);\n\n  return (\n    <Form.Item {...formItem}>\n      <Rate {...component} />\n    </Form.Item>\n  );\n};\n\nexport default registerFormItemComponent(\"YtRate\", YtRate);\n","export interface RegionItem {\n  label: string;\n  value: string | number;\n  disabled?: boolean;\n  children?: RegionItem[];\n}\n\ninterface CacheEntry {\n  promise?: Promise<RegionItem[]>;\n  data?: RegionItem[];\n  error?: Error;\n}\n\nconst cache = new Map<string, CacheEntry>();\nconst DEFAULT_URL = \"https://i.lovrabet.com/f/regions.json\";\n\nexport const filterValidRegionItems = (items: any[]): RegionItem[] =>\n  Array.isArray(items)\n    ? items\n        .filter(\n          (item) =>\n            item?.label != null &&\n            item.label !== \"\" &&\n            item?.value != null &&\n            item.value !== \"\",\n        )\n        .map((item) => ({\n          ...item,\n          children: item.children\n            ? filterValidRegionItems(item.children)\n            : undefined,\n        }))\n    : [];\n\n/**\n * 加载地址数据（带缓存）\n * @param url 地址数据接口 URL\n * @param dataProcess 数据处理函数\n * @returns Promise<RegionItem[]>\n */\nexport async function loadAddressData(\n  url: string = DEFAULT_URL,\n  dataProcess?: (data: any) => any,\n): Promise<RegionItem[]> {\n  const cached = cache.get(url);\n\n  // 返回已有数据\n  if (cached?.data) return cached.data;\n\n  // 抛出已有错误\n  if (cached?.error) throw cached.error;\n\n  // 返回进行中的 Promise\n  if (cached?.promise) return cached.promise;\n\n  // 创建新的加载 Promise\n  const promise = fetch(url)\n    .then((res) => {\n      if (!res.ok) {\n        throw new Error(`HTTP ${res.status}: ${res.statusText}`);\n      }\n      return res.json();\n    })\n    .then((rawData) => {\n      const processedData = dataProcess ? dataProcess(rawData) : rawData;\n      const data = filterValidRegionItems(processedData);\n      cache.set(url, { data });\n      return data;\n    })\n    .catch((err) => {\n      const error = err instanceof Error ? err : new Error(String(err));\n      cache.set(url, { error });\n      throw error;\n    });\n\n  cache.set(url, { promise });\n  return promise;\n}\n","import React, { useMemo, useEffect, useState } from \"react\";\nimport { Form, Cascader, type CascaderProps } from \"antd\";\nimport { registerFormItemComponent } from \"../../_utils/form-item-register/comp\";\nimport { processFormItemProps } from \"../../_utils/form-item\";\nimport { YtFormItemProps } from \"../../types/form\";\nimport {\n  loadAddressData,\n  filterValidRegionItems,\n  type RegionItem,\n} from \"@yuntoo/antd-ext/src/components/yt-table/utils/address-loader\";\n\ninterface YtAddressPickerProps extends CascaderProps {\n  optionsRequest?: { url?: string; dataProcess?: (data: any) => any };\n}\n\ninterface AddressPickerWrapperProps\n  extends Omit<CascaderProps, \"value\" | \"onChange\"> {\n  value?: any[];\n  onChange?: (value: any[]) => void;\n  regions: RegionItem[];\n}\n\nconst AddressPickerWrapper: React.FC<AddressPickerWrapperProps> = ({\n  value,\n  onChange,\n  regions,\n  ...restProps\n}) => {\n  const cascaderValue = useMemo(() => {\n    if (!value || !Array.isArray(value) || value.length === 0) {\n      return null;\n    }\n\n    return value.map((item) => item.value);\n  }, [value]);\n\n  const handleChange = (_values: any[], selectedOptions: any[]) => {\n    const newValue =\n      selectedOptions?.map((option) => ({\n        label: option.label,\n        value: option.value,\n      })) || [];\n\n    onChange?.(newValue);\n  };\n\n  return (\n    <Cascader\n      allowClear\n      changeOnSelect\n      showSearch\n      {...(restProps as any)}\n      options={regions}\n      value={cascaderValue}\n      onChange={handleChange}\n    />\n  );\n};\n\nconst YtAddressPicker = (props: YtFormItemProps<YtAddressPickerProps>) => {\n  const {\n    formItem,\n    component = {},\n    preview,\n    formValue,\n  } = processFormItemProps(props);\n  const { options, optionsRequest, ...restComponent } = component;\n  const [regions, setRegions] = useState<RegionItem[]>([]);\n\n  useEffect(() => {\n    // 如果 options 存在且有有效数据，使用 options\n    if (options?.length) {\n      const validOptions = filterValidRegionItems(options);\n\n      if (validOptions?.length > 0) {\n        setRegions(validOptions);\n        return;\n      }\n    }\n\n    // 接口请求数据\n    loadAddressData(optionsRequest?.url, optionsRequest?.dataProcess)\n      .then(setRegions)\n      .catch((err) => {\n        console.error(\"[YtAddressPicker] 加载地址数据失败\", err);\n        setRegions([]);\n      });\n  }, [options, optionsRequest?.url, optionsRequest?.dataProcess]);\n\n  const displayText = useMemo(() => {\n    if (!formValue || !Array.isArray(formValue) || formValue.length === 0) {\n      return \"--\";\n    }\n\n    return formValue.map((item) => item.label).join(\" / \");\n  }, [formValue, regions]);\n\n  return (\n    <Form.Item {...formItem}>\n      {preview ? (\n        <span>{displayText}</span>\n      ) : (\n        <AddressPickerWrapper regions={regions} {...restComponent} />\n      )}\n    </Form.Item>\n  );\n};\n\nexport default registerFormItemComponent(\"YtAddressPicker\", YtAddressPicker);\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport { Form, InputNumber } from \"antd\";\nimport { InputNumberProps } from \"antd/es/input-number\";\nimport { SwapRightOutlined } from \"@ant-design/icons\";\nimport { registerFormItemComponent } from \"../../_utils/form-item-register/comp\";\nimport { processFormItemProps } from \"../../_utils/form-item\";\nimport { YtFormItemProps } from \"../../types/form\";\n\nimport \"./view.less\";\n\ninterface YtRangeInputNumberProps\n  extends Omit<InputNumberProps, \"value\" | \"onChange\"> {\n  value?: [string | number | null, string | number | null];\n  onChange?: (value: [string | number | null, string | number | null]) => void;\n}\n\n/**\n * 数字范围选择器\n * @param props\n * @returns\n */\nconst YtRangeInputNumber = (\n  props: YtFormItemProps<YtRangeInputNumberProps>,\n) => {\n  const { formItem, component, preview, formValue } =\n    processFormItemProps(props);\n\n  // 预览态时，显示 formValue 的文本\n  const formValueText = useMemo(() => {\n    if (formValue && Array.isArray(formValue) && formValue.length === 2) {\n      const value0 = formValue[0];\n      const value1 = formValue[1];\n\n      // 考虑两个值都为空的情况\n      if (!value0 && !value1) {\n        return \"--\";\n      }\n\n      return `${value0 ? value0 : \"--\"} - ${value1 ? value1 : \"--\"}`;\n    }\n\n    // 其余情况非法值返回 --\n    return \"--\";\n  }, [formValue]);\n\n  return (\n    <Form.Item {...formItem}>\n      {preview ? (\n        <span>{formValueText}</span>\n      ) : (\n        <YtRangeInputNumberComponent {...component} />\n      )}\n    </Form.Item>\n  );\n};\n\n/**\n * 数字范围选择器. 包装的三方组件\n * @param props\n * @returns\n */\nconst YtRangeInputNumberComponent = (props: YtRangeInputNumberProps) => {\n  // Form.Item 透传的 value 和 onChange\n  const { value, onChange, ...rest } = props;\n\n  // 最小值和最大值\n  const [min, setMin] = useState<string | number | null>(null);\n  const [max, setMax] = useState<string | number | null>(null);\n\n  // 监听 value 的变化\n  useEffect(() => {\n    // 如果 value 是合法的数字数组类型，则设置最小值和最大值\n    if (value && Array.isArray(value) && value.length === 2) {\n      setMin(value[0] ? Number(value[0]) : null);\n      setMax(value[1] ? Number(value[1]) : null);\n    }\n  }, [value]);\n\n  return (\n    <div className=\"yt-input-number-range\">\n      <InputNumber\n        value={min}\n        controls={false}\n        variant={\"borderless\"}\n        onChange={(value) => {\n          const newValue = value !== null ? Number(value) : null;\n          setMin(newValue);\n          onChange?.([newValue, max]);\n        }}\n        {...rest}\n      />\n      <SwapRightOutlined className=\"yt-input-number-range-item-icon\" />\n      <InputNumber\n        value={max}\n        controls={false}\n        variant={\"borderless\"}\n        onChange={(value) => {\n          const newValue = value !== null ? Number(value) : null;\n          setMax(newValue);\n          onChange?.([min, newValue]);\n        }}\n        {...rest}\n      />\n    </div>\n  );\n};\n\nexport default registerFormItemComponent(\n  \"YtRangeInputNumber\",\n  YtRangeInputNumber,\n);\n","import React, { useMemo } from \"react\";\nimport { Upload, Form, type DraggerProps, type UploadFile } from \"antd\";\nimport { InboxOutlined } from \"@ant-design/icons\";\nimport { getRuntimeDomain, previewFile, UploadList } from \"@yuntoo/antd-ext\";\nimport { registerFormItemComponent, processFormItemProps } from \"../../_utils\";\nimport { YtFormItemProps } from \"../../types/form\";\n\nimport \"./view.less\";\n\nconst { Dragger } = Upload;\n\ninterface UploadWrapperProps {\n  value?: any[];\n  onChange?: (fileList: any[]) => void; // Form.Item 的 onChange\n  componentProps?: Record<string, any>;\n}\n\nconst UploadWrapper: React.FC<UploadWrapperProps> = ({\n  value = [],\n  onChange,\n  componentProps = {},\n}) => {\n  const { max, className } = componentProps;\n\n  const fileList: UploadFile[] = useMemo(\n    () =>\n      value?.map((item, index) => ({\n        uid: item.filePath || `${index}`,\n        name: item.fileName || `文件${index + 1}`,\n        status: \"done\" as const,\n        response: {\n          data: { fileName: item.fileName, filePath: item.filePath },\n        },\n      })),\n    [value],\n  );\n\n  const handleChange: DraggerProps[\"onChange\"] = (info) => {\n    onChange?.(\n      info.fileList\n        .filter((file) => file.status === \"done\")\n        ?.map((file) => ({\n          fileName: file.response?.data?.fileName,\n          filePath: file.response?.data?.filePath,\n        })),\n    );\n  };\n\n  const handleDownload = async (file) => {\n    const filePath = file?.response?.data?.filePath;\n    const fileName = file?.response?.data?.fileName;\n    if (filePath) {\n      await previewFile({ filePath, fileName });\n    }\n  };\n\n  const domain = getRuntimeDomain();\n\n  return (\n    <Dragger\n      action={componentProps.action || `${domain}/api/common/uploadFile`}\n      data={{\n        // @ts-ignore\n        appCode: window.__GLOBAL__?.appInfo?.appCode,\n      }}\n      withCredentials\n      maxCount={max || 3}\n      multiple\n      defaultFileList={fileList}\n      onChange={handleChange}\n      onPreview={handleDownload}\n      className={`yt-upload ${className}`}\n      {...componentProps}\n    >\n      <InboxOutlined style={{ fontSize: 28 }} />\n      <div style={{ fontSize: 12, color: \"#999\" }}>\n        拖拽或点击选择上传附件(最多{max || 3}个附件)\n      </div>\n    </Dragger>\n  );\n};\n\nconst YtUpload = (props: YtFormItemProps<DraggerProps>) => {\n  const {\n    formItem,\n    component = {},\n    preview,\n    formValue,\n  } = processFormItemProps(props);\n\n  const displayContent = useMemo(() => {\n    return <UploadList files={formValue} />;\n  }, [formValue]);\n\n  return (\n    <Form.Item {...formItem}>\n      {preview ? displayContent : <UploadWrapper componentProps={component} />}\n    </Form.Item>\n  );\n};\n\nexport default registerFormItemComponent(\"YtUpload\", YtUpload);\n","import { getApiPrefix, getRuntimeApiPrefix, YTFetch } from \"@yuntoo/fetch\";\n\nexport const ROOT_API_PREFIX = getApiPrefix();\nexport const SMART_API_PREFIX = `${ROOT_API_PREFIX}/smartapi`;\n\n// 编辑态使用的ytFetch\nexport const ytFetch = new YTFetch();\n\nexport const runtimeFetch = new YTFetch({ baseURL: getRuntimeApiPrefix() });\n","import { useEffect, useState } from \"react\";\nimport type { YTUserSelectItem } from \"./types\";\nimport { runtimeFetch } from \"@yuntoo/smart-schema-converter\";\n\nconst CACHE_DURATION = 5 * 60 * 1000; // 缓存5分钟\n\nlet cachedUserListPromise: Promise<{ records: YTUserSelectItem[] }> | null =\n  null;\nlet cachedUserList: YTUserSelectItem[] | null = null;\nlet cachedTime = 0;\n\nexport function useUserList() {\n  const [originUserList, setOriginUserList] = useState<YTUserSelectItem[]>([]);\n  const [userFetching, setUserFetching] = useState(true);\n\n  useEffect(() => {\n    if (Date.now() - cachedTime < CACHE_DURATION && cachedUserList) {\n      setOriginUserList(cachedUserList);\n      setUserFetching(false);\n      return;\n    }\n\n    if (!cachedUserListPromise) {\n      // 当前只支持用户数量不超过1000的场景\n      cachedUserListPromise = runtimeFetch.post<{\n        records: YTUserSelectItem[];\n      }>(\"/api/dept/queryDeptUser\", { currentPage: 1, pageSize: 1000 });\n    }\n\n    cachedUserListPromise\n      .then((res) => {\n        const records = res?.records || [];\n        cachedUserList = records;\n        cachedTime = Date.now();\n        setOriginUserList(records);\n      })\n      .finally(() => {\n        setUserFetching(false);\n        cachedUserListPromise = null;\n      });\n  }, []);\n\n  return { userFetching, originUserList };\n}\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport { Avatar, Select, Space, Spin, type SelectProps } from \"antd\";\nimport type { YTUserSelectItem, YTUserSelectProps } from \"./types\";\nimport { useUserList } from \"./use-user-list\";\n\n// 员工选择器\nexport function UserSelect(props: YTUserSelectProps) {\n  const {\n    maxTagCount = \"responsive\",\n    onChange,\n    allowClear = true,\n    value: outerValue,\n    preview,\n    style: outerStyle,\n    ...restProps\n  } = props;\n  const style = { width: \"100%\", ...outerStyle };\n  const valueIsControlled = \"value\" in props;\n  const { userFetching, originUserList } = useUserList();\n  const [options, setOptions] = useState<\n    SelectProps<{ code: string }[]>[\"options\"]\n  >([]);\n  const [innerValue, setInnerValue] = useState<{ code: string }[]>([]);\n  const value = useMemo(() => {\n    const tempValue = valueIsControlled ? outerValue : innerValue;\n    if (tempValue && !Array.isArray(tempValue)) {\n      return tempValue;\n    }\n    return tempValue?.map((item) => item.code) || [];\n  }, [outerValue, innerValue, valueIsControlled]);\n\n  useEffect(() => {\n    setOptions(formatFunc(originUserList));\n  }, [originUserList]);\n\n  if (value && !Array.isArray(value)) {\n    console.error(\"UserSelect 组件的 value 必须是一个数组\");\n    return <span>数据格式错误</span>;\n  }\n\n  if (preview) {\n    if (userFetching) {\n      return <Spin />;\n    }\n    if (value.length === 0) {\n      return <span>--</span>;\n    }\n    const selectedUsers = value\n      .map((item) => options?.find((user) => user.value === item))\n      .filter(Boolean);\n    return (\n      <Space size=\"small\" wrap>\n        {selectedUsers.map((user, index) => {\n          // 如果有头像且不为空，展示头像 + 名称\n          if (user?.avatar && String(user.avatar).trim()) {\n            return (\n              <Space key={index} size={4}>\n                <Avatar size=\"small\" src={user.avatar} />\n                <span>{user.label}</span>\n              </Space>\n            );\n          }\n          // 没有头像，只展示名称\n          return <span key={index}>{user?.label}</span>;\n        })}\n      </Space>\n    );\n  }\n\n  return (\n    <Select<any[]>\n      notFoundContent={userFetching ? <Spin /> : \"没有找到用户\"}\n      placeholder=\"请选择用户\"\n      {...restProps}\n      style={style}\n      mode=\"multiple\"\n      allowClear={allowClear}\n      maxTagCount={maxTagCount}\n      loading={userFetching}\n      options={options}\n      value={value}\n      onChange={(value) => {\n        const newValue = value.map((item) => ({ code: item }));\n        if (valueIsControlled) {\n          onChange?.(newValue);\n        } else {\n          setInnerValue(newValue);\n        }\n      }}\n      optionRender={(option) => (\n        <div className=\"flex items-center\">\n          {option.data.avatar ? (\n            <Avatar src={option.data.avatar} className=\"mr-2\" />\n          ) : (\n            <Avatar className=\"mr-2\">\n              {String(option.data.data.userName)?.[0]?.toUpperCase()}\n            </Avatar>\n          )}\n          {option.label}\n        </div>\n      )}\n      filterOption={(input, option) => {\n        return (\n          String(option?.label ?? \"\")\n            .toLowerCase()\n            .includes(input.toLowerCase()) ||\n          String(option?.value ?? \"\")\n            .toLowerCase()\n            .includes(input.toLowerCase())\n        );\n      }}\n    />\n  );\n}\n\nfunction formatFunc(list: YTUserSelectItem[]) {\n  return list.map((user) => {\n    const label = user.nickName\n      ? `${user.nickName}(${user.userName})`\n      : user.userName;\n    return { label, value: user.code, avatar: user.avatar, data: user };\n  }) as SelectProps[\"options\"];\n}\n","import React from \"react\";\nimport { Form } from \"antd\";\nimport { UserSelect } from \"./user-select\";\nimport { registerFormItemComponent } from \"../../_utils/form-item-register/comp\";\nimport { processFormItemProps } from \"../../_utils/form-item\";\nimport { YtFormItemProps } from \"../../types/form\";\nimport { YTUserSelectProps } from \"./types\";\n\nfunction YtUserSelect(props: YtFormItemProps<YTUserSelectProps>) {\n  const { formItem, component, preview } = processFormItemProps(props);\n\n  return (\n    <Form.Item {...formItem}>\n      <UserSelect preview={preview} {...component} />\n    </Form.Item>\n  );\n}\n\nexport default registerFormItemComponent(\"YtUserSelect\", YtUserSelect);\n","import React from \"react\";\nimport { Drawer } from \"antd\";\nimport { makeButtons } from \"../../_utils/utils\";\nimport { ButtonPosition } from \"../../_position/button-position\";\nimport { findDialogElement } from \"../../_utils/find-parent-dialog\";\n\nconst YtDrawer: any = React.forwardRef((props: any, ref) => {\n  // 解构 props，获取设计模式标识和 open 属性\n  const {\n    footer: footerConfig,\n    __designMode,\n    __uniqueId,\n    open: propsOpen,\n    _context,\n    children,\n    ...restProps\n  } = props;\n  const rootRef = React.useRef(null);\n\n  // 使用内部状态管理抽屉的显示/隐藏\n  const [innerOpen, setInnerOpen] = React.useState(propsOpen || false);\n\n  const footer = makeButtons({\n    buttons: footerConfig,\n    handleCustomConfig: (button) => {\n      return {\n        ...button,\n        position: ButtonPosition.DIALOG_FOOTER,\n      };\n    },\n    _context,\n  });\n\n  // 监听外部 open 属性变化\n  React.useEffect(() => {\n    if (propsOpen !== undefined && propsOpen !== innerOpen) {\n      setInnerOpen(propsOpen);\n    }\n  }, [propsOpen]);\n\n  // 通过 ref 暴露方法\n  React.useImperativeHandle(ref, () => ({\n    // 打开抽屉方法\n    open: () => {\n      setInnerOpen(true);\n    },\n    // 关闭抽屉方法\n    close: () => {\n      setInnerOpen(false);\n    },\n    dom: findDialogElement(rootRef),\n  }));\n\n  const innerProps: any = {};\n\n  // 低代码编辑模式处理\n  if (__designMode === \"design\") {\n    // 低代码编辑态中强制显示，将控制权交给引擎侧\n    innerProps.open = true;\n  } else {\n    // 正常模式下使用内部状态控制显示/隐藏\n    innerProps.open = innerOpen;\n  }\n\n  return (\n    <Drawer\n      {...restProps}\n      {...innerProps}\n      footer={footer}\n      onClose={() => {\n        setInnerOpen(false);\n      }}\n    >\n      <div ref={rootRef}>{children}</div>\n    </Drawer>\n  );\n});\n\nexport default YtDrawer;\n","import { OperateButton } from \"./types\";\n\n// 需要占两个单元格特殊宽组件\nexport const WIDE_COMPONENTS = [\n  \"YtRangeDatePicker\",\n  \"YtRangeTimePicker\",\n  \"YtRangeInputNumber\",\n];\n\nexport const VERTICAL_COLUMNS = {\n  xs: 1,\n  sm: 2,\n  md: 2,\n  lg: 4,\n  xl: 6,\n  xxl: 8,\n};\n\nexport const HORIZONTAL_COLUMNS = {\n  xs: 1,\n  sm: 1,\n  md: 2,\n  lg: 3,\n  xl: 4,\n  xxl: 6,\n};\n\nexport const DEFAULT_LAYOUT_STYLE = {\n  sm: { flex: \"0 0 72px\" },\n};\n\nexport const DEFAULT_STYLE = { maxWidth: \"none\", marginBottom: 12 };\n\nexport const DEFAULT_OPERATE_BUTTONS: OperateButton[] = [\n  {\n    title: \"查询\",\n    color: \"primary\",\n    variant: \"outlined\",\n  },\n  {\n    title: \"重置\",\n  },\n];\n","import React, {\n  forwardRef,\n  Ref,\n  useRef,\n  useEffect,\n  useImperativeHandle,\n  useMemo,\n  useState,\n} from \"react\";\nimport _ from \"lodash\";\nimport {\n  Button,\n  Col,\n  Form,\n  Row,\n  Space,\n  Grid,\n  type FormInstance,\n  type Breakpoint,\n} from \"antd\";\nimport { UpOutlined, DownOutlined } from \"@ant-design/icons\";\nimport {\n  getComponentByComponentName,\n  useFormItemComponentRegistryVersion,\n} from \"../../_utils/form-item-register/comp\";\nimport { getCommonAttr } from \"@yuntoo/antd-ext/src/_utils\";\nimport { ButtonPosition } from \"../../_position/button-position\";\nimport { executeEvent } from \"../../_action\";\nimport {\n  YtEnhancedFilterProps,\n  YtFilterProps,\n  YtFilterItemProps,\n  OperateButton,\n} from \"./types\";\nimport {\n  WIDE_COMPONENTS,\n  HORIZONTAL_COLUMNS,\n  VERTICAL_COLUMNS,\n  DEFAULT_LAYOUT_STYLE,\n  DEFAULT_STYLE,\n  DEFAULT_OPERATE_BUTTONS,\n} from \"./const\";\n\nimport \"./view.less\";\n\nconst { useBreakpoint } = Grid;\n\nconst getColumnCount = (\n  columns: Record<Breakpoint, number>,\n  screens: Partial<Record<Breakpoint, boolean>>,\n): number => {\n  if (screens.xxl) return columns.xxl;\n  if (screens.xl) return columns.xl;\n  if (screens.lg) return columns.lg;\n  if (screens.md) return columns.md;\n  if (screens.sm) return columns.sm;\n  return columns.xs;\n};\n\nconst YtFilter = forwardRef((props: YtEnhancedFilterProps, ref: Ref<any>) => {\n  const {\n    _context,\n    _uniqueId,\n    valuesKey,\n    handleProps,\n    customProps,\n    ...filterProps\n  } = props;\n  let newFilterProps: YtFilterProps = _.merge({}, filterProps, customProps);\n\n  // 订阅注册中心变更，确保动态注册后首屏可渲染\n  useFormItemComponentRegistryVersion();\n  const [form] = Form.useForm();\n  // 新增：用于挂载 ref 的 div\n  const rootRef = useRef<FormInstance<any>>(null);\n\n  try {\n    let handlePropsFunction;\n\n    if (typeof handleProps === \"string\") {\n      handlePropsFunction = new Function(\"return \" + handleProps)();\n    } else if (typeof handleProps === \"function\") {\n      handlePropsFunction = handleProps;\n    }\n\n    if (handlePropsFunction)\n      newFilterProps = handlePropsFunction({ ...filterProps, form });\n  } catch (error) {\n    console.error(\"YtFilter handleProps 函数执行失败\", error);\n  }\n\n  const {\n    defaultValue,\n    items = [],\n    events,\n    operateButtons,\n    labelCol,\n    layout,\n    maxRows = 2,\n    ...restFilterProps\n  } = newFilterProps;\n\n  const [collapse, setCollapse] = useState(true); // 是否折叠\n  const screens = useBreakpoint();\n\n  const { visibleItems, hiddenItems } = useMemo(() => {\n    if (!items?.length) return { visibleItems: [], hiddenItems: [] };\n\n    const columns =\n      layout === \"horizontal\" ? HORIZONTAL_COLUMNS : VERTICAL_COLUMNS;\n    const standardSpan = 24 / getColumnCount(columns, screens);\n    const maxSpan = maxRows * 24;\n\n    let rowSpan = 0;\n    let totalSpan = 0;\n    const visible: YtFilterItemProps[] = [];\n    const hidden: YtFilterItemProps[] = [];\n\n    items.forEach((item) => {\n      if (!item || item.hidden) return;\n\n      const itemSpan = WIDE_COMPONENTS.includes(item.componentName)\n        ? standardSpan * 2\n        : standardSpan;\n\n      if (rowSpan + itemSpan <= 24) {\n        visible.push({ ...item, span: itemSpan });\n        rowSpan += itemSpan;\n        totalSpan += itemSpan;\n      } else {\n        totalSpan += 24 - rowSpan + itemSpan;\n        if (totalSpan <= maxSpan) {\n          visible.push({ ...item, span: itemSpan });\n          rowSpan = itemSpan;\n        } else {\n          hidden.push({ ...item, span: itemSpan });\n        }\n      }\n    });\n\n    return { visibleItems: visible, hiddenItems: hidden };\n  }, [screens, items, maxRows, layout]);\n\n  // 存放 componentName 和 name 的对应关系\n  const COMPONENT_NAME = useMemo(() => {\n    if (!items || items.length === 0) return {};\n\n    let result = {};\n\n    items.map((item) => (result[item.name] = item.componentName));\n\n    return result;\n  }, [items]);\n\n  // 也可以暴露 form 方法（可选）\n  useImperativeHandle(\n    ref,\n    () => ({\n      getFormInstance: () => form,\n      // @ts-ignore\n      dom: rootRef.current?.nativeElement,\n    }),\n    [form, rootRef],\n  );\n\n  useEffect(() => {\n    if (defaultValue) {\n      form.setFieldsValue(defaultValue);\n      _context.setState({\n        ..._context.state,\n        [valuesKey]: form.getFieldsValue(),\n      });\n    }\n  }, [JSON.stringify(defaultValue)]);\n\n  const renderField = (item: YtFilterItemProps) => {\n    const Comp = getComponentByComponentName(item.componentName);\n    if (!Comp) return null;\n\n    const { tooltip: _, extendProps = {}, extra, span, ...restProps } = item;\n\n    return (\n      <Col key={item.name} span={span}>\n        <Comp\n          _position=\"filter\"\n          {...restProps}\n          tooltip={extendProps?.tooltip}\n          extra={null} // filter 强制不展示底部说明\n        />\n      </Col>\n    );\n  };\n\n  const renderFields = () => {\n    const fieldsRender = collapse\n      ? visibleItems\n      : [...visibleItems, ...hiddenItems];\n\n    return fieldsRender.map((item) => renderField(item));\n  };\n\n  // 同步生成新的 filter 表达式 https://qizhiyuntu.feishu.cn/wiki/CLPPwx2wciRVTEkGHBecoljpnBf\n  const updateFilterState = (formValue) => {\n    let formValueCondition = [];\n    const filterKey = `${_uniqueId}_filter`;\n\n    Object.entries(formValue).forEach(([key, value]) => {\n      const componentName = COMPONENT_NAME[key];\n\n      // 对筛选值进行参数转换\n      if (componentName && value) {\n        if (\n          componentName === \"YtCascader\" ||\n          componentName === \"YtMultiSelect\"\n        ) {\n          formValueCondition.push({\n            [key]: { $in: value },\n          });\n        } else {\n          // 范围选择\n          if (Array.isArray(value) && value.length > 0) {\n            const rangeCondition = { $gte: value[0] };\n\n            if (value.length > 1) {\n              rangeCondition[\"$lte\"] = value[1];\n            }\n\n            formValueCondition.push({\n              [key]: rangeCondition,\n            });\n          } else {\n            formValueCondition.push({\n              [key]: {\n                $contain: value,\n              },\n            });\n          }\n        }\n      }\n    });\n\n    _context.setState({\n      ..._context.state,\n      [filterKey]: {\n        where: {\n          $and: formValueCondition,\n        },\n      },\n    });\n  };\n\n  const onFinish = (values: any) => {\n    const formValues = form.getFieldsValue();\n\n    _context.setState({\n      ..._context.state,\n      [valuesKey]: formValues,\n      // 标记当前使用传统搜索, 在 table 中需要判断使用哪一份数据源\n      oneSearchMode: false,\n    });\n\n    updateFilterState(formValues);\n\n    executeEvent({\n      eventType: \"onSearch\",\n      events,\n      _context,\n      position: ButtonPosition.FILTER_EVENT,\n    });\n  };\n\n  const processedFilterProps = useMemo(() => {\n    const {\n      style,\n      colon = false,\n      onFinish: configOnFinish,\n      onValuesChange: configOnValuesChange,\n      ...rest\n    } = restFilterProps;\n    return {\n      ...rest,\n      style: { ...DEFAULT_STYLE, ...style },\n      colon,\n      onFinish: (values) => {\n        configOnFinish?.(values);\n        onFinish(values);\n      },\n      onValuesChange: (changedValues, allValues) => {\n        configOnValuesChange?.(changedValues, allValues);\n        updateFilterState(allValues);\n      },\n    };\n  }, [restFilterProps, onFinish]);\n\n  const renderOperateButtons = useMemo(() => {\n    const renderButtons = (configs: OperateButton[]) =>\n      configs?.map((config, index) => {\n        const { title, ...props } = config;\n\n        if (index === 0)\n          return (\n            <Button key={index} {...props} htmlType=\"submit\">\n              {title}\n            </Button>\n          );\n        if (index === 1)\n          return (\n            <Button\n              key={index}\n              {...props}\n              onClick={() => {\n                form.resetFields();\n                updateFilterState({});\n              }}\n            >\n              {title}\n            </Button>\n          );\n        return (\n          <Button key={index} {...props}>\n            {title}\n          </Button>\n        );\n      });\n\n    // 函数类型\n    if (typeof operateButtons === \"function\") {\n      try {\n        return (operateButtons as (form: FormInstance) => React.ReactNode)(\n          form,\n        );\n      } catch {\n        return renderButtons(DEFAULT_OPERATE_BUTTONS);\n      }\n    }\n\n    // React 元素\n    if (React.isValidElement(operateButtons)) {\n      try {\n        return React.cloneElement(operateButtons as React.ReactElement<any>, {\n          form,\n        });\n      } catch {\n        return renderButtons(DEFAULT_OPERATE_BUTTONS);\n      }\n    }\n\n    // 配置数组 - 合并默认配置\n    if (Array.isArray(operateButtons) && operateButtons.length) {\n      const merged = DEFAULT_OPERATE_BUTTONS.map((def, i) => ({\n        ...def,\n        ...(operateButtons[i] || {}),\n      }));\n      if (operateButtons.length > 2) merged.push(...operateButtons.slice(2));\n      return renderButtons(merged as OperateButton[]);\n    }\n\n    return renderButtons(DEFAULT_OPERATE_BUTTONS);\n  }, [operateButtons, form]);\n\n  return (\n    <Form\n      form={form}\n      ref={rootRef}\n      labelCol={\n        labelCol || (layout === \"horizontal\" ? DEFAULT_LAYOUT_STYLE : null)\n      }\n      layout={layout === \"horizontal\" ? \"horizontal\" : \"vertical\"}\n      className={`yt-filter ${filterProps?.className}`}\n      {...processedFilterProps}\n      {...getCommonAttr(props)}\n    >\n      <Row gutter={[8, 8]}>\n        {renderFields()}\n\n        {/* 按钮组 */}\n        <Col flex={1}>\n          <div className=\"h-full flex items-end justify-end\">\n            <Space size=\"small\">\n              {renderOperateButtons}\n              {hiddenItems.length > 0 && (\n                <Button\n                  iconPosition=\"end\"\n                  onClick={() => setCollapse(!collapse)}\n                  icon={collapse ? <DownOutlined /> : <UpOutlined />}\n                >\n                  {collapse ? \"展开\" : \"收起\"}\n                </Button>\n              )}\n            </Space>\n          </div>\n        </Col>\n      </Row>\n    </Form>\n  );\n});\n\nexport default YtFilter;\n","export const COMPONENTS_LIST = [\n  \"YtInput\",\n  \"YtInputNumber\",\n  \"YtAmountInput\",\n  \"YtTextArea\",\n  \"YtSingleSelect\",\n  \"YtSingleCurrencySelect\",\n  \"YtMultiSelect\",\n  \"YtCheckboxGroup\",\n  \"YtRadioGroup\",\n  \"YtDatePicker\",\n  \"YtCascader\",\n  \"YtSwitch\",\n  \"YtRangeDatePicker\",\n  \"YtRangeTimePicker\",\n  \"YtRichEditor\",\n  \"YtSingleTreeSelect\",\n  \"YtMultiTreeSelect\",\n  \"YtTransfer\",\n  \"YtInputPassword\",\n  \"YtRate\",\n  \"ytCurrencySelect\",\n  \"YtAddressPicker\",\n  \"YtDrawer\",\n  \"YtFilter\",\n  \"YtForm\",\n  \"YtLayout\",\n  \"YtLayoutBlock\",\n  \"YtModal\",\n  \"YtPage\",\n  \"YtTable\",\n  \"YtOnePageRow\",\n  \"YtUpload\",\n  \"YtUserSelect\",\n];\n","import React, {\n  forwardRef,\n  isValidElement,\n  cloneElement,\n  useRef,\n  useImperativeHandle,\n  useMemo,\n  useEffect,\n  useCallback,\n} from \"react\";\nimport classnames from \"classnames\";\nimport { Col, Form, Row, Space, Tooltip, ConfigProvider } from \"antd\";\nimport { QuestionCircleOutlined } from \"@ant-design/icons\";\nimport _ from \"lodash\";\nimport {\n  getComponentByComponentName,\n  useFormItemComponentRegistryVersion,\n} from \"../../_utils/form-item-register/comp\";\nimport { processFormItemProps } from \"../../_utils/form-item\";\nimport { executeEvent } from \"../../_action\";\nimport { ButtonPosition } from \"../../_position/button-position\";\nimport { makeButtons } from \"../../_utils/utils\";\nimport { isValidDateValue } from \"../utils/date\";\nimport { getCommonAttr } from \"@yuntoo/antd-ext/src/_utils\";\nimport { COMPONENTS_LIST } from \"./const\";\nimport { YtEnhancedFormProps, YtFormItemProps } from \"../../types/form\";\nimport theme from \"./theme.json\";\n\nimport \"./view.less\";\n\n// 默认表格样式\nconst defaultFormStyle = { maxWidth: \"none\", marginBottom: 12 };\n\nconst YtForm = forwardRef((props: YtEnhancedFormProps, ref) => {\n  const [form] = Form.useForm();\n  const formValues = Form.useWatch([], form);\n  const rootRef = useRef(null);\n  // 订阅注册中心变更，确保动态注册后首屏可渲染\n  const renderVersion = useFormItemComponentRegistryVersion();\n\n  const {\n    _context,\n    valuesKey,\n    handleProps,\n    customProps,\n    preview,\n    ...formProps\n  } = props;\n  let newProps = _.merge({}, formProps, customProps);\n\n  // 执行 handleProps\n  try {\n    let handlePropsFunction;\n\n    if (typeof handleProps === \"string\") {\n      // 使用 Function 构造器创建函数\n      handlePropsFunction = new Function(\"return \" + handleProps)();\n    } else if (typeof handleProps === \"function\") {\n      handlePropsFunction = handleProps;\n    }\n\n    if (handlePropsFunction)\n      newProps = handlePropsFunction({ ...formProps, form });\n  } catch (error) {\n    console.error(\"YtForm handleProps 执行错误\", error);\n  }\n\n  const {\n    items = [],\n    cols = 1,\n    events,\n    layoutMode,\n    footer: footerConfig,\n    defaultValue: rawDefaultValue,\n    ...formItemProps\n  } = newProps;\n\n  const colNum = layoutMode === \"multiple\" ? cols : 1;\n\n  // 通过 ref 暴露方法\n  useImperativeHandle(ref, () => ({\n    // 暴露 form 实例\n    getFormInstance: () => {\n      return form;\n    },\n    dom: rootRef.current?.nativeElement,\n  }));\n\n  // 标准化 defaultValue 中的日期字段值,无效值设为 null\n  const defaultValue = useMemo(() => {\n    if (!rawDefaultValue) return null;\n    if (!items?.length) return rawDefaultValue;\n\n    const result = { ...rawDefaultValue };\n\n    items.forEach(({ name, componentName }) => {\n      if (!name || !(name in rawDefaultValue)) return;\n\n      const value = rawDefaultValue[name];\n\n      if (componentName === \"YtDatePicker\") {\n        result[name] = isValidDateValue(value) ? value : null;\n      } else if (componentName === \"YtRangeDatePicker\") {\n        if (Array.isArray(value) && value.length === 2) {\n          result[name] = value.map((v) => (isValidDateValue(v) ? v : null));\n        } else {\n          result[name] = null;\n        }\n      }\n    });\n\n    return result;\n  }, [rawDefaultValue, items]);\n\n  // 初始化默认值\n  useEffect(() => {\n    if (defaultValue) {\n      form.resetFields();\n      form.setFieldsValue(defaultValue);\n\n      executeEvent({\n        eventType: \"onDefaultValueFinished\",\n        events,\n        _context,\n        position: ButtonPosition.FORM_EVENT,\n        extraParams: {\n          ...props.defaultValue,\n        },\n      });\n    }\n  }, [JSON.stringify(defaultValue)]);\n\n  const renderField = useCallback(\n    (item: YtFormItemProps) => {\n      const { componentName, name } = item;\n\n      const Comp = getComponentByComponentName(componentName);\n      if (!Comp) return null;\n\n      // 内置组件\n      const isBuiltIn = COMPONENTS_LIST.includes(componentName);\n      const { formItem } = processFormItemProps(item, form);\n\n      return isBuiltIn ? (\n        <Comp\n          {...item}\n          _position=\"form\"\n          preview={preview}\n          formValue={formValues?.[name]}\n          // 单项、多选类型需要 label，服务端把对应的 label 字段放在 _label 字段下发\n          formLabel={defaultValue?.[`${name}_label`]}\n          form={form}\n        />\n      ) : (\n        // 远程自定义组件\n        <Form.Item {...formItem}>\n          <Comp {...item} preview={preview} />\n        </Form.Item>\n      );\n    },\n    [preview, formValues, defaultValue, renderVersion, form],\n  );\n\n  const onFinish = useCallback(\n    (values: any) => {\n      _context.setState({ [valuesKey]: form.getFieldsValue() });\n      executeEvent({\n        eventType: \"onSubmit\",\n        events,\n        _context,\n        position: ButtonPosition.FORM_EVENT,\n        recordDataSource: values,\n      });\n    },\n    [_context, valuesKey, form, events],\n  );\n\n  const onChange = useCallback(() => {\n    _context.setState({ [valuesKey]: form.getFieldsValue() });\n  }, [_context, valuesKey, form]);\n\n  const footer = useMemo(() => {\n    // 生成按钮\n    const buttons = makeButtons({\n      buttons: footerConfig,\n      handleCustomConfig: (button) => {\n        return {\n          ...button,\n          position: ButtonPosition.FORM_FOOTER,\n        };\n      },\n      _context,\n    });\n\n    if (!Array.isArray(buttons) || !buttons.length) return buttons;\n\n    // 调整按钮类型：第一个按钮（最右侧）设为主按钮，其他设为次级按钮\n    const newButtons = buttons.map((button, index) => {\n      if (isValidElement(button)) {\n        const nextProps = Object.assign({}, button.props, {\n          type: index === 0 ? \"primary\" : \"default\",\n        });\n        return cloneElement(button, nextProps);\n      }\n      return button;\n    });\n\n    // 倒序排列按钮，使\"提交\"按钮（通常是最后一个）出现在最右侧\n    return [...newButtons].reverse();\n  }, [footerConfig, _context]);\n\n  const fields = useMemo(() => {\n    if (!items.length) return null;\n\n    return items.map((item) => {\n      if (!item || item.hidden) return null;\n\n      if (item.componentName === \"group\") {\n        return (\n          <Col span={24} key={item.name}>\n            <div className=\"yt-form-group\">\n              <div className=\"yt-form-group-title\">{item.label}</div>\n              {item.tip && (\n                <Tooltip title={item.tip}>\n                  <QuestionCircleOutlined style={{ color: \"#9FA5B7\" }} />\n                </Tooltip>\n              )}\n            </div>\n          </Col>\n        );\n      }\n\n      const tSpan = 24 / colNum;\n      const finallyItemSpan =\n        item.formSpan === \"full\" ? colNum : Number(item.formSpan) || 1;\n      const formItemSpan = finallyItemSpan ? finallyItemSpan * tSpan : tSpan;\n\n      // 如果组件为空则不渲染 避免产生 Col 的边距问题\n      const fieldComponent = renderField(item);\n\n      if (!fieldComponent) return;\n\n      return (\n        <Col span={formItemSpan} key={item.name}>\n          {fieldComponent}\n        </Col>\n      );\n    });\n  }, [items, renderField, colNum]);\n\n  // 与本地默认的属性合并\n  const processedFormProps = useMemo(() => {\n    const {\n      style,\n      onFinish: configOnFinish,\n      scrollToFirstError = {\n        behavior: \"instant\",\n        block: \"end\",\n        focus: true,\n      },\n      onValuesChange,\n      colon = false,\n      ...restFormProps\n    } = formItemProps;\n\n    return {\n      style: {\n        ...defaultFormStyle,\n        ...style,\n      },\n      onValuesChange: (changedValues, allValues) => {\n        onValuesChange?.(changedValues, allValues);\n        onChange();\n      },\n      onFinish: (values) => {\n        configOnFinish?.(values);\n        onFinish(values);\n      },\n      scrollToFirstError,\n      colon,\n      ...restFormProps,\n    };\n  }, [newProps, defaultValue, onChange, onFinish]);\n\n  return (\n    <div\n      className={classnames(\"yt-form\", {\n        \"yt-form-single\": layoutMode === \"single\",\n      })}\n      {...getCommonAttr(props)}\n    >\n      <ConfigProvider theme={preview === true ? theme : undefined}>\n        <Form\n          form={form}\n          ref={rootRef}\n          {...processedFormProps}\n          initialValues={defaultValue}\n        >\n          <Row gutter={[16, 16]}>{fields}</Row>\n          {preview !== true && footer && (\n            <div className=\"footer\" style={{ textAlign: \"right\" }}>\n              <Space size=\"small\">{footer}</Space>\n            </div>\n          )}\n        </Form>\n      </ConfigProvider>\n    </div>\n  );\n});\n\nexport default YtForm;\n","import { isPlainObject } from \"lodash\";\nimport { LayoutSectionProps } from \"@yuntoo/antd-ext\";\nimport { LayoutLowCodeProps } from \"./type\";\nimport { executeFunction } from \"../../_utils/utils\";\n\nexport const getExtraProps = (props: LayoutLowCodeProps) => {\n  const { _context, handleProps } = props || {};\n\n  let extraProps: LayoutSectionProps = {};\n\n  if (typeof handleProps === \"function\") {\n    const tempProps = executeFunction(\n      handleProps,\n      { ...extraProps },\n      _context?.state,\n    );\n    if (isPlainObject(tempProps)) {\n      extraProps = tempProps;\n    }\n  }\n\n  return extraProps;\n};\n","import React from \"react\";\nimport { YtLayoutSection as UIYtLayoutSection } from \"@yuntoo/antd-ext\";\nimport { LayoutLowCodeProps } from \"./type\";\nimport { getExtraProps } from \"./util\";\nimport \"./view.less\";\n\nconst YtLayout = (props: LayoutLowCodeProps) => {\n  const { children } = props || {};\n  const extraProps = getExtraProps(props);\n\n  return <UIYtLayoutSection {...extraProps}>{children}</UIYtLayoutSection>;\n};\n\nexport default YtLayout;\n","import React from \"react\";\nimport { YtLayoutBlock as UIYtLayoutBlock } from \"@yuntoo/antd-ext\";\nimport { executeFunction } from \"../../_utils/utils\";\nimport { isPlainObject } from \"lodash\";\nimport classNames from \"classnames\";\nimport { YtLayoutBlockLowCodeProps } from \"./types\";\nimport \"./view.less\";\n\nconst YtLayoutBlock = React.forwardRef(\n  (props: YtLayoutBlockLowCodeProps, ref) => {\n    const {\n      children,\n      handleProps,\n      _context,\n      _uniqueId,\n      className = \"\",\n      extraDom,\n      ...rest\n    } = props || {};\n    const containerId = `block-${_uniqueId}`;\n\n    let extraProps = {\n      id: containerId,\n      ...rest,\n    };\n\n    if (typeof handleProps === \"function\") {\n      const tempProps = executeFunction(\n        handleProps,\n        { ...extraProps },\n        _context?.state,\n      );\n      if (isPlainObject(tempProps)) {\n        extraProps = tempProps;\n      }\n    }\n\n    return (\n      <>\n        <div\n          className={classNames({\n            \"yt-layout-block-toggle-container\": true,\n          })}\n        >\n          <div className=\"yt-layout-block-toggle-button\" />\n        </div>\n        <UIYtLayoutBlock\n          {...extraProps}\n          className={classNames(className, {})}\n          ref={ref}\n        >\n          {extraDom}\n          {children}\n        </UIYtLayoutBlock>\n      </>\n    );\n  },\n);\n\n(YtLayoutBlock as any).typeMark = \"Block\";\nYtLayoutBlock.displayName = \"YtLayoutBlock\";\nexport default YtLayoutBlock;\n\nexport { YtLayoutBlock };\n","import React from \"react\";\nimport { Modal as OriginalModal } from \"antd\";\nimport { makeButtons } from \"../../_utils/utils\";\nimport { findDialogElement } from \"../../_utils/find-parent-dialog\";\nimport { ButtonPosition } from \"../../_position/button-position\";\n\nconst YtModal: any = React.forwardRef((props: any, ref) => {\n  // 解构 props，获取设计模式标识和 open 属性\n  const {\n    footer: footerConfig,\n    __designMode,\n    __uniqueId,\n    open: propsOpen,\n    _context,\n    children,\n    ...restProps\n  } = props;\n\n  const rootRef = React.useRef(null);\n\n  // 使用内部状态管理模态框的显示/隐藏\n  const [innerOpen, setInnerOpen] = React.useState(propsOpen || false);\n\n  const footer = makeButtons({\n    buttons: footerConfig,\n    handleCustomConfig: (button) => {\n      return {\n        ...button,\n        position: ButtonPosition.DIALOG_FOOTER,\n      };\n    },\n    _context,\n  });\n\n  // 监听外部 open 属性变化\n  React.useEffect(() => {\n    if (propsOpen !== undefined && propsOpen !== innerOpen) {\n      setInnerOpen(propsOpen);\n    }\n  }, [propsOpen]);\n\n  // 通过 ref 暴露方法\n  React.useImperativeHandle(ref, () => ({\n    // 打开模态框方法\n    open: () => {\n      setInnerOpen(true);\n    },\n    // 关闭模态框方法\n    close: () => {\n      setInnerOpen(false);\n    },\n    dom: findDialogElement(rootRef),\n  }));\n\n  const innerProps: any = {};\n\n  // 低代码编辑模式处理\n  if (__designMode === \"design\") {\n    // 低代码编辑态中强制显示，将控制权交给引擎侧\n    innerProps.open = true;\n  } else {\n    // 正常模式下使用内部状态控制显示/隐藏\n    innerProps.open = innerOpen;\n  }\n\n  // 使用 as any 类型断言避免 TypeScript 错误\n  const ModalComponent = OriginalModal as any;\n  return (\n    <ModalComponent\n      ref={rootRef}\n      {...restProps}\n      {...innerProps}\n      footer={footer}\n    >\n      <div ref={rootRef}>{children}</div>\n    </ModalComponent>\n  );\n});\n\nYtModal.info = OriginalModal.info;\nYtModal.success = OriginalModal.success;\nYtModal.error = OriginalModal.error;\nYtModal.warning = OriginalModal.warning;\nYtModal.warn = OriginalModal.warn;\nYtModal.confirm = OriginalModal.confirm;\n\nexport default YtModal;\n","var locale = {\n  // Options\n  items_per_page: '条/页',\n  jump_to: '跳至',\n  jump_to_confirm: '确定',\n  page: '页',\n  // Pagination\n  prev_page: '上一页',\n  next_page: '下一页',\n  prev_5: '向前 5 页',\n  next_5: '向后 5 页',\n  prev_3: '向前 3 页',\n  next_3: '向后 3 页',\n  page_size: '页码'\n};\nexport default locale;","function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n  if (\"object\" != _typeof(t) || !t) return t;\n  var e = t[Symbol.toPrimitive];\n  if (void 0 !== e) {\n    var i = e.call(t, r || \"default\");\n    if (\"object\" != _typeof(i)) return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n  var i = toPrimitive(t, \"string\");\n  return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n    value: t,\n    enumerable: !0,\n    configurable: !0,\n    writable: !0\n  }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(e, r) {\n  var t = Object.keys(e);\n  if (Object.getOwnPropertySymbols) {\n    var o = Object.getOwnPropertySymbols(e);\n    r && (o = o.filter(function (r) {\n      return Object.getOwnPropertyDescriptor(e, r).enumerable;\n    })), t.push.apply(t, o);\n  }\n  return t;\n}\nfunction _objectSpread2(e) {\n  for (var r = 1; r < arguments.length; r++) {\n    var t = null != arguments[r] ? arguments[r] : {};\n    r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n      defineProperty(e, r, t[r]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n      Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n    });\n  }\n  return e;\n}\nexport { _objectSpread2 as default };","export var commonLocale = {\n  yearFormat: 'YYYY',\n  dayFormat: 'D',\n  cellMeridiemFormat: 'A',\n  monthBeforeYear: true\n};","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport { commonLocale } from \"./common\";\nvar locale = _objectSpread(_objectSpread({}, commonLocale), {}, {\n  locale: 'zh_CN',\n  today: '今天',\n  now: '此刻',\n  backToToday: '返回今天',\n  ok: '确定',\n  timeSelect: '选择时间',\n  dateSelect: '选择日期',\n  weekSelect: '选择周',\n  clear: '清除',\n  month: '月',\n  year: '年',\n  previousMonth: '上个月 (翻页上键)',\n  nextMonth: '下个月 (翻页下键)',\n  monthSelect: '选择月份',\n  yearSelect: '选择年份',\n  decadeSelect: '选择年代',\n  previousYear: '上一年 (Control键加左方向键)',\n  nextYear: '下一年 (Control键加右方向键)',\n  previousDecade: '上一年代',\n  nextDecade: '下一年代',\n  previousCentury: '上一世纪',\n  nextCentury: '下一世纪',\n  yearFormat: 'YYYY年',\n  cellDateFormat: 'D',\n  monthBeforeYear: false\n});\nexport default locale;","const locale = {\n  placeholder: '请选择时间',\n  rangePlaceholder: ['开始时间', '结束时间']\n};\nexport default locale;","import CalendarLocale from \"rc-picker/es/locale/zh_CN\";\nimport TimePickerLocale from '../../time-picker/locale/zh_CN';\n// 统一合并为完整的 Locale\nconst locale = {\n  lang: Object.assign({\n    placeholder: '请选择日期',\n    yearPlaceholder: '请选择年份',\n    quarterPlaceholder: '请选择季度',\n    monthPlaceholder: '请选择月份',\n    weekPlaceholder: '请选择周',\n    rangePlaceholder: ['开始日期', '结束日期'],\n    rangeYearPlaceholder: ['开始年份', '结束年份'],\n    rangeMonthPlaceholder: ['开始月份', '结束月份'],\n    rangeQuarterPlaceholder: ['开始季度', '结束季度'],\n    rangeWeekPlaceholder: ['开始周', '结束周']\n  }, CalendarLocale),\n  timePickerLocale: Object.assign({}, TimePickerLocale)\n};\n// should add whitespace between char in Button\nlocale.lang.ok = '确定';\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\nexport default locale;","import Pagination from \"rc-pagination/es/locale/zh_CN\";\nimport Calendar from '../calendar/locale/zh_CN';\nimport DatePicker from '../date-picker/locale/zh_CN';\nimport TimePicker from '../time-picker/locale/zh_CN';\nconst typeTemplate = '${label}不是一个有效的${type}';\nconst localeValues = {\n  locale: 'zh-cn',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  // locales for all components\n  global: {\n    placeholder: '请选择'\n  },\n  Table: {\n    filterTitle: '筛选',\n    filterConfirm: '确定',\n    filterReset: '重置',\n    filterEmptyText: '无筛选项',\n    filterCheckall: '全选',\n    filterSearchPlaceholder: '在筛选项中搜索',\n    emptyText: '暂无数据',\n    selectAll: '全选当页',\n    selectInvert: '反选当页',\n    selectNone: '清空所有',\n    selectionAll: '全选所有',\n    sortTitle: '排序',\n    expand: '展开行',\n    collapse: '关闭行',\n    triggerDesc: '点击降序',\n    triggerAsc: '点击升序',\n    cancelSort: '取消排序'\n  },\n  Modal: {\n    okText: '确定',\n    cancelText: '取消',\n    justOkText: '知道了'\n  },\n  Tour: {\n    Next: '下一步',\n    Previous: '上一步',\n    Finish: '结束导览'\n  },\n  Popconfirm: {\n    cancelText: '取消',\n    okText: '确定'\n  },\n  Transfer: {\n    titles: ['', ''],\n    searchPlaceholder: '请输入搜索内容',\n    itemUnit: '项',\n    itemsUnit: '项',\n    remove: '删除',\n    selectCurrent: '全选当页',\n    removeCurrent: '删除当页',\n    selectAll: '全选所有',\n    deselectAll: '取消全选',\n    removeAll: '删除全部',\n    selectInvert: '反选当页'\n  },\n  Upload: {\n    uploading: '文件上传中',\n    removeFile: '删除文件',\n    uploadError: '上传错误',\n    previewFile: '预览文件',\n    downloadFile: '下载文件'\n  },\n  Empty: {\n    description: '暂无数据'\n  },\n  Icon: {\n    icon: '图标'\n  },\n  Text: {\n    edit: '编辑',\n    copy: '复制',\n    copied: '复制成功',\n    expand: '展开',\n    collapse: '收起'\n  },\n  Form: {\n    optional: '（可选）',\n    defaultValidateMessages: {\n      default: '字段验证错误${label}',\n      required: '请输入${label}',\n      enum: '${label}必须是其中一个[${enum}]',\n      whitespace: '${label}不能为空字符',\n      date: {\n        format: '${label}日期格式无效',\n        parse: '${label}不能转换为日期',\n        invalid: '${label}是一个无效日期'\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate\n      },\n      string: {\n        len: '${label}须为${len}个字符',\n        min: '${label}最少${min}个字符',\n        max: '${label}最多${max}个字符',\n        range: '${label}须在${min}-${max}字符之间'\n      },\n      number: {\n        len: '${label}必须等于${len}',\n        min: '${label}最小值为${min}',\n        max: '${label}最大值为${max}',\n        range: '${label}须在${min}-${max}之间'\n      },\n      array: {\n        len: '须为${len}个${label}',\n        min: '最少${min}个${label}',\n        max: '最多${max}个${label}',\n        range: '${label}数量须在${min}-${max}之间'\n      },\n      pattern: {\n        mismatch: '${label}与模式不匹配${pattern}'\n      }\n    }\n  },\n  Image: {\n    preview: '预览'\n  },\n  QRCode: {\n    expired: '二维码过期',\n    refresh: '点击刷新',\n    scanned: '已扫描'\n  },\n  ColorPicker: {\n    presetEmpty: '暂无',\n    transparent: '无色',\n    singleColor: '单色',\n    gradientColor: '渐变色'\n  }\n};\nexport default localeValues;","import React, { useEffect } from \"react\";\nimport zhCN from \"antd/es/locale/zh_CN\";\nimport { ConfigProvider, Breadcrumb, type ThemeConfig } from \"antd\";\nimport { getCommonAttr } from \"@yuntoo/antd-ext/src/_utils\";\nimport themeData from \"./theme.json\";\n\nimport \"./yt-page.less\";\n\nconst YtPage = React.forwardRef((props: any, ref) => {\n  const {\n    __designMode,\n    _leaf, // 编辑器才有, 用于和引擎通信\n    _context,\n    children,\n    topLeftContainer,\n    topRightContainer,\n    useRGL,\n  } = props;\n\n  // theme 优先级：用户自定义 > 默认注入\n  const theme = _context?.appHelper?.yt?.theme || {\n    algorithm: [],\n    ...themeData,\n  };\n\n  const renderTopLeftContainer = () => {\n    // 编辑态不会自动注入面包屑内容，额外处理一下给用户一个提示\n    if (__designMode === \"design\") {\n      if (!topLeftContainer) {\n        return (\n          <Breadcrumb\n            items={[\n              { title: \"首页\" },\n              { title: \"面包屑会自动注入\" },\n              { title: \"无特殊需要无需修改\" },\n            ]}\n          />\n        );\n      }\n      return topLeftContainer;\n    }\n    // 运行态按 用户自定义 > 默认注入 处理\n    return topLeftContainer || _context?.appHelper?.yt?.topLeft || null;\n  };\n\n  const renderTopRightContainer = () => {\n    if (__designMode === \"design\") {\n      return topRightContainer || null;\n    }\n    // 运行态按 用户自定义 > 默认注入 处理\n    return topRightContainer || _context?.appHelper?.yt?.topRight || null;\n  };\n\n  // 切换使用磁贴布局\n  useEffect(() => {\n    if (__designMode === \"design\" && _leaf) {\n      // 查找当前子组件中是否有RGL组件的方法\n      const findRGLContinaer = () => {\n        return _leaf\n          .getChildren()\n          .find(\n            (child) =>\n              child?.exportSchema()?.componentName === \"YtRglContainer\",\n          );\n      };\n\n      if (useRGL === true && !findRGLContinaer()) {\n        /************* 从普通布局变为RGL布局 *************/\n        const nowPageChildrenSchema = _leaf.getChildren().exportSchema();\n        // 删掉现在的\n        const children = _leaf.getChildren();\n        if (children) {\n          for (let i = children.size - 1; i >= 0; i--) {\n            const child = children.get(i);\n            child?.remove(true, true, { suppressRemoveEvent: true });\n          }\n        }\n        // 把现在的包裹到RGL容器里面插入\n        _leaf?.insertAfter({\n          componentName: \"YtRglContainer\",\n          children: nowPageChildrenSchema,\n        });\n      } else if (useRGL === false && findRGLContinaer()) {\n        /************* 从RGL布局变为普通布局 *************/\n        const rglContainer = _leaf\n          .getChildren()\n          .find(\n            (child) =>\n              child?.exportSchema()?.componentName === \"YtRglContainer\",\n          );\n\n        if (rglContainer) {\n          const rglContainerChildrenSchema = rglContainer\n            .getChildren()\n            .exportSchema();\n          // 把RGL组件删掉\n          rglContainer.remove(true, true, { suppressRemoveEvent: true });\n          // 把原来RGL的子组件放回page里\n          rglContainerChildrenSchema.forEach((child) => {\n            _leaf?.insertAfter(child);\n          });\n        }\n      }\n    }\n  }, [useRGL]);\n\n  return (\n    <ConfigProvider locale={zhCN} theme={theme}>\n      <div className=\"yt-page\" {...getCommonAttr(props)} ref={ref}>\n        <div className=\"yt-page-header flex justify-between items-center\">\n          <div className=\"flex items-center\">\n            {/* 左侧内容注入 */}\n            {renderTopLeftContainer()}\n          </div>\n          <div className=\"flex items-center\">\n            {/* 右侧内容注入 */}\n            {renderTopRightContainer()}\n          </div>\n        </div>\n        <div className=\"yt-page-body\">{children}</div>\n      </div>\n    </ConfigProvider>\n  );\n});\n\nexport default YtPage;\n","export var util;\n(function (util) {\n    util.assertEqual = (_) => { };\n    function assertIs(_arg) { }\n    util.assertIs = assertIs;\n    function assertNever(_x) {\n        throw new Error();\n    }\n    util.assertNever = assertNever;\n    util.arrayToEnum = (items) => {\n        const obj = {};\n        for (const item of items) {\n            obj[item] = item;\n        }\n        return obj;\n    };\n    util.getValidEnumValues = (obj) => {\n        const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n        const filtered = {};\n        for (const k of validKeys) {\n            filtered[k] = obj[k];\n        }\n        return util.objectValues(filtered);\n    };\n    util.objectValues = (obj) => {\n        return util.objectKeys(obj).map(function (e) {\n            return obj[e];\n        });\n    };\n    util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n        ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n        : (object) => {\n            const keys = [];\n            for (const key in object) {\n                if (Object.prototype.hasOwnProperty.call(object, key)) {\n                    keys.push(key);\n                }\n            }\n            return keys;\n        };\n    util.find = (arr, checker) => {\n        for (const item of arr) {\n            if (checker(item))\n                return item;\n        }\n        return undefined;\n    };\n    util.isInteger = typeof Number.isInteger === \"function\"\n        ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n        : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n    function joinValues(array, separator = \" | \") {\n        return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n    }\n    util.joinValues = joinValues;\n    util.jsonStringifyReplacer = (_, value) => {\n        if (typeof value === \"bigint\") {\n            return value.toString();\n        }\n        return value;\n    };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n    objectUtil.mergeShapes = (first, second) => {\n        return {\n            ...first,\n            ...second, // second overwrites first\n        };\n    };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n    \"string\",\n    \"nan\",\n    \"number\",\n    \"integer\",\n    \"float\",\n    \"boolean\",\n    \"date\",\n    \"bigint\",\n    \"symbol\",\n    \"function\",\n    \"undefined\",\n    \"null\",\n    \"array\",\n    \"object\",\n    \"unknown\",\n    \"promise\",\n    \"void\",\n    \"never\",\n    \"map\",\n    \"set\",\n]);\nexport const getParsedType = (data) => {\n    const t = typeof data;\n    switch (t) {\n        case \"undefined\":\n            return ZodParsedType.undefined;\n        case \"string\":\n            return ZodParsedType.string;\n        case \"number\":\n            return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n        case \"boolean\":\n            return ZodParsedType.boolean;\n        case \"function\":\n            return ZodParsedType.function;\n        case \"bigint\":\n            return ZodParsedType.bigint;\n        case \"symbol\":\n            return ZodParsedType.symbol;\n        case \"object\":\n            if (Array.isArray(data)) {\n                return ZodParsedType.array;\n            }\n            if (data === null) {\n                return ZodParsedType.null;\n            }\n            if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n                return ZodParsedType.promise;\n            }\n            if (typeof Map !== \"undefined\" && data instanceof Map) {\n                return ZodParsedType.map;\n            }\n            if (typeof Set !== \"undefined\" && data instanceof Set) {\n                return ZodParsedType.set;\n            }\n            if (typeof Date !== \"undefined\" && data instanceof Date) {\n                return ZodParsedType.date;\n            }\n            return ZodParsedType.object;\n        default:\n            return ZodParsedType.unknown;\n    }\n};\n","import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n    \"invalid_type\",\n    \"invalid_literal\",\n    \"custom\",\n    \"invalid_union\",\n    \"invalid_union_discriminator\",\n    \"invalid_enum_value\",\n    \"unrecognized_keys\",\n    \"invalid_arguments\",\n    \"invalid_return_type\",\n    \"invalid_date\",\n    \"invalid_string\",\n    \"too_small\",\n    \"too_big\",\n    \"invalid_intersection_types\",\n    \"not_multiple_of\",\n    \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n    const json = JSON.stringify(obj, null, 2);\n    return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n    get errors() {\n        return this.issues;\n    }\n    constructor(issues) {\n        super();\n        this.issues = [];\n        this.addIssue = (sub) => {\n            this.issues = [...this.issues, sub];\n        };\n        this.addIssues = (subs = []) => {\n            this.issues = [...this.issues, ...subs];\n        };\n        const actualProto = new.target.prototype;\n        if (Object.setPrototypeOf) {\n            // eslint-disable-next-line ban/ban\n            Object.setPrototypeOf(this, actualProto);\n        }\n        else {\n            this.__proto__ = actualProto;\n        }\n        this.name = \"ZodError\";\n        this.issues = issues;\n    }\n    format(_mapper) {\n        const mapper = _mapper ||\n            function (issue) {\n                return issue.message;\n            };\n        const fieldErrors = { _errors: [] };\n        const processError = (error) => {\n            for (const issue of error.issues) {\n                if (issue.code === \"invalid_union\") {\n                    issue.unionErrors.map(processError);\n                }\n                else if (issue.code === \"invalid_return_type\") {\n                    processError(issue.returnTypeError);\n                }\n                else if (issue.code === \"invalid_arguments\") {\n                    processError(issue.argumentsError);\n                }\n                else if (issue.path.length === 0) {\n                    fieldErrors._errors.push(mapper(issue));\n                }\n                else {\n                    let curr = fieldErrors;\n                    let i = 0;\n                    while (i < issue.path.length) {\n                        const el = issue.path[i];\n                        const terminal = i === issue.path.length - 1;\n                        if (!terminal) {\n                            curr[el] = curr[el] || { _errors: [] };\n                            // if (typeof el === \"string\") {\n                            //   curr[el] = curr[el] || { _errors: [] };\n                            // } else if (typeof el === \"number\") {\n                            //   const errorArray: any = [];\n                            //   errorArray._errors = [];\n                            //   curr[el] = curr[el] || errorArray;\n                            // }\n                        }\n                        else {\n                            curr[el] = curr[el] || { _errors: [] };\n                            curr[el]._errors.push(mapper(issue));\n                        }\n                        curr = curr[el];\n                        i++;\n                    }\n                }\n            }\n        };\n        processError(this);\n        return fieldErrors;\n    }\n    static assert(value) {\n        if (!(value instanceof ZodError)) {\n            throw new Error(`Not a ZodError: ${value}`);\n        }\n    }\n    toString() {\n        return this.message;\n    }\n    get message() {\n        return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n    }\n    get isEmpty() {\n        return this.issues.length === 0;\n    }\n    flatten(mapper = (issue) => issue.message) {\n        const fieldErrors = {};\n        const formErrors = [];\n        for (const sub of this.issues) {\n            if (sub.path.length > 0) {\n                fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n                fieldErrors[sub.path[0]].push(mapper(sub));\n            }\n            else {\n                formErrors.push(mapper(sub));\n            }\n        }\n        return { formErrors, fieldErrors };\n    }\n    get formErrors() {\n        return this.flatten();\n    }\n}\nZodError.create = (issues) => {\n    const error = new ZodError(issues);\n    return error;\n};\n","import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n    let message;\n    switch (issue.code) {\n        case ZodIssueCode.invalid_type:\n            if (issue.received === ZodParsedType.undefined) {\n                message = \"Required\";\n            }\n            else {\n                message = `Expected ${issue.expected}, received ${issue.received}`;\n            }\n            break;\n        case ZodIssueCode.invalid_literal:\n            message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n            break;\n        case ZodIssueCode.unrecognized_keys:\n            message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n            break;\n        case ZodIssueCode.invalid_union:\n            message = `Invalid input`;\n            break;\n        case ZodIssueCode.invalid_union_discriminator:\n            message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n            break;\n        case ZodIssueCode.invalid_enum_value:\n            message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n            break;\n        case ZodIssueCode.invalid_arguments:\n            message = `Invalid function arguments`;\n            break;\n        case ZodIssueCode.invalid_return_type:\n            message = `Invalid function return type`;\n            break;\n        case ZodIssueCode.invalid_date:\n            message = `Invalid date`;\n            break;\n        case ZodIssueCode.invalid_string:\n            if (typeof issue.validation === \"object\") {\n                if (\"includes\" in issue.validation) {\n                    message = `Invalid input: must include \"${issue.validation.includes}\"`;\n                    if (typeof issue.validation.position === \"number\") {\n                        message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n                    }\n                }\n                else if (\"startsWith\" in issue.validation) {\n                    message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n                }\n                else if (\"endsWith\" in issue.validation) {\n                    message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n                }\n                else {\n                    util.assertNever(issue.validation);\n                }\n            }\n            else if (issue.validation !== \"regex\") {\n                message = `Invalid ${issue.validation}`;\n            }\n            else {\n                message = \"Invalid\";\n            }\n            break;\n        case ZodIssueCode.too_small:\n            if (issue.type === \"array\")\n                message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n            else if (issue.type === \"string\")\n                message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n            else if (issue.type === \"number\")\n                message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n            else if (issue.type === \"date\")\n                message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n            else\n                message = \"Invalid input\";\n            break;\n        case ZodIssueCode.too_big:\n            if (issue.type === \"array\")\n                message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n            else if (issue.type === \"string\")\n                message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n            else if (issue.type === \"number\")\n                message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n            else if (issue.type === \"bigint\")\n                message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n            else if (issue.type === \"date\")\n                message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n            else\n                message = \"Invalid input\";\n            break;\n        case ZodIssueCode.custom:\n            message = `Invalid input`;\n            break;\n        case ZodIssueCode.invalid_intersection_types:\n            message = `Intersection results could not be merged`;\n            break;\n        case ZodIssueCode.not_multiple_of:\n            message = `Number must be a multiple of ${issue.multipleOf}`;\n            break;\n        case ZodIssueCode.not_finite:\n            message = \"Number must be finite\";\n            break;\n        default:\n            message = _ctx.defaultError;\n            util.assertNever(issue);\n    }\n    return { message };\n};\nexport default errorMap;\n","import defaultErrorMap from \"./locales/en.js\";\nlet overrideErrorMap = defaultErrorMap;\nexport { defaultErrorMap };\nexport function setErrorMap(map) {\n    overrideErrorMap = map;\n}\nexport function getErrorMap() {\n    return overrideErrorMap;\n}\n","import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n    const { data, path, errorMaps, issueData } = params;\n    const fullPath = [...path, ...(issueData.path || [])];\n    const fullIssue = {\n        ...issueData,\n        path: fullPath,\n    };\n    if (issueData.message !== undefined) {\n        return {\n            ...issueData,\n            path: fullPath,\n            message: issueData.message,\n        };\n    }\n    let errorMessage = \"\";\n    const maps = errorMaps\n        .filter((m) => !!m)\n        .slice()\n        .reverse();\n    for (const map of maps) {\n        errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n    }\n    return {\n        ...issueData,\n        path: fullPath,\n        message: errorMessage,\n    };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n    const overrideMap = getErrorMap();\n    const issue = makeIssue({\n        issueData: issueData,\n        data: ctx.data,\n        path: ctx.path,\n        errorMaps: [\n            ctx.common.contextualErrorMap, // contextual error map is first priority\n            ctx.schemaErrorMap, // then schema-bound map if available\n            overrideMap, // then global override map\n            overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n        ].filter((x) => !!x),\n    });\n    ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n    constructor() {\n        this.value = \"valid\";\n    }\n    dirty() {\n        if (this.value === \"valid\")\n            this.value = \"dirty\";\n    }\n    abort() {\n        if (this.value !== \"aborted\")\n            this.value = \"aborted\";\n    }\n    static mergeArray(status, results) {\n        const arrayValue = [];\n        for (const s of results) {\n            if (s.status === \"aborted\")\n                return INVALID;\n            if (s.status === \"dirty\")\n                status.dirty();\n            arrayValue.push(s.value);\n        }\n        return { status: status.value, value: arrayValue };\n    }\n    static async mergeObjectAsync(status, pairs) {\n        const syncPairs = [];\n        for (const pair of pairs) {\n            const key = await pair.key;\n            const value = await pair.value;\n            syncPairs.push({\n                key,\n                value,\n            });\n        }\n        return ParseStatus.mergeObjectSync(status, syncPairs);\n    }\n    static mergeObjectSync(status, pairs) {\n        const finalObject = {};\n        for (const pair of pairs) {\n            const { key, value } = pair;\n            if (key.status === \"aborted\")\n                return INVALID;\n            if (value.status === \"aborted\")\n                return INVALID;\n            if (key.status === \"dirty\")\n                status.dirty();\n            if (value.status === \"dirty\")\n                status.dirty();\n            if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n                finalObject[key.value] = value.value;\n            }\n        }\n        return { status: status.value, value: finalObject };\n    }\n}\nexport const INVALID = Object.freeze({\n    status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n","export var errorUtil;\n(function (errorUtil) {\n    errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n    // biome-ignore lint:\n    errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n","import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n    constructor(parent, value, path, key) {\n        this._cachedPath = [];\n        this.parent = parent;\n        this.data = value;\n        this._path = path;\n        this._key = key;\n    }\n    get path() {\n        if (!this._cachedPath.length) {\n            if (Array.isArray(this._key)) {\n                this._cachedPath.push(...this._path, ...this._key);\n            }\n            else {\n                this._cachedPath.push(...this._path, this._key);\n            }\n        }\n        return this._cachedPath;\n    }\n}\nconst handleResult = (ctx, result) => {\n    if (isValid(result)) {\n        return { success: true, data: result.value };\n    }\n    else {\n        if (!ctx.common.issues.length) {\n            throw new Error(\"Validation failed but no issues detected.\");\n        }\n        return {\n            success: false,\n            get error() {\n                if (this._error)\n                    return this._error;\n                const error = new ZodError(ctx.common.issues);\n                this._error = error;\n                return this._error;\n            },\n        };\n    }\n};\nfunction processCreateParams(params) {\n    if (!params)\n        return {};\n    const { errorMap, invalid_type_error, required_error, description } = params;\n    if (errorMap && (invalid_type_error || required_error)) {\n        throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n    }\n    if (errorMap)\n        return { errorMap: errorMap, description };\n    const customMap = (iss, ctx) => {\n        const { message } = params;\n        if (iss.code === \"invalid_enum_value\") {\n            return { message: message ?? ctx.defaultError };\n        }\n        if (typeof ctx.data === \"undefined\") {\n            return { message: message ?? required_error ?? ctx.defaultError };\n        }\n        if (iss.code !== \"invalid_type\")\n            return { message: ctx.defaultError };\n        return { message: message ?? invalid_type_error ?? ctx.defaultError };\n    };\n    return { errorMap: customMap, description };\n}\nexport class ZodType {\n    get description() {\n        return this._def.description;\n    }\n    _getType(input) {\n        return getParsedType(input.data);\n    }\n    _getOrReturnCtx(input, ctx) {\n        return (ctx || {\n            common: input.parent.common,\n            data: input.data,\n            parsedType: getParsedType(input.data),\n            schemaErrorMap: this._def.errorMap,\n            path: input.path,\n            parent: input.parent,\n        });\n    }\n    _processInputParams(input) {\n        return {\n            status: new ParseStatus(),\n            ctx: {\n                common: input.parent.common,\n                data: input.data,\n                parsedType: getParsedType(input.data),\n                schemaErrorMap: this._def.errorMap,\n                path: input.path,\n                parent: input.parent,\n            },\n        };\n    }\n    _parseSync(input) {\n        const result = this._parse(input);\n        if (isAsync(result)) {\n            throw new Error(\"Synchronous parse encountered promise.\");\n        }\n        return result;\n    }\n    _parseAsync(input) {\n        const result = this._parse(input);\n        return Promise.resolve(result);\n    }\n    parse(data, params) {\n        const result = this.safeParse(data, params);\n        if (result.success)\n            return result.data;\n        throw result.error;\n    }\n    safeParse(data, params) {\n        const ctx = {\n            common: {\n                issues: [],\n                async: params?.async ?? false,\n                contextualErrorMap: params?.errorMap,\n            },\n            path: params?.path || [],\n            schemaErrorMap: this._def.errorMap,\n            parent: null,\n            data,\n            parsedType: getParsedType(data),\n        };\n        const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n        return handleResult(ctx, result);\n    }\n    \"~validate\"(data) {\n        const ctx = {\n            common: {\n                issues: [],\n                async: !!this[\"~standard\"].async,\n            },\n            path: [],\n            schemaErrorMap: this._def.errorMap,\n            parent: null,\n            data,\n            parsedType: getParsedType(data),\n        };\n        if (!this[\"~standard\"].async) {\n            try {\n                const result = this._parseSync({ data, path: [], parent: ctx });\n                return isValid(result)\n                    ? {\n                        value: result.value,\n                    }\n                    : {\n                        issues: ctx.common.issues,\n                    };\n            }\n            catch (err) {\n                if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n                    this[\"~standard\"].async = true;\n                }\n                ctx.common = {\n                    issues: [],\n                    async: true,\n                };\n            }\n        }\n        return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n            ? {\n                value: result.value,\n            }\n            : {\n                issues: ctx.common.issues,\n            });\n    }\n    async parseAsync(data, params) {\n        const result = await this.safeParseAsync(data, params);\n        if (result.success)\n            return result.data;\n        throw result.error;\n    }\n    async safeParseAsync(data, params) {\n        const ctx = {\n            common: {\n                issues: [],\n                contextualErrorMap: params?.errorMap,\n                async: true,\n            },\n            path: params?.path || [],\n            schemaErrorMap: this._def.errorMap,\n            parent: null,\n            data,\n            parsedType: getParsedType(data),\n        };\n        const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n        const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n        return handleResult(ctx, result);\n    }\n    refine(check, message) {\n        const getIssueProperties = (val) => {\n            if (typeof message === \"string\" || typeof message === \"undefined\") {\n                return { message };\n            }\n            else if (typeof message === \"function\") {\n                return message(val);\n            }\n            else {\n                return message;\n            }\n        };\n        return this._refinement((val, ctx) => {\n            const result = check(val);\n            const setError = () => ctx.addIssue({\n                code: ZodIssueCode.custom,\n                ...getIssueProperties(val),\n            });\n            if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n                return result.then((data) => {\n                    if (!data) {\n                        setError();\n                        return false;\n                    }\n                    else {\n                        return true;\n                    }\n                });\n            }\n            if (!result) {\n                setError();\n                return false;\n            }\n            else {\n                return true;\n            }\n        });\n    }\n    refinement(check, refinementData) {\n        return this._refinement((val, ctx) => {\n            if (!check(val)) {\n                ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n                return false;\n            }\n            else {\n                return true;\n            }\n        });\n    }\n    _refinement(refinement) {\n        return new ZodEffects({\n            schema: this,\n            typeName: ZodFirstPartyTypeKind.ZodEffects,\n            effect: { type: \"refinement\", refinement },\n        });\n    }\n    superRefine(refinement) {\n        return this._refinement(refinement);\n    }\n    constructor(def) {\n        /** Alias of safeParseAsync */\n        this.spa = this.safeParseAsync;\n        this._def = def;\n        this.parse = this.parse.bind(this);\n        this.safeParse = this.safeParse.bind(this);\n        this.parseAsync = this.parseAsync.bind(this);\n        this.safeParseAsync = this.safeParseAsync.bind(this);\n        this.spa = this.spa.bind(this);\n        this.refine = this.refine.bind(this);\n        this.refinement = this.refinement.bind(this);\n        this.superRefine = this.superRefine.bind(this);\n        this.optional = this.optional.bind(this);\n        this.nullable = this.nullable.bind(this);\n        this.nullish = this.nullish.bind(this);\n        this.array = this.array.bind(this);\n        this.promise = this.promise.bind(this);\n        this.or = this.or.bind(this);\n        this.and = this.and.bind(this);\n        this.transform = this.transform.bind(this);\n        this.brand = this.brand.bind(this);\n        this.default = this.default.bind(this);\n        this.catch = this.catch.bind(this);\n        this.describe = this.describe.bind(this);\n        this.pipe = this.pipe.bind(this);\n        this.readonly = this.readonly.bind(this);\n        this.isNullable = this.isNullable.bind(this);\n        this.isOptional = this.isOptional.bind(this);\n        this[\"~standard\"] = {\n            version: 1,\n            vendor: \"zod\",\n            validate: (data) => this[\"~validate\"](data),\n        };\n    }\n    optional() {\n        return ZodOptional.create(this, this._def);\n    }\n    nullable() {\n        return ZodNullable.create(this, this._def);\n    }\n    nullish() {\n        return this.nullable().optional();\n    }\n    array() {\n        return ZodArray.create(this);\n    }\n    promise() {\n        return ZodPromise.create(this, this._def);\n    }\n    or(option) {\n        return ZodUnion.create([this, option], this._def);\n    }\n    and(incoming) {\n        return ZodIntersection.create(this, incoming, this._def);\n    }\n    transform(transform) {\n        return new ZodEffects({\n            ...processCreateParams(this._def),\n            schema: this,\n            typeName: ZodFirstPartyTypeKind.ZodEffects,\n            effect: { type: \"transform\", transform },\n        });\n    }\n    default(def) {\n        const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n        return new ZodDefault({\n            ...processCreateParams(this._def),\n            innerType: this,\n            defaultValue: defaultValueFunc,\n            typeName: ZodFirstPartyTypeKind.ZodDefault,\n        });\n    }\n    brand() {\n        return new ZodBranded({\n            typeName: ZodFirstPartyTypeKind.ZodBranded,\n            type: this,\n            ...processCreateParams(this._def),\n        });\n    }\n    catch(def) {\n        const catchValueFunc = typeof def === \"function\" ? def : () => def;\n        return new ZodCatch({\n            ...processCreateParams(this._def),\n            innerType: this,\n            catchValue: catchValueFunc,\n            typeName: ZodFirstPartyTypeKind.ZodCatch,\n        });\n    }\n    describe(description) {\n        const This = this.constructor;\n        return new This({\n            ...this._def,\n            description,\n        });\n    }\n    pipe(target) {\n        return ZodPipeline.create(this, target);\n    }\n    readonly() {\n        return ZodReadonly.create(this);\n    }\n    isOptional() {\n        return this.safeParse(undefined).success;\n    }\n    isNullable() {\n        return this.safeParse(null).success;\n    }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n//   /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n//   /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n//   /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n//   /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n//   /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n    let secondsRegexSource = `[0-5]\\\\d`;\n    if (args.precision) {\n        secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n    }\n    else if (args.precision == null) {\n        secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n    }\n    const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n    return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n    return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n    let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n    const opts = [];\n    opts.push(args.local ? `Z?` : `Z`);\n    if (args.offset)\n        opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n    regex = `${regex}(${opts.join(\"|\")})`;\n    return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n    if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n        return true;\n    }\n    if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n        return true;\n    }\n    return false;\n}\nfunction isValidJWT(jwt, alg) {\n    if (!jwtRegex.test(jwt))\n        return false;\n    try {\n        const [header] = jwt.split(\".\");\n        // Convert base64url to base64\n        const base64 = header\n            .replace(/-/g, \"+\")\n            .replace(/_/g, \"/\")\n            .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n        const decoded = JSON.parse(atob(base64));\n        if (typeof decoded !== \"object\" || decoded === null)\n            return false;\n        if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n            return false;\n        if (!decoded.alg)\n            return false;\n        if (alg && decoded.alg !== alg)\n            return false;\n        return true;\n    }\n    catch {\n        return false;\n    }\n}\nfunction isValidCidr(ip, version) {\n    if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n        return true;\n    }\n    if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n        return true;\n    }\n    return false;\n}\nexport class ZodString extends ZodType {\n    _parse(input) {\n        if (this._def.coerce) {\n            input.data = String(input.data);\n        }\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.string) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.string,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        const status = new ParseStatus();\n        let ctx = undefined;\n        for (const check of this._def.checks) {\n            if (check.kind === \"min\") {\n                if (input.data.length < check.value) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_small,\n                        minimum: check.value,\n                        type: \"string\",\n                        inclusive: true,\n                        exact: false,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"max\") {\n                if (input.data.length > check.value) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_big,\n                        maximum: check.value,\n                        type: \"string\",\n                        inclusive: true,\n                        exact: false,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"length\") {\n                const tooBig = input.data.length > check.value;\n                const tooSmall = input.data.length < check.value;\n                if (tooBig || tooSmall) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    if (tooBig) {\n                        addIssueToContext(ctx, {\n                            code: ZodIssueCode.too_big,\n                            maximum: check.value,\n                            type: \"string\",\n                            inclusive: true,\n                            exact: true,\n                            message: check.message,\n                        });\n                    }\n                    else if (tooSmall) {\n                        addIssueToContext(ctx, {\n                            code: ZodIssueCode.too_small,\n                            minimum: check.value,\n                            type: \"string\",\n                            inclusive: true,\n                            exact: true,\n                            message: check.message,\n                        });\n                    }\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"email\") {\n                if (!emailRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"email\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"emoji\") {\n                if (!emojiRegex) {\n                    emojiRegex = new RegExp(_emojiRegex, \"u\");\n                }\n                if (!emojiRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"emoji\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"uuid\") {\n                if (!uuidRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"uuid\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"nanoid\") {\n                if (!nanoidRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"nanoid\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"cuid\") {\n                if (!cuidRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"cuid\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"cuid2\") {\n                if (!cuid2Regex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"cuid2\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"ulid\") {\n                if (!ulidRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"ulid\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"url\") {\n                try {\n                    new URL(input.data);\n                }\n                catch {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"url\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"regex\") {\n                check.regex.lastIndex = 0;\n                const testResult = check.regex.test(input.data);\n                if (!testResult) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"regex\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"trim\") {\n                input.data = input.data.trim();\n            }\n            else if (check.kind === \"includes\") {\n                if (!input.data.includes(check.value, check.position)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.invalid_string,\n                        validation: { includes: check.value, position: check.position },\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"toLowerCase\") {\n                input.data = input.data.toLowerCase();\n            }\n            else if (check.kind === \"toUpperCase\") {\n                input.data = input.data.toUpperCase();\n            }\n            else if (check.kind === \"startsWith\") {\n                if (!input.data.startsWith(check.value)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.invalid_string,\n                        validation: { startsWith: check.value },\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"endsWith\") {\n                if (!input.data.endsWith(check.value)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.invalid_string,\n                        validation: { endsWith: check.value },\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"datetime\") {\n                const regex = datetimeRegex(check);\n                if (!regex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.invalid_string,\n                        validation: \"datetime\",\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"date\") {\n                const regex = dateRegex;\n                if (!regex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.invalid_string,\n                        validation: \"date\",\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"time\") {\n                const regex = timeRegex(check);\n                if (!regex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.invalid_string,\n                        validation: \"time\",\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"duration\") {\n                if (!durationRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"duration\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"ip\") {\n                if (!isValidIP(input.data, check.version)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"ip\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"jwt\") {\n                if (!isValidJWT(input.data, check.alg)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"jwt\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"cidr\") {\n                if (!isValidCidr(input.data, check.version)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"cidr\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"base64\") {\n                if (!base64Regex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"base64\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"base64url\") {\n                if (!base64urlRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"base64url\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else {\n                util.assertNever(check);\n            }\n        }\n        return { status: status.value, value: input.data };\n    }\n    _regex(regex, validation, message) {\n        return this.refinement((data) => regex.test(data), {\n            validation,\n            code: ZodIssueCode.invalid_string,\n            ...errorUtil.errToObj(message),\n        });\n    }\n    _addCheck(check) {\n        return new ZodString({\n            ...this._def,\n            checks: [...this._def.checks, check],\n        });\n    }\n    email(message) {\n        return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n    }\n    url(message) {\n        return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n    }\n    emoji(message) {\n        return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n    }\n    uuid(message) {\n        return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n    }\n    nanoid(message) {\n        return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n    }\n    cuid(message) {\n        return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n    }\n    cuid2(message) {\n        return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n    }\n    ulid(message) {\n        return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n    }\n    base64(message) {\n        return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n    }\n    base64url(message) {\n        // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n        return this._addCheck({\n            kind: \"base64url\",\n            ...errorUtil.errToObj(message),\n        });\n    }\n    jwt(options) {\n        return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n    }\n    ip(options) {\n        return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n    }\n    cidr(options) {\n        return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n    }\n    datetime(options) {\n        if (typeof options === \"string\") {\n            return this._addCheck({\n                kind: \"datetime\",\n                precision: null,\n                offset: false,\n                local: false,\n                message: options,\n            });\n        }\n        return this._addCheck({\n            kind: \"datetime\",\n            precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n            offset: options?.offset ?? false,\n            local: options?.local ?? false,\n            ...errorUtil.errToObj(options?.message),\n        });\n    }\n    date(message) {\n        return this._addCheck({ kind: \"date\", message });\n    }\n    time(options) {\n        if (typeof options === \"string\") {\n            return this._addCheck({\n                kind: \"time\",\n                precision: null,\n                message: options,\n            });\n        }\n        return this._addCheck({\n            kind: \"time\",\n            precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n            ...errorUtil.errToObj(options?.message),\n        });\n    }\n    duration(message) {\n        return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n    }\n    regex(regex, message) {\n        return this._addCheck({\n            kind: \"regex\",\n            regex: regex,\n            ...errorUtil.errToObj(message),\n        });\n    }\n    includes(value, options) {\n        return this._addCheck({\n            kind: \"includes\",\n            value: value,\n            position: options?.position,\n            ...errorUtil.errToObj(options?.message),\n        });\n    }\n    startsWith(value, message) {\n        return this._addCheck({\n            kind: \"startsWith\",\n            value: value,\n            ...errorUtil.errToObj(message),\n        });\n    }\n    endsWith(value, message) {\n        return this._addCheck({\n            kind: \"endsWith\",\n            value: value,\n            ...errorUtil.errToObj(message),\n        });\n    }\n    min(minLength, message) {\n        return this._addCheck({\n            kind: \"min\",\n            value: minLength,\n            ...errorUtil.errToObj(message),\n        });\n    }\n    max(maxLength, message) {\n        return this._addCheck({\n            kind: \"max\",\n            value: maxLength,\n            ...errorUtil.errToObj(message),\n        });\n    }\n    length(len, message) {\n        return this._addCheck({\n            kind: \"length\",\n            value: len,\n            ...errorUtil.errToObj(message),\n        });\n    }\n    /**\n     * Equivalent to `.min(1)`\n     */\n    nonempty(message) {\n        return this.min(1, errorUtil.errToObj(message));\n    }\n    trim() {\n        return new ZodString({\n            ...this._def,\n            checks: [...this._def.checks, { kind: \"trim\" }],\n        });\n    }\n    toLowerCase() {\n        return new ZodString({\n            ...this._def,\n            checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n        });\n    }\n    toUpperCase() {\n        return new ZodString({\n            ...this._def,\n            checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n        });\n    }\n    get isDatetime() {\n        return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n    }\n    get isDate() {\n        return !!this._def.checks.find((ch) => ch.kind === \"date\");\n    }\n    get isTime() {\n        return !!this._def.checks.find((ch) => ch.kind === \"time\");\n    }\n    get isDuration() {\n        return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n    }\n    get isEmail() {\n        return !!this._def.checks.find((ch) => ch.kind === \"email\");\n    }\n    get isURL() {\n        return !!this._def.checks.find((ch) => ch.kind === \"url\");\n    }\n    get isEmoji() {\n        return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n    }\n    get isUUID() {\n        return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n    }\n    get isNANOID() {\n        return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n    }\n    get isCUID() {\n        return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n    }\n    get isCUID2() {\n        return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n    }\n    get isULID() {\n        return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n    }\n    get isIP() {\n        return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n    }\n    get isCIDR() {\n        return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n    }\n    get isBase64() {\n        return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n    }\n    get isBase64url() {\n        // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n        return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n    }\n    get minLength() {\n        let min = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"min\") {\n                if (min === null || ch.value > min)\n                    min = ch.value;\n            }\n        }\n        return min;\n    }\n    get maxLength() {\n        let max = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"max\") {\n                if (max === null || ch.value < max)\n                    max = ch.value;\n            }\n        }\n        return max;\n    }\n}\nZodString.create = (params) => {\n    return new ZodString({\n        checks: [],\n        typeName: ZodFirstPartyTypeKind.ZodString,\n        coerce: params?.coerce ?? false,\n        ...processCreateParams(params),\n    });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n    const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n    const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n    const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n    const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n    const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n    return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n    constructor() {\n        super(...arguments);\n        this.min = this.gte;\n        this.max = this.lte;\n        this.step = this.multipleOf;\n    }\n    _parse(input) {\n        if (this._def.coerce) {\n            input.data = Number(input.data);\n        }\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.number) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.number,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        let ctx = undefined;\n        const status = new ParseStatus();\n        for (const check of this._def.checks) {\n            if (check.kind === \"int\") {\n                if (!util.isInteger(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.invalid_type,\n                        expected: \"integer\",\n                        received: \"float\",\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"min\") {\n                const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n                if (tooSmall) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_small,\n                        minimum: check.value,\n                        type: \"number\",\n                        inclusive: check.inclusive,\n                        exact: false,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"max\") {\n                const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n                if (tooBig) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_big,\n                        maximum: check.value,\n                        type: \"number\",\n                        inclusive: check.inclusive,\n                        exact: false,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"multipleOf\") {\n                if (floatSafeRemainder(input.data, check.value) !== 0) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.not_multiple_of,\n                        multipleOf: check.value,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"finite\") {\n                if (!Number.isFinite(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.not_finite,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else {\n                util.assertNever(check);\n            }\n        }\n        return { status: status.value, value: input.data };\n    }\n    gte(value, message) {\n        return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n    }\n    gt(value, message) {\n        return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n    }\n    lte(value, message) {\n        return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n    }\n    lt(value, message) {\n        return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n    }\n    setLimit(kind, value, inclusive, message) {\n        return new ZodNumber({\n            ...this._def,\n            checks: [\n                ...this._def.checks,\n                {\n                    kind,\n                    value,\n                    inclusive,\n                    message: errorUtil.toString(message),\n                },\n            ],\n        });\n    }\n    _addCheck(check) {\n        return new ZodNumber({\n            ...this._def,\n            checks: [...this._def.checks, check],\n        });\n    }\n    int(message) {\n        return this._addCheck({\n            kind: \"int\",\n            message: errorUtil.toString(message),\n        });\n    }\n    positive(message) {\n        return this._addCheck({\n            kind: \"min\",\n            value: 0,\n            inclusive: false,\n            message: errorUtil.toString(message),\n        });\n    }\n    negative(message) {\n        return this._addCheck({\n            kind: \"max\",\n            value: 0,\n            inclusive: false,\n            message: errorUtil.toString(message),\n        });\n    }\n    nonpositive(message) {\n        return this._addCheck({\n            kind: \"max\",\n            value: 0,\n            inclusive: true,\n            message: errorUtil.toString(message),\n        });\n    }\n    nonnegative(message) {\n        return this._addCheck({\n            kind: \"min\",\n            value: 0,\n            inclusive: true,\n            message: errorUtil.toString(message),\n        });\n    }\n    multipleOf(value, message) {\n        return this._addCheck({\n            kind: \"multipleOf\",\n            value: value,\n            message: errorUtil.toString(message),\n        });\n    }\n    finite(message) {\n        return this._addCheck({\n            kind: \"finite\",\n            message: errorUtil.toString(message),\n        });\n    }\n    safe(message) {\n        return this._addCheck({\n            kind: \"min\",\n            inclusive: true,\n            value: Number.MIN_SAFE_INTEGER,\n            message: errorUtil.toString(message),\n        })._addCheck({\n            kind: \"max\",\n            inclusive: true,\n            value: Number.MAX_SAFE_INTEGER,\n            message: errorUtil.toString(message),\n        });\n    }\n    get minValue() {\n        let min = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"min\") {\n                if (min === null || ch.value > min)\n                    min = ch.value;\n            }\n        }\n        return min;\n    }\n    get maxValue() {\n        let max = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"max\") {\n                if (max === null || ch.value < max)\n                    max = ch.value;\n            }\n        }\n        return max;\n    }\n    get isInt() {\n        return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n    }\n    get isFinite() {\n        let max = null;\n        let min = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n                return true;\n            }\n            else if (ch.kind === \"min\") {\n                if (min === null || ch.value > min)\n                    min = ch.value;\n            }\n            else if (ch.kind === \"max\") {\n                if (max === null || ch.value < max)\n                    max = ch.value;\n            }\n        }\n        return Number.isFinite(min) && Number.isFinite(max);\n    }\n}\nZodNumber.create = (params) => {\n    return new ZodNumber({\n        checks: [],\n        typeName: ZodFirstPartyTypeKind.ZodNumber,\n        coerce: params?.coerce || false,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodBigInt extends ZodType {\n    constructor() {\n        super(...arguments);\n        this.min = this.gte;\n        this.max = this.lte;\n    }\n    _parse(input) {\n        if (this._def.coerce) {\n            try {\n                input.data = BigInt(input.data);\n            }\n            catch {\n                return this._getInvalidInput(input);\n            }\n        }\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.bigint) {\n            return this._getInvalidInput(input);\n        }\n        let ctx = undefined;\n        const status = new ParseStatus();\n        for (const check of this._def.checks) {\n            if (check.kind === \"min\") {\n                const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n                if (tooSmall) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_small,\n                        type: \"bigint\",\n                        minimum: check.value,\n                        inclusive: check.inclusive,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"max\") {\n                const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n                if (tooBig) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_big,\n                        type: \"bigint\",\n                        maximum: check.value,\n                        inclusive: check.inclusive,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"multipleOf\") {\n                if (input.data % check.value !== BigInt(0)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.not_multiple_of,\n                        multipleOf: check.value,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else {\n                util.assertNever(check);\n            }\n        }\n        return { status: status.value, value: input.data };\n    }\n    _getInvalidInput(input) {\n        const ctx = this._getOrReturnCtx(input);\n        addIssueToContext(ctx, {\n            code: ZodIssueCode.invalid_type,\n            expected: ZodParsedType.bigint,\n            received: ctx.parsedType,\n        });\n        return INVALID;\n    }\n    gte(value, message) {\n        return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n    }\n    gt(value, message) {\n        return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n    }\n    lte(value, message) {\n        return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n    }\n    lt(value, message) {\n        return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n    }\n    setLimit(kind, value, inclusive, message) {\n        return new ZodBigInt({\n            ...this._def,\n            checks: [\n                ...this._def.checks,\n                {\n                    kind,\n                    value,\n                    inclusive,\n                    message: errorUtil.toString(message),\n                },\n            ],\n        });\n    }\n    _addCheck(check) {\n        return new ZodBigInt({\n            ...this._def,\n            checks: [...this._def.checks, check],\n        });\n    }\n    positive(message) {\n        return this._addCheck({\n            kind: \"min\",\n            value: BigInt(0),\n            inclusive: false,\n            message: errorUtil.toString(message),\n        });\n    }\n    negative(message) {\n        return this._addCheck({\n            kind: \"max\",\n            value: BigInt(0),\n            inclusive: false,\n            message: errorUtil.toString(message),\n        });\n    }\n    nonpositive(message) {\n        return this._addCheck({\n            kind: \"max\",\n            value: BigInt(0),\n            inclusive: true,\n            message: errorUtil.toString(message),\n        });\n    }\n    nonnegative(message) {\n        return this._addCheck({\n            kind: \"min\",\n            value: BigInt(0),\n            inclusive: true,\n            message: errorUtil.toString(message),\n        });\n    }\n    multipleOf(value, message) {\n        return this._addCheck({\n            kind: \"multipleOf\",\n            value,\n            message: errorUtil.toString(message),\n        });\n    }\n    get minValue() {\n        let min = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"min\") {\n                if (min === null || ch.value > min)\n                    min = ch.value;\n            }\n        }\n        return min;\n    }\n    get maxValue() {\n        let max = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"max\") {\n                if (max === null || ch.value < max)\n                    max = ch.value;\n            }\n        }\n        return max;\n    }\n}\nZodBigInt.create = (params) => {\n    return new ZodBigInt({\n        checks: [],\n        typeName: ZodFirstPartyTypeKind.ZodBigInt,\n        coerce: params?.coerce ?? false,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodBoolean extends ZodType {\n    _parse(input) {\n        if (this._def.coerce) {\n            input.data = Boolean(input.data);\n        }\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.boolean) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.boolean,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        return OK(input.data);\n    }\n}\nZodBoolean.create = (params) => {\n    return new ZodBoolean({\n        typeName: ZodFirstPartyTypeKind.ZodBoolean,\n        coerce: params?.coerce || false,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodDate extends ZodType {\n    _parse(input) {\n        if (this._def.coerce) {\n            input.data = new Date(input.data);\n        }\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.date) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.date,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        if (Number.isNaN(input.data.getTime())) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_date,\n            });\n            return INVALID;\n        }\n        const status = new ParseStatus();\n        let ctx = undefined;\n        for (const check of this._def.checks) {\n            if (check.kind === \"min\") {\n                if (input.data.getTime() < check.value) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_small,\n                        message: check.message,\n                        inclusive: true,\n                        exact: false,\n                        minimum: check.value,\n                        type: \"date\",\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"max\") {\n                if (input.data.getTime() > check.value) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_big,\n                        message: check.message,\n                        inclusive: true,\n                        exact: false,\n                        maximum: check.value,\n                        type: \"date\",\n                    });\n                    status.dirty();\n                }\n            }\n            else {\n                util.assertNever(check);\n            }\n        }\n        return {\n            status: status.value,\n            value: new Date(input.data.getTime()),\n        };\n    }\n    _addCheck(check) {\n        return new ZodDate({\n            ...this._def,\n            checks: [...this._def.checks, check],\n        });\n    }\n    min(minDate, message) {\n        return this._addCheck({\n            kind: \"min\",\n            value: minDate.getTime(),\n            message: errorUtil.toString(message),\n        });\n    }\n    max(maxDate, message) {\n        return this._addCheck({\n            kind: \"max\",\n            value: maxDate.getTime(),\n            message: errorUtil.toString(message),\n        });\n    }\n    get minDate() {\n        let min = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"min\") {\n                if (min === null || ch.value > min)\n                    min = ch.value;\n            }\n        }\n        return min != null ? new Date(min) : null;\n    }\n    get maxDate() {\n        let max = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"max\") {\n                if (max === null || ch.value < max)\n                    max = ch.value;\n            }\n        }\n        return max != null ? new Date(max) : null;\n    }\n}\nZodDate.create = (params) => {\n    return new ZodDate({\n        checks: [],\n        coerce: params?.coerce || false,\n        typeName: ZodFirstPartyTypeKind.ZodDate,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodSymbol extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.symbol) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.symbol,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        return OK(input.data);\n    }\n}\nZodSymbol.create = (params) => {\n    return new ZodSymbol({\n        typeName: ZodFirstPartyTypeKind.ZodSymbol,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodUndefined extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.undefined) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.undefined,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        return OK(input.data);\n    }\n}\nZodUndefined.create = (params) => {\n    return new ZodUndefined({\n        typeName: ZodFirstPartyTypeKind.ZodUndefined,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodNull extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.null) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.null,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        return OK(input.data);\n    }\n}\nZodNull.create = (params) => {\n    return new ZodNull({\n        typeName: ZodFirstPartyTypeKind.ZodNull,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodAny extends ZodType {\n    constructor() {\n        super(...arguments);\n        // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n        this._any = true;\n    }\n    _parse(input) {\n        return OK(input.data);\n    }\n}\nZodAny.create = (params) => {\n    return new ZodAny({\n        typeName: ZodFirstPartyTypeKind.ZodAny,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodUnknown extends ZodType {\n    constructor() {\n        super(...arguments);\n        // required\n        this._unknown = true;\n    }\n    _parse(input) {\n        return OK(input.data);\n    }\n}\nZodUnknown.create = (params) => {\n    return new ZodUnknown({\n        typeName: ZodFirstPartyTypeKind.ZodUnknown,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodNever extends ZodType {\n    _parse(input) {\n        const ctx = this._getOrReturnCtx(input);\n        addIssueToContext(ctx, {\n            code: ZodIssueCode.invalid_type,\n            expected: ZodParsedType.never,\n            received: ctx.parsedType,\n        });\n        return INVALID;\n    }\n}\nZodNever.create = (params) => {\n    return new ZodNever({\n        typeName: ZodFirstPartyTypeKind.ZodNever,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodVoid extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.undefined) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.void,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        return OK(input.data);\n    }\n}\nZodVoid.create = (params) => {\n    return new ZodVoid({\n        typeName: ZodFirstPartyTypeKind.ZodVoid,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodArray extends ZodType {\n    _parse(input) {\n        const { ctx, status } = this._processInputParams(input);\n        const def = this._def;\n        if (ctx.parsedType !== ZodParsedType.array) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.array,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        if (def.exactLength !== null) {\n            const tooBig = ctx.data.length > def.exactLength.value;\n            const tooSmall = ctx.data.length < def.exactLength.value;\n            if (tooBig || tooSmall) {\n                addIssueToContext(ctx, {\n                    code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n                    minimum: (tooSmall ? def.exactLength.value : undefined),\n                    maximum: (tooBig ? def.exactLength.value : undefined),\n                    type: \"array\",\n                    inclusive: true,\n                    exact: true,\n                    message: def.exactLength.message,\n                });\n                status.dirty();\n            }\n        }\n        if (def.minLength !== null) {\n            if (ctx.data.length < def.minLength.value) {\n                addIssueToContext(ctx, {\n                    code: ZodIssueCode.too_small,\n                    minimum: def.minLength.value,\n                    type: \"array\",\n                    inclusive: true,\n                    exact: false,\n                    message: def.minLength.message,\n                });\n                status.dirty();\n            }\n        }\n        if (def.maxLength !== null) {\n            if (ctx.data.length > def.maxLength.value) {\n                addIssueToContext(ctx, {\n                    code: ZodIssueCode.too_big,\n                    maximum: def.maxLength.value,\n                    type: \"array\",\n                    inclusive: true,\n                    exact: false,\n                    message: def.maxLength.message,\n                });\n                status.dirty();\n            }\n        }\n        if (ctx.common.async) {\n            return Promise.all([...ctx.data].map((item, i) => {\n                return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n            })).then((result) => {\n                return ParseStatus.mergeArray(status, result);\n            });\n        }\n        const result = [...ctx.data].map((item, i) => {\n            return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n        });\n        return ParseStatus.mergeArray(status, result);\n    }\n    get element() {\n        return this._def.type;\n    }\n    min(minLength, message) {\n        return new ZodArray({\n            ...this._def,\n            minLength: { value: minLength, message: errorUtil.toString(message) },\n        });\n    }\n    max(maxLength, message) {\n        return new ZodArray({\n            ...this._def,\n            maxLength: { value: maxLength, message: errorUtil.toString(message) },\n        });\n    }\n    length(len, message) {\n        return new ZodArray({\n            ...this._def,\n            exactLength: { value: len, message: errorUtil.toString(message) },\n        });\n    }\n    nonempty(message) {\n        return this.min(1, message);\n    }\n}\nZodArray.create = (schema, params) => {\n    return new ZodArray({\n        type: schema,\n        minLength: null,\n        maxLength: null,\n        exactLength: null,\n        typeName: ZodFirstPartyTypeKind.ZodArray,\n        ...processCreateParams(params),\n    });\n};\nfunction deepPartialify(schema) {\n    if (schema instanceof ZodObject) {\n        const newShape = {};\n        for (const key in schema.shape) {\n            const fieldSchema = schema.shape[key];\n            newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n        }\n        return new ZodObject({\n            ...schema._def,\n            shape: () => newShape,\n        });\n    }\n    else if (schema instanceof ZodArray) {\n        return new ZodArray({\n            ...schema._def,\n            type: deepPartialify(schema.element),\n        });\n    }\n    else if (schema instanceof ZodOptional) {\n        return ZodOptional.create(deepPartialify(schema.unwrap()));\n    }\n    else if (schema instanceof ZodNullable) {\n        return ZodNullable.create(deepPartialify(schema.unwrap()));\n    }\n    else if (schema instanceof ZodTuple) {\n        return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n    }\n    else {\n        return schema;\n    }\n}\nexport class ZodObject extends ZodType {\n    constructor() {\n        super(...arguments);\n        this._cached = null;\n        /**\n         * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n         * If you want to pass through unknown properties, use `.passthrough()` instead.\n         */\n        this.nonstrict = this.passthrough;\n        // extend<\n        //   Augmentation extends ZodRawShape,\n        //   NewOutput extends util.flatten<{\n        //     [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n        //       ? Augmentation[k][\"_output\"]\n        //       : k extends keyof Output\n        //       ? Output[k]\n        //       : never;\n        //   }>,\n        //   NewInput extends util.flatten<{\n        //     [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n        //       ? Augmentation[k][\"_input\"]\n        //       : k extends keyof Input\n        //       ? Input[k]\n        //       : never;\n        //   }>\n        // >(\n        //   augmentation: Augmentation\n        // ): ZodObject<\n        //   extendShape<T, Augmentation>,\n        //   UnknownKeys,\n        //   Catchall,\n        //   NewOutput,\n        //   NewInput\n        // > {\n        //   return new ZodObject({\n        //     ...this._def,\n        //     shape: () => ({\n        //       ...this._def.shape(),\n        //       ...augmentation,\n        //     }),\n        //   }) as any;\n        // }\n        /**\n         * @deprecated Use `.extend` instead\n         *  */\n        this.augment = this.extend;\n    }\n    _getCached() {\n        if (this._cached !== null)\n            return this._cached;\n        const shape = this._def.shape();\n        const keys = util.objectKeys(shape);\n        this._cached = { shape, keys };\n        return this._cached;\n    }\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.object) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.object,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        const { status, ctx } = this._processInputParams(input);\n        const { shape, keys: shapeKeys } = this._getCached();\n        const extraKeys = [];\n        if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n            for (const key in ctx.data) {\n                if (!shapeKeys.includes(key)) {\n                    extraKeys.push(key);\n                }\n            }\n        }\n        const pairs = [];\n        for (const key of shapeKeys) {\n            const keyValidator = shape[key];\n            const value = ctx.data[key];\n            pairs.push({\n                key: { status: \"valid\", value: key },\n                value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n                alwaysSet: key in ctx.data,\n            });\n        }\n        if (this._def.catchall instanceof ZodNever) {\n            const unknownKeys = this._def.unknownKeys;\n            if (unknownKeys === \"passthrough\") {\n                for (const key of extraKeys) {\n                    pairs.push({\n                        key: { status: \"valid\", value: key },\n                        value: { status: \"valid\", value: ctx.data[key] },\n                    });\n                }\n            }\n            else if (unknownKeys === \"strict\") {\n                if (extraKeys.length > 0) {\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.unrecognized_keys,\n                        keys: extraKeys,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (unknownKeys === \"strip\") {\n            }\n            else {\n                throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n            }\n        }\n        else {\n            // run catchall validation\n            const catchall = this._def.catchall;\n            for (const key of extraKeys) {\n                const value = ctx.data[key];\n                pairs.push({\n                    key: { status: \"valid\", value: key },\n                    value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n                    ),\n                    alwaysSet: key in ctx.data,\n                });\n            }\n        }\n        if (ctx.common.async) {\n            return Promise.resolve()\n                .then(async () => {\n                const syncPairs = [];\n                for (const pair of pairs) {\n                    const key = await pair.key;\n                    const value = await pair.value;\n                    syncPairs.push({\n                        key,\n                        value,\n                        alwaysSet: pair.alwaysSet,\n                    });\n                }\n                return syncPairs;\n            })\n                .then((syncPairs) => {\n                return ParseStatus.mergeObjectSync(status, syncPairs);\n            });\n        }\n        else {\n            return ParseStatus.mergeObjectSync(status, pairs);\n        }\n    }\n    get shape() {\n        return this._def.shape();\n    }\n    strict(message) {\n        errorUtil.errToObj;\n        return new ZodObject({\n            ...this._def,\n            unknownKeys: \"strict\",\n            ...(message !== undefined\n                ? {\n                    errorMap: (issue, ctx) => {\n                        const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n                        if (issue.code === \"unrecognized_keys\")\n                            return {\n                                message: errorUtil.errToObj(message).message ?? defaultError,\n                            };\n                        return {\n                            message: defaultError,\n                        };\n                    },\n                }\n                : {}),\n        });\n    }\n    strip() {\n        return new ZodObject({\n            ...this._def,\n            unknownKeys: \"strip\",\n        });\n    }\n    passthrough() {\n        return new ZodObject({\n            ...this._def,\n            unknownKeys: \"passthrough\",\n        });\n    }\n    // const AugmentFactory =\n    //   <Def extends ZodObjectDef>(def: Def) =>\n    //   <Augmentation extends ZodRawShape>(\n    //     augmentation: Augmentation\n    //   ): ZodObject<\n    //     extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n    //     Def[\"unknownKeys\"],\n    //     Def[\"catchall\"]\n    //   > => {\n    //     return new ZodObject({\n    //       ...def,\n    //       shape: () => ({\n    //         ...def.shape(),\n    //         ...augmentation,\n    //       }),\n    //     }) as any;\n    //   };\n    extend(augmentation) {\n        return new ZodObject({\n            ...this._def,\n            shape: () => ({\n                ...this._def.shape(),\n                ...augmentation,\n            }),\n        });\n    }\n    /**\n     * Prior to zod@1.0.12 there was a bug in the\n     * inferred type of merged objects. Please\n     * upgrade if you are experiencing issues.\n     */\n    merge(merging) {\n        const merged = new ZodObject({\n            unknownKeys: merging._def.unknownKeys,\n            catchall: merging._def.catchall,\n            shape: () => ({\n                ...this._def.shape(),\n                ...merging._def.shape(),\n            }),\n            typeName: ZodFirstPartyTypeKind.ZodObject,\n        });\n        return merged;\n    }\n    // merge<\n    //   Incoming extends AnyZodObject,\n    //   Augmentation extends Incoming[\"shape\"],\n    //   NewOutput extends {\n    //     [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n    //       ? Augmentation[k][\"_output\"]\n    //       : k extends keyof Output\n    //       ? Output[k]\n    //       : never;\n    //   },\n    //   NewInput extends {\n    //     [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n    //       ? Augmentation[k][\"_input\"]\n    //       : k extends keyof Input\n    //       ? Input[k]\n    //       : never;\n    //   }\n    // >(\n    //   merging: Incoming\n    // ): ZodObject<\n    //   extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n    //   Incoming[\"_def\"][\"unknownKeys\"],\n    //   Incoming[\"_def\"][\"catchall\"],\n    //   NewOutput,\n    //   NewInput\n    // > {\n    //   const merged: any = new ZodObject({\n    //     unknownKeys: merging._def.unknownKeys,\n    //     catchall: merging._def.catchall,\n    //     shape: () =>\n    //       objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n    //     typeName: ZodFirstPartyTypeKind.ZodObject,\n    //   }) as any;\n    //   return merged;\n    // }\n    setKey(key, schema) {\n        return this.augment({ [key]: schema });\n    }\n    // merge<Incoming extends AnyZodObject>(\n    //   merging: Incoming\n    // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n    // ZodObject<\n    //   extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n    //   Incoming[\"_def\"][\"unknownKeys\"],\n    //   Incoming[\"_def\"][\"catchall\"]\n    // > {\n    //   // const mergedShape = objectUtil.mergeShapes(\n    //   //   this._def.shape(),\n    //   //   merging._def.shape()\n    //   // );\n    //   const merged: any = new ZodObject({\n    //     unknownKeys: merging._def.unknownKeys,\n    //     catchall: merging._def.catchall,\n    //     shape: () =>\n    //       objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n    //     typeName: ZodFirstPartyTypeKind.ZodObject,\n    //   }) as any;\n    //   return merged;\n    // }\n    catchall(index) {\n        return new ZodObject({\n            ...this._def,\n            catchall: index,\n        });\n    }\n    pick(mask) {\n        const shape = {};\n        for (const key of util.objectKeys(mask)) {\n            if (mask[key] && this.shape[key]) {\n                shape[key] = this.shape[key];\n            }\n        }\n        return new ZodObject({\n            ...this._def,\n            shape: () => shape,\n        });\n    }\n    omit(mask) {\n        const shape = {};\n        for (const key of util.objectKeys(this.shape)) {\n            if (!mask[key]) {\n                shape[key] = this.shape[key];\n            }\n        }\n        return new ZodObject({\n            ...this._def,\n            shape: () => shape,\n        });\n    }\n    /**\n     * @deprecated\n     */\n    deepPartial() {\n        return deepPartialify(this);\n    }\n    partial(mask) {\n        const newShape = {};\n        for (const key of util.objectKeys(this.shape)) {\n            const fieldSchema = this.shape[key];\n            if (mask && !mask[key]) {\n                newShape[key] = fieldSchema;\n            }\n            else {\n                newShape[key] = fieldSchema.optional();\n            }\n        }\n        return new ZodObject({\n            ...this._def,\n            shape: () => newShape,\n        });\n    }\n    required(mask) {\n        const newShape = {};\n        for (const key of util.objectKeys(this.shape)) {\n            if (mask && !mask[key]) {\n                newShape[key] = this.shape[key];\n            }\n            else {\n                const fieldSchema = this.shape[key];\n                let newField = fieldSchema;\n                while (newField instanceof ZodOptional) {\n                    newField = newField._def.innerType;\n                }\n                newShape[key] = newField;\n            }\n        }\n        return new ZodObject({\n            ...this._def,\n            shape: () => newShape,\n        });\n    }\n    keyof() {\n        return createZodEnum(util.objectKeys(this.shape));\n    }\n}\nZodObject.create = (shape, params) => {\n    return new ZodObject({\n        shape: () => shape,\n        unknownKeys: \"strip\",\n        catchall: ZodNever.create(),\n        typeName: ZodFirstPartyTypeKind.ZodObject,\n        ...processCreateParams(params),\n    });\n};\nZodObject.strictCreate = (shape, params) => {\n    return new ZodObject({\n        shape: () => shape,\n        unknownKeys: \"strict\",\n        catchall: ZodNever.create(),\n        typeName: ZodFirstPartyTypeKind.ZodObject,\n        ...processCreateParams(params),\n    });\n};\nZodObject.lazycreate = (shape, params) => {\n    return new ZodObject({\n        shape,\n        unknownKeys: \"strip\",\n        catchall: ZodNever.create(),\n        typeName: ZodFirstPartyTypeKind.ZodObject,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodUnion extends ZodType {\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        const options = this._def.options;\n        function handleResults(results) {\n            // return first issue-free validation if it exists\n            for (const result of results) {\n                if (result.result.status === \"valid\") {\n                    return result.result;\n                }\n            }\n            for (const result of results) {\n                if (result.result.status === \"dirty\") {\n                    // add issues from dirty option\n                    ctx.common.issues.push(...result.ctx.common.issues);\n                    return result.result;\n                }\n            }\n            // return invalid\n            const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_union,\n                unionErrors,\n            });\n            return INVALID;\n        }\n        if (ctx.common.async) {\n            return Promise.all(options.map(async (option) => {\n                const childCtx = {\n                    ...ctx,\n                    common: {\n                        ...ctx.common,\n                        issues: [],\n                    },\n                    parent: null,\n                };\n                return {\n                    result: await option._parseAsync({\n                        data: ctx.data,\n                        path: ctx.path,\n                        parent: childCtx,\n                    }),\n                    ctx: childCtx,\n                };\n            })).then(handleResults);\n        }\n        else {\n            let dirty = undefined;\n            const issues = [];\n            for (const option of options) {\n                const childCtx = {\n                    ...ctx,\n                    common: {\n                        ...ctx.common,\n                        issues: [],\n                    },\n                    parent: null,\n                };\n                const result = option._parseSync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: childCtx,\n                });\n                if (result.status === \"valid\") {\n                    return result;\n                }\n                else if (result.status === \"dirty\" && !dirty) {\n                    dirty = { result, ctx: childCtx };\n                }\n                if (childCtx.common.issues.length) {\n                    issues.push(childCtx.common.issues);\n                }\n            }\n            if (dirty) {\n                ctx.common.issues.push(...dirty.ctx.common.issues);\n                return dirty.result;\n            }\n            const unionErrors = issues.map((issues) => new ZodError(issues));\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_union,\n                unionErrors,\n            });\n            return INVALID;\n        }\n    }\n    get options() {\n        return this._def.options;\n    }\n}\nZodUnion.create = (types, params) => {\n    return new ZodUnion({\n        options: types,\n        typeName: ZodFirstPartyTypeKind.ZodUnion,\n        ...processCreateParams(params),\n    });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n//////////                                 //////////\n//////////      ZodDiscriminatedUnion      //////////\n//////////                                 //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n    if (type instanceof ZodLazy) {\n        return getDiscriminator(type.schema);\n    }\n    else if (type instanceof ZodEffects) {\n        return getDiscriminator(type.innerType());\n    }\n    else if (type instanceof ZodLiteral) {\n        return [type.value];\n    }\n    else if (type instanceof ZodEnum) {\n        return type.options;\n    }\n    else if (type instanceof ZodNativeEnum) {\n        // eslint-disable-next-line ban/ban\n        return util.objectValues(type.enum);\n    }\n    else if (type instanceof ZodDefault) {\n        return getDiscriminator(type._def.innerType);\n    }\n    else if (type instanceof ZodUndefined) {\n        return [undefined];\n    }\n    else if (type instanceof ZodNull) {\n        return [null];\n    }\n    else if (type instanceof ZodOptional) {\n        return [undefined, ...getDiscriminator(type.unwrap())];\n    }\n    else if (type instanceof ZodNullable) {\n        return [null, ...getDiscriminator(type.unwrap())];\n    }\n    else if (type instanceof ZodBranded) {\n        return getDiscriminator(type.unwrap());\n    }\n    else if (type instanceof ZodReadonly) {\n        return getDiscriminator(type.unwrap());\n    }\n    else if (type instanceof ZodCatch) {\n        return getDiscriminator(type._def.innerType);\n    }\n    else {\n        return [];\n    }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== ZodParsedType.object) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.object,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        const discriminator = this.discriminator;\n        const discriminatorValue = ctx.data[discriminator];\n        const option = this.optionsMap.get(discriminatorValue);\n        if (!option) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_union_discriminator,\n                options: Array.from(this.optionsMap.keys()),\n                path: [discriminator],\n            });\n            return INVALID;\n        }\n        if (ctx.common.async) {\n            return option._parseAsync({\n                data: ctx.data,\n                path: ctx.path,\n                parent: ctx,\n            });\n        }\n        else {\n            return option._parseSync({\n                data: ctx.data,\n                path: ctx.path,\n                parent: ctx,\n            });\n        }\n    }\n    get discriminator() {\n        return this._def.discriminator;\n    }\n    get options() {\n        return this._def.options;\n    }\n    get optionsMap() {\n        return this._def.optionsMap;\n    }\n    /**\n     * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n     * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n     * have a different value for each object in the union.\n     * @param discriminator the name of the discriminator property\n     * @param types an array of object schemas\n     * @param params\n     */\n    static create(discriminator, options, params) {\n        // Get all the valid discriminator values\n        const optionsMap = new Map();\n        // try {\n        for (const type of options) {\n            const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n            if (!discriminatorValues.length) {\n                throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n            }\n            for (const value of discriminatorValues) {\n                if (optionsMap.has(value)) {\n                    throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n                }\n                optionsMap.set(value, type);\n            }\n        }\n        return new ZodDiscriminatedUnion({\n            typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n            discriminator,\n            options,\n            optionsMap,\n            ...processCreateParams(params),\n        });\n    }\n}\nfunction mergeValues(a, b) {\n    const aType = getParsedType(a);\n    const bType = getParsedType(b);\n    if (a === b) {\n        return { valid: true, data: a };\n    }\n    else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n        const bKeys = util.objectKeys(b);\n        const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n        const newObj = { ...a, ...b };\n        for (const key of sharedKeys) {\n            const sharedValue = mergeValues(a[key], b[key]);\n            if (!sharedValue.valid) {\n                return { valid: false };\n            }\n            newObj[key] = sharedValue.data;\n        }\n        return { valid: true, data: newObj };\n    }\n    else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n        if (a.length !== b.length) {\n            return { valid: false };\n        }\n        const newArray = [];\n        for (let index = 0; index < a.length; index++) {\n            const itemA = a[index];\n            const itemB = b[index];\n            const sharedValue = mergeValues(itemA, itemB);\n            if (!sharedValue.valid) {\n                return { valid: false };\n            }\n            newArray.push(sharedValue.data);\n        }\n        return { valid: true, data: newArray };\n    }\n    else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n        return { valid: true, data: a };\n    }\n    else {\n        return { valid: false };\n    }\n}\nexport class ZodIntersection extends ZodType {\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        const handleParsed = (parsedLeft, parsedRight) => {\n            if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n                return INVALID;\n            }\n            const merged = mergeValues(parsedLeft.value, parsedRight.value);\n            if (!merged.valid) {\n                addIssueToContext(ctx, {\n                    code: ZodIssueCode.invalid_intersection_types,\n                });\n                return INVALID;\n            }\n            if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n                status.dirty();\n            }\n            return { status: status.value, value: merged.data };\n        };\n        if (ctx.common.async) {\n            return Promise.all([\n                this._def.left._parseAsync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: ctx,\n                }),\n                this._def.right._parseAsync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: ctx,\n                }),\n            ]).then(([left, right]) => handleParsed(left, right));\n        }\n        else {\n            return handleParsed(this._def.left._parseSync({\n                data: ctx.data,\n                path: ctx.path,\n                parent: ctx,\n            }), this._def.right._parseSync({\n                data: ctx.data,\n                path: ctx.path,\n                parent: ctx,\n            }));\n        }\n    }\n}\nZodIntersection.create = (left, right, params) => {\n    return new ZodIntersection({\n        left: left,\n        right: right,\n        typeName: ZodFirstPartyTypeKind.ZodIntersection,\n        ...processCreateParams(params),\n    });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== ZodParsedType.array) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.array,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        if (ctx.data.length < this._def.items.length) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.too_small,\n                minimum: this._def.items.length,\n                inclusive: true,\n                exact: false,\n                type: \"array\",\n            });\n            return INVALID;\n        }\n        const rest = this._def.rest;\n        if (!rest && ctx.data.length > this._def.items.length) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.too_big,\n                maximum: this._def.items.length,\n                inclusive: true,\n                exact: false,\n                type: \"array\",\n            });\n            status.dirty();\n        }\n        const items = [...ctx.data]\n            .map((item, itemIndex) => {\n            const schema = this._def.items[itemIndex] || this._def.rest;\n            if (!schema)\n                return null;\n            return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n        })\n            .filter((x) => !!x); // filter nulls\n        if (ctx.common.async) {\n            return Promise.all(items).then((results) => {\n                return ParseStatus.mergeArray(status, results);\n            });\n        }\n        else {\n            return ParseStatus.mergeArray(status, items);\n        }\n    }\n    get items() {\n        return this._def.items;\n    }\n    rest(rest) {\n        return new ZodTuple({\n            ...this._def,\n            rest,\n        });\n    }\n}\nZodTuple.create = (schemas, params) => {\n    if (!Array.isArray(schemas)) {\n        throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n    }\n    return new ZodTuple({\n        items: schemas,\n        typeName: ZodFirstPartyTypeKind.ZodTuple,\n        rest: null,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodRecord extends ZodType {\n    get keySchema() {\n        return this._def.keyType;\n    }\n    get valueSchema() {\n        return this._def.valueType;\n    }\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== ZodParsedType.object) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.object,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        const pairs = [];\n        const keyType = this._def.keyType;\n        const valueType = this._def.valueType;\n        for (const key in ctx.data) {\n            pairs.push({\n                key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n                value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n                alwaysSet: key in ctx.data,\n            });\n        }\n        if (ctx.common.async) {\n            return ParseStatus.mergeObjectAsync(status, pairs);\n        }\n        else {\n            return ParseStatus.mergeObjectSync(status, pairs);\n        }\n    }\n    get element() {\n        return this._def.valueType;\n    }\n    static create(first, second, third) {\n        if (second instanceof ZodType) {\n            return new ZodRecord({\n                keyType: first,\n                valueType: second,\n                typeName: ZodFirstPartyTypeKind.ZodRecord,\n                ...processCreateParams(third),\n            });\n        }\n        return new ZodRecord({\n            keyType: ZodString.create(),\n            valueType: first,\n            typeName: ZodFirstPartyTypeKind.ZodRecord,\n            ...processCreateParams(second),\n        });\n    }\n}\nexport class ZodMap extends ZodType {\n    get keySchema() {\n        return this._def.keyType;\n    }\n    get valueSchema() {\n        return this._def.valueType;\n    }\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== ZodParsedType.map) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.map,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        const keyType = this._def.keyType;\n        const valueType = this._def.valueType;\n        const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n            return {\n                key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n                value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n            };\n        });\n        if (ctx.common.async) {\n            const finalMap = new Map();\n            return Promise.resolve().then(async () => {\n                for (const pair of pairs) {\n                    const key = await pair.key;\n                    const value = await pair.value;\n                    if (key.status === \"aborted\" || value.status === \"aborted\") {\n                        return INVALID;\n                    }\n                    if (key.status === \"dirty\" || value.status === \"dirty\") {\n                        status.dirty();\n                    }\n                    finalMap.set(key.value, value.value);\n                }\n                return { status: status.value, value: finalMap };\n            });\n        }\n        else {\n            const finalMap = new Map();\n            for (const pair of pairs) {\n                const key = pair.key;\n                const value = pair.value;\n                if (key.status === \"aborted\" || value.status === \"aborted\") {\n                    return INVALID;\n                }\n                if (key.status === \"dirty\" || value.status === \"dirty\") {\n                    status.dirty();\n                }\n                finalMap.set(key.value, value.value);\n            }\n            return { status: status.value, value: finalMap };\n        }\n    }\n}\nZodMap.create = (keyType, valueType, params) => {\n    return new ZodMap({\n        valueType,\n        keyType,\n        typeName: ZodFirstPartyTypeKind.ZodMap,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodSet extends ZodType {\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== ZodParsedType.set) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.set,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        const def = this._def;\n        if (def.minSize !== null) {\n            if (ctx.data.size < def.minSize.value) {\n                addIssueToContext(ctx, {\n                    code: ZodIssueCode.too_small,\n                    minimum: def.minSize.value,\n                    type: \"set\",\n                    inclusive: true,\n                    exact: false,\n                    message: def.minSize.message,\n                });\n                status.dirty();\n            }\n        }\n        if (def.maxSize !== null) {\n            if (ctx.data.size > def.maxSize.value) {\n                addIssueToContext(ctx, {\n                    code: ZodIssueCode.too_big,\n                    maximum: def.maxSize.value,\n                    type: \"set\",\n                    inclusive: true,\n                    exact: false,\n                    message: def.maxSize.message,\n                });\n                status.dirty();\n            }\n        }\n        const valueType = this._def.valueType;\n        function finalizeSet(elements) {\n            const parsedSet = new Set();\n            for (const element of elements) {\n                if (element.status === \"aborted\")\n                    return INVALID;\n                if (element.status === \"dirty\")\n                    status.dirty();\n                parsedSet.add(element.value);\n            }\n            return { status: status.value, value: parsedSet };\n        }\n        const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n        if (ctx.common.async) {\n            return Promise.all(elements).then((elements) => finalizeSet(elements));\n        }\n        else {\n            return finalizeSet(elements);\n        }\n    }\n    min(minSize, message) {\n        return new ZodSet({\n            ...this._def,\n            minSize: { value: minSize, message: errorUtil.toString(message) },\n        });\n    }\n    max(maxSize, message) {\n        return new ZodSet({\n            ...this._def,\n            maxSize: { value: maxSize, message: errorUtil.toString(message) },\n        });\n    }\n    size(size, message) {\n        return this.min(size, message).max(size, message);\n    }\n    nonempty(message) {\n        return this.min(1, message);\n    }\n}\nZodSet.create = (valueType, params) => {\n    return new ZodSet({\n        valueType,\n        minSize: null,\n        maxSize: null,\n        typeName: ZodFirstPartyTypeKind.ZodSet,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodFunction extends ZodType {\n    constructor() {\n        super(...arguments);\n        this.validate = this.implement;\n    }\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== ZodParsedType.function) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.function,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        function makeArgsIssue(args, error) {\n            return makeIssue({\n                data: args,\n                path: ctx.path,\n                errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n                issueData: {\n                    code: ZodIssueCode.invalid_arguments,\n                    argumentsError: error,\n                },\n            });\n        }\n        function makeReturnsIssue(returns, error) {\n            return makeIssue({\n                data: returns,\n                path: ctx.path,\n                errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n                issueData: {\n                    code: ZodIssueCode.invalid_return_type,\n                    returnTypeError: error,\n                },\n            });\n        }\n        const params = { errorMap: ctx.common.contextualErrorMap };\n        const fn = ctx.data;\n        if (this._def.returns instanceof ZodPromise) {\n            // Would love a way to avoid disabling this rule, but we need\n            // an alias (using an arrow function was what caused 2651).\n            // eslint-disable-next-line @typescript-eslint/no-this-alias\n            const me = this;\n            return OK(async function (...args) {\n                const error = new ZodError([]);\n                const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n                    error.addIssue(makeArgsIssue(args, e));\n                    throw error;\n                });\n                const result = await Reflect.apply(fn, this, parsedArgs);\n                const parsedReturns = await me._def.returns._def.type\n                    .parseAsync(result, params)\n                    .catch((e) => {\n                    error.addIssue(makeReturnsIssue(result, e));\n                    throw error;\n                });\n                return parsedReturns;\n            });\n        }\n        else {\n            // Would love a way to avoid disabling this rule, but we need\n            // an alias (using an arrow function was what caused 2651).\n            // eslint-disable-next-line @typescript-eslint/no-this-alias\n            const me = this;\n            return OK(function (...args) {\n                const parsedArgs = me._def.args.safeParse(args, params);\n                if (!parsedArgs.success) {\n                    throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n                }\n                const result = Reflect.apply(fn, this, parsedArgs.data);\n                const parsedReturns = me._def.returns.safeParse(result, params);\n                if (!parsedReturns.success) {\n                    throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n                }\n                return parsedReturns.data;\n            });\n        }\n    }\n    parameters() {\n        return this._def.args;\n    }\n    returnType() {\n        return this._def.returns;\n    }\n    args(...items) {\n        return new ZodFunction({\n            ...this._def,\n            args: ZodTuple.create(items).rest(ZodUnknown.create()),\n        });\n    }\n    returns(returnType) {\n        return new ZodFunction({\n            ...this._def,\n            returns: returnType,\n        });\n    }\n    implement(func) {\n        const validatedFunc = this.parse(func);\n        return validatedFunc;\n    }\n    strictImplement(func) {\n        const validatedFunc = this.parse(func);\n        return validatedFunc;\n    }\n    static create(args, returns, params) {\n        return new ZodFunction({\n            args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n            returns: returns || ZodUnknown.create(),\n            typeName: ZodFirstPartyTypeKind.ZodFunction,\n            ...processCreateParams(params),\n        });\n    }\n}\nexport class ZodLazy extends ZodType {\n    get schema() {\n        return this._def.getter();\n    }\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        const lazySchema = this._def.getter();\n        return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n    }\n}\nZodLazy.create = (getter, params) => {\n    return new ZodLazy({\n        getter: getter,\n        typeName: ZodFirstPartyTypeKind.ZodLazy,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodLiteral extends ZodType {\n    _parse(input) {\n        if (input.data !== this._def.value) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                received: ctx.data,\n                code: ZodIssueCode.invalid_literal,\n                expected: this._def.value,\n            });\n            return INVALID;\n        }\n        return { status: \"valid\", value: input.data };\n    }\n    get value() {\n        return this._def.value;\n    }\n}\nZodLiteral.create = (value, params) => {\n    return new ZodLiteral({\n        value: value,\n        typeName: ZodFirstPartyTypeKind.ZodLiteral,\n        ...processCreateParams(params),\n    });\n};\nfunction createZodEnum(values, params) {\n    return new ZodEnum({\n        values,\n        typeName: ZodFirstPartyTypeKind.ZodEnum,\n        ...processCreateParams(params),\n    });\n}\nexport class ZodEnum extends ZodType {\n    _parse(input) {\n        if (typeof input.data !== \"string\") {\n            const ctx = this._getOrReturnCtx(input);\n            const expectedValues = this._def.values;\n            addIssueToContext(ctx, {\n                expected: util.joinValues(expectedValues),\n                received: ctx.parsedType,\n                code: ZodIssueCode.invalid_type,\n            });\n            return INVALID;\n        }\n        if (!this._cache) {\n            this._cache = new Set(this._def.values);\n        }\n        if (!this._cache.has(input.data)) {\n            const ctx = this._getOrReturnCtx(input);\n            const expectedValues = this._def.values;\n            addIssueToContext(ctx, {\n                received: ctx.data,\n                code: ZodIssueCode.invalid_enum_value,\n                options: expectedValues,\n            });\n            return INVALID;\n        }\n        return OK(input.data);\n    }\n    get options() {\n        return this._def.values;\n    }\n    get enum() {\n        const enumValues = {};\n        for (const val of this._def.values) {\n            enumValues[val] = val;\n        }\n        return enumValues;\n    }\n    get Values() {\n        const enumValues = {};\n        for (const val of this._def.values) {\n            enumValues[val] = val;\n        }\n        return enumValues;\n    }\n    get Enum() {\n        const enumValues = {};\n        for (const val of this._def.values) {\n            enumValues[val] = val;\n        }\n        return enumValues;\n    }\n    extract(values, newDef = this._def) {\n        return ZodEnum.create(values, {\n            ...this._def,\n            ...newDef,\n        });\n    }\n    exclude(values, newDef = this._def) {\n        return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n            ...this._def,\n            ...newDef,\n        });\n    }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n    _parse(input) {\n        const nativeEnumValues = util.getValidEnumValues(this._def.values);\n        const ctx = this._getOrReturnCtx(input);\n        if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n            const expectedValues = util.objectValues(nativeEnumValues);\n            addIssueToContext(ctx, {\n                expected: util.joinValues(expectedValues),\n                received: ctx.parsedType,\n                code: ZodIssueCode.invalid_type,\n            });\n            return INVALID;\n        }\n        if (!this._cache) {\n            this._cache = new Set(util.getValidEnumValues(this._def.values));\n        }\n        if (!this._cache.has(input.data)) {\n            const expectedValues = util.objectValues(nativeEnumValues);\n            addIssueToContext(ctx, {\n                received: ctx.data,\n                code: ZodIssueCode.invalid_enum_value,\n                options: expectedValues,\n            });\n            return INVALID;\n        }\n        return OK(input.data);\n    }\n    get enum() {\n        return this._def.values;\n    }\n}\nZodNativeEnum.create = (values, params) => {\n    return new ZodNativeEnum({\n        values: values,\n        typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodPromise extends ZodType {\n    unwrap() {\n        return this._def.type;\n    }\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.promise,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n        return OK(promisified.then((data) => {\n            return this._def.type.parseAsync(data, {\n                path: ctx.path,\n                errorMap: ctx.common.contextualErrorMap,\n            });\n        }));\n    }\n}\nZodPromise.create = (schema, params) => {\n    return new ZodPromise({\n        type: schema,\n        typeName: ZodFirstPartyTypeKind.ZodPromise,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodEffects extends ZodType {\n    innerType() {\n        return this._def.schema;\n    }\n    sourceType() {\n        return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n            ? this._def.schema.sourceType()\n            : this._def.schema;\n    }\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        const effect = this._def.effect || null;\n        const checkCtx = {\n            addIssue: (arg) => {\n                addIssueToContext(ctx, arg);\n                if (arg.fatal) {\n                    status.abort();\n                }\n                else {\n                    status.dirty();\n                }\n            },\n            get path() {\n                return ctx.path;\n            },\n        };\n        checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n        if (effect.type === \"preprocess\") {\n            const processed = effect.transform(ctx.data, checkCtx);\n            if (ctx.common.async) {\n                return Promise.resolve(processed).then(async (processed) => {\n                    if (status.value === \"aborted\")\n                        return INVALID;\n                    const result = await this._def.schema._parseAsync({\n                        data: processed,\n                        path: ctx.path,\n                        parent: ctx,\n                    });\n                    if (result.status === \"aborted\")\n                        return INVALID;\n                    if (result.status === \"dirty\")\n                        return DIRTY(result.value);\n                    if (status.value === \"dirty\")\n                        return DIRTY(result.value);\n                    return result;\n                });\n            }\n            else {\n                if (status.value === \"aborted\")\n                    return INVALID;\n                const result = this._def.schema._parseSync({\n                    data: processed,\n                    path: ctx.path,\n                    parent: ctx,\n                });\n                if (result.status === \"aborted\")\n                    return INVALID;\n                if (result.status === \"dirty\")\n                    return DIRTY(result.value);\n                if (status.value === \"dirty\")\n                    return DIRTY(result.value);\n                return result;\n            }\n        }\n        if (effect.type === \"refinement\") {\n            const executeRefinement = (acc) => {\n                const result = effect.refinement(acc, checkCtx);\n                if (ctx.common.async) {\n                    return Promise.resolve(result);\n                }\n                if (result instanceof Promise) {\n                    throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n                }\n                return acc;\n            };\n            if (ctx.common.async === false) {\n                const inner = this._def.schema._parseSync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: ctx,\n                });\n                if (inner.status === \"aborted\")\n                    return INVALID;\n                if (inner.status === \"dirty\")\n                    status.dirty();\n                // return value is ignored\n                executeRefinement(inner.value);\n                return { status: status.value, value: inner.value };\n            }\n            else {\n                return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n                    if (inner.status === \"aborted\")\n                        return INVALID;\n                    if (inner.status === \"dirty\")\n                        status.dirty();\n                    return executeRefinement(inner.value).then(() => {\n                        return { status: status.value, value: inner.value };\n                    });\n                });\n            }\n        }\n        if (effect.type === \"transform\") {\n            if (ctx.common.async === false) {\n                const base = this._def.schema._parseSync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: ctx,\n                });\n                if (!isValid(base))\n                    return INVALID;\n                const result = effect.transform(base.value, checkCtx);\n                if (result instanceof Promise) {\n                    throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n                }\n                return { status: status.value, value: result };\n            }\n            else {\n                return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n                    if (!isValid(base))\n                        return INVALID;\n                    return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n                        status: status.value,\n                        value: result,\n                    }));\n                });\n            }\n        }\n        util.assertNever(effect);\n    }\n}\nZodEffects.create = (schema, effect, params) => {\n    return new ZodEffects({\n        schema,\n        typeName: ZodFirstPartyTypeKind.ZodEffects,\n        effect,\n        ...processCreateParams(params),\n    });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n    return new ZodEffects({\n        schema,\n        effect: { type: \"preprocess\", transform: preprocess },\n        typeName: ZodFirstPartyTypeKind.ZodEffects,\n        ...processCreateParams(params),\n    });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType === ZodParsedType.undefined) {\n            return OK(undefined);\n        }\n        return this._def.innerType._parse(input);\n    }\n    unwrap() {\n        return this._def.innerType;\n    }\n}\nZodOptional.create = (type, params) => {\n    return new ZodOptional({\n        innerType: type,\n        typeName: ZodFirstPartyTypeKind.ZodOptional,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodNullable extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType === ZodParsedType.null) {\n            return OK(null);\n        }\n        return this._def.innerType._parse(input);\n    }\n    unwrap() {\n        return this._def.innerType;\n    }\n}\nZodNullable.create = (type, params) => {\n    return new ZodNullable({\n        innerType: type,\n        typeName: ZodFirstPartyTypeKind.ZodNullable,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodDefault extends ZodType {\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        let data = ctx.data;\n        if (ctx.parsedType === ZodParsedType.undefined) {\n            data = this._def.defaultValue();\n        }\n        return this._def.innerType._parse({\n            data,\n            path: ctx.path,\n            parent: ctx,\n        });\n    }\n    removeDefault() {\n        return this._def.innerType;\n    }\n}\nZodDefault.create = (type, params) => {\n    return new ZodDefault({\n        innerType: type,\n        typeName: ZodFirstPartyTypeKind.ZodDefault,\n        defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodCatch extends ZodType {\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        // newCtx is used to not collect issues from inner types in ctx\n        const newCtx = {\n            ...ctx,\n            common: {\n                ...ctx.common,\n                issues: [],\n            },\n        };\n        const result = this._def.innerType._parse({\n            data: newCtx.data,\n            path: newCtx.path,\n            parent: {\n                ...newCtx,\n            },\n        });\n        if (isAsync(result)) {\n            return result.then((result) => {\n                return {\n                    status: \"valid\",\n                    value: result.status === \"valid\"\n                        ? result.value\n                        : this._def.catchValue({\n                            get error() {\n                                return new ZodError(newCtx.common.issues);\n                            },\n                            input: newCtx.data,\n                        }),\n                };\n            });\n        }\n        else {\n            return {\n                status: \"valid\",\n                value: result.status === \"valid\"\n                    ? result.value\n                    : this._def.catchValue({\n                        get error() {\n                            return new ZodError(newCtx.common.issues);\n                        },\n                        input: newCtx.data,\n                    }),\n            };\n        }\n    }\n    removeCatch() {\n        return this._def.innerType;\n    }\n}\nZodCatch.create = (type, params) => {\n    return new ZodCatch({\n        innerType: type,\n        typeName: ZodFirstPartyTypeKind.ZodCatch,\n        catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodNaN extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.nan) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.nan,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        return { status: \"valid\", value: input.data };\n    }\n}\nZodNaN.create = (params) => {\n    return new ZodNaN({\n        typeName: ZodFirstPartyTypeKind.ZodNaN,\n        ...processCreateParams(params),\n    });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        const data = ctx.data;\n        return this._def.type._parse({\n            data,\n            path: ctx.path,\n            parent: ctx,\n        });\n    }\n    unwrap() {\n        return this._def.type;\n    }\n}\nexport class ZodPipeline extends ZodType {\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        if (ctx.common.async) {\n            const handleAsync = async () => {\n                const inResult = await this._def.in._parseAsync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: ctx,\n                });\n                if (inResult.status === \"aborted\")\n                    return INVALID;\n                if (inResult.status === \"dirty\") {\n                    status.dirty();\n                    return DIRTY(inResult.value);\n                }\n                else {\n                    return this._def.out._parseAsync({\n                        data: inResult.value,\n                        path: ctx.path,\n                        parent: ctx,\n                    });\n                }\n            };\n            return handleAsync();\n        }\n        else {\n            const inResult = this._def.in._parseSync({\n                data: ctx.data,\n                path: ctx.path,\n                parent: ctx,\n            });\n            if (inResult.status === \"aborted\")\n                return INVALID;\n            if (inResult.status === \"dirty\") {\n                status.dirty();\n                return {\n                    status: \"dirty\",\n                    value: inResult.value,\n                };\n            }\n            else {\n                return this._def.out._parseSync({\n                    data: inResult.value,\n                    path: ctx.path,\n                    parent: ctx,\n                });\n            }\n        }\n    }\n    static create(a, b) {\n        return new ZodPipeline({\n            in: a,\n            out: b,\n            typeName: ZodFirstPartyTypeKind.ZodPipeline,\n        });\n    }\n}\nexport class ZodReadonly extends ZodType {\n    _parse(input) {\n        const result = this._def.innerType._parse(input);\n        const freeze = (data) => {\n            if (isValid(data)) {\n                data.value = Object.freeze(data.value);\n            }\n            return data;\n        };\n        return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n    }\n    unwrap() {\n        return this._def.innerType;\n    }\n}\nZodReadonly.create = (type, params) => {\n    return new ZodReadonly({\n        innerType: type,\n        typeName: ZodFirstPartyTypeKind.ZodReadonly,\n        ...processCreateParams(params),\n    });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n//////////                    //////////\n//////////      z.custom      //////////\n//////////                    //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n    const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n    const p2 = typeof p === \"string\" ? { message: p } : p;\n    return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n    if (check)\n        return ZodAny.create().superRefine((data, ctx) => {\n            const r = check(data);\n            if (r instanceof Promise) {\n                return r.then((r) => {\n                    if (!r) {\n                        const params = cleanParams(_params, data);\n                        const _fatal = params.fatal ?? fatal ?? true;\n                        ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n                    }\n                });\n            }\n            if (!r) {\n                const params = cleanParams(_params, data);\n                const _fatal = params.fatal ?? fatal ?? true;\n                ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n            }\n            return;\n        });\n    return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n    object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n    ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n    ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n    ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n    ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n    ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n    ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n    ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n    ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n    ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n    ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n    ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n    ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n    ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n    ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n    ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n    ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n    ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n    ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n    ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n    ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n    ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n    ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n    ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n    ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n    ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n    ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n    ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n    ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n    ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n    ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n    ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n    ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n    ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n    ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n    ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n    ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n    constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n    message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n    string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n    number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n    boolean: ((arg) => ZodBoolean.create({\n        ...arg,\n        coerce: true,\n    })),\n    bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n    date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n","import { z } from \"zod\";\n\n// 使用 zod 进行数据源的校验\nconst dataSourceSchema = z.object({\n  paging: z.object({\n    totalCount: z.number().int().min(0),\n    currentPage: z.number().positive().int(),\n    pageSize: z.number().positive().int(),\n  }),\n  tableData: z.array(z.any()),\n});\n\nexport const validateDataSource = (dataSource: any) => {\n  const validationResult = dataSourceSchema.safeParse(dataSource);\n  if (validationResult.success) {\n    return validationResult.data;\n  }\n  return false;\n};\n","import React from \"react\";\nimport { message } from \"antd\";\nimport { YtTable as SourceYtTable } from \"@yuntoo/antd-ext\";\nimport { validateDataSource } from \"./utils/datasource-validate\";\nimport { executeEvent } from \"../../_action\";\nimport { ButtonPosition } from \"../../_position/button-position\";\nimport { makeButtons, makeDropdownButton } from \"../../_utils/utils\";\n\nconst ORDER_MAP = {\n  descend: \"DESC\",\n  ascend: \"ASC\",\n};\n\nconst YtTable = React.forwardRef((props: any, ref) => {\n  const {\n    _context,\n    __id,\n    _uniqueId,\n    dataSource,\n    events,\n    operateButtonsEnable,\n    operateButtons,\n    handleProps,\n    ...otherProps\n  } = props;\n\n  const itemResourceCode =\n    props.customProps?.itemResourceCode || props.itemResourceCode || {}; // 操作按钮权限控制\n\n  const TABLE_SORT_KEY = `${_uniqueId}_sort`;\n  const TABLE_SELECTKEYS_KEY = `${_uniqueId}_selectKeys`;\n\n  const validationResult = validateDataSource(dataSource);\n  if (validationResult) {\n    const { paging, tableData } = validationResult;\n    otherProps.pagination.current = paging.currentPage;\n    otherProps.pagination.pageSize = paging.pageSize;\n    otherProps.pagination.totalCount = paging.totalCount;\n    otherProps.dataSource = tableData;\n  }\n\n  React.useEffect(() => {\n    const validationResult = validateDataSource(dataSource);\n    if (validationResult) {\n      const { paging } = validationResult;\n      _context.setState({\n        ..._context.state,\n        [props.pagination?.currentPageKey]: paging.currentPage,\n        [props.pagination?.pageSizeKey]: paging.pageSize,\n        [props.pagination?.totalKey]: paging.totalCount,\n      });\n    }\n  }, [JSON.stringify(dataSource)]);\n\n  const validateResourceCode = (resourceCodeName: string): boolean => {\n    const resourceCode = itemResourceCode[resourceCodeName];\n    return !(\n      resourceCode && _context.utils.isNodeAccessible?.(resourceCode) === false\n    );\n  };\n\n  if (Array.isArray(otherProps.columns) && otherProps.columns.length > 0) {\n    const isDoV2 = otherProps.columns.some(\n      (col: any) => col?.isShown !== undefined,\n    );\n    const columnsLength = otherProps.columns.length;\n\n    if (isDoV2) {\n      // 从 column.sortable 读取是否可排序\n      otherProps.columns = otherProps.columns.map((column: any) => {\n        if (column.sortable) {\n          return {\n            ...column,\n            sorter: {\n              multiple: columnsLength,\n            },\n          };\n        }\n        return column;\n      });\n    } else {\n      // 表格 format 展示配置 仅仅用在 V1 版本\n      const tableFormat = props.customProps?.tableFormat || {};\n\n      otherProps.columns = otherProps.columns.map((column, index) => {\n        const sortableTypes = [\"number\", \"date\", \"datetime\"];\n\n        if (index === 0 || sortableTypes.includes(column.format)) {\n          return {\n            ...column,\n            sorter: {\n              multiple: columnsLength,\n            },\n          };\n        }\n        return column;\n      });\n\n      // 应用 tableFormat 配置，覆盖 columns 的 format\n      otherProps.columns = otherProps.columns.map((column: any) => {\n        if (tableFormat[column.key]) {\n          return {\n            ...column,\n            format: tableFormat[column.key].format || column.format,\n            formatOptions:\n              tableFormat[column.key].formatOptions || column.formatOptions,\n          };\n        }\n        return column;\n      });\n    }\n  }\n\n  if (otherProps.pagination?.enable) {\n    otherProps.pagination.current =\n      _context.state[props.pagination?.currentPageKey] || 1;\n    otherProps.pagination.pageSize =\n      _context.state[props.pagination?.pageSizeKey] || 10;\n    otherProps.pagination.totalCount =\n      _context.state[props.pagination?.totalKey] || 0;\n\n    otherProps.pagination.onChange = (page: number, pageSize: number) => {\n      _context.setState({\n        [props.pagination?.currentPageKey]: page,\n        [props.pagination?.pageSizeKey]: pageSize,\n      });\n      executeEvent({\n        position: ButtonPosition.TABLE_EVENT,\n        eventType: \"onTablePageChange\",\n        events,\n        _context,\n        extraParams: {\n          page,\n          pageSize,\n        },\n      });\n    };\n  }\n\n  if (otherProps.toolbar?.enable) {\n    const {\n      selectedButtons: selectedButtonsConfig,\n      globalButtons: globalButtonsConfig,\n      exportButtons: exportButtonsConfig,\n    } = otherProps.toolbar || {};\n\n    otherProps.toolbar.selectedButtons = (selectedRowKeys) =>\n      makeButtons({\n        buttons: selectedButtonsConfig,\n        handleCustomConfig: (button) => ({\n          ...button,\n          position: ButtonPosition.TABLE_SELECTED_BUTTONS,\n        }),\n        extraParams: { selectedRowKeys },\n        _context,\n      });\n\n    // 处理 globalButtons 权限点, 过滤掉没有权限的按钮\n    const filterGlobalButtons = _context.utils?.isNodeAccessible\n      ? globalButtonsConfig?.filter((item) =>\n          validateResourceCode(`globalButtons_${item.title}`),\n        )\n      : globalButtonsConfig;\n\n    otherProps.toolbar.globalButtons = () =>\n      makeButtons({\n        buttons: filterGlobalButtons,\n        handleCustomConfig: (button) => ({\n          ...button,\n          position: ButtonPosition.TABLE_TOOL_BUTTONS,\n        }),\n        _context,\n      });\n\n    // 处理 exportButtons 权限点\n    const hasExportPermission =\n      !_context.utils?.isNodeAccessible ||\n      validateResourceCode(\n        `exportButtons_${exportButtonsConfig?.mainButton?.title}`,\n      );\n\n    otherProps.toolbar.exportButtons = hasExportPermission\n      ? () =>\n          makeDropdownButton({\n            ...exportButtonsConfig,\n            handleCustomConfig: (button) => ({\n              ...button,\n              position: ButtonPosition.TABLE_EXPORT_BUTTONS,\n            }),\n            beforeMainButtonOnClick: () => {\n              if (props?.rowSelection?.selectedRowKeys?.length > 0) return true;\n              message.info(\"没有选中列，请先选中列后再执行\");\n              return false;\n            },\n            resultHandle: (res) => {\n              if (res?.length > 0) {\n                window.open(res[0], \"_self\");\n              }\n            },\n            _context,\n          })\n      : null;\n  }\n\n  if (operateButtonsEnable) {\n    // 处理 operateButtons 权限点, 过滤掉没有权限的按钮\n    const filterOperateButtons = _context.utils?.isNodeAccessible\n      ? operateButtons.filter((item) =>\n          validateResourceCode(`operateButtons_${item.title}`),\n        )\n      : operateButtons;\n\n    otherProps.operateButtons = (rowKey: string, row: any) =>\n      makeButtons({\n        buttons: filterOperateButtons,\n        handleCustomConfig: (button) => ({\n          ...button,\n          variant: \"text\",\n          type: \"link\",\n          position: ButtonPosition.TABLE_OPERATE_BUTTONS,\n        }),\n        extraParams: { rowKey, row },\n        _context,\n      });\n  }\n\n  if (otherProps.rowSelection?.enable) {\n    const selectedRowKeysKey =\n      otherProps.rowSelection?.selectedRowKeysKey ||\n      `${_uniqueId}_selectedRowKeys`;\n    const selectedRowsKey =\n      otherProps.rowSelection?.selectedRowsKey || `${_uniqueId}_selectedRows`;\n\n    otherProps.rowSelection.selectedRowKeys =\n      _context.state[selectedRowKeysKey] || [];\n    otherProps.rowSelection.selectedRows =\n      _context.state[selectedRowsKey] || [];\n\n    otherProps.rowSelection.onChange = (\n      selectedRowKeys: string[],\n      selectedRows: any[],\n    ) => {\n      const currentAnd =\n        _context.state?.[TABLE_SELECTKEYS_KEY]?.where?.$and || [];\n      const newAnd =\n        selectedRowKeys.length === 0\n          ? currentAnd.filter((item) => !item.id?.$in)\n          : [{ id: { $in: selectedRowKeys } }];\n\n      _context.setState({\n        ..._context.state,\n        [selectedRowKeysKey]: selectedRowKeys,\n        [selectedRowsKey]: selectedRows,\n        [TABLE_SELECTKEYS_KEY]: { where: { $and: newAnd } },\n      });\n    };\n  }\n\n  otherProps.otherTableProps = {\n    onRow: (record: any) => {\n      return {\n        onClick: (event) => {}, // 点击行\n        onDoubleClick: (event) => {\n          executeEvent({\n            position: ButtonPosition.TABLE_EVENT,\n            eventType: \"onTableRowDoubleClick\",\n            events,\n            _context,\n            extraParams: {\n              record,\n              event,\n            },\n          });\n        },\n        onContextMenu: (event) => {},\n        onMouseEnter: (event) => {}, // 鼠标移入行\n        onMouseLeave: (event) => {},\n      };\n    },\n    onChange: (pagination, filters, sorter, extra) => {\n      if (extra?.action !== \"sort\") return;\n\n      let newOrder = [];\n\n      if (Array.isArray(sorter)) {\n        // 多列排序\n        newOrder = sorter\n          .filter((item) => item.order)\n          .map((item) => ({\n            [item.columnKey]: ORDER_MAP[item.order],\n          }));\n      } else {\n        // 单列排序\n        const { columnKey, order } = sorter;\n        if (columnKey && order) {\n          newOrder = [{ [columnKey]: ORDER_MAP[order] }];\n        }\n      }\n\n      _context.setState({\n        [TABLE_SORT_KEY]: {\n          ..._context.state?.[TABLE_SORT_KEY],\n          orderBy: newOrder,\n        },\n      });\n    },\n  };\n\n  // 处理 handleProps（来自 extend.tableHandleProps 的转换）\n  if (handleProps) {\n    try {\n      // 如果 handleProps 是字符串，尝试将其作为函数执行\n      let handlePropsFunction;\n      if (typeof handleProps === \"string\") {\n        // 使用 Function 构造器创建函数\n        handlePropsFunction = new Function(\"return \" + handleProps)();\n      } else if (typeof handleProps === \"function\") {\n        handlePropsFunction = handleProps;\n      }\n\n      if (typeof handlePropsFunction === \"function\") {\n        // 设置 handleProps 到 otherProps 中，让 YtTable 处理\n        otherProps.handleProps = handlePropsFunction;\n        console.log(\"🔧 [YtTable] 已应用 handleProps 配置\");\n      }\n    } catch (error) {\n      console.error(\"🚨 [YtTable] handleProps 执行失败:\", error);\n      console.error(\"📋 [YtTable] 配置内容:\", handleProps);\n    }\n  }\n\n  return <SourceYtTable __id={__id} {...otherProps} ref={ref} />;\n});\n\nexport default YtTable;\n","(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n  typeof define === 'function' && define.amd ? define(['exports'], factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global[\"fast-equals\"] = {}));\n})(this, (function (exports) { 'use strict';\n\n  /**\r\n   * Default equality comparator pass-through, used as the standard `isEqual` creator for\r\n   * use inside the built comparator.\r\n   */\r\n  function createDefaultIsNestedEqual(comparator) {\r\n      return function isEqual(a, b, _indexOrKeyA, _indexOrKeyB, _parentA, _parentB, meta) {\r\n          return comparator(a, b, meta);\r\n      };\r\n  }\r\n  /**\r\n   * Wrap the provided `areItemsEqual` method to manage the circular cache, allowing\r\n   * for circular references to be safely included in the comparison without creating\r\n   * stack overflows.\r\n   */\r\n  function createIsCircular(areItemsEqual) {\r\n      return function isCircular(a, b, isEqual, cache) {\r\n          if (!a || !b || typeof a !== 'object' || typeof b !== 'object') {\r\n              return areItemsEqual(a, b, isEqual, cache);\r\n          }\r\n          var cachedA = cache.get(a);\r\n          var cachedB = cache.get(b);\r\n          if (cachedA && cachedB) {\r\n              return cachedA === b && cachedB === a;\r\n          }\r\n          cache.set(a, b);\r\n          cache.set(b, a);\r\n          var result = areItemsEqual(a, b, isEqual, cache);\r\n          cache.delete(a);\r\n          cache.delete(b);\r\n          return result;\r\n      };\r\n  }\r\n  /**\r\n   * Targeted shallow merge of two objects.\r\n   *\r\n   * @NOTE\r\n   * This exists as a tinier compiled version of the `__assign` helper that\r\n   * `tsc` injects in case of `Object.assign` not being present.\r\n   */\r\n  function merge(a, b) {\r\n      var merged = {};\r\n      for (var key in a) {\r\n          merged[key] = a[key];\r\n      }\r\n      for (var key in b) {\r\n          merged[key] = b[key];\r\n      }\r\n      return merged;\r\n  }\r\n  /**\r\n   * Whether the value is a plain object.\r\n   *\r\n   * @NOTE\r\n   * This is a same-realm compariosn only.\r\n   */\r\n  function isPlainObject(value) {\r\n      return value.constructor === Object || value.constructor == null;\r\n  }\r\n  /**\r\n   * When the value is `Promise`-like, aka \"then-able\".\r\n   */\r\n  function isPromiseLike(value) {\r\n      return typeof value.then === 'function';\r\n  }\r\n  /**\r\n   * Whether the values passed are strictly equal or both NaN.\r\n   */\r\n  function sameValueZeroEqual(a, b) {\r\n      return a === b || (a !== a && b !== b);\r\n  }\n\n  var ARGUMENTS_TAG = '[object Arguments]';\r\n  var BOOLEAN_TAG = '[object Boolean]';\r\n  var DATE_TAG = '[object Date]';\r\n  var REG_EXP_TAG = '[object RegExp]';\r\n  var MAP_TAG = '[object Map]';\r\n  var NUMBER_TAG = '[object Number]';\r\n  var OBJECT_TAG = '[object Object]';\r\n  var SET_TAG = '[object Set]';\r\n  var STRING_TAG = '[object String]';\r\n  var toString = Object.prototype.toString;\r\n  function createComparator(_a) {\r\n      var areArraysEqual = _a.areArraysEqual, areDatesEqual = _a.areDatesEqual, areMapsEqual = _a.areMapsEqual, areObjectsEqual = _a.areObjectsEqual, areRegExpsEqual = _a.areRegExpsEqual, areSetsEqual = _a.areSetsEqual, createIsNestedEqual = _a.createIsNestedEqual;\r\n      var isEqual = createIsNestedEqual(comparator);\r\n      /**\r\n       * compare the value of the two objects and return true if they are equivalent in values\r\n       */\r\n      function comparator(a, b, meta) {\r\n          // If the items are strictly equal, no need to do a value comparison.\r\n          if (a === b) {\r\n              return true;\r\n          }\r\n          // If the items are not non-nullish objects, then the only possibility\r\n          // of them being equal but not strictly is if they are both `NaN`. Since\r\n          // `NaN` is uniquely not equal to itself, we can use self-comparison of\r\n          // both objects, which is faster than `isNaN()`.\r\n          if (!a || !b || typeof a !== 'object' || typeof b !== 'object') {\r\n              return a !== a && b !== b;\r\n          }\r\n          // Checks are listed in order of commonality of use-case:\r\n          //   1. Common complex object types (plain object, array)\r\n          //   2. Common data values (date, regexp)\r\n          //   3. Less-common complex object types (map, set)\r\n          //   4. Less-common data values (promise, primitive wrappers)\r\n          // Inherently this is both subjective and assumptive, however\r\n          // when reviewing comparable libraries in the wild this order\r\n          // appears to be generally consistent.\r\n          // `isPlainObject` only checks against the object's own realm. Cross-realm\r\n          // comparisons are rare, and will be handled in the ultimate fallback, so\r\n          // we can avoid the `toString.call()` cost unless necessary.\r\n          if (isPlainObject(a) && isPlainObject(b)) {\r\n              return areObjectsEqual(a, b, isEqual, meta);\r\n          }\r\n          // `isArray()` works on subclasses and is cross-realm, so we can again avoid\r\n          // the `toString.call()` cost unless necessary by just checking if either\r\n          // and then both are arrays.\r\n          var aArray = Array.isArray(a);\r\n          var bArray = Array.isArray(b);\r\n          if (aArray || bArray) {\r\n              return aArray === bArray && areArraysEqual(a, b, isEqual, meta);\r\n          }\r\n          // Since this is a custom object, use the classic `toString.call()` to get its\r\n          // type. This is reasonably performant in modern environments like v8 and\r\n          // SpiderMonkey, and allows for cross-realm comparison when other checks like\r\n          // `instanceof` do not.\r\n          var aTag = toString.call(a);\r\n          if (aTag !== toString.call(b)) {\r\n              return false;\r\n          }\r\n          if (aTag === DATE_TAG) {\r\n              // `getTime()` showed better results compared to alternatives like `valueOf()`\r\n              // or the unary `+` operator.\r\n              return areDatesEqual(a, b, isEqual, meta);\r\n          }\r\n          if (aTag === REG_EXP_TAG) {\r\n              return areRegExpsEqual(a, b, isEqual, meta);\r\n          }\r\n          if (aTag === MAP_TAG) {\r\n              return areMapsEqual(a, b, isEqual, meta);\r\n          }\r\n          if (aTag === SET_TAG) {\r\n              return areSetsEqual(a, b, isEqual, meta);\r\n          }\r\n          // If a simple object tag, then we can prioritize a simple object comparison because\r\n          // it is likely a custom class. If an arguments tag, it should be treated as a standard\r\n          // object.\r\n          if (aTag === OBJECT_TAG || aTag === ARGUMENTS_TAG) {\r\n              // The exception for value comparison is `Promise`-like contracts. These should be\r\n              // treated the same as standard `Promise` objects, which means strict equality.\r\n              return isPromiseLike(a) || isPromiseLike(b)\r\n                  ? false\r\n                  : areObjectsEqual(a, b, isEqual, meta);\r\n          }\r\n          // As the penultimate fallback, check if the values passed are primitive wrappers. This\r\n          // is very rare in modern JS, which is why it is deprioritized compared to all other object\r\n          // types.\r\n          if (aTag === BOOLEAN_TAG || aTag === NUMBER_TAG || aTag === STRING_TAG) {\r\n              return sameValueZeroEqual(a.valueOf(), b.valueOf());\r\n          }\r\n          // If not matching any tags that require a specific type of comparison, then we hard-code false because\r\n          // the only thing remaining is strict equality, which has already been compared. This is for a few reasons:\r\n          //   - Certain types that cannot be introspected (e.g., `WeakMap`). For these types, this is the only\r\n          //     comparison that can be made.\r\n          //   - For types that can be introspected, but rarely have requirements to be compared\r\n          //     (`ArrayBuffer`, `DataView`, etc.), the cost is avoided to prioritize the common\r\n          //     use-cases (may be included in a future release, if requested enough).\r\n          //   - For types that can be introspected but do not have an objective definition of what\r\n          //     equality is (`Error`, etc.), the subjective decision is to be conservative and strictly compare.\r\n          // In all cases, these decisions should be reevaluated based on changes to the language and\r\n          // common development practices.\r\n          return false;\r\n      }\r\n      return comparator;\r\n  }\n\n  /**\r\n   * Whether the arrays are equal in value.\r\n   */\r\n  function areArraysEqual(a, b, isEqual, meta) {\r\n      var index = a.length;\r\n      if (b.length !== index) {\r\n          return false;\r\n      }\r\n      // Decrementing `while` showed faster results than either incrementing or\r\n      // decrementing `for` loop and than an incrementing `while` loop. Declarative\r\n      // methods like `some` / `every` were not used to avoid incurring the garbage\r\n      // cost of anonymous callbacks.\r\n      while (index-- > 0) {\r\n          if (!isEqual(a[index], b[index], index, index, a, b, meta)) {\r\n              return false;\r\n          }\r\n      }\r\n      return true;\r\n  }\r\n  /**\r\n   * Whether the arrays are equal in value, including circular references.\r\n   */\r\n  var areArraysEqualCircular = createIsCircular(areArraysEqual);\n\n  /**\r\n   * Whether the dates passed are equal in value.\r\n   *\r\n   * @NOTE\r\n   * This is a standalone function instead of done inline in the comparator\r\n   * to allow for overrides.\r\n   */\r\n  function areDatesEqual(a, b) {\r\n      return sameValueZeroEqual(a.valueOf(), b.valueOf());\r\n  }\n\n  /**\r\n   * Whether the `Map`s are equal in value.\r\n   */\r\n  function areMapsEqual(a, b, isEqual, meta) {\r\n      var isValueEqual = a.size === b.size;\r\n      if (!isValueEqual) {\r\n          return false;\r\n      }\r\n      if (!a.size) {\r\n          return true;\r\n      }\r\n      // The use of `forEach()` is to avoid the transpilation cost of `for...of` comparisons, and\r\n      // the inability to control the performance of the resulting code. It also avoids excessive\r\n      // iteration compared to doing comparisons of `keys()` and `values()`. As a result, though,\r\n      // we cannot short-circuit the iterations; bookkeeping must be done to short-circuit the\r\n      // equality checks themselves.\r\n      var matchedIndices = {};\r\n      var indexA = 0;\r\n      a.forEach(function (aValue, aKey) {\r\n          if (!isValueEqual) {\r\n              return;\r\n          }\r\n          var hasMatch = false;\r\n          var matchIndexB = 0;\r\n          b.forEach(function (bValue, bKey) {\r\n              if (!hasMatch &&\r\n                  !matchedIndices[matchIndexB] &&\r\n                  (hasMatch =\r\n                      isEqual(aKey, bKey, indexA, matchIndexB, a, b, meta) &&\r\n                          isEqual(aValue, bValue, aKey, bKey, a, b, meta))) {\r\n                  matchedIndices[matchIndexB] = true;\r\n              }\r\n              matchIndexB++;\r\n          });\r\n          indexA++;\r\n          isValueEqual = hasMatch;\r\n      });\r\n      return isValueEqual;\r\n  }\r\n  /**\r\n   * Whether the `Map`s are equal in value, including circular references.\r\n   */\r\n  var areMapsEqualCircular = createIsCircular(areMapsEqual);\n\n  var OWNER = '_owner';\r\n  var hasOwnProperty = Object.prototype.hasOwnProperty;\r\n  /**\r\n   * Whether the objects are equal in value.\r\n   */\r\n  function areObjectsEqual(a, b, isEqual, meta) {\r\n      var keysA = Object.keys(a);\r\n      var index = keysA.length;\r\n      if (Object.keys(b).length !== index) {\r\n          return false;\r\n      }\r\n      var key;\r\n      // Decrementing `while` showed faster results than either incrementing or\r\n      // decrementing `for` loop and than an incrementing `while` loop. Declarative\r\n      // methods like `some` / `every` were not used to avoid incurring the garbage\r\n      // cost of anonymous callbacks.\r\n      while (index-- > 0) {\r\n          key = keysA[index];\r\n          if (key === OWNER) {\r\n              var reactElementA = !!a.$$typeof;\r\n              var reactElementB = !!b.$$typeof;\r\n              if ((reactElementA || reactElementB) && reactElementA !== reactElementB) {\r\n                  return false;\r\n              }\r\n          }\r\n          if (!hasOwnProperty.call(b, key) ||\r\n              !isEqual(a[key], b[key], key, key, a, b, meta)) {\r\n              return false;\r\n          }\r\n      }\r\n      return true;\r\n  }\r\n  /**\r\n   * Whether the objects are equal in value, including circular references.\r\n   */\r\n  var areObjectsEqualCircular = createIsCircular(areObjectsEqual);\n\n  /**\r\n   * Whether the regexps passed are equal in value.\r\n   *\r\n   * @NOTE\r\n   * This is a standalone function instead of done inline in the comparator\r\n   * to allow for overrides. An example of this would be supporting a\r\n   * pre-ES2015 environment where the `flags` property is not available.\r\n   */\r\n  function areRegExpsEqual(a, b) {\r\n      return a.source === b.source && a.flags === b.flags;\r\n  }\n\n  /**\r\n   * Whether the `Set`s are equal in value.\r\n   */\r\n  function areSetsEqual(a, b, isEqual, meta) {\r\n      var isValueEqual = a.size === b.size;\r\n      if (!isValueEqual) {\r\n          return false;\r\n      }\r\n      if (!a.size) {\r\n          return true;\r\n      }\r\n      // The use of `forEach()` is to avoid the transpilation cost of `for...of` comparisons, and\r\n      // the inability to control the performance of the resulting code. It also avoids excessive\r\n      // iteration compared to doing comparisons of `keys()` and `values()`. As a result, though,\r\n      // we cannot short-circuit the iterations; bookkeeping must be done to short-circuit the\r\n      // equality checks themselves.\r\n      var matchedIndices = {};\r\n      a.forEach(function (aValue, aKey) {\r\n          if (!isValueEqual) {\r\n              return;\r\n          }\r\n          var hasMatch = false;\r\n          var matchIndex = 0;\r\n          b.forEach(function (bValue, bKey) {\r\n              if (!hasMatch &&\r\n                  !matchedIndices[matchIndex] &&\r\n                  (hasMatch = isEqual(aValue, bValue, aKey, bKey, a, b, meta))) {\r\n                  matchedIndices[matchIndex] = true;\r\n              }\r\n              matchIndex++;\r\n          });\r\n          isValueEqual = hasMatch;\r\n      });\r\n      return isValueEqual;\r\n  }\r\n  /**\r\n   * Whether the `Set`s are equal in value, including circular references.\r\n   */\r\n  var areSetsEqualCircular = createIsCircular(areSetsEqual);\n\n  var DEFAULT_CONFIG = Object.freeze({\r\n      areArraysEqual: areArraysEqual,\r\n      areDatesEqual: areDatesEqual,\r\n      areMapsEqual: areMapsEqual,\r\n      areObjectsEqual: areObjectsEqual,\r\n      areRegExpsEqual: areRegExpsEqual,\r\n      areSetsEqual: areSetsEqual,\r\n      createIsNestedEqual: createDefaultIsNestedEqual,\r\n  });\r\n  var DEFAULT_CIRCULAR_CONFIG = Object.freeze({\r\n      areArraysEqual: areArraysEqualCircular,\r\n      areDatesEqual: areDatesEqual,\r\n      areMapsEqual: areMapsEqualCircular,\r\n      areObjectsEqual: areObjectsEqualCircular,\r\n      areRegExpsEqual: areRegExpsEqual,\r\n      areSetsEqual: areSetsEqualCircular,\r\n      createIsNestedEqual: createDefaultIsNestedEqual,\r\n  });\r\n  var isDeepEqual = createComparator(DEFAULT_CONFIG);\r\n  /**\r\n   * Whether the items passed are deeply-equal in value.\r\n   */\r\n  function deepEqual(a, b) {\r\n      return isDeepEqual(a, b, undefined);\r\n  }\r\n  var isShallowEqual = createComparator(merge(DEFAULT_CONFIG, { createIsNestedEqual: function () { return sameValueZeroEqual; } }));\r\n  /**\r\n   * Whether the items passed are shallowly-equal in value.\r\n   */\r\n  function shallowEqual(a, b) {\r\n      return isShallowEqual(a, b, undefined);\r\n  }\r\n  var isCircularDeepEqual = createComparator(DEFAULT_CIRCULAR_CONFIG);\r\n  /**\r\n   * Whether the items passed are deeply-equal in value, including circular references.\r\n   */\r\n  function circularDeepEqual(a, b) {\r\n      return isCircularDeepEqual(a, b, new WeakMap());\r\n  }\r\n  var isCircularShallowEqual = createComparator(merge(DEFAULT_CIRCULAR_CONFIG, {\r\n      createIsNestedEqual: function () { return sameValueZeroEqual; },\r\n  }));\r\n  /**\r\n   * Whether the items passed are shallowly-equal in value, including circular references.\r\n   */\r\n  function circularShallowEqual(a, b) {\r\n      return isCircularShallowEqual(a, b, new WeakMap());\r\n  }\r\n  /**\r\n   * Create a custom equality comparison method.\r\n   *\r\n   * This can be done to create very targeted comparisons in extreme hot-path scenarios\r\n   * where the standard methods are not performant enough, but can also be used to provide\r\n   * support for legacy environments that do not support expected features like\r\n   * `RegExp.prototype.flags` out of the box.\r\n   */\r\n  function createCustomEqual(getComparatorOptions) {\r\n      return createComparator(merge(DEFAULT_CONFIG, getComparatorOptions(DEFAULT_CONFIG)));\r\n  }\r\n  /**\r\n   * Create a custom equality comparison method that handles circular references. This is very\r\n   * similar to `createCustomEqual`, with the only difference being that `meta` expects to be\r\n   * populated with a `WeakMap`-like contract.\r\n   *\r\n   * This can be done to create very targeted comparisons in extreme hot-path scenarios\r\n   * where the standard methods are not performant enough, but can also be used to provide\r\n   * support for legacy environments that do not support expected features like\r\n   * `WeakMap` out of the box.\r\n   */\r\n  function createCustomCircularEqual(getComparatorOptions) {\r\n      var comparator = createComparator(merge(DEFAULT_CIRCULAR_CONFIG, getComparatorOptions(DEFAULT_CIRCULAR_CONFIG)));\r\n      return (function (a, b, meta) {\r\n          if (meta === void 0) { meta = new WeakMap(); }\r\n          return comparator(a, b, meta);\r\n      });\r\n  }\n\n  exports.circularDeepEqual = circularDeepEqual;\n  exports.circularShallowEqual = circularShallowEqual;\n  exports.createCustomCircularEqual = createCustomCircularEqual;\n  exports.createCustomEqual = createCustomEqual;\n  exports.deepEqual = deepEqual;\n  exports.sameValueZeroEqual = sameValueZeroEqual;\n  exports.shallowEqual = shallowEqual;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n//# sourceMappingURL=fast-equals.js.map\n","function r(e){var o,t,f=\"\";if(\"string\"==typeof e||\"number\"==typeof e)f+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var n=e.length;for(o=0;o<n;o++)e[o]&&(t=r(e[o]))&&(f&&(f+=\" \"),f+=t)}else for(t in e)e[t]&&(f&&(f+=\" \"),f+=t);return f}function e(){for(var e,o,t=0,f=\"\",n=arguments.length;t<n;t++)(e=arguments[t])&&(o=r(e))&&(f&&(f+=\" \"),f+=o);return f}module.exports=e,module.exports.clsx=e;","// this file was prevaled\nmodule.exports = function fastRGLPropsEqual(a, b, isEqualImpl) {\n  if (a === b) return true;\n  return a.className === b.className && isEqualImpl(a.style, b.style) && a.width === b.width && a.autoSize === b.autoSize && a.cols === b.cols && a.draggableCancel === b.draggableCancel && a.draggableHandle === b.draggableHandle && isEqualImpl(a.verticalCompact, b.verticalCompact) && isEqualImpl(a.compactType, b.compactType) && isEqualImpl(a.layout, b.layout) && isEqualImpl(a.margin, b.margin) && isEqualImpl(a.containerPadding, b.containerPadding) && a.rowHeight === b.rowHeight && a.maxRows === b.maxRows && a.isBounded === b.isBounded && a.isDraggable === b.isDraggable && a.isResizable === b.isResizable && a.allowOverlap === b.allowOverlap && a.preventCollision === b.preventCollision && a.useCSSTransforms === b.useCSSTransforms && a.transformScale === b.transformScale && a.isDroppable === b.isDroppable && isEqualImpl(a.resizeHandles, b.resizeHandles) && isEqualImpl(a.resizeHandle, b.resizeHandle) && a.onLayoutChange === b.onLayoutChange && a.onDragStart === b.onDragStart && a.onDrag === b.onDrag && a.onDragStop === b.onDragStop && a.onResizeStart === b.onResizeStart && a.onResize === b.onResize && a.onResizeStop === b.onResizeStop && a.onDrop === b.onDrop && isEqualImpl(a.droppingItem, b.droppingItem) && isEqualImpl(a.innerRef, b.innerRef);\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.bottom = bottom;\nexports.childrenEqual = childrenEqual;\nexports.cloneLayout = cloneLayout;\nexports.cloneLayoutItem = cloneLayoutItem;\nexports.collides = collides;\nexports.compact = compact;\nexports.compactItem = compactItem;\nexports.compactType = compactType;\nexports.correctBounds = correctBounds;\nexports.fastPositionEqual = fastPositionEqual;\nexports.fastRGLPropsEqual = void 0;\nexports.getAllCollisions = getAllCollisions;\nexports.getFirstCollision = getFirstCollision;\nexports.getLayoutItem = getLayoutItem;\nexports.getStatics = getStatics;\nexports.modifyLayout = modifyLayout;\nexports.moveElement = moveElement;\nexports.moveElementAwayFromCollision = moveElementAwayFromCollision;\nexports.noop = void 0;\nexports.perc = perc;\nexports.resizeItemInDirection = resizeItemInDirection;\nexports.setTopLeft = setTopLeft;\nexports.setTransform = setTransform;\nexports.sortLayoutItems = sortLayoutItems;\nexports.sortLayoutItemsByColRow = sortLayoutItemsByColRow;\nexports.sortLayoutItemsByRowCol = sortLayoutItemsByRowCol;\nexports.synchronizeLayoutWithChildren = synchronizeLayoutWithChildren;\nexports.validateLayout = validateLayout;\nexports.withLayoutItem = withLayoutItem;\nvar _fastEquals = require(\"fast-equals\");\nvar _react = _interopRequireDefault(require(\"react\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\n/*:: import type {\n  ChildrenArray as ReactChildrenArray,\n  Element as ReactElement\n} from \"react\";*/\n/*:: export type ResizeHandleAxis =\n  | \"s\"\n  | \"w\"\n  | \"e\"\n  | \"n\"\n  | \"sw\"\n  | \"nw\"\n  | \"se\"\n  | \"ne\";*/\n/*:: export type LayoutItem = {\n  w: number,\n  h: number,\n  x: number,\n  y: number,\n  i: string,\n  minW?: number,\n  minH?: number,\n  maxW?: number,\n  maxH?: number,\n  moved?: boolean,\n  static?: boolean,\n  isDraggable?: ?boolean,\n  isResizable?: ?boolean,\n  resizeHandles?: Array<ResizeHandleAxis>,\n  isBounded?: ?boolean\n};*/\n/*:: export type Layout = $ReadOnlyArray<LayoutItem>;*/\n/*:: export type Position = {\n  left: number,\n  top: number,\n  width: number,\n  height: number\n};*/\n/*:: export type ReactDraggableCallbackData = {\n  node: HTMLElement,\n  x?: number,\n  y?: number,\n  deltaX: number,\n  deltaY: number,\n  lastX?: number,\n  lastY?: number\n};*/\n/*:: export type PartialPosition = { left: number, top: number };*/\n/*:: export type DroppingPosition = { left: number, top: number, e: Event };*/\n/*:: export type Size = { width: number, height: number };*/\n/*:: export type GridDragEvent = {\n  e: Event,\n  node: HTMLElement,\n  newPosition: PartialPosition\n};*/\n/*:: export type GridResizeEvent = {\n  e: Event,\n  node: HTMLElement,\n  size: Size,\n  handle: string\n};*/\n/*:: export type DragOverEvent = MouseEvent & {\n  nativeEvent: {\n    layerX: number,\n    layerY: number,\n    ...Event\n  }\n};*/\n/*:: export type Pick<FromType, Properties: { [string]: 0 }> = $Exact<\n  $ObjMapi<Properties, <K, V>(k: K, v: V) => $ElementType<FromType, K>>\n>;*/\n// Helpful port from TS\n/*:: type REl = ReactElement<any>;*/\n/*:: export type ReactChildren = ReactChildrenArray<REl>;*/\n/*:: export type EventCallback = (\n  Layout,\n  oldItem: ?LayoutItem,\n  newItem: ?LayoutItem,\n  placeholder: ?LayoutItem,\n  Event,\n  ?HTMLElement\n) => void;*/\n// All callbacks are of the signature (layout, oldItem, newItem, placeholder, e).\n/*:: export type CompactType = ?(\"horizontal\" | \"vertical\");*/\nconst isProduction = process.env.NODE_ENV === \"production\";\nconst DEBUG = false;\n\n/**\n * Return the bottom coordinate of the layout.\n *\n * @param  {Array} layout Layout array.\n * @return {Number}       Bottom coordinate.\n */\nfunction bottom(layout /*: Layout*/) /*: number*/{\n  let max = 0,\n    bottomY;\n  for (let i = 0, len = layout.length; i < len; i++) {\n    bottomY = layout[i].y + layout[i].h;\n    if (bottomY > max) max = bottomY;\n  }\n  return max;\n}\nfunction cloneLayout(layout /*: Layout*/) /*: Layout*/{\n  const newLayout = Array(layout.length);\n  for (let i = 0, len = layout.length; i < len; i++) {\n    newLayout[i] = cloneLayoutItem(layout[i]);\n  }\n  return newLayout;\n}\n\n// Modify a layoutItem inside a layout. Returns a new Layout,\n// does not mutate. Carries over all other LayoutItems unmodified.\nfunction modifyLayout(layout /*: Layout*/, layoutItem /*: LayoutItem*/) /*: Layout*/{\n  const newLayout = Array(layout.length);\n  for (let i = 0, len = layout.length; i < len; i++) {\n    if (layoutItem.i === layout[i].i) {\n      newLayout[i] = layoutItem;\n    } else {\n      newLayout[i] = layout[i];\n    }\n  }\n  return newLayout;\n}\n\n// Function to be called to modify a layout item.\n// Does defensive clones to ensure the layout is not modified.\nfunction withLayoutItem(layout /*: Layout*/, itemKey /*: string*/, cb /*: LayoutItem => LayoutItem*/) /*: [Layout, ?LayoutItem]*/{\n  let item = getLayoutItem(layout, itemKey);\n  if (!item) return [layout, null];\n  item = cb(cloneLayoutItem(item)); // defensive clone then modify\n  // FIXME could do this faster if we already knew the index\n  layout = modifyLayout(layout, item);\n  return [layout, item];\n}\n\n// Fast path to cloning, since this is monomorphic\nfunction cloneLayoutItem(layoutItem /*: LayoutItem*/) /*: LayoutItem*/{\n  return {\n    w: layoutItem.w,\n    h: layoutItem.h,\n    x: layoutItem.x,\n    y: layoutItem.y,\n    i: layoutItem.i,\n    minW: layoutItem.minW,\n    maxW: layoutItem.maxW,\n    minH: layoutItem.minH,\n    maxH: layoutItem.maxH,\n    moved: Boolean(layoutItem.moved),\n    static: Boolean(layoutItem.static),\n    // These can be null/undefined\n    isDraggable: layoutItem.isDraggable,\n    isResizable: layoutItem.isResizable,\n    resizeHandles: layoutItem.resizeHandles,\n    isBounded: layoutItem.isBounded\n  };\n}\n\n/**\n * Comparing React `children` is a bit difficult. This is a good way to compare them.\n * This will catch differences in keys, order, and length.\n */\nfunction childrenEqual(a /*: ReactChildren*/, b /*: ReactChildren*/) /*: boolean*/{\n  return (0, _fastEquals.deepEqual)(_react.default.Children.map(a, c => c?.key), _react.default.Children.map(b, c => c?.key)) && (0, _fastEquals.deepEqual)(_react.default.Children.map(a, c => c?.props[\"data-grid\"]), _react.default.Children.map(b, c => c?.props[\"data-grid\"]));\n}\n\n/**\n * See `fastRGLPropsEqual.js`.\n * We want this to run as fast as possible - it is called often - and to be\n * resilient to new props that we add. So rather than call lodash.isEqual,\n * which isn't suited to comparing props very well, we use this specialized\n * function in conjunction with preval to generate the fastest possible comparison\n * function, tuned for exactly our props.\n */\n/*:: type FastRGLPropsEqual = (Object, Object, Function) => boolean;*/\nconst fastRGLPropsEqual /*: FastRGLPropsEqual*/ = exports.fastRGLPropsEqual = require(\"./fastRGLPropsEqual\");\n\n// Like the above, but a lot simpler.\nfunction fastPositionEqual(a /*: Position*/, b /*: Position*/) /*: boolean*/{\n  return a.left === b.left && a.top === b.top && a.width === b.width && a.height === b.height;\n}\n\n/**\n * Given two layoutitems, check if they collide.\n */\nfunction collides(l1 /*: LayoutItem*/, l2 /*: LayoutItem*/) /*: boolean*/{\n  if (l1.i === l2.i) return false; // same element\n  if (l1.x + l1.w <= l2.x) return false; // l1 is left of l2\n  if (l1.x >= l2.x + l2.w) return false; // l1 is right of l2\n  if (l1.y + l1.h <= l2.y) return false; // l1 is above l2\n  if (l1.y >= l2.y + l2.h) return false; // l1 is below l2\n  return true; // boxes overlap\n}\n\n/**\n * Given a layout, compact it. This involves going down each y coordinate and removing gaps\n * between items.\n *\n * Does not modify layout items (clones). Creates a new layout array.\n *\n * @param  {Array} layout Layout.\n * @param  {Boolean} verticalCompact Whether or not to compact the layout\n *   vertically.\n * @param  {Boolean} allowOverlap When `true`, allows overlapping grid items.\n * @return {Array}       Compacted Layout.\n */\nfunction compact(layout /*: Layout*/, compactType /*: CompactType*/, cols /*: number*/, allowOverlap /*: ?boolean*/) /*: Layout*/{\n  // Statics go in the compareWith array right away so items flow around them.\n  const compareWith = getStatics(layout);\n  // We go through the items by row and column.\n  const sorted = sortLayoutItems(layout, compactType);\n  // Holding for new items.\n  const out = Array(layout.length);\n  for (let i = 0, len = sorted.length; i < len; i++) {\n    let l = cloneLayoutItem(sorted[i]);\n\n    // Don't move static elements\n    if (!l.static) {\n      l = compactItem(compareWith, l, compactType, cols, sorted, allowOverlap);\n\n      // Add to comparison array. We only collide with items before this one.\n      // Statics are already in this array.\n      compareWith.push(l);\n    }\n\n    // Add to output array to make sure they still come out in the right order.\n    out[layout.indexOf(sorted[i])] = l;\n\n    // Clear moved flag, if it exists.\n    l.moved = false;\n  }\n  return out;\n}\nconst heightWidth = {\n  x: \"w\",\n  y: \"h\"\n};\n/**\n * Before moving item down, it will check if the movement will cause collisions and move those items down before.\n */\nfunction resolveCompactionCollision(layout /*: Layout*/, item /*: LayoutItem*/, moveToCoord /*: number*/, axis /*: \"x\" | \"y\"*/) {\n  const sizeProp = heightWidth[axis];\n  item[axis] += 1;\n  const itemIndex = layout.map(layoutItem => {\n    return layoutItem.i;\n  }).indexOf(item.i);\n\n  // Go through each item we collide with.\n  for (let i = itemIndex + 1; i < layout.length; i++) {\n    const otherItem = layout[i];\n    // Ignore static items\n    if (otherItem.static) continue;\n\n    // Optimization: we can break early if we know we're past this el\n    // We can do this b/c it's a sorted layout\n    if (otherItem.y > item.y + item.h) break;\n    if (collides(item, otherItem)) {\n      resolveCompactionCollision(layout, otherItem, moveToCoord + item[sizeProp], axis);\n    }\n  }\n  item[axis] = moveToCoord;\n}\n\n/**\n * Compact an item in the layout.\n *\n * Modifies item.\n *\n */\nfunction compactItem(compareWith /*: Layout*/, l /*: LayoutItem*/, compactType /*: CompactType*/, cols /*: number*/, fullLayout /*: Layout*/, allowOverlap /*: ?boolean*/) /*: LayoutItem*/{\n  const compactV = compactType === \"vertical\";\n  const compactH = compactType === \"horizontal\";\n  if (compactV) {\n    // Bottom 'y' possible is the bottom of the layout.\n    // This allows you to do nice stuff like specify {y: Infinity}\n    // This is here because the layout must be sorted in order to get the correct bottom `y`.\n    l.y = Math.min(bottom(compareWith), l.y);\n    // Move the element up as far as it can go without colliding.\n    while (l.y > 0 && !getFirstCollision(compareWith, l)) {\n      l.y--;\n    }\n  } else if (compactH) {\n    // Move the element left as far as it can go without colliding.\n    while (l.x > 0 && !getFirstCollision(compareWith, l)) {\n      l.x--;\n    }\n  }\n\n  // Move it down, and keep moving it down if it's colliding.\n  let collides;\n  // Checking the compactType null value to avoid breaking the layout when overlapping is allowed.\n  while ((collides = getFirstCollision(compareWith, l)) && !(compactType === null && allowOverlap)) {\n    if (compactH) {\n      resolveCompactionCollision(fullLayout, l, collides.x + collides.w, \"x\");\n    } else {\n      resolveCompactionCollision(fullLayout, l, collides.y + collides.h, \"y\");\n    }\n    // Since we can't grow without bounds horizontally, if we've overflown, let's move it down and try again.\n    if (compactH && l.x + l.w > cols) {\n      l.x = cols - l.w;\n      l.y++;\n      // ALso move element as left as we can\n      while (l.x > 0 && !getFirstCollision(compareWith, l)) {\n        l.x--;\n      }\n    }\n  }\n\n  // Ensure that there are no negative positions\n  l.y = Math.max(l.y, 0);\n  l.x = Math.max(l.x, 0);\n  return l;\n}\n\n/**\n * Given a layout, make sure all elements fit within its bounds.\n *\n * Modifies layout items.\n *\n * @param  {Array} layout Layout array.\n * @param  {Number} bounds Number of columns.\n */\nfunction correctBounds(layout /*: Layout*/, bounds /*: { cols: number }*/) /*: Layout*/{\n  const collidesWith = getStatics(layout);\n  for (let i = 0, len = layout.length; i < len; i++) {\n    const l = layout[i];\n    // Overflows right\n    if (l.x + l.w > bounds.cols) l.x = bounds.cols - l.w;\n    // Overflows left\n    if (l.x < 0) {\n      l.x = 0;\n      l.w = bounds.cols;\n    }\n    if (!l.static) collidesWith.push(l);else {\n      // If this is static and collides with other statics, we must move it down.\n      // We have to do something nicer than just letting them overlap.\n      while (getFirstCollision(collidesWith, l)) {\n        l.y++;\n      }\n    }\n  }\n  return layout;\n}\n\n/**\n * Get a layout item by ID. Used so we can override later on if necessary.\n *\n * @param  {Array}  layout Layout array.\n * @param  {String} id     ID\n * @return {LayoutItem}    Item at ID.\n */\nfunction getLayoutItem(layout /*: Layout*/, id /*: string*/) /*: ?LayoutItem*/{\n  for (let i = 0, len = layout.length; i < len; i++) {\n    if (layout[i].i === id) return layout[i];\n  }\n}\n\n/**\n * Returns the first item this layout collides with.\n * It doesn't appear to matter which order we approach this from, although\n * perhaps that is the wrong thing to do.\n *\n * @param  {Object} layoutItem Layout item.\n * @return {Object|undefined}  A colliding layout item, or undefined.\n */\nfunction getFirstCollision(layout /*: Layout*/, layoutItem /*: LayoutItem*/) /*: ?LayoutItem*/{\n  for (let i = 0, len = layout.length; i < len; i++) {\n    if (collides(layout[i], layoutItem)) return layout[i];\n  }\n}\nfunction getAllCollisions(layout /*: Layout*/, layoutItem /*: LayoutItem*/) /*: Array<LayoutItem>*/{\n  return layout.filter(l => collides(l, layoutItem));\n}\n\n/**\n * Get all static elements.\n * @param  {Array} layout Array of layout objects.\n * @return {Array}        Array of static layout items..\n */\nfunction getStatics(layout /*: Layout*/) /*: Array<LayoutItem>*/{\n  return layout.filter(l => l.static);\n}\n\n/**\n * Move an element. Responsible for doing cascading movements of other elements.\n *\n * Modifies layout items.\n *\n * @param  {Array}      layout            Full layout to modify.\n * @param  {LayoutItem} l                 element to move.\n * @param  {Number}     [x]               X position in grid units.\n * @param  {Number}     [y]               Y position in grid units.\n */\nfunction moveElement(layout /*: Layout*/, l /*: LayoutItem*/, x /*: ?number*/, y /*: ?number*/, isUserAction /*: ?boolean*/, preventCollision /*: ?boolean*/, compactType /*: CompactType*/, cols /*: number*/, allowOverlap /*: ?boolean*/) /*: Layout*/{\n  // If this is static and not explicitly enabled as draggable,\n  // no move is possible, so we can short-circuit this immediately.\n  if (l.static && l.isDraggable !== true) return layout;\n\n  // Short-circuit if nothing to do.\n  if (l.y === y && l.x === x) return layout;\n  log(`Moving element ${l.i} to [${String(x)},${String(y)}] from [${l.x},${l.y}]`);\n  const oldX = l.x;\n  const oldY = l.y;\n\n  // This is quite a bit faster than extending the object\n  if (typeof x === \"number\") l.x = x;\n  if (typeof y === \"number\") l.y = y;\n  l.moved = true;\n\n  // If this collides with anything, move it.\n  // When doing this comparison, we have to sort the items we compare with\n  // to ensure, in the case of multiple collisions, that we're getting the\n  // nearest collision.\n  let sorted = sortLayoutItems(layout, compactType);\n  const movingUp = compactType === \"vertical\" && typeof y === \"number\" ? oldY >= y : compactType === \"horizontal\" && typeof x === \"number\" ? oldX >= x : false;\n  // $FlowIgnore acceptable modification of read-only array as it was recently cloned\n  if (movingUp) sorted = sorted.reverse();\n  const collisions = getAllCollisions(sorted, l);\n  const hasCollisions = collisions.length > 0;\n\n  // We may have collisions. We can short-circuit if we've turned off collisions or\n  // allowed overlap.\n  if (hasCollisions && allowOverlap) {\n    // Easy, we don't need to resolve collisions. But we *did* change the layout,\n    // so clone it on the way out.\n    return cloneLayout(layout);\n  } else if (hasCollisions && preventCollision) {\n    // If we are preventing collision but not allowing overlap, we need to\n    // revert the position of this element so it goes to where it came from, rather\n    // than the user's desired location.\n    log(`Collision prevented on ${l.i}, reverting.`);\n    l.x = oldX;\n    l.y = oldY;\n    l.moved = false;\n    return layout; // did not change so don't clone\n  }\n\n  // Move each item that collides away from this element.\n  for (let i = 0, len = collisions.length; i < len; i++) {\n    const collision = collisions[i];\n    log(`Resolving collision between ${l.i} at [${l.x},${l.y}] and ${collision.i} at [${collision.x},${collision.y}]`);\n\n    // Short circuit so we can't infinite loop\n    if (collision.moved) continue;\n\n    // Don't move static items - we have to move *this* element away\n    if (collision.static) {\n      layout = moveElementAwayFromCollision(layout, collision, l, isUserAction, compactType, cols);\n    } else {\n      layout = moveElementAwayFromCollision(layout, l, collision, isUserAction, compactType, cols);\n    }\n  }\n  return layout;\n}\n\n/**\n * This is where the magic needs to happen - given a collision, move an element away from the collision.\n * We attempt to move it up if there's room, otherwise it goes below.\n *\n * @param  {Array} layout            Full layout to modify.\n * @param  {LayoutItem} collidesWith Layout item we're colliding with.\n * @param  {LayoutItem} itemToMove   Layout item we're moving.\n */\nfunction moveElementAwayFromCollision(layout /*: Layout*/, collidesWith /*: LayoutItem*/, itemToMove /*: LayoutItem*/, isUserAction /*: ?boolean*/, compactType /*: CompactType*/, cols /*: number*/) /*: Layout*/{\n  const compactH = compactType === \"horizontal\";\n  // Compact vertically if not set to horizontal\n  const compactV = compactType === \"vertical\";\n  const preventCollision = collidesWith.static; // we're already colliding (not for static items)\n\n  // If there is enough space above the collision to put this element, move it there.\n  // We only do this on the main collision as this can get funky in cascades and cause\n  // unwanted swapping behavior.\n  if (isUserAction) {\n    // Reset isUserAction flag because we're not in the main collision anymore.\n    isUserAction = false;\n\n    // Make a mock item so we don't modify the item here, only modify in moveElement.\n    const fakeItem /*: LayoutItem*/ = {\n      x: compactH ? Math.max(collidesWith.x - itemToMove.w, 0) : itemToMove.x,\n      y: compactV ? Math.max(collidesWith.y - itemToMove.h, 0) : itemToMove.y,\n      w: itemToMove.w,\n      h: itemToMove.h,\n      i: \"-1\"\n    };\n    const firstCollision = getFirstCollision(layout, fakeItem);\n    const collisionNorth = firstCollision && firstCollision.y + firstCollision.h > collidesWith.y;\n    const collisionWest = firstCollision && collidesWith.x + collidesWith.w > firstCollision.x;\n\n    // No collision? If so, we can go up there; otherwise, we'll end up moving down as normal\n    if (!firstCollision) {\n      log(`Doing reverse collision on ${itemToMove.i} up to [${fakeItem.x},${fakeItem.y}].`);\n      return moveElement(layout, itemToMove, compactH ? fakeItem.x : undefined, compactV ? fakeItem.y : undefined, isUserAction, preventCollision, compactType, cols);\n    } else if (collisionNorth && compactV) {\n      return moveElement(layout, itemToMove, undefined, collidesWith.y + 1, isUserAction, preventCollision, compactType, cols);\n    } else if (collisionNorth && compactType == null) {\n      collidesWith.y = itemToMove.y;\n      itemToMove.y = itemToMove.y + itemToMove.h;\n      return layout;\n    } else if (collisionWest && compactH) {\n      return moveElement(layout, collidesWith, itemToMove.x, undefined, isUserAction, preventCollision, compactType, cols);\n    }\n  }\n  const newX = compactH ? itemToMove.x + 1 : undefined;\n  const newY = compactV ? itemToMove.y + 1 : undefined;\n  if (newX == null && newY == null) {\n    return layout;\n  }\n  return moveElement(layout, itemToMove, compactH ? itemToMove.x + 1 : undefined, compactV ? itemToMove.y + 1 : undefined, isUserAction, preventCollision, compactType, cols);\n}\n\n/**\n * Helper to convert a number to a percentage string.\n *\n * @param  {Number} num Any number\n * @return {String}     That number as a percentage.\n */\nfunction perc(num /*: number*/) /*: string*/{\n  return num * 100 + \"%\";\n}\n\n/**\n * Helper functions to constrain dimensions of a GridItem\n */\nconst constrainWidth = (left /*: number*/, currentWidth /*: number*/, newWidth /*: number*/, containerWidth /*: number*/) => {\n  return left + newWidth > containerWidth ? currentWidth : newWidth;\n};\nconst constrainHeight = (top /*: number*/, currentHeight /*: number*/, newHeight /*: number*/) => {\n  return top < 0 ? currentHeight : newHeight;\n};\nconst constrainLeft = (left /*: number*/) => Math.max(0, left);\nconst constrainTop = (top /*: number*/) => Math.max(0, top);\nconst resizeNorth = (currentSize, _ref, _containerWidth) => {\n  let {\n    left,\n    height,\n    width\n  } = _ref;\n  const top = currentSize.top - (height - currentSize.height);\n  return {\n    left,\n    width,\n    height: constrainHeight(top, currentSize.height, height),\n    top: constrainTop(top)\n  };\n};\nconst resizeEast = (currentSize, _ref2, containerWidth) => {\n  let {\n    top,\n    left,\n    height,\n    width\n  } = _ref2;\n  return {\n    top,\n    height,\n    width: constrainWidth(currentSize.left, currentSize.width, width, containerWidth),\n    left: constrainLeft(left)\n  };\n};\nconst resizeWest = (currentSize, _ref3, containerWidth) => {\n  let {\n    top,\n    height,\n    width\n  } = _ref3;\n  const left = currentSize.left - (width - currentSize.width);\n  return {\n    height,\n    width: left < 0 ? currentSize.width : constrainWidth(currentSize.left, currentSize.width, width, containerWidth),\n    top: constrainTop(top),\n    left: constrainLeft(left)\n  };\n};\nconst resizeSouth = (currentSize, _ref4, containerWidth) => {\n  let {\n    top,\n    left,\n    height,\n    width\n  } = _ref4;\n  return {\n    width,\n    left,\n    height: constrainHeight(top, currentSize.height, height),\n    top: constrainTop(top)\n  };\n};\nconst resizeNorthEast = function () {\n  return resizeNorth(arguments.length <= 0 ? undefined : arguments[0], resizeEast(...arguments), arguments.length <= 2 ? undefined : arguments[2]);\n};\nconst resizeNorthWest = function () {\n  return resizeNorth(arguments.length <= 0 ? undefined : arguments[0], resizeWest(...arguments), arguments.length <= 2 ? undefined : arguments[2]);\n};\nconst resizeSouthEast = function () {\n  return resizeSouth(arguments.length <= 0 ? undefined : arguments[0], resizeEast(...arguments), arguments.length <= 2 ? undefined : arguments[2]);\n};\nconst resizeSouthWest = function () {\n  return resizeSouth(arguments.length <= 0 ? undefined : arguments[0], resizeWest(...arguments), arguments.length <= 2 ? undefined : arguments[2]);\n};\nconst ordinalResizeHandlerMap = {\n  n: resizeNorth,\n  ne: resizeNorthEast,\n  e: resizeEast,\n  se: resizeSouthEast,\n  s: resizeSouth,\n  sw: resizeSouthWest,\n  w: resizeWest,\n  nw: resizeNorthWest\n};\n\n/**\n * Helper for clamping width and position when resizing an item.\n */\nfunction resizeItemInDirection(direction /*: ResizeHandleAxis*/, currentSize /*: Position*/, newSize /*: Position*/, containerWidth /*: number*/) /*: Position*/{\n  const ordinalHandler = ordinalResizeHandlerMap[direction];\n  // Shouldn't be possible given types; that said, don't fail hard\n  if (!ordinalHandler) return newSize;\n  return ordinalHandler(currentSize, {\n    ...currentSize,\n    ...newSize\n  }, containerWidth);\n}\nfunction setTransform(_ref5 /*:: */) /*: Object*/{\n  let {\n    top,\n    left,\n    width,\n    height\n  } /*: Position*/ = _ref5 /*: Position*/;\n  // Replace unitless items with px\n  const translate = `translate(${left}px,${top}px)`;\n  return {\n    transform: translate,\n    WebkitTransform: translate,\n    MozTransform: translate,\n    msTransform: translate,\n    OTransform: translate,\n    width: `${width}px`,\n    height: `${height}px`,\n    position: \"absolute\"\n  };\n}\nfunction setTopLeft(_ref6 /*:: */) /*: Object*/{\n  let {\n    top,\n    left,\n    width,\n    height\n  } /*: Position*/ = _ref6 /*: Position*/;\n  return {\n    top: `${top}px`,\n    left: `${left}px`,\n    width: `${width}px`,\n    height: `${height}px`,\n    position: \"absolute\"\n  };\n}\n\n/**\n * Get layout items sorted from top left to right and down.\n *\n * @return {Array} Array of layout objects.\n * @return {Array}        Layout, sorted static items first.\n */\nfunction sortLayoutItems(layout /*: Layout*/, compactType /*: CompactType*/) /*: Layout*/{\n  if (compactType === \"horizontal\") return sortLayoutItemsByColRow(layout);\n  if (compactType === \"vertical\") return sortLayoutItemsByRowCol(layout);else return layout;\n}\n\n/**\n * Sort layout items by row ascending and column ascending.\n *\n * Does not modify Layout.\n */\nfunction sortLayoutItemsByRowCol(layout /*: Layout*/) /*: Layout*/{\n  // Slice to clone array as sort modifies\n  return layout.slice(0).sort(function (a, b) {\n    if (a.y > b.y || a.y === b.y && a.x > b.x) {\n      return 1;\n    } else if (a.y === b.y && a.x === b.x) {\n      // Without this, we can get different sort results in IE vs. Chrome/FF\n      return 0;\n    }\n    return -1;\n  });\n}\n\n/**\n * Sort layout items by column ascending then row ascending.\n *\n * Does not modify Layout.\n */\nfunction sortLayoutItemsByColRow(layout /*: Layout*/) /*: Layout*/{\n  return layout.slice(0).sort(function (a, b) {\n    if (a.x > b.x || a.x === b.x && a.y > b.y) {\n      return 1;\n    }\n    return -1;\n  });\n}\n\n/**\n * Generate a layout using the initialLayout and children as a template.\n * Missing entries will be added, extraneous ones will be truncated.\n *\n * Does not modify initialLayout.\n *\n * @param  {Array}  initialLayout Layout passed in through props.\n * @param  {String} breakpoint    Current responsive breakpoint.\n * @param  {?String} compact      Compaction option.\n * @return {Array}                Working layout.\n */\nfunction synchronizeLayoutWithChildren(initialLayout /*: Layout*/, children /*: ReactChildren*/, cols /*: number*/, compactType /*: CompactType*/, allowOverlap /*: ?boolean*/) /*: Layout*/{\n  initialLayout = initialLayout || [];\n\n  // Generate one layout item per child.\n  const layout /*: LayoutItem[]*/ = [];\n  _react.default.Children.forEach(children, (child /*: ReactElement<any>*/) => {\n    // Child may not exist\n    if (child?.key == null) return;\n    const exists = getLayoutItem(initialLayout, String(child.key));\n    const g = child.props[\"data-grid\"];\n    // Don't overwrite the layout item if it's already in the initial layout.\n    // If it has a `data-grid` property, prefer that over what's in the layout.\n    if (exists && g == null) {\n      layout.push(cloneLayoutItem(exists));\n    } else {\n      // Hey, this item has a data-grid property, use it.\n      if (g) {\n        if (!isProduction) {\n          validateLayout([g], \"ReactGridLayout.children\");\n        }\n        // FIXME clone not really necessary here\n        layout.push(cloneLayoutItem({\n          ...g,\n          i: child.key\n        }));\n      } else {\n        // Nothing provided: ensure this is added to the bottom\n        // FIXME clone not really necessary here\n        layout.push(cloneLayoutItem({\n          w: 1,\n          h: 1,\n          x: 0,\n          y: bottom(layout),\n          i: String(child.key)\n        }));\n      }\n    }\n  });\n\n  // Correct the layout.\n  const correctedLayout = correctBounds(layout, {\n    cols: cols\n  });\n  return allowOverlap ? correctedLayout : compact(correctedLayout, compactType, cols);\n}\n\n/**\n * Validate a layout. Throws errors.\n *\n * @param  {Array}  layout        Array of layout items.\n * @param  {String} [contextName] Context name for errors.\n * @throw  {Error}                Validation error.\n */\nfunction validateLayout(layout /*: Layout*/) /*: void*/{\n  let contextName /*: string*/ = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"Layout\";\n  const subProps = [\"x\", \"y\", \"w\", \"h\"];\n  if (!Array.isArray(layout)) throw new Error(contextName + \" must be an array!\");\n  for (let i = 0, len = layout.length; i < len; i++) {\n    const item = layout[i];\n    for (let j = 0; j < subProps.length; j++) {\n      const key = subProps[j];\n      const value = item[key];\n      if (typeof value !== \"number\" || Number.isNaN(value)) {\n        throw new Error(`ReactGridLayout: ${contextName}[${i}].${key} must be a number! Received: ${value} (${typeof value})`);\n      }\n    }\n    if (typeof item.i !== \"undefined\" && typeof item.i !== \"string\") {\n      throw new Error(`ReactGridLayout: ${contextName}[${i}].i must be a string! Received: ${item.i} (${typeof item.i})`);\n    }\n  }\n}\n\n// Legacy support for verticalCompact: false\nfunction compactType(props /*: ?{ verticalCompact: boolean, compactType: CompactType }*/) /*: CompactType*/{\n  const {\n    verticalCompact,\n    compactType\n  } = props || {};\n  return verticalCompact === false ? null : compactType;\n}\nfunction log() {\n  if (!DEBUG) return;\n  // eslint-disable-next-line no-console\n  console.log(...arguments);\n}\nconst noop = () => {};\nexports.noop = noop;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.calcGridColWidth = calcGridColWidth;\nexports.calcGridItemPosition = calcGridItemPosition;\nexports.calcGridItemWHPx = calcGridItemWHPx;\nexports.calcWH = calcWH;\nexports.calcXY = calcXY;\nexports.clamp = clamp;\n/*:: import type { Position } from \"./utils\";*/\n/*:: export type PositionParams = {\n  margin: [number, number],\n  containerPadding: [number, number],\n  containerWidth: number,\n  cols: number,\n  rowHeight: number,\n  maxRows: number\n};*/\n// Helper for generating column width\nfunction calcGridColWidth(positionParams /*: PositionParams*/) /*: number*/{\n  const {\n    margin,\n    containerPadding,\n    containerWidth,\n    cols\n  } = positionParams;\n  return (containerWidth - margin[0] * (cols - 1) - containerPadding[0] * 2) / cols;\n}\n\n// This can either be called:\n// calcGridItemWHPx(w, colWidth, margin[0])\n// or\n// calcGridItemWHPx(h, rowHeight, margin[1])\nfunction calcGridItemWHPx(gridUnits /*: number*/, colOrRowSize /*: number*/, marginPx /*: number*/) /*: number*/{\n  // 0 * Infinity === NaN, which causes problems with resize contraints\n  if (!Number.isFinite(gridUnits)) return gridUnits;\n  return Math.round(colOrRowSize * gridUnits + Math.max(0, gridUnits - 1) * marginPx);\n}\n\n/**\n * Return position on the page given an x, y, w, h.\n * left, top, width, height are all in pixels.\n * @param  {PositionParams} positionParams  Parameters of grid needed for coordinates calculations.\n * @param  {Number}  x                      X coordinate in grid units.\n * @param  {Number}  y                      Y coordinate in grid units.\n * @param  {Number}  w                      W coordinate in grid units.\n * @param  {Number}  h                      H coordinate in grid units.\n * @return {Position}                       Object containing coords.\n */\nfunction calcGridItemPosition(positionParams /*: PositionParams*/, x /*: number*/, y /*: number*/, w /*: number*/, h /*: number*/, state /*: ?Object*/) /*: Position*/{\n  const {\n    margin,\n    containerPadding,\n    rowHeight\n  } = positionParams;\n  const colWidth = calcGridColWidth(positionParams);\n  const out = {};\n\n  // If resizing, use the exact width and height as returned from resizing callbacks.\n  if (state && state.resizing) {\n    out.width = Math.round(state.resizing.width);\n    out.height = Math.round(state.resizing.height);\n  }\n  // Otherwise, calculate from grid units.\n  else {\n    out.width = calcGridItemWHPx(w, colWidth, margin[0]);\n    out.height = calcGridItemWHPx(h, rowHeight, margin[1]);\n  }\n\n  // If dragging, use the exact width and height as returned from dragging callbacks.\n  if (state && state.dragging) {\n    out.top = Math.round(state.dragging.top);\n    out.left = Math.round(state.dragging.left);\n  } else if (state && state.resizing && typeof state.resizing.top === \"number\" && typeof state.resizing.left === \"number\") {\n    out.top = Math.round(state.resizing.top);\n    out.left = Math.round(state.resizing.left);\n  }\n  // Otherwise, calculate from grid units.\n  else {\n    out.top = Math.round((rowHeight + margin[1]) * y + containerPadding[1]);\n    out.left = Math.round((colWidth + margin[0]) * x + containerPadding[0]);\n  }\n  return out;\n}\n\n/**\n * Translate x and y coordinates from pixels to grid units.\n * @param  {PositionParams} positionParams  Parameters of grid needed for coordinates calculations.\n * @param  {Number} top                     Top position (relative to parent) in pixels.\n * @param  {Number} left                    Left position (relative to parent) in pixels.\n * @param  {Number} w                       W coordinate in grid units.\n * @param  {Number} h                       H coordinate in grid units.\n * @return {Object}                         x and y in grid units.\n */\nfunction calcXY(positionParams /*: PositionParams*/, top /*: number*/, left /*: number*/, w /*: number*/, h /*: number*/) /*: { x: number, y: number }*/{\n  const {\n    margin,\n    containerPadding,\n    cols,\n    rowHeight,\n    maxRows\n  } = positionParams;\n  const colWidth = calcGridColWidth(positionParams);\n\n  // left = containerPaddingX + x * (colWidth + marginX)\n  // x * (colWidth + marginX) = left - containerPaddingX\n  // x = (left - containerPaddingX) / (colWidth + marginX)\n  let x = Math.round((left - containerPadding[0]) / (colWidth + margin[0]));\n  let y = Math.round((top - containerPadding[1]) / (rowHeight + margin[1]));\n\n  // Capping\n  x = clamp(x, 0, cols - w);\n  y = clamp(y, 0, maxRows - h);\n  return {\n    x,\n    y\n  };\n}\n\n/**\n * Given a height and width in pixel values, calculate grid units.\n * @param  {PositionParams} positionParams  Parameters of grid needed for coordinates calcluations.\n * @param  {Number} height                  Height in pixels.\n * @param  {Number} width                   Width in pixels.\n * @param  {Number} x                       X coordinate in grid units.\n * @param  {Number} y                       Y coordinate in grid units.\n * @param {String} handle Resize Handle.\n * @return {Object}                         w, h as grid units.\n */\nfunction calcWH(positionParams /*: PositionParams*/, width /*: number*/, height /*: number*/, x /*: number*/, y /*: number*/, handle /*: string*/) /*: { w: number, h: number }*/{\n  const {\n    margin,\n    maxRows,\n    cols,\n    rowHeight\n  } = positionParams;\n  const colWidth = calcGridColWidth(positionParams);\n\n  // width = colWidth * w - (margin * (w - 1))\n  // ...\n  // w = (width + margin) / (colWidth + margin)\n  let w = Math.round((width + margin[0]) / (colWidth + margin[0]));\n  let h = Math.round((height + margin[1]) / (rowHeight + margin[1]));\n\n  // Capping\n  let _w = clamp(w, 0, cols - x);\n  let _h = clamp(h, 0, maxRows - y);\n  if ([\"sw\", \"w\", \"nw\"].indexOf(handle) !== -1) {\n    _w = clamp(w, 0, cols);\n  }\n  if ([\"nw\", \"n\", \"ne\"].indexOf(handle) !== -1) {\n    _h = clamp(h, 0, maxRows);\n  }\n  return {\n    w: _w,\n    h: _h\n  };\n}\n\n// Similar to _.clamp\nfunction clamp(num /*: number*/, lowerBound /*: number*/, upperBound /*: number*/) /*: number*/{\n  return Math.max(Math.min(num, upperBound), lowerBound);\n}","module.exports = ReactDOM;","module.exports = PropTypes;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.dontSetMe = dontSetMe;\nexports.findInArray = findInArray;\nexports.int = int;\nexports.isFunction = isFunction;\nexports.isNum = isNum;\n// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc\nfunction findInArray(array /*: Array<any> | TouchList*/, callback /*: Function*/) /*: any*/{\n  for (let i = 0, length = array.length; i < length; i++) {\n    if (callback.apply(callback, [array[i], i, array])) return array[i];\n  }\n}\nfunction isFunction(func /*: any*/) /*: boolean %checks*/{\n  // $FlowIgnore[method-unbinding]\n  return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n}\nfunction isNum(num /*: any*/) /*: boolean %checks*/{\n  return typeof num === 'number' && !isNaN(num);\n}\nfunction int(a /*: string*/) /*: number*/{\n  return parseInt(a, 10);\n}\nfunction dontSetMe(props /*: Object*/, propName /*: string*/, componentName /*: string*/) /*: ?Error*/{\n  if (props[propName]) {\n    return new Error(`Invalid prop ${propName} passed to ${componentName} - do not set this, set it on the child.`);\n  }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.browserPrefixToKey = browserPrefixToKey;\nexports.browserPrefixToStyle = browserPrefixToStyle;\nexports.default = void 0;\nexports.getPrefix = getPrefix;\nconst prefixes = ['Moz', 'Webkit', 'O', 'ms'];\nfunction getPrefix() /*: string*/{\n  let prop /*: string*/ = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';\n  // Ensure we're running in an environment where there is actually a global\n  // `window` obj\n  if (typeof window === 'undefined') return '';\n\n  // If we're in a pseudo-browser server-side environment, this access\n  // path may not exist, so bail out if it doesn't.\n  const style = window.document?.documentElement?.style;\n  if (!style) return '';\n  if (prop in style) return '';\n  for (let i = 0; i < prefixes.length; i++) {\n    if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i];\n  }\n  return '';\n}\nfunction browserPrefixToKey(prop /*: string*/, prefix /*: string*/) /*: string*/{\n  return prefix ? `${prefix}${kebabToTitleCase(prop)}` : prop;\n}\nfunction browserPrefixToStyle(prop /*: string*/, prefix /*: string*/) /*: string*/{\n  return prefix ? `-${prefix.toLowerCase()}-${prop}` : prop;\n}\nfunction kebabToTitleCase(str /*: string*/) /*: string*/{\n  let out = '';\n  let shouldCapitalize = true;\n  for (let i = 0; i < str.length; i++) {\n    if (shouldCapitalize) {\n      out += str[i].toUpperCase();\n      shouldCapitalize = false;\n    } else if (str[i] === '-') {\n      shouldCapitalize = true;\n    } else {\n      out += str[i];\n    }\n  }\n  return out;\n}\n\n// Default export is the prefix itself, like 'Moz', 'Webkit', etc\n// Note that you may have to re-test for certain things; for instance, Chrome 50\n// can handle unprefixed `transform`, but not unprefixed `user-select`\nvar _default = exports.default = (getPrefix() /*: string*/);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.addClassName = addClassName;\nexports.addEvent = addEvent;\nexports.addUserSelectStyles = addUserSelectStyles;\nexports.createCSSTransform = createCSSTransform;\nexports.createSVGTransform = createSVGTransform;\nexports.getTouch = getTouch;\nexports.getTouchIdentifier = getTouchIdentifier;\nexports.getTranslation = getTranslation;\nexports.innerHeight = innerHeight;\nexports.innerWidth = innerWidth;\nexports.matchesSelector = matchesSelector;\nexports.matchesSelectorAndParentsTo = matchesSelectorAndParentsTo;\nexports.offsetXYFromParent = offsetXYFromParent;\nexports.outerHeight = outerHeight;\nexports.outerWidth = outerWidth;\nexports.removeClassName = removeClassName;\nexports.removeEvent = removeEvent;\nexports.scheduleRemoveUserSelectStyles = scheduleRemoveUserSelectStyles;\nvar _shims = require(\"./shims\");\nvar _getPrefix = _interopRequireWildcard(require(\"./getPrefix\"));\nfunction _interopRequireWildcard(e, t) { if (\"function\" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || \"object\" != typeof e && \"function\" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) \"default\" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }\n/*:: import type {ControlPosition, PositionOffsetControlPosition, MouseTouchEvent} from './types';*/\nlet matchesSelectorFunc = '';\nfunction matchesSelector(el /*: Node*/, selector /*: string*/) /*: boolean*/{\n  if (!matchesSelectorFunc) {\n    matchesSelectorFunc = (0, _shims.findInArray)(['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'], function (method) {\n      // $FlowIgnore: Doesn't think elements are indexable\n      return (0, _shims.isFunction)(el[method]);\n    });\n  }\n\n  // Might not be found entirely (not an Element?) - in that case, bail\n  // $FlowIgnore: Doesn't think elements are indexable\n  if (!(0, _shims.isFunction)(el[matchesSelectorFunc])) return false;\n\n  // $FlowIgnore: Doesn't think elements are indexable\n  return el[matchesSelectorFunc](selector);\n}\n\n// Works up the tree to the draggable itself attempting to match selector.\nfunction matchesSelectorAndParentsTo(el /*: Node*/, selector /*: string*/, baseNode /*: Node*/) /*: boolean*/{\n  let node = el;\n  do {\n    if (matchesSelector(node, selector)) return true;\n    if (node === baseNode) return false;\n    // $FlowIgnore[incompatible-type]\n    node = node.parentNode;\n  } while (node);\n  return false;\n}\nfunction addEvent(el /*: ?Node*/, event /*: string*/, handler /*: Function*/, inputOptions /*: Object*/) /*: void*/{\n  if (!el) return;\n  const options = {\n    capture: true,\n    ...inputOptions\n  };\n  // $FlowIgnore[method-unbinding]\n  if (el.addEventListener) {\n    el.addEventListener(event, handler, options);\n  } else if (el.attachEvent) {\n    el.attachEvent('on' + event, handler);\n  } else {\n    // $FlowIgnore: Doesn't think elements are indexable\n    el['on' + event] = handler;\n  }\n}\nfunction removeEvent(el /*: ?Node*/, event /*: string*/, handler /*: Function*/, inputOptions /*: Object*/) /*: void*/{\n  if (!el) return;\n  const options = {\n    capture: true,\n    ...inputOptions\n  };\n  // $FlowIgnore[method-unbinding]\n  if (el.removeEventListener) {\n    el.removeEventListener(event, handler, options);\n  } else if (el.detachEvent) {\n    el.detachEvent('on' + event, handler);\n  } else {\n    // $FlowIgnore: Doesn't think elements are indexable\n    el['on' + event] = null;\n  }\n}\nfunction outerHeight(node /*: HTMLElement*/) /*: number*/{\n  // This is deliberately excluding margin for our calculations, since we are using\n  // offsetTop which is including margin. See getBoundPosition\n  let height = node.clientHeight;\n  const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n  height += (0, _shims.int)(computedStyle.borderTopWidth);\n  height += (0, _shims.int)(computedStyle.borderBottomWidth);\n  return height;\n}\nfunction outerWidth(node /*: HTMLElement*/) /*: number*/{\n  // This is deliberately excluding margin for our calculations, since we are using\n  // offsetLeft which is including margin. See getBoundPosition\n  let width = node.clientWidth;\n  const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n  width += (0, _shims.int)(computedStyle.borderLeftWidth);\n  width += (0, _shims.int)(computedStyle.borderRightWidth);\n  return width;\n}\nfunction innerHeight(node /*: HTMLElement*/) /*: number*/{\n  let height = node.clientHeight;\n  const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n  height -= (0, _shims.int)(computedStyle.paddingTop);\n  height -= (0, _shims.int)(computedStyle.paddingBottom);\n  return height;\n}\nfunction innerWidth(node /*: HTMLElement*/) /*: number*/{\n  let width = node.clientWidth;\n  const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n  width -= (0, _shims.int)(computedStyle.paddingLeft);\n  width -= (0, _shims.int)(computedStyle.paddingRight);\n  return width;\n}\n/*:: interface EventWithOffset {\n  clientX: number, clientY: number\n}*/\n// Get from offsetParent\nfunction offsetXYFromParent(evt /*: EventWithOffset*/, offsetParent /*: HTMLElement*/, scale /*: number*/) /*: ControlPosition*/{\n  const isBody = offsetParent === offsetParent.ownerDocument.body;\n  const offsetParentRect = isBody ? {\n    left: 0,\n    top: 0\n  } : offsetParent.getBoundingClientRect();\n  const x = (evt.clientX + offsetParent.scrollLeft - offsetParentRect.left) / scale;\n  const y = (evt.clientY + offsetParent.scrollTop - offsetParentRect.top) / scale;\n  return {\n    x,\n    y\n  };\n}\nfunction createCSSTransform(controlPos /*: ControlPosition*/, positionOffset /*: PositionOffsetControlPosition*/) /*: Object*/{\n  const translation = getTranslation(controlPos, positionOffset, 'px');\n  return {\n    [(0, _getPrefix.browserPrefixToKey)('transform', _getPrefix.default)]: translation\n  };\n}\nfunction createSVGTransform(controlPos /*: ControlPosition*/, positionOffset /*: PositionOffsetControlPosition*/) /*: string*/{\n  const translation = getTranslation(controlPos, positionOffset, '');\n  return translation;\n}\nfunction getTranslation(_ref /*:: */, positionOffset /*: PositionOffsetControlPosition*/, unitSuffix /*: string*/) /*: string*/{\n  let {\n    x,\n    y\n  } /*: ControlPosition*/ = _ref /*: ControlPosition*/;\n  let translation = `translate(${x}${unitSuffix},${y}${unitSuffix})`;\n  if (positionOffset) {\n    const defaultX = `${typeof positionOffset.x === 'string' ? positionOffset.x : positionOffset.x + unitSuffix}`;\n    const defaultY = `${typeof positionOffset.y === 'string' ? positionOffset.y : positionOffset.y + unitSuffix}`;\n    translation = `translate(${defaultX}, ${defaultY})` + translation;\n  }\n  return translation;\n}\nfunction getTouch(e /*: MouseTouchEvent*/, identifier /*: number*/) /*: ?{clientX: number, clientY: number}*/{\n  return e.targetTouches && (0, _shims.findInArray)(e.targetTouches, t => identifier === t.identifier) || e.changedTouches && (0, _shims.findInArray)(e.changedTouches, t => identifier === t.identifier);\n}\nfunction getTouchIdentifier(e /*: MouseTouchEvent*/) /*: ?number*/{\n  if (e.targetTouches && e.targetTouches[0]) return e.targetTouches[0].identifier;\n  if (e.changedTouches && e.changedTouches[0]) return e.changedTouches[0].identifier;\n}\n\n// User-select Hacks:\n//\n// Useful for preventing blue highlights all over everything when dragging.\n\n// Note we're passing `document` b/c we could be iframed\nfunction addUserSelectStyles(doc /*: ?Document*/) {\n  if (!doc) return;\n  let styleEl = doc.getElementById('react-draggable-style-el');\n  if (!styleEl) {\n    styleEl = doc.createElement('style');\n    styleEl.type = 'text/css';\n    styleEl.id = 'react-draggable-style-el';\n    styleEl.innerHTML = '.react-draggable-transparent-selection *::-moz-selection {all: inherit;}\\n';\n    styleEl.innerHTML += '.react-draggable-transparent-selection *::selection {all: inherit;}\\n';\n    doc.getElementsByTagName('head')[0].appendChild(styleEl);\n  }\n  if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection');\n}\nfunction scheduleRemoveUserSelectStyles(doc /*: ?Document*/) {\n  // Prevent a possible \"forced reflow\"\n  if (window.requestAnimationFrame) {\n    window.requestAnimationFrame(() => {\n      removeUserSelectStyles(doc);\n    });\n  } else {\n    removeUserSelectStyles(doc);\n  }\n}\nfunction removeUserSelectStyles(doc /*: ?Document*/) {\n  if (!doc) return;\n  try {\n    if (doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection');\n    // $FlowIgnore: IE\n    if (doc.selection) {\n      // $FlowIgnore: IE\n      doc.selection.empty();\n    } else {\n      // Remove selection caused by scroll, unless it's a focused input\n      // (we use doc.defaultView in case we're in an iframe)\n      const selection = (doc.defaultView || window).getSelection();\n      if (selection && selection.type !== 'Caret') {\n        selection.removeAllRanges();\n      }\n    }\n  } catch (e) {\n    // probably IE\n  }\n}\nfunction addClassName(el /*: HTMLElement*/, className /*: string*/) {\n  if (el.classList) {\n    el.classList.add(className);\n  } else {\n    if (!el.className.match(new RegExp(`(?:^|\\\\s)${className}(?!\\\\S)`))) {\n      el.className += ` ${className}`;\n    }\n  }\n}\nfunction removeClassName(el /*: HTMLElement*/, className /*: string*/) {\n  if (el.classList) {\n    el.classList.remove(className);\n  } else {\n    el.className = el.className.replace(new RegExp(`(?:^|\\\\s)${className}(?!\\\\S)`, 'g'), '');\n  }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.canDragX = canDragX;\nexports.canDragY = canDragY;\nexports.createCoreData = createCoreData;\nexports.createDraggableData = createDraggableData;\nexports.getBoundPosition = getBoundPosition;\nexports.getControlPosition = getControlPosition;\nexports.snapToGrid = snapToGrid;\nvar _shims = require(\"./shims\");\nvar _domFns = require(\"./domFns\");\n/*:: import type Draggable from '../Draggable';*/\n/*:: import type {Bounds, ControlPosition, DraggableData, MouseTouchEvent} from './types';*/\n/*:: import type DraggableCore from '../DraggableCore';*/\nfunction getBoundPosition(draggable /*: Draggable*/, x /*: number*/, y /*: number*/) /*: [number, number]*/{\n  // If no bounds, short-circuit and move on\n  if (!draggable.props.bounds) return [x, y];\n\n  // Clone new bounds\n  let {\n    bounds\n  } = draggable.props;\n  bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds);\n  const node = findDOMNode(draggable);\n  if (typeof bounds === 'string') {\n    const {\n      ownerDocument\n    } = node;\n    const ownerWindow = ownerDocument.defaultView;\n    let boundNode;\n    if (bounds === 'parent') {\n      boundNode = node.parentNode;\n    } else {\n      // Flow assigns the wrong return type (Node) for getRootNode(),\n      // so we cast it to one of the correct types (Element).\n      // The others are Document and ShadowRoot.\n      // All three implement querySelector() so it's safe to call.\n      const rootNode = ((node.getRootNode() /*: any*/) /*: Element*/);\n      boundNode = rootNode.querySelector(bounds);\n    }\n    if (!(boundNode instanceof ownerWindow.HTMLElement)) {\n      throw new Error('Bounds selector \"' + bounds + '\" could not find an element.');\n    }\n    const boundNodeEl /*: HTMLElement*/ = boundNode; // for Flow, can't seem to refine correctly\n    const nodeStyle = ownerWindow.getComputedStyle(node);\n    const boundNodeStyle = ownerWindow.getComputedStyle(boundNodeEl);\n    // Compute bounds. This is a pain with padding and offsets but this gets it exactly right.\n    bounds = {\n      left: -node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingLeft) + (0, _shims.int)(nodeStyle.marginLeft),\n      top: -node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingTop) + (0, _shims.int)(nodeStyle.marginTop),\n      right: (0, _domFns.innerWidth)(boundNodeEl) - (0, _domFns.outerWidth)(node) - node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingRight) - (0, _shims.int)(nodeStyle.marginRight),\n      bottom: (0, _domFns.innerHeight)(boundNodeEl) - (0, _domFns.outerHeight)(node) - node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingBottom) - (0, _shims.int)(nodeStyle.marginBottom)\n    };\n  }\n\n  // Keep x and y below right and bottom limits...\n  if ((0, _shims.isNum)(bounds.right)) x = Math.min(x, bounds.right);\n  if ((0, _shims.isNum)(bounds.bottom)) y = Math.min(y, bounds.bottom);\n\n  // But above left and top limits.\n  if ((0, _shims.isNum)(bounds.left)) x = Math.max(x, bounds.left);\n  if ((0, _shims.isNum)(bounds.top)) y = Math.max(y, bounds.top);\n  return [x, y];\n}\nfunction snapToGrid(grid /*: [number, number]*/, pendingX /*: number*/, pendingY /*: number*/) /*: [number, number]*/{\n  const x = Math.round(pendingX / grid[0]) * grid[0];\n  const y = Math.round(pendingY / grid[1]) * grid[1];\n  return [x, y];\n}\nfunction canDragX(draggable /*: Draggable*/) /*: boolean*/{\n  return draggable.props.axis === 'both' || draggable.props.axis === 'x';\n}\nfunction canDragY(draggable /*: Draggable*/) /*: boolean*/{\n  return draggable.props.axis === 'both' || draggable.props.axis === 'y';\n}\n\n// Get {x, y} positions from event.\nfunction getControlPosition(e /*: MouseTouchEvent*/, touchIdentifier /*: ?number*/, draggableCore /*: DraggableCore*/) /*: ?ControlPosition*/{\n  const touchObj = typeof touchIdentifier === 'number' ? (0, _domFns.getTouch)(e, touchIdentifier) : null;\n  if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch\n  const node = findDOMNode(draggableCore);\n  // User can provide an offsetParent if desired.\n  const offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body;\n  return (0, _domFns.offsetXYFromParent)(touchObj || e, offsetParent, draggableCore.props.scale);\n}\n\n// Create an data object exposed by <DraggableCore>'s events\nfunction createCoreData(draggable /*: DraggableCore*/, x /*: number*/, y /*: number*/) /*: DraggableData*/{\n  const isStart = !(0, _shims.isNum)(draggable.lastX);\n  const node = findDOMNode(draggable);\n  if (isStart) {\n    // If this is our first move, use the x and y as last coords.\n    return {\n      node,\n      deltaX: 0,\n      deltaY: 0,\n      lastX: x,\n      lastY: y,\n      x,\n      y\n    };\n  } else {\n    // Otherwise calculate proper values.\n    return {\n      node,\n      deltaX: x - draggable.lastX,\n      deltaY: y - draggable.lastY,\n      lastX: draggable.lastX,\n      lastY: draggable.lastY,\n      x,\n      y\n    };\n  }\n}\n\n// Create an data exposed by <Draggable>'s events\nfunction createDraggableData(draggable /*: Draggable*/, coreData /*: DraggableData*/) /*: DraggableData*/{\n  const scale = draggable.props.scale;\n  return {\n    node: coreData.node,\n    x: draggable.state.x + coreData.deltaX / scale,\n    y: draggable.state.y + coreData.deltaY / scale,\n    deltaX: coreData.deltaX / scale,\n    deltaY: coreData.deltaY / scale,\n    lastX: draggable.state.x,\n    lastY: draggable.state.y\n  };\n}\n\n// A lot faster than stringify/parse\nfunction cloneBounds(bounds /*: Bounds*/) /*: Bounds*/{\n  return {\n    left: bounds.left,\n    top: bounds.top,\n    right: bounds.right,\n    bottom: bounds.bottom\n  };\n}\nfunction findDOMNode(draggable /*: Draggable | DraggableCore*/) /*: HTMLElement*/{\n  const node = draggable.findDOMNode();\n  if (!node) {\n    throw new Error('<DraggableCore>: Unmounted during event!');\n  }\n  // $FlowIgnore we can't assert on HTMLElement due to tests... FIXME\n  return node;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = log;\n/*eslint no-console:0*/\nfunction log() {\n  if (undefined) console.log(...arguments);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\nvar _domFns = require(\"./utils/domFns\");\nvar _positionFns = require(\"./utils/positionFns\");\nvar _shims = require(\"./utils/shims\");\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction _interopRequireWildcard(e, t) { if (\"function\" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || \"object\" != typeof e && \"function\" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) \"default\" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/*:: import type {EventHandler, MouseTouchEvent} from './utils/types';*/\n/*:: import type {Element as ReactElement} from 'react';*/\n// Simple abstraction for dragging events names.\nconst eventsFor = {\n  touch: {\n    start: 'touchstart',\n    move: 'touchmove',\n    stop: 'touchend'\n  },\n  mouse: {\n    start: 'mousedown',\n    move: 'mousemove',\n    stop: 'mouseup'\n  }\n};\n\n// Default to mouse events.\nlet dragEventFor = eventsFor.mouse;\n/*:: export type DraggableData = {\n  node: HTMLElement,\n  x: number, y: number,\n  deltaX: number, deltaY: number,\n  lastX: number, lastY: number,\n};*/\n/*:: export type DraggableEventHandler = (e: MouseEvent, data: DraggableData) => void | false;*/\n/*:: export type ControlPosition = {x: number, y: number};*/\n/*:: export type PositionOffsetControlPosition = {x: number|string, y: number|string};*/\n/*:: export type DraggableCoreDefaultProps = {\n  allowAnyClick: boolean,\n  allowMobileScroll: boolean,\n  disabled: boolean,\n  enableUserSelectHack: boolean,\n  onStart: DraggableEventHandler,\n  onDrag: DraggableEventHandler,\n  onStop: DraggableEventHandler,\n  onMouseDown: (e: MouseEvent) => void,\n  scale: number,\n};*/\n/*:: export type DraggableCoreProps = {\n  ...DraggableCoreDefaultProps,\n  cancel: string,\n  children: ReactElement<any>,\n  offsetParent: HTMLElement,\n  grid: [number, number],\n  handle: string,\n  nodeRef?: ?React.ElementRef<any>,\n};*/\n//\n// Define <DraggableCore>.\n//\n// <DraggableCore> is for advanced usage of <Draggable>. It maintains minimal internal state so it can\n// work well with libraries that require more control over the element.\n//\n\nclass DraggableCore extends React.Component /*:: <DraggableCoreProps>*/{\n  constructor() {\n    super(...arguments);\n    _defineProperty(this, \"dragging\", false);\n    // Used while dragging to determine deltas.\n    _defineProperty(this, \"lastX\", NaN);\n    _defineProperty(this, \"lastY\", NaN);\n    _defineProperty(this, \"touchIdentifier\", null);\n    _defineProperty(this, \"mounted\", false);\n    _defineProperty(this, \"handleDragStart\", e => {\n      // Make it possible to attach event handlers on top of this one.\n      this.props.onMouseDown(e);\n\n      // Only accept left-clicks.\n      if (!this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false;\n\n      // Get nodes. Be sure to grab relative document (could be iframed)\n      const thisNode = this.findDOMNode();\n      if (!thisNode || !thisNode.ownerDocument || !thisNode.ownerDocument.body) {\n        throw new Error('<DraggableCore> not mounted on DragStart!');\n      }\n      const {\n        ownerDocument\n      } = thisNode;\n\n      // Short circuit if handle or cancel prop was provided and selector doesn't match.\n      if (this.props.disabled || !(e.target instanceof ownerDocument.defaultView.Node) || this.props.handle && !(0, _domFns.matchesSelectorAndParentsTo)(e.target, this.props.handle, thisNode) || this.props.cancel && (0, _domFns.matchesSelectorAndParentsTo)(e.target, this.props.cancel, thisNode)) {\n        return;\n      }\n\n      // Prevent scrolling on mobile devices, like ipad/iphone.\n      // Important that this is after handle/cancel.\n      if (e.type === 'touchstart' && !this.props.allowMobileScroll) e.preventDefault();\n\n      // Set touch identifier in component state if this is a touch event. This allows us to\n      // distinguish between individual touches on multitouch screens by identifying which\n      // touchpoint was set to this element.\n      const touchIdentifier = (0, _domFns.getTouchIdentifier)(e);\n      this.touchIdentifier = touchIdentifier;\n\n      // Get the current drag point from the event. This is used as the offset.\n      const position = (0, _positionFns.getControlPosition)(e, touchIdentifier, this);\n      if (position == null) return; // not possible but satisfies flow\n      const {\n        x,\n        y\n      } = position;\n\n      // Create an event object with all the data parents need to make a decision here.\n      const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n      (0, _log.default)('DraggableCore: handleDragStart: %j', coreEvent);\n\n      // Call event handler. If it returns explicit false, cancel.\n      (0, _log.default)('calling', this.props.onStart);\n      const shouldUpdate = this.props.onStart(e, coreEvent);\n      if (shouldUpdate === false || this.mounted === false) return;\n\n      // Add a style to the body to disable user-select. This prevents text from\n      // being selected all over the page.\n      if (this.props.enableUserSelectHack) (0, _domFns.addUserSelectStyles)(ownerDocument);\n\n      // Initiate dragging. Set the current x and y as offsets\n      // so we know how much we've moved during the drag. This allows us\n      // to drag elements around even if they have been moved, without issue.\n      this.dragging = true;\n      this.lastX = x;\n      this.lastY = y;\n\n      // Add events to the document directly so we catch when the user's mouse/touch moves outside of\n      // this element. We use different events depending on whether or not we have detected that this\n      // is a touch-capable device.\n      (0, _domFns.addEvent)(ownerDocument, dragEventFor.move, this.handleDrag);\n      (0, _domFns.addEvent)(ownerDocument, dragEventFor.stop, this.handleDragStop);\n    });\n    _defineProperty(this, \"handleDrag\", e => {\n      // Get the current drag point from the event. This is used as the offset.\n      const position = (0, _positionFns.getControlPosition)(e, this.touchIdentifier, this);\n      if (position == null) return;\n      let {\n        x,\n        y\n      } = position;\n\n      // Snap to grid if prop has been provided\n      if (Array.isArray(this.props.grid)) {\n        let deltaX = x - this.lastX,\n          deltaY = y - this.lastY;\n        [deltaX, deltaY] = (0, _positionFns.snapToGrid)(this.props.grid, deltaX, deltaY);\n        if (!deltaX && !deltaY) return; // skip useless drag\n        x = this.lastX + deltaX, y = this.lastY + deltaY;\n      }\n      const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n      (0, _log.default)('DraggableCore: handleDrag: %j', coreEvent);\n\n      // Call event handler. If it returns explicit false, trigger end.\n      const shouldUpdate = this.props.onDrag(e, coreEvent);\n      if (shouldUpdate === false || this.mounted === false) {\n        try {\n          // $FlowIgnore\n          this.handleDragStop(new MouseEvent('mouseup'));\n        } catch (err) {\n          // Old browsers\n          const event = ((document.createEvent('MouseEvents') /*: any*/) /*: MouseTouchEvent*/);\n          // I see why this insanity was deprecated\n          // $FlowIgnore\n          event.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n          this.handleDragStop(event);\n        }\n        return;\n      }\n      this.lastX = x;\n      this.lastY = y;\n    });\n    _defineProperty(this, \"handleDragStop\", e => {\n      if (!this.dragging) return;\n      const position = (0, _positionFns.getControlPosition)(e, this.touchIdentifier, this);\n      if (position == null) return;\n      let {\n        x,\n        y\n      } = position;\n\n      // Snap to grid if prop has been provided\n      if (Array.isArray(this.props.grid)) {\n        let deltaX = x - this.lastX || 0;\n        let deltaY = y - this.lastY || 0;\n        [deltaX, deltaY] = (0, _positionFns.snapToGrid)(this.props.grid, deltaX, deltaY);\n        x = this.lastX + deltaX, y = this.lastY + deltaY;\n      }\n      const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n\n      // Call event handler\n      const shouldContinue = this.props.onStop(e, coreEvent);\n      if (shouldContinue === false || this.mounted === false) return false;\n      const thisNode = this.findDOMNode();\n      if (thisNode) {\n        // Remove user-select hack\n        if (this.props.enableUserSelectHack) (0, _domFns.scheduleRemoveUserSelectStyles)(thisNode.ownerDocument);\n      }\n      (0, _log.default)('DraggableCore: handleDragStop: %j', coreEvent);\n\n      // Reset the el.\n      this.dragging = false;\n      this.lastX = NaN;\n      this.lastY = NaN;\n      if (thisNode) {\n        // Remove event handlers\n        (0, _log.default)('DraggableCore: Removing handlers');\n        (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.move, this.handleDrag);\n        (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.stop, this.handleDragStop);\n      }\n    });\n    _defineProperty(this, \"onMouseDown\", e => {\n      dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse\n\n      return this.handleDragStart(e);\n    });\n    _defineProperty(this, \"onMouseUp\", e => {\n      dragEventFor = eventsFor.mouse;\n      return this.handleDragStop(e);\n    });\n    // Same as onMouseDown (start drag), but now consider this a touch device.\n    _defineProperty(this, \"onTouchStart\", e => {\n      // We're on a touch device now, so change the event handlers\n      dragEventFor = eventsFor.touch;\n      return this.handleDragStart(e);\n    });\n    _defineProperty(this, \"onTouchEnd\", e => {\n      // We're on a touch device now, so change the event handlers\n      dragEventFor = eventsFor.touch;\n      return this.handleDragStop(e);\n    });\n  }\n  componentDidMount() {\n    this.mounted = true;\n    // Touch handlers must be added with {passive: false} to be cancelable.\n    // https://developers.google.com/web/updates/2017/01/scrolling-intervention\n    const thisNode = this.findDOMNode();\n    if (thisNode) {\n      (0, _domFns.addEvent)(thisNode, eventsFor.touch.start, this.onTouchStart, {\n        passive: false\n      });\n    }\n  }\n  componentWillUnmount() {\n    this.mounted = false;\n    // Remove any leftover event handlers. Remove both touch and mouse handlers in case\n    // some browser quirk caused a touch event to fire during a mouse move, or vice versa.\n    const thisNode = this.findDOMNode();\n    if (thisNode) {\n      const {\n        ownerDocument\n      } = thisNode;\n      (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.move, this.handleDrag);\n      (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.move, this.handleDrag);\n      (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.stop, this.handleDragStop);\n      (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.stop, this.handleDragStop);\n      (0, _domFns.removeEvent)(thisNode, eventsFor.touch.start, this.onTouchStart, {\n        passive: false\n      });\n      if (this.props.enableUserSelectHack) (0, _domFns.scheduleRemoveUserSelectStyles)(ownerDocument);\n    }\n  }\n\n  // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find\n  // the underlying DOM node ourselves. See the README for more information.\n  findDOMNode() /*: ?HTMLElement*/{\n    return this.props?.nodeRef ? this.props?.nodeRef?.current : _reactDom.default.findDOMNode(this);\n  }\n  render() /*: React.Element<any>*/{\n    // Reuse the child provided\n    // This makes it flexible to use whatever element is wanted (div, ul, etc)\n    return /*#__PURE__*/React.cloneElement(React.Children.only(this.props.children), {\n      // Note: mouseMove handler is attached to document so it will still function\n      // when the user drags quickly and leaves the bounds of the element.\n      onMouseDown: this.onMouseDown,\n      onMouseUp: this.onMouseUp,\n      // onTouchStart is added on `componentDidMount` so they can be added with\n      // {passive: false}, which allows it to cancel. See\n      // https://developers.google.com/web/updates/2017/01/scrolling-intervention\n      onTouchEnd: this.onTouchEnd\n    });\n  }\n}\nexports.default = DraggableCore;\n_defineProperty(DraggableCore, \"displayName\", 'DraggableCore');\n_defineProperty(DraggableCore, \"propTypes\", {\n  /**\n   * `allowAnyClick` allows dragging using any mouse button.\n   * By default, we only accept the left button.\n   *\n   * Defaults to `false`.\n   */\n  allowAnyClick: _propTypes.default.bool,\n  /**\n   * `allowMobileScroll` turns off cancellation of the 'touchstart' event\n   * on mobile devices. Only enable this if you are having trouble with click\n   * events. Prefer using 'handle' / 'cancel' instead.\n   *\n   * Defaults to `false`.\n   */\n  allowMobileScroll: _propTypes.default.bool,\n  children: _propTypes.default.node.isRequired,\n  /**\n   * `disabled`, if true, stops the <Draggable> from dragging. All handlers,\n   * with the exception of `onMouseDown`, will not fire.\n   */\n  disabled: _propTypes.default.bool,\n  /**\n   * By default, we add 'user-select:none' attributes to the document body\n   * to prevent ugly text selection during drag. If this is causing problems\n   * for your app, set this to `false`.\n   */\n  enableUserSelectHack: _propTypes.default.bool,\n  /**\n   * `offsetParent`, if set, uses the passed DOM node to compute drag offsets\n   * instead of using the parent node.\n   */\n  offsetParent: function (props /*: DraggableCoreProps*/, propName /*: $Keys<DraggableCoreProps>*/) {\n    if (props[propName] && props[propName].nodeType !== 1) {\n      throw new Error('Draggable\\'s offsetParent must be a DOM Node.');\n    }\n  },\n  /**\n   * `grid` specifies the x and y that dragging should snap to.\n   */\n  grid: _propTypes.default.arrayOf(_propTypes.default.number),\n  /**\n   * `handle` specifies a selector to be used as the handle that initiates drag.\n   *\n   * Example:\n   *\n   * ```jsx\n   *   let App = React.createClass({\n   *       render: function () {\n   *         return (\n   *            <Draggable handle=\".handle\">\n   *              <div>\n   *                  <div className=\"handle\">Click me to drag</div>\n   *                  <div>This is some other content</div>\n   *              </div>\n   *           </Draggable>\n   *         );\n   *       }\n   *   });\n   * ```\n   */\n  handle: _propTypes.default.string,\n  /**\n   * `cancel` specifies a selector to be used to prevent drag initialization.\n   *\n   * Example:\n   *\n   * ```jsx\n   *   let App = React.createClass({\n   *       render: function () {\n   *           return(\n   *               <Draggable cancel=\".cancel\">\n   *                   <div>\n   *                     <div className=\"cancel\">You can't drag from here</div>\n   *                     <div>Dragging here works fine</div>\n   *                   </div>\n   *               </Draggable>\n   *           );\n   *       }\n   *   });\n   * ```\n   */\n  cancel: _propTypes.default.string,\n  /* If running in React Strict mode, ReactDOM.findDOMNode() is deprecated.\n   * Unfortunately, in order for <Draggable> to work properly, we need raw access\n   * to the underlying DOM node. If you want to avoid the warning, pass a `nodeRef`\n   * as in this example:\n   *\n   * function MyComponent() {\n   *   const nodeRef = React.useRef(null);\n   *   return (\n   *     <Draggable nodeRef={nodeRef}>\n   *       <div ref={nodeRef}>Example Target</div>\n   *     </Draggable>\n   *   );\n   * }\n   *\n   * This can be used for arbitrarily nested components, so long as the ref ends up\n   * pointing to the actual child DOM node and not a custom component.\n   */\n  nodeRef: _propTypes.default.object,\n  /**\n   * Called when dragging starts.\n   * If this function returns the boolean false, dragging will be canceled.\n   */\n  onStart: _propTypes.default.func,\n  /**\n   * Called while dragging.\n   * If this function returns the boolean false, dragging will be canceled.\n   */\n  onDrag: _propTypes.default.func,\n  /**\n   * Called when dragging stops.\n   * If this function returns the boolean false, the drag will remain active.\n   */\n  onStop: _propTypes.default.func,\n  /**\n   * A workaround option which can be passed if onMouseDown needs to be accessed,\n   * since it'll always be blocked (as there is internal use of onMouseDown)\n   */\n  onMouseDown: _propTypes.default.func,\n  /**\n   * `scale`, if set, applies scaling while dragging an element\n   */\n  scale: _propTypes.default.number,\n  /**\n   * These properties should be defined on the child, not here.\n   */\n  className: _shims.dontSetMe,\n  style: _shims.dontSetMe,\n  transform: _shims.dontSetMe\n});\n_defineProperty(DraggableCore, \"defaultProps\", {\n  allowAnyClick: false,\n  // by default only accept left click\n  allowMobileScroll: false,\n  disabled: false,\n  enableUserSelectHack: true,\n  onStart: function () {},\n  onDrag: function () {},\n  onStop: function () {},\n  onMouseDown: function () {},\n  scale: 1\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"DraggableCore\", {\n  enumerable: true,\n  get: function () {\n    return _DraggableCore.default;\n  }\n});\nexports.default = void 0;\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\nvar _clsx = require(\"clsx\");\nvar _domFns = require(\"./utils/domFns\");\nvar _positionFns = require(\"./utils/positionFns\");\nvar _shims = require(\"./utils/shims\");\nvar _DraggableCore = _interopRequireDefault(require(\"./DraggableCore\"));\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction _interopRequireWildcard(e, t) { if (\"function\" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || \"object\" != typeof e && \"function\" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) \"default\" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); } /*:: import type {ControlPosition, PositionOffsetControlPosition, DraggableCoreProps, DraggableCoreDefaultProps} from './DraggableCore';*/\n/*:: import type {Bounds, DraggableEventHandler} from './utils/types';*/\n/*:: import type {Element as ReactElement} from 'react';*/\n/*:: type DraggableState = {\n  dragging: boolean,\n  dragged: boolean,\n  x: number, y: number,\n  slackX: number, slackY: number,\n  isElementSVG: boolean,\n  prevPropsPosition: ?ControlPosition,\n};*/\n/*:: export type DraggableDefaultProps = {\n  ...DraggableCoreDefaultProps,\n  axis: 'both' | 'x' | 'y' | 'none',\n  bounds: Bounds | string | false,\n  defaultClassName: string,\n  defaultClassNameDragging: string,\n  defaultClassNameDragged: string,\n  defaultPosition: ControlPosition,\n  scale: number,\n};*/\n/*:: export type DraggableProps = {\n  ...DraggableCoreProps,\n  ...DraggableDefaultProps,\n  positionOffset: PositionOffsetControlPosition,\n  position: ControlPosition,\n};*/\n//\n// Define <Draggable>\n//\nclass Draggable extends React.Component /*:: <DraggableProps, DraggableState>*/{\n  // React 16.3+\n  // Arity (props, state)\n  static getDerivedStateFromProps(_ref /*:: */, _ref2 /*:: */) /*: ?Partial<DraggableState>*/{\n    let {\n      position\n    } /*: DraggableProps*/ = _ref /*: DraggableProps*/;\n    let {\n      prevPropsPosition\n    } /*: DraggableState*/ = _ref2 /*: DraggableState*/;\n    // Set x/y if a new position is provided in props that is different than the previous.\n    if (position && (!prevPropsPosition || position.x !== prevPropsPosition.x || position.y !== prevPropsPosition.y)) {\n      (0, _log.default)('Draggable: getDerivedStateFromProps %j', {\n        position,\n        prevPropsPosition\n      });\n      return {\n        x: position.x,\n        y: position.y,\n        prevPropsPosition: {\n          ...position\n        }\n      };\n    }\n    return null;\n  }\n  constructor(props /*: DraggableProps*/) {\n    super(props);\n    _defineProperty(this, \"onDragStart\", (e, coreData) => {\n      (0, _log.default)('Draggable: onDragStart: %j', coreData);\n\n      // Short-circuit if user's callback killed it.\n      const shouldStart = this.props.onStart(e, (0, _positionFns.createDraggableData)(this, coreData));\n      // Kills start event on core as well, so move handlers are never bound.\n      if (shouldStart === false) return false;\n      this.setState({\n        dragging: true,\n        dragged: true\n      });\n    });\n    _defineProperty(this, \"onDrag\", (e, coreData) => {\n      if (!this.state.dragging) return false;\n      (0, _log.default)('Draggable: onDrag: %j', coreData);\n      const uiData = (0, _positionFns.createDraggableData)(this, coreData);\n      const newState = {\n        x: uiData.x,\n        y: uiData.y,\n        slackX: 0,\n        slackY: 0\n      };\n\n      // Keep within bounds.\n      if (this.props.bounds) {\n        // Save original x and y.\n        const {\n          x,\n          y\n        } = newState;\n\n        // Add slack to the values used to calculate bound position. This will ensure that if\n        // we start removing slack, the element won't react to it right away until it's been\n        // completely removed.\n        newState.x += this.state.slackX;\n        newState.y += this.state.slackY;\n\n        // Get bound position. This will ceil/floor the x and y within the boundaries.\n        const [newStateX, newStateY] = (0, _positionFns.getBoundPosition)(this, newState.x, newState.y);\n        newState.x = newStateX;\n        newState.y = newStateY;\n\n        // Recalculate slack by noting how much was shaved by the boundPosition handler.\n        newState.slackX = this.state.slackX + (x - newState.x);\n        newState.slackY = this.state.slackY + (y - newState.y);\n\n        // Update the event we fire to reflect what really happened after bounds took effect.\n        uiData.x = newState.x;\n        uiData.y = newState.y;\n        uiData.deltaX = newState.x - this.state.x;\n        uiData.deltaY = newState.y - this.state.y;\n      }\n\n      // Short-circuit if user's callback killed it.\n      const shouldUpdate = this.props.onDrag(e, uiData);\n      if (shouldUpdate === false) return false;\n      this.setState(newState);\n    });\n    _defineProperty(this, \"onDragStop\", (e, coreData) => {\n      if (!this.state.dragging) return false;\n\n      // Short-circuit if user's callback killed it.\n      const shouldContinue = this.props.onStop(e, (0, _positionFns.createDraggableData)(this, coreData));\n      if (shouldContinue === false) return false;\n      (0, _log.default)('Draggable: onDragStop: %j', coreData);\n      const newState /*: Partial<DraggableState>*/ = {\n        dragging: false,\n        slackX: 0,\n        slackY: 0\n      };\n\n      // If this is a controlled component, the result of this operation will be to\n      // revert back to the old position. We expect a handler on `onDragStop`, at the least.\n      const controlled = Boolean(this.props.position);\n      if (controlled) {\n        const {\n          x,\n          y\n        } = this.props.position;\n        newState.x = x;\n        newState.y = y;\n      }\n      this.setState(newState);\n    });\n    this.state = {\n      // Whether or not we are currently dragging.\n      dragging: false,\n      // Whether or not we have been dragged before.\n      dragged: false,\n      // Current transform x and y.\n      x: props.position ? props.position.x : props.defaultPosition.x,\n      y: props.position ? props.position.y : props.defaultPosition.y,\n      prevPropsPosition: {\n        ...props.position\n      },\n      // Used for compensating for out-of-bounds drags\n      slackX: 0,\n      slackY: 0,\n      // Can only determine if SVG after mounting\n      isElementSVG: false\n    };\n    if (props.position && !(props.onDrag || props.onStop)) {\n      // eslint-disable-next-line no-console\n      console.warn('A `position` was applied to this <Draggable>, without drag handlers. This will make this ' + 'component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the ' + '`position` of this element.');\n    }\n  }\n  componentDidMount() {\n    // Check to see if the element passed is an instanceof SVGElement\n    if (typeof window.SVGElement !== 'undefined' && this.findDOMNode() instanceof window.SVGElement) {\n      this.setState({\n        isElementSVG: true\n      });\n    }\n  }\n  componentWillUnmount() {\n    if (this.state.dragging) {\n      this.setState({\n        dragging: false\n      }); // prevents invariant if unmounted while dragging\n    }\n  }\n\n  // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find\n  // the underlying DOM node ourselves. See the README for more information.\n  findDOMNode() /*: ?HTMLElement*/{\n    return this.props?.nodeRef?.current ?? _reactDom.default.findDOMNode(this);\n  }\n  render() /*: ReactElement<any>*/{\n    const {\n      axis,\n      bounds,\n      children,\n      defaultPosition,\n      defaultClassName,\n      defaultClassNameDragging,\n      defaultClassNameDragged,\n      position,\n      positionOffset,\n      scale,\n      ...draggableCoreProps\n    } = this.props;\n    let style = {};\n    let svgTransform = null;\n\n    // If this is controlled, we don't want to move it - unless it's dragging.\n    const controlled = Boolean(position);\n    const draggable = !controlled || this.state.dragging;\n    const validPosition = position || defaultPosition;\n    const transformOpts = {\n      // Set left if horizontal drag is enabled\n      x: (0, _positionFns.canDragX)(this) && draggable ? this.state.x : validPosition.x,\n      // Set top if vertical drag is enabled\n      y: (0, _positionFns.canDragY)(this) && draggable ? this.state.y : validPosition.y\n    };\n\n    // If this element was SVG, we use the `transform` attribute.\n    if (this.state.isElementSVG) {\n      svgTransform = (0, _domFns.createSVGTransform)(transformOpts, positionOffset);\n    } else {\n      // Add a CSS transform to move the element around. This allows us to move the element around\n      // without worrying about whether or not it is relatively or absolutely positioned.\n      // If the item you are dragging already has a transform set, wrap it in a <span> so <Draggable>\n      // has a clean slate.\n      style = (0, _domFns.createCSSTransform)(transformOpts, positionOffset);\n    }\n\n    // Mark with class while dragging\n    const className = (0, _clsx.clsx)(children.props.className || '', defaultClassName, {\n      [defaultClassNameDragging]: this.state.dragging,\n      [defaultClassNameDragged]: this.state.dragged\n    });\n\n    // Reuse the child provided\n    // This makes it flexible to use whatever element is wanted (div, ul, etc)\n    return /*#__PURE__*/React.createElement(_DraggableCore.default, _extends({}, draggableCoreProps, {\n      onStart: this.onDragStart,\n      onDrag: this.onDrag,\n      onStop: this.onDragStop\n    }), /*#__PURE__*/React.cloneElement(React.Children.only(children), {\n      className: className,\n      style: {\n        ...children.props.style,\n        ...style\n      },\n      transform: svgTransform\n    }));\n  }\n}\nexports.default = Draggable;\n_defineProperty(Draggable, \"displayName\", 'Draggable');\n_defineProperty(Draggable, \"propTypes\", {\n  // Accepts all props <DraggableCore> accepts.\n  ..._DraggableCore.default.propTypes,\n  /**\n   * `axis` determines which axis the draggable can move.\n   *\n   *  Note that all callbacks will still return data as normal. This only\n   *  controls flushing to the DOM.\n   *\n   * 'both' allows movement horizontally and vertically.\n   * 'x' limits movement to horizontal axis.\n   * 'y' limits movement to vertical axis.\n   * 'none' limits all movement.\n   *\n   * Defaults to 'both'.\n   */\n  axis: _propTypes.default.oneOf(['both', 'x', 'y', 'none']),\n  /**\n   * `bounds` determines the range of movement available to the element.\n   * Available values are:\n   *\n   * 'parent' restricts movement within the Draggable's parent node.\n   *\n   * Alternatively, pass an object with the following properties, all of which are optional:\n   *\n   * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND}\n   *\n   * All values are in px.\n   *\n   * Example:\n   *\n   * ```jsx\n   *   let App = React.createClass({\n   *       render: function () {\n   *         return (\n   *            <Draggable bounds={{right: 300, bottom: 300}}>\n   *              <div>Content</div>\n   *           </Draggable>\n   *         );\n   *       }\n   *   });\n   * ```\n   */\n  bounds: _propTypes.default.oneOfType([_propTypes.default.shape({\n    left: _propTypes.default.number,\n    right: _propTypes.default.number,\n    top: _propTypes.default.number,\n    bottom: _propTypes.default.number\n  }), _propTypes.default.string, _propTypes.default.oneOf([false])]),\n  defaultClassName: _propTypes.default.string,\n  defaultClassNameDragging: _propTypes.default.string,\n  defaultClassNameDragged: _propTypes.default.string,\n  /**\n   * `defaultPosition` specifies the x and y that the dragged item should start at\n   *\n   * Example:\n   *\n   * ```jsx\n   *      let App = React.createClass({\n   *          render: function () {\n   *              return (\n   *                  <Draggable defaultPosition={{x: 25, y: 25}}>\n   *                      <div>I start with transformX: 25px and transformY: 25px;</div>\n   *                  </Draggable>\n   *              );\n   *          }\n   *      });\n   * ```\n   */\n  defaultPosition: _propTypes.default.shape({\n    x: _propTypes.default.number,\n    y: _propTypes.default.number\n  }),\n  positionOffset: _propTypes.default.shape({\n    x: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),\n    y: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])\n  }),\n  /**\n   * `position`, if present, defines the current position of the element.\n   *\n   *  This is similar to how form elements in React work - if no `position` is supplied, the component\n   *  is uncontrolled.\n   *\n   * Example:\n   *\n   * ```jsx\n   *      let App = React.createClass({\n   *          render: function () {\n   *              return (\n   *                  <Draggable position={{x: 25, y: 25}}>\n   *                      <div>I start with transformX: 25px and transformY: 25px;</div>\n   *                  </Draggable>\n   *              );\n   *          }\n   *      });\n   * ```\n   */\n  position: _propTypes.default.shape({\n    x: _propTypes.default.number,\n    y: _propTypes.default.number\n  }),\n  /**\n   * These properties should be defined on the child, not here.\n   */\n  className: _shims.dontSetMe,\n  style: _shims.dontSetMe,\n  transform: _shims.dontSetMe\n});\n_defineProperty(Draggable, \"defaultProps\", {\n  ..._DraggableCore.default.defaultProps,\n  axis: 'both',\n  bounds: false,\n  defaultClassName: 'react-draggable',\n  defaultClassNameDragging: 'react-draggable-dragging',\n  defaultClassNameDragged: 'react-draggable-dragged',\n  defaultPosition: {\n    x: 0,\n    y: 0\n  },\n  scale: 1\n});","\"use strict\";\n\nconst {\n  default: Draggable,\n  DraggableCore\n} = require('./Draggable');\n\n// Previous versions of this lib exported <Draggable> as the root export. As to no-// them, or TypeScript, we export *both* as the root and as 'default'.\n// See https://github.com/mzabriskie/react-draggable/pull/254\n// and https://github.com/mzabriskie/react-draggable/issues/266\nmodule.exports = Draggable;\nmodule.exports.default = Draggable;\nmodule.exports.DraggableCore = DraggableCore;","\"use strict\";\n\nexports.__esModule = true;\nexports.cloneElement = cloneElement;\nvar _react = _interopRequireDefault(require(\"react\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n// React.addons.cloneWithProps look-alike that merges style & className.\nfunction cloneElement(element, props) {\n  if (props.style && element.props.style) {\n    props.style = _objectSpread(_objectSpread({}, element.props.style), props.style);\n  }\n  if (props.className && element.props.className) {\n    props.className = element.props.className + \" \" + props.className;\n  }\n  return /*#__PURE__*/_react.default.cloneElement(element, props);\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.resizableProps = void 0;\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _reactDraggable = require(\"react-draggable\");\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar resizableProps = {\n  /*\n  * Restricts resizing to a particular axis (default: 'both')\n  * 'both' - allows resizing by width or height\n  * 'x' - only allows the width to be changed\n  * 'y' - only allows the height to be changed\n  * 'none' - disables resizing altogether\n  * */\n  axis: _propTypes.default.oneOf(['both', 'x', 'y', 'none']),\n  className: _propTypes.default.string,\n  /*\n  * Require that one and only one child be present.\n  * */\n  children: _propTypes.default.element.isRequired,\n  /*\n  * These will be passed wholesale to react-draggable's DraggableCore\n  * */\n  draggableOpts: _propTypes.default.shape({\n    allowAnyClick: _propTypes.default.bool,\n    cancel: _propTypes.default.string,\n    children: _propTypes.default.node,\n    disabled: _propTypes.default.bool,\n    enableUserSelectHack: _propTypes.default.bool,\n    offsetParent: _propTypes.default.node,\n    grid: _propTypes.default.arrayOf(_propTypes.default.number),\n    handle: _propTypes.default.string,\n    nodeRef: _propTypes.default.object,\n    onStart: _propTypes.default.func,\n    onDrag: _propTypes.default.func,\n    onStop: _propTypes.default.func,\n    onMouseDown: _propTypes.default.func,\n    scale: _propTypes.default.number\n  }),\n  /*\n  * Initial height\n  * */\n  height: function height() {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    var props = args[0];\n    // Required if resizing height or both\n    if (props.axis === 'both' || props.axis === 'y') {\n      var _PropTypes$number;\n      return (_PropTypes$number = _propTypes.default.number).isRequired.apply(_PropTypes$number, args);\n    }\n    return _propTypes.default.number.apply(_propTypes.default, args);\n  },\n  /*\n  * Customize cursor resize handle\n  * */\n  handle: _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.func]),\n  /*\n  * If you change this, be sure to update your css\n  * */\n  handleSize: _propTypes.default.arrayOf(_propTypes.default.number),\n  lockAspectRatio: _propTypes.default.bool,\n  /*\n  * Max X & Y measure\n  * */\n  maxConstraints: _propTypes.default.arrayOf(_propTypes.default.number),\n  /*\n  * Min X & Y measure\n  * */\n  minConstraints: _propTypes.default.arrayOf(_propTypes.default.number),\n  /*\n  * Called on stop resize event\n  * */\n  onResizeStop: _propTypes.default.func,\n  /*\n  * Called on start resize event\n  * */\n  onResizeStart: _propTypes.default.func,\n  /*\n  * Called on resize event\n  * */\n  onResize: _propTypes.default.func,\n  /*\n  * Defines which resize handles should be rendered (default: 'se')\n  * 's' - South handle (bottom-center)\n  * 'w' - West handle (left-center)\n  * 'e' - East handle (right-center)\n  * 'n' - North handle (top-center)\n  * 'sw' - Southwest handle (bottom-left)\n  * 'nw' - Northwest handle (top-left)\n  * 'se' - Southeast handle (bottom-right)\n  * 'ne' - Northeast handle (top-center)\n  * */\n  resizeHandles: _propTypes.default.arrayOf(_propTypes.default.oneOf(['s', 'w', 'e', 'n', 'sw', 'nw', 'se', 'ne'])),\n  /*\n  * If `transform: scale(n)` is set on the parent, this should be set to `n`.\n  * */\n  transformScale: _propTypes.default.number,\n  /*\n   * Initial width\n   */\n  width: function width() {\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n    var props = args[0];\n    // Required if resizing width or both\n    if (props.axis === 'both' || props.axis === 'x') {\n      var _PropTypes$number2;\n      return (_PropTypes$number2 = _propTypes.default.number).isRequired.apply(_PropTypes$number2, args);\n    }\n    return _propTypes.default.number.apply(_propTypes.default, args);\n  }\n};\nexports.resizableProps = resizableProps;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _reactDraggable = require(\"react-draggable\");\nvar _utils = require(\"./utils\");\nvar _propTypes = require(\"./propTypes\");\nvar _excluded = [\"children\", \"className\", \"draggableOpts\", \"width\", \"height\", \"handle\", \"handleSize\", \"lockAspectRatio\", \"axis\", \"minConstraints\", \"maxConstraints\", \"onResize\", \"onResizeStop\", \"onResizeStart\", \"resizeHandles\", \"transformScale\"];\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n// The base <Resizable> component.\n// This component does not have state and relies on the parent to set its props based on callback data.\nvar Resizable = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(Resizable, _React$Component);\n  function Resizable() {\n    var _this;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n    _this.handleRefs = {};\n    _this.lastHandleRect = null;\n    _this.slack = null;\n    return _this;\n  }\n  var _proto = Resizable.prototype;\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.resetData();\n  };\n  _proto.resetData = function resetData() {\n    this.lastHandleRect = this.slack = null;\n  }\n\n  // Clamp width and height within provided constraints\n  ;\n  _proto.runConstraints = function runConstraints(width, height) {\n    var _this$props = this.props,\n      minConstraints = _this$props.minConstraints,\n      maxConstraints = _this$props.maxConstraints,\n      lockAspectRatio = _this$props.lockAspectRatio;\n    // short circuit\n    if (!minConstraints && !maxConstraints && !lockAspectRatio) return [width, height];\n\n    // If constraining to min and max, we need to also fit width and height to aspect ratio.\n    if (lockAspectRatio) {\n      var ratio = this.props.width / this.props.height;\n      var deltaW = width - this.props.width;\n      var deltaH = height - this.props.height;\n\n      // Find which coordinate was greater and should push the other toward it.\n      // E.g.:\n      // ratio = 1, deltaW = 10, deltaH = 5, deltaH should become 10.\n      // ratio = 2, deltaW = 10, deltaH = 6, deltaW should become 12.\n      if (Math.abs(deltaW) > Math.abs(deltaH * ratio)) {\n        height = width / ratio;\n      } else {\n        width = height * ratio;\n      }\n    }\n    var oldW = width,\n      oldH = height;\n\n    // Add slack to the values used to calculate bound position. This will ensure that if\n    // we start removing slack, the element won't react to it right away until it's been\n    // completely removed.\n    var _ref = this.slack || [0, 0],\n      slackW = _ref[0],\n      slackH = _ref[1];\n    width += slackW;\n    height += slackH;\n    if (minConstraints) {\n      width = Math.max(minConstraints[0], width);\n      height = Math.max(minConstraints[1], height);\n    }\n    if (maxConstraints) {\n      width = Math.min(maxConstraints[0], width);\n      height = Math.min(maxConstraints[1], height);\n    }\n\n    // If the width or height changed, we must have introduced some slack. Record it for the next iteration.\n    this.slack = [slackW + (oldW - width), slackH + (oldH - height)];\n    return [width, height];\n  }\n\n  /**\n   * Wrapper around drag events to provide more useful data.\n   *\n   * @param  {String} handlerName Handler name to wrap.\n   * @return {Function}           Handler function.\n   */;\n  _proto.resizeHandler = function resizeHandler(handlerName, axis) {\n    var _this2 = this;\n    return function (e, _ref2) {\n      var node = _ref2.node,\n        deltaX = _ref2.deltaX,\n        deltaY = _ref2.deltaY;\n      // Reset data in case it was left over somehow (should not be possible)\n      if (handlerName === 'onResizeStart') _this2.resetData();\n\n      // Axis restrictions\n      var canDragX = (_this2.props.axis === 'both' || _this2.props.axis === 'x') && axis !== 'n' && axis !== 's';\n      var canDragY = (_this2.props.axis === 'both' || _this2.props.axis === 'y') && axis !== 'e' && axis !== 'w';\n      // No dragging possible.\n      if (!canDragX && !canDragY) return;\n\n      // Decompose axis for later use\n      var axisV = axis[0];\n      var axisH = axis[axis.length - 1]; // intentionally not axis[1], so that this catches axis === 'w' for example\n\n      // Track the element being dragged to account for changes in position.\n      // If a handle's position is changed between callbacks, we need to factor this in to the next callback.\n      // Failure to do so will cause the element to \"skip\" when resized upwards or leftwards.\n      var handleRect = node.getBoundingClientRect();\n      if (_this2.lastHandleRect != null) {\n        // If the handle has repositioned on either axis since last render,\n        // we need to increase our callback values by this much.\n        // Only checking 'n', 'w' since resizing by 's', 'w' won't affect the overall position on page,\n        if (axisH === 'w') {\n          var deltaLeftSinceLast = handleRect.left - _this2.lastHandleRect.left;\n          deltaX += deltaLeftSinceLast;\n        }\n        if (axisV === 'n') {\n          var deltaTopSinceLast = handleRect.top - _this2.lastHandleRect.top;\n          deltaY += deltaTopSinceLast;\n        }\n      }\n      // Storage of last rect so we know how much it has really moved.\n      _this2.lastHandleRect = handleRect;\n\n      // Reverse delta if using top or left drag handles.\n      if (axisH === 'w') deltaX = -deltaX;\n      if (axisV === 'n') deltaY = -deltaY;\n\n      // Update w/h by the deltas. Also factor in transformScale.\n      var width = _this2.props.width + (canDragX ? deltaX / _this2.props.transformScale : 0);\n      var height = _this2.props.height + (canDragY ? deltaY / _this2.props.transformScale : 0);\n\n      // Run user-provided constraints.\n      var _this2$runConstraints = _this2.runConstraints(width, height);\n      width = _this2$runConstraints[0];\n      height = _this2$runConstraints[1];\n      var dimensionsChanged = width !== _this2.props.width || height !== _this2.props.height;\n\n      // Call user-supplied callback if present.\n      var cb = typeof _this2.props[handlerName] === 'function' ? _this2.props[handlerName] : null;\n      // Don't call 'onResize' if dimensions haven't changed.\n      var shouldSkipCb = handlerName === 'onResize' && !dimensionsChanged;\n      if (cb && !shouldSkipCb) {\n        e.persist == null ? void 0 : e.persist();\n        cb(e, {\n          node: node,\n          size: {\n            width: width,\n            height: height\n          },\n          handle: axis\n        });\n      }\n\n      // Reset internal data\n      if (handlerName === 'onResizeStop') _this2.resetData();\n    };\n  }\n\n  // Render a resize handle given an axis & DOM ref. Ref *must* be attached for\n  // the underlying draggable library to work properly.\n  ;\n  _proto.renderResizeHandle = function renderResizeHandle(handleAxis, ref) {\n    var handle = this.props.handle;\n    // No handle provided, make the default\n    if (!handle) {\n      return /*#__PURE__*/React.createElement(\"span\", {\n        className: \"react-resizable-handle react-resizable-handle-\" + handleAxis,\n        ref: ref\n      });\n    }\n    // Handle is a function, such as:\n    // `handle={(handleAxis) => <span className={...} />}`\n    if (typeof handle === 'function') {\n      return handle(handleAxis, ref);\n    }\n    // Handle is a React component (composite or DOM).\n    var isDOMElement = typeof handle.type === 'string';\n    var props = _objectSpread({\n      ref: ref\n    }, isDOMElement ? {} : {\n      handleAxis: handleAxis\n    });\n    return /*#__PURE__*/React.cloneElement(handle, props);\n  };\n  _proto.render = function render() {\n    var _this3 = this;\n    // Pass along only props not meant for the `<Resizable>`.`\n    // eslint-disable-next-line no-unused-vars\n    var _this$props2 = this.props,\n      children = _this$props2.children,\n      className = _this$props2.className,\n      draggableOpts = _this$props2.draggableOpts,\n      width = _this$props2.width,\n      height = _this$props2.height,\n      handle = _this$props2.handle,\n      handleSize = _this$props2.handleSize,\n      lockAspectRatio = _this$props2.lockAspectRatio,\n      axis = _this$props2.axis,\n      minConstraints = _this$props2.minConstraints,\n      maxConstraints = _this$props2.maxConstraints,\n      onResize = _this$props2.onResize,\n      onResizeStop = _this$props2.onResizeStop,\n      onResizeStart = _this$props2.onResizeStart,\n      resizeHandles = _this$props2.resizeHandles,\n      transformScale = _this$props2.transformScale,\n      p = _objectWithoutPropertiesLoose(_this$props2, _excluded);\n\n    // What we're doing here is getting the child of this element, and cloning it with this element's props.\n    // We are then defining its children as:\n    // 1. Its original children (resizable's child's children), and\n    // 2. One or more draggable handles.\n    return (0, _utils.cloneElement)(children, _objectSpread(_objectSpread({}, p), {}, {\n      className: (className ? className + \" \" : '') + \"react-resizable\",\n      children: [].concat(children.props.children, resizeHandles.map(function (handleAxis) {\n        var _this3$handleRefs$han;\n        // Create a ref to the handle so that `<DraggableCore>` doesn't have to use ReactDOM.findDOMNode().\n        var ref = (_this3$handleRefs$han = _this3.handleRefs[handleAxis]) != null ? _this3$handleRefs$han : _this3.handleRefs[handleAxis] = /*#__PURE__*/React.createRef();\n        return /*#__PURE__*/React.createElement(_reactDraggable.DraggableCore, _extends({}, draggableOpts, {\n          nodeRef: ref,\n          key: \"resizableHandle-\" + handleAxis,\n          onStop: _this3.resizeHandler('onResizeStop', handleAxis),\n          onStart: _this3.resizeHandler('onResizeStart', handleAxis),\n          onDrag: _this3.resizeHandler('onResize', handleAxis)\n        }), _this3.renderResizeHandle(handleAxis, ref));\n      }))\n    }));\n  };\n  return Resizable;\n}(React.Component);\nexports.default = Resizable;\nResizable.propTypes = _propTypes.resizableProps;\nResizable.defaultProps = {\n  axis: 'both',\n  handleSize: [20, 20],\n  lockAspectRatio: false,\n  minConstraints: [20, 20],\n  maxConstraints: [Infinity, Infinity],\n  resizeHandles: ['se'],\n  transformScale: 1\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _Resizable = _interopRequireDefault(require(\"./Resizable\"));\nvar _propTypes2 = require(\"./propTypes\");\nvar _excluded = [\"handle\", \"handleSize\", \"onResize\", \"onResizeStart\", \"onResizeStop\", \"draggableOpts\", \"minConstraints\", \"maxConstraints\", \"lockAspectRatio\", \"axis\", \"width\", \"height\", \"resizeHandles\", \"style\", \"transformScale\"];\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nvar ResizableBox = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(ResizableBox, _React$Component);\n  function ResizableBox() {\n    var _this;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n    _this.state = {\n      width: _this.props.width,\n      height: _this.props.height,\n      propsWidth: _this.props.width,\n      propsHeight: _this.props.height\n    };\n    _this.onResize = function (e, data) {\n      var size = data.size;\n      if (_this.props.onResize) {\n        e.persist == null ? void 0 : e.persist();\n        _this.setState(size, function () {\n          return _this.props.onResize && _this.props.onResize(e, data);\n        });\n      } else {\n        _this.setState(size);\n      }\n    };\n    return _this;\n  }\n  ResizableBox.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n    // If parent changes height/width, set that in our state.\n    if (state.propsWidth !== props.width || state.propsHeight !== props.height) {\n      return {\n        width: props.width,\n        height: props.height,\n        propsWidth: props.width,\n        propsHeight: props.height\n      };\n    }\n    return null;\n  };\n  var _proto = ResizableBox.prototype;\n  _proto.render = function render() {\n    // Basic wrapper around a Resizable instance.\n    // If you use Resizable directly, you are responsible for updating the child component\n    // with a new width and height.\n    var _this$props = this.props,\n      handle = _this$props.handle,\n      handleSize = _this$props.handleSize,\n      onResize = _this$props.onResize,\n      onResizeStart = _this$props.onResizeStart,\n      onResizeStop = _this$props.onResizeStop,\n      draggableOpts = _this$props.draggableOpts,\n      minConstraints = _this$props.minConstraints,\n      maxConstraints = _this$props.maxConstraints,\n      lockAspectRatio = _this$props.lockAspectRatio,\n      axis = _this$props.axis,\n      width = _this$props.width,\n      height = _this$props.height,\n      resizeHandles = _this$props.resizeHandles,\n      style = _this$props.style,\n      transformScale = _this$props.transformScale,\n      props = _objectWithoutPropertiesLoose(_this$props, _excluded);\n    return /*#__PURE__*/React.createElement(_Resizable.default, {\n      axis: axis,\n      draggableOpts: draggableOpts,\n      handle: handle,\n      handleSize: handleSize,\n      height: this.state.height,\n      lockAspectRatio: lockAspectRatio,\n      maxConstraints: maxConstraints,\n      minConstraints: minConstraints,\n      onResizeStart: onResizeStart,\n      onResize: this.onResize,\n      onResizeStop: onResizeStop,\n      resizeHandles: resizeHandles,\n      transformScale: transformScale,\n      width: this.state.width\n    }, /*#__PURE__*/React.createElement(\"div\", _extends({}, props, {\n      style: _objectSpread(_objectSpread({}, style), {}, {\n        width: this.state.width + 'px',\n        height: this.state.height + 'px'\n      })\n    })));\n  };\n  return ResizableBox;\n}(React.Component);\nexports.default = ResizableBox;\n// PropTypes are identical to <Resizable>, except that children are not strictly required to be present.\nResizableBox.propTypes = _objectSpread(_objectSpread({}, _propTypes2.resizableProps), {}, {\n  children: _propTypes.default.element\n});","'use strict';\nmodule.exports = function() {\n  throw new Error(\"Don't instantiate Resizable directly! Use require('react-resizable').Resizable\");\n};\n\nmodule.exports.Resizable = require('./build/Resizable').default;\nmodule.exports.ResizableBox = require('./build/ResizableBox').default;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.resizeHandleType = exports.resizeHandleAxesType = exports.default = void 0;\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _react = _interopRequireDefault(require(\"react\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\n/*:: import type {\n  Ref,\n  ChildrenArray as ReactChildrenArray,\n  Element as ReactElement\n} from \"react\";*/\n/*:: import type {\n  DragOverEvent,\n  EventCallback,\n  CompactType,\n  Layout,\n  LayoutItem,\n  ResizeHandleAxis\n} from \"./utils\";*/\n/*:: export type ReactRef<T: HTMLElement> = {|\n  +current: T | null\n|};*/\n// util\n/*:: export type ResizeHandle =\n  | ReactElement<any>\n  | ((\n      resizeHandleAxis: ResizeHandleAxis,\n      ref: ReactRef<HTMLElement>\n    ) => ReactElement<any>);*/\n// Defines which resize handles should be rendered (default: 'se')\n// Allows for any combination of:\n// 's' - South handle (bottom-center)\n// 'w' - West handle (left-center)\n// 'e' - East handle (right-center)\n// 'n' - North handle (top-center)\n// 'sw' - Southwest handle (bottom-left)\n// 'nw' - Northwest handle (top-left)\n// 'se' - Southeast handle (bottom-right)\n// 'ne' - Northeast handle (top-right)\nconst resizeHandleAxesType /*: ReactPropsChainableTypeChecker*/ = exports.resizeHandleAxesType = _propTypes.default.arrayOf(_propTypes.default.oneOf([\"s\", \"w\", \"e\", \"n\", \"sw\", \"nw\", \"se\", \"ne\"]));\n// Custom component for resize handles\nconst resizeHandleType /*: ReactPropsChainableTypeChecker*/ = exports.resizeHandleType = _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.func]);\n/*:: export type Props = {|\n  className: string,\n  style: Object,\n  width: number,\n  autoSize: boolean,\n  cols: number,\n  draggableCancel: string,\n  draggableHandle: string,\n  verticalCompact: boolean,\n  compactType: CompactType,\n  layout: Layout,\n  margin: [number, number],\n  containerPadding: ?[number, number],\n  rowHeight: number,\n  maxRows: number,\n  isBounded: boolean,\n  isDraggable: boolean,\n  isResizable: boolean,\n  isDroppable: boolean,\n  preventCollision: boolean,\n  useCSSTransforms: boolean,\n  transformScale: number,\n  droppingItem: $Shape<LayoutItem>,\n  resizeHandles: ResizeHandleAxis[],\n  resizeHandle?: ResizeHandle,\n  allowOverlap: boolean,\n\n  // Callbacks\n  onLayoutChange: Layout => void,\n  onDrag: EventCallback,\n  onDragStart: EventCallback,\n  onDragStop: EventCallback,\n  onResize: EventCallback,\n  onResizeStart: EventCallback,\n  onResizeStop: EventCallback,\n  onDropDragOver: (e: DragOverEvent) => ?({| w?: number, h?: number |} | false),\n  onDrop: (layout: Layout, item: ?LayoutItem, e: Event) => void,\n  children: ReactChildrenArray<ReactElement<any>>,\n  innerRef?: Ref<\"div\">\n|};*/\n/*:: export type DefaultProps = $Diff<\n  Props,\n  {\n    children: ReactChildrenArray<ReactElement<any>>,\n    width: number\n  }\n>;*/\nvar _default = exports.default = {\n  //\n  // Basic props\n  //\n  className: _propTypes.default.string,\n  style: _propTypes.default.object,\n  // This can be set explicitly. If it is not set, it will automatically\n  // be set to the container width. Note that resizes will *not* cause this to adjust.\n  // If you need that behavior, use WidthProvider.\n  width: _propTypes.default.number,\n  // If true, the container height swells and contracts to fit contents\n  autoSize: _propTypes.default.bool,\n  // # of cols.\n  cols: _propTypes.default.number,\n  // A selector that will not be draggable.\n  draggableCancel: _propTypes.default.string,\n  // A selector for the draggable handler\n  draggableHandle: _propTypes.default.string,\n  // Deprecated\n  verticalCompact: function (props /*: Props*/) {\n    if (props.verticalCompact === false && process.env.NODE_ENV !== \"production\") {\n      console.warn(\n      // eslint-disable-line no-console\n      \"`verticalCompact` on <ReactGridLayout> is deprecated and will be removed soon. \" + 'Use `compactType`: \"horizontal\" | \"vertical\" | null.');\n    }\n  },\n  // Choose vertical or hotizontal compaction\n  compactType: (_propTypes.default.oneOf([\"vertical\", \"horizontal\"]) /*: ReactPropsChainableTypeChecker*/),\n  // layout is an array of object with the format:\n  // {x: Number, y: Number, w: Number, h: Number, i: String}\n  layout: function (props /*: Props*/) {\n    var layout = props.layout;\n    // I hope you're setting the data-grid property on the grid items\n    if (layout === undefined) return;\n    require(\"./utils\").validateLayout(layout, \"layout\");\n  },\n  //\n  // Grid Dimensions\n  //\n\n  // Margin between items [x, y] in px\n  margin: (_propTypes.default.arrayOf(_propTypes.default.number) /*: ReactPropsChainableTypeChecker*/),\n  // Padding inside the container [x, y] in px\n  containerPadding: (_propTypes.default.arrayOf(_propTypes.default.number) /*: ReactPropsChainableTypeChecker*/),\n  // Rows have a static height, but you can change this based on breakpoints if you like\n  rowHeight: _propTypes.default.number,\n  // Default Infinity, but you can specify a max here if you like.\n  // Note that this isn't fully fleshed out and won't error if you specify a layout that\n  // extends beyond the row capacity. It will, however, not allow users to drag/resize\n  // an item past the barrier. They can push items beyond the barrier, though.\n  // Intentionally not documented for this reason.\n  maxRows: _propTypes.default.number,\n  //\n  // Flags\n  //\n  isBounded: _propTypes.default.bool,\n  isDraggable: _propTypes.default.bool,\n  isResizable: _propTypes.default.bool,\n  // If true, grid can be placed one over the other.\n  allowOverlap: _propTypes.default.bool,\n  // If true, grid items won't change position when being dragged over.\n  preventCollision: _propTypes.default.bool,\n  // Use CSS transforms instead of top/left\n  useCSSTransforms: _propTypes.default.bool,\n  // parent layout transform scale\n  transformScale: _propTypes.default.number,\n  // If true, an external element can trigger onDrop callback with a specific grid position as a parameter\n  isDroppable: _propTypes.default.bool,\n  // Resize handle options\n  resizeHandles: resizeHandleAxesType,\n  resizeHandle: resizeHandleType,\n  //\n  // Callbacks\n  //\n\n  // Callback so you can save the layout. Calls after each drag & resize stops.\n  onLayoutChange: _propTypes.default.func,\n  // Calls when drag starts. Callback is of the signature (layout, oldItem, newItem, placeholder, e, ?node).\n  // All callbacks below have the same signature. 'start' and 'stop' callbacks omit the 'placeholder'.\n  onDragStart: _propTypes.default.func,\n  // Calls on each drag movement.\n  onDrag: _propTypes.default.func,\n  // Calls when drag is complete.\n  onDragStop: _propTypes.default.func,\n  //Calls when resize starts.\n  onResizeStart: _propTypes.default.func,\n  // Calls when resize movement happens.\n  onResize: _propTypes.default.func,\n  // Calls when resize is complete.\n  onResizeStop: _propTypes.default.func,\n  // Calls when some element is dropped.\n  onDrop: _propTypes.default.func,\n  //\n  // Other validations\n  //\n\n  droppingItem: (_propTypes.default.shape({\n    i: _propTypes.default.string.isRequired,\n    w: _propTypes.default.number.isRequired,\n    h: _propTypes.default.number.isRequired\n  }) /*: ReactPropsChainableTypeChecker*/),\n  // Children must not have duplicate keys.\n  children: function (props /*: Props*/, propName /*: string*/) {\n    const children = props[propName];\n\n    // Check children keys for duplicates. Throw if found.\n    const keys = {};\n    _react.default.Children.forEach(children, function (child) {\n      if (child?.key == null) return;\n      if (keys[child.key]) {\n        throw new Error('Duplicate child key \"' + child.key + '\" found! This will cause problems in ReactGridLayout.');\n      }\n      keys[child.key] = true;\n    });\n  },\n  // Optional ref for getting a reference for the wrapping div.\n  innerRef: _propTypes.default.any\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _react = _interopRequireDefault(require(\"react\"));\nvar _reactDom = require(\"react-dom\");\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _reactDraggable = require(\"react-draggable\");\nvar _reactResizable = require(\"react-resizable\");\nvar _utils = require(\"./utils\");\nvar _calculateUtils = require(\"./calculateUtils\");\nvar _ReactGridLayoutPropTypes = require(\"./ReactGridLayoutPropTypes\");\nvar _clsx = _interopRequireDefault(require(\"clsx\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/*:: import type { Element as ReactElement, Node as ReactNode } from \"react\";*/\n/*:: import type {\n  ReactDraggableCallbackData,\n  GridDragEvent,\n  GridResizeEvent,\n  DroppingPosition,\n  Position,\n  ResizeHandleAxis\n} from \"./utils\";*/\n/*:: import type { PositionParams } from \"./calculateUtils\";*/\n/*:: import type { ResizeHandle, ReactRef } from \"./ReactGridLayoutPropTypes\";*/\n/*:: type PartialPosition = { top: number, left: number };*/\n/*:: type GridItemCallback<Data: GridDragEvent | GridResizeEvent> = (\n  i: string,\n  w: number,\n  h: number,\n  Data\n) => void;*/\n/*:: type ResizeCallbackData = {\n  node: HTMLElement,\n  size: Position,\n  handle: ResizeHandleAxis\n};*/\n/*:: type GridItemResizeCallback = (\n  e: Event,\n  data: ResizeCallbackData,\n  position: Position\n) => void;*/\n/*:: type State = {\n  resizing: ?{ top: number, left: number, width: number, height: number },\n  dragging: ?{ top: number, left: number },\n  className: string\n};*/\n/*:: type Props = {\n  children: ReactElement<any>,\n  cols: number,\n  containerWidth: number,\n  margin: [number, number],\n  containerPadding: [number, number],\n  rowHeight: number,\n  maxRows: number,\n  isDraggable: boolean,\n  isResizable: boolean,\n  isBounded: boolean,\n  static?: boolean,\n  useCSSTransforms?: boolean,\n  usePercentages?: boolean,\n  transformScale: number,\n  droppingPosition?: DroppingPosition,\n\n  className: string,\n  style?: Object,\n  // Draggability\n  cancel: string,\n  handle: string,\n\n  x: number,\n  y: number,\n  w: number,\n  h: number,\n\n  minW: number,\n  maxW: number,\n  minH: number,\n  maxH: number,\n  i: string,\n\n  resizeHandles?: ResizeHandleAxis[],\n  resizeHandle?: ResizeHandle,\n\n  onDrag?: GridItemCallback<GridDragEvent>,\n  onDragStart?: GridItemCallback<GridDragEvent>,\n  onDragStop?: GridItemCallback<GridDragEvent>,\n  onResize?: GridItemCallback<GridResizeEvent>,\n  onResizeStart?: GridItemCallback<GridResizeEvent>,\n  onResizeStop?: GridItemCallback<GridResizeEvent>\n};*/\n/*:: type DefaultProps = {\n  className: string,\n  cancel: string,\n  handle: string,\n  minH: number,\n  minW: number,\n  maxH: number,\n  maxW: number,\n  transformScale: number\n};*/\n/**\n * An individual item within a ReactGridLayout.\n */\nclass GridItem extends _react.default.Component /*:: <Props, State>*/{\n  constructor() {\n    super(...arguments);\n    _defineProperty(this, \"state\", {\n      resizing: null,\n      dragging: null,\n      className: \"\"\n    });\n    _defineProperty(this, \"elementRef\", /*#__PURE__*/_react.default.createRef());\n    /**\n     * onDragStart event handler\n     * @param  {Event}  e             event data\n     * @param  {Object} callbackData  an object with node, delta and position information\n     */\n    _defineProperty(this, \"onDragStart\", (e, _ref) => {\n      let {\n        node\n      } = _ref;\n      const {\n        onDragStart,\n        transformScale\n      } = this.props;\n      if (!onDragStart) return;\n      const newPosition /*: PartialPosition*/ = {\n        top: 0,\n        left: 0\n      };\n\n      // TODO: this wont work on nested parents\n      const {\n        offsetParent\n      } = node;\n      if (!offsetParent) return;\n      const parentRect = offsetParent.getBoundingClientRect();\n      const clientRect = node.getBoundingClientRect();\n      const cLeft = clientRect.left / transformScale;\n      const pLeft = parentRect.left / transformScale;\n      const cTop = clientRect.top / transformScale;\n      const pTop = parentRect.top / transformScale;\n      newPosition.left = cLeft - pLeft + offsetParent.scrollLeft;\n      newPosition.top = cTop - pTop + offsetParent.scrollTop;\n      this.setState({\n        dragging: newPosition\n      });\n\n      // Call callback with this data\n      const {\n        x,\n        y\n      } = (0, _calculateUtils.calcXY)(this.getPositionParams(), newPosition.top, newPosition.left, this.props.w, this.props.h);\n      return onDragStart.call(this, this.props.i, x, y, {\n        e,\n        node,\n        newPosition\n      });\n    });\n    /**\n     * onDrag event handler\n     * @param  {Event}  e             event data\n     * @param  {Object} callbackData  an object with node, delta and position information\n     * @param  {boolean} dontFlush    if true, will not call flushSync\n     */\n    _defineProperty(this, \"onDrag\", (e, _ref2, dontFlush) => {\n      let {\n        node,\n        deltaX,\n        deltaY\n      } = _ref2;\n      const {\n        onDrag\n      } = this.props;\n      if (!onDrag) return;\n      if (!this.state.dragging) {\n        throw new Error(\"onDrag called before onDragStart.\");\n      }\n      let top = this.state.dragging.top + deltaY;\n      let left = this.state.dragging.left + deltaX;\n      const {\n        isBounded,\n        i,\n        w,\n        h,\n        containerWidth\n      } = this.props;\n      const positionParams = this.getPositionParams();\n\n      // Boundary calculations; keeps items within the grid\n      if (isBounded) {\n        const {\n          offsetParent\n        } = node;\n        if (offsetParent) {\n          const {\n            margin,\n            rowHeight\n          } = this.props;\n          const bottomBoundary = offsetParent.clientHeight - (0, _calculateUtils.calcGridItemWHPx)(h, rowHeight, margin[1]);\n          top = (0, _calculateUtils.clamp)(top, 0, bottomBoundary);\n          const colWidth = (0, _calculateUtils.calcGridColWidth)(positionParams);\n          const rightBoundary = containerWidth - (0, _calculateUtils.calcGridItemWHPx)(w, colWidth, margin[0]);\n          left = (0, _calculateUtils.clamp)(left, 0, rightBoundary);\n        }\n      }\n      const newPosition /*: PartialPosition*/ = {\n        top,\n        left\n      };\n\n      // dontFlush is set if we're calling from inside\n      if (dontFlush) {\n        this.setState({\n          dragging: newPosition\n        });\n      } else {\n        (0, _reactDom.flushSync)(() => {\n          this.setState({\n            dragging: newPosition\n          });\n        });\n      }\n\n      // Call callback with this data\n      const {\n        x,\n        y\n      } = (0, _calculateUtils.calcXY)(positionParams, top, left, w, h);\n      return onDrag.call(this, i, x, y, {\n        e,\n        node,\n        newPosition\n      });\n    });\n    /**\n     * onDragStop event handler\n     * @param  {Event}  e             event data\n     * @param  {Object} callbackData  an object with node, delta and position information\n     */\n    _defineProperty(this, \"onDragStop\", (e, _ref3) => {\n      let {\n        node\n      } = _ref3;\n      const {\n        onDragStop\n      } = this.props;\n      if (!onDragStop) return;\n      if (!this.state.dragging) {\n        throw new Error(\"onDragEnd called before onDragStart.\");\n      }\n      const {\n        w,\n        h,\n        i\n      } = this.props;\n      const {\n        left,\n        top\n      } = this.state.dragging;\n      const newPosition /*: PartialPosition*/ = {\n        top,\n        left\n      };\n      this.setState({\n        dragging: null\n      });\n      const {\n        x,\n        y\n      } = (0, _calculateUtils.calcXY)(this.getPositionParams(), top, left, w, h);\n      return onDragStop.call(this, i, x, y, {\n        e,\n        node,\n        newPosition\n      });\n    });\n    /**\n     * onResizeStop event handler\n     * @param  {Event}  e             event data\n     * @param  {Object} callbackData  an object with node and size information\n     */\n    _defineProperty(this, \"onResizeStop\", (e, callbackData, position) => this.onResizeHandler(e, callbackData, position, \"onResizeStop\"));\n    // onResizeStart event handler\n    _defineProperty(this, \"onResizeStart\", (e, callbackData, position) => this.onResizeHandler(e, callbackData, position, \"onResizeStart\"));\n    // onResize event handler\n    _defineProperty(this, \"onResize\", (e, callbackData, position) => this.onResizeHandler(e, callbackData, position, \"onResize\"));\n  }\n  shouldComponentUpdate(nextProps /*: Props*/, nextState /*: State*/) /*: boolean*/{\n    // We can't deeply compare children. If the developer memoizes them, we can\n    // use this optimization.\n    if (this.props.children !== nextProps.children) return true;\n    if (this.props.droppingPosition !== nextProps.droppingPosition) return true;\n    // TODO memoize these calculations so they don't take so long?\n    const oldPosition = (0, _calculateUtils.calcGridItemPosition)(this.getPositionParams(this.props), this.props.x, this.props.y, this.props.w, this.props.h, this.state);\n    const newPosition = (0, _calculateUtils.calcGridItemPosition)(this.getPositionParams(nextProps), nextProps.x, nextProps.y, nextProps.w, nextProps.h, nextState);\n    return !(0, _utils.fastPositionEqual)(oldPosition, newPosition) || this.props.useCSSTransforms !== nextProps.useCSSTransforms;\n  }\n  componentDidMount() {\n    this.moveDroppingItem({});\n  }\n  componentDidUpdate(prevProps /*: Props*/) {\n    this.moveDroppingItem(prevProps);\n  }\n\n  // When a droppingPosition is present, this means we should fire a move event, as if we had moved\n  // this element by `x, y` pixels.\n  moveDroppingItem(prevProps /*: Props*/) {\n    const {\n      droppingPosition\n    } = this.props;\n    if (!droppingPosition) return;\n    const node = this.elementRef.current;\n    // Can't find DOM node (are we unmounted?)\n    if (!node) return;\n    const prevDroppingPosition = prevProps.droppingPosition || {\n      left: 0,\n      top: 0\n    };\n    const {\n      dragging\n    } = this.state;\n    const shouldDrag = dragging && droppingPosition.left !== prevDroppingPosition.left || droppingPosition.top !== prevDroppingPosition.top;\n    if (!dragging) {\n      this.onDragStart(droppingPosition.e, {\n        node,\n        deltaX: droppingPosition.left,\n        deltaY: droppingPosition.top\n      });\n    } else if (shouldDrag) {\n      const deltaX = droppingPosition.left - dragging.left;\n      const deltaY = droppingPosition.top - dragging.top;\n      this.onDrag(droppingPosition.e, {\n        node,\n        deltaX,\n        deltaY\n      }, true // dontFLush: avoid flushSync to temper warnings\n      );\n    }\n  }\n  getPositionParams() /*: PositionParams*/{\n    let props /*: Props*/ = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n    return {\n      cols: props.cols,\n      containerPadding: props.containerPadding,\n      containerWidth: props.containerWidth,\n      margin: props.margin,\n      maxRows: props.maxRows,\n      rowHeight: props.rowHeight\n    };\n  }\n\n  /**\n   * This is where we set the grid item's absolute placement. It gets a little tricky because we want to do it\n   * well when server rendering, and the only way to do that properly is to use percentage width/left because\n   * we don't know exactly what the browser viewport is.\n   * Unfortunately, CSS Transforms, which are great for performance, break in this instance because a percentage\n   * left is relative to the item itself, not its container! So we cannot use them on the server rendering pass.\n   *\n   * @param  {Object} pos Position object with width, height, left, top.\n   * @return {Object}     Style object.\n   */\n  createStyle(pos /*: Position*/) /*: { [key: string]: ?string }*/{\n    const {\n      usePercentages,\n      containerWidth,\n      useCSSTransforms\n    } = this.props;\n    let style;\n    // CSS Transforms support (default)\n    if (useCSSTransforms) {\n      style = (0, _utils.setTransform)(pos);\n    } else {\n      // top,left (slow)\n      style = (0, _utils.setTopLeft)(pos);\n\n      // This is used for server rendering.\n      if (usePercentages) {\n        style.left = (0, _utils.perc)(pos.left / containerWidth);\n        style.width = (0, _utils.perc)(pos.width / containerWidth);\n      }\n    }\n    return style;\n  }\n\n  /**\n   * Mix a Draggable instance into a child.\n   * @param  {Element} child    Child element.\n   * @return {Element}          Child wrapped in Draggable.\n   */\n  mixinDraggable(child /*: ReactElement<any>*/, isDraggable /*: boolean*/) /*: ReactElement<any>*/{\n    return /*#__PURE__*/_react.default.createElement(_reactDraggable.DraggableCore, {\n      disabled: !isDraggable,\n      onStart: this.onDragStart,\n      onDrag: this.onDrag,\n      onStop: this.onDragStop,\n      handle: this.props.handle,\n      cancel: \".react-resizable-handle\" + (this.props.cancel ? \",\" + this.props.cancel : \"\"),\n      scale: this.props.transformScale,\n      nodeRef: this.elementRef\n    }, child);\n  }\n\n  /**\n   * Utility function to setup callback handler definitions for\n   * similarily structured resize events.\n   */\n  curryResizeHandler(position /*: Position*/, handler /*: Function*/) /*: Function*/{\n    return (e /*: Event*/, data /*: ResizeCallbackData*/) => /*: Function*/handler(e, data, position);\n  }\n\n  /**\n   * Mix a Resizable instance into a child.\n   * @param  {Element} child    Child element.\n   * @param  {Object} position  Position object (pixel values)\n   * @return {Element}          Child wrapped in Resizable.\n   */\n  mixinResizable(child /*: ReactElement<any>*/, position /*: Position*/, isResizable /*: boolean*/) /*: ReactElement<any>*/{\n    const {\n      cols,\n      minW,\n      minH,\n      maxW,\n      maxH,\n      transformScale,\n      resizeHandles,\n      resizeHandle\n    } = this.props;\n    const positionParams = this.getPositionParams();\n\n    // This is the max possible width - doesn't go to infinity because of the width of the window\n    const maxWidth = (0, _calculateUtils.calcGridItemPosition)(positionParams, 0, 0, cols, 0).width;\n\n    // Calculate min/max constraints using our min & maxes\n    const mins = (0, _calculateUtils.calcGridItemPosition)(positionParams, 0, 0, minW, minH);\n    const maxes = (0, _calculateUtils.calcGridItemPosition)(positionParams, 0, 0, maxW, maxH);\n    const minConstraints = [mins.width, mins.height];\n    const maxConstraints = [Math.min(maxes.width, maxWidth), Math.min(maxes.height, Infinity)];\n    return /*#__PURE__*/_react.default.createElement(_reactResizable.Resizable\n    // These are opts for the resize handle itself\n    , {\n      draggableOpts: {\n        disabled: !isResizable\n      },\n      className: isResizable ? undefined : \"react-resizable-hide\",\n      width: position.width,\n      height: position.height,\n      minConstraints: minConstraints,\n      maxConstraints: maxConstraints,\n      onResizeStop: this.curryResizeHandler(position, this.onResizeStop),\n      onResizeStart: this.curryResizeHandler(position, this.onResizeStart),\n      onResize: this.curryResizeHandler(position, this.onResize),\n      transformScale: transformScale,\n      resizeHandles: resizeHandles,\n      handle: resizeHandle\n    }, child);\n  }\n  /**\n   * Wrapper around resize events to provide more useful data.\n   */\n  onResizeHandler(e /*: Event*/, _ref4 /*:: */,\n  // 'size' is updated position\n  position /*: Position*/,\n  // existing position\n  handlerName /*: string*/) /*: void*/{\n    let {\n      node,\n      size,\n      handle\n    } /*: ResizeCallbackData*/ = _ref4 /*: ResizeCallbackData*/;\n    const handler = this.props[handlerName];\n    if (!handler) return;\n    const {\n      x,\n      y,\n      i,\n      maxH,\n      minH,\n      containerWidth\n    } = this.props;\n    const {\n      minW,\n      maxW\n    } = this.props;\n\n    // Clamping of dimensions based on resize direction\n    let updatedSize = size;\n    if (node) {\n      updatedSize = (0, _utils.resizeItemInDirection)(handle, position, size, containerWidth);\n      (0, _reactDom.flushSync)(() => {\n        this.setState({\n          resizing: handlerName === \"onResizeStop\" ? null : updatedSize\n        });\n      });\n    }\n\n    // Get new XY based on pixel size\n    let {\n      w,\n      h\n    } = (0, _calculateUtils.calcWH)(this.getPositionParams(), updatedSize.width, updatedSize.height, x, y, handle);\n\n    // Min/max capping.\n    // minW should be at least 1 (TODO propTypes validation?)\n    w = (0, _calculateUtils.clamp)(w, Math.max(minW, 1), maxW);\n    h = (0, _calculateUtils.clamp)(h, minH, maxH);\n    handler.call(this, i, w, h, {\n      e,\n      node,\n      size: updatedSize,\n      handle\n    });\n  }\n  render() /*: ReactNode*/{\n    const {\n      x,\n      y,\n      w,\n      h,\n      isDraggable,\n      isResizable,\n      droppingPosition,\n      useCSSTransforms\n    } = this.props;\n    const pos = (0, _calculateUtils.calcGridItemPosition)(this.getPositionParams(), x, y, w, h, this.state);\n    const child = _react.default.Children.only(this.props.children);\n\n    // Create the child element. We clone the existing element but modify its className and style.\n    let newChild = /*#__PURE__*/_react.default.cloneElement(child, {\n      ref: this.elementRef,\n      className: (0, _clsx.default)(\"react-grid-item\", child.props.className, this.props.className, {\n        static: this.props.static,\n        resizing: Boolean(this.state.resizing),\n        \"react-draggable\": isDraggable,\n        \"react-draggable-dragging\": Boolean(this.state.dragging),\n        dropping: Boolean(droppingPosition),\n        cssTransforms: useCSSTransforms\n      }),\n      // We can set the width and height on the child, but unfortunately we can't set the position.\n      style: {\n        ...this.props.style,\n        ...child.props.style,\n        ...this.createStyle(pos)\n      }\n    });\n\n    // Resizable support. This is usually on but the user can toggle it off.\n    newChild = this.mixinResizable(newChild, pos, isResizable);\n\n    // Draggable support. This is always on, except for with placeholders.\n    newChild = this.mixinDraggable(newChild, isDraggable);\n    return newChild;\n  }\n}\nexports.default = GridItem;\n_defineProperty(GridItem, \"propTypes\", {\n  // Children must be only a single element\n  children: _propTypes.default.element,\n  // General grid attributes\n  cols: _propTypes.default.number.isRequired,\n  containerWidth: _propTypes.default.number.isRequired,\n  rowHeight: _propTypes.default.number.isRequired,\n  margin: _propTypes.default.array.isRequired,\n  maxRows: _propTypes.default.number.isRequired,\n  containerPadding: _propTypes.default.array.isRequired,\n  // These are all in grid units\n  x: _propTypes.default.number.isRequired,\n  y: _propTypes.default.number.isRequired,\n  w: _propTypes.default.number.isRequired,\n  h: _propTypes.default.number.isRequired,\n  // All optional\n  minW: function (props /*: Props*/, propName /*: string*/) {\n    const value = props[propName];\n    if (typeof value !== \"number\") return new Error(\"minWidth not Number\");\n    if (value > props.w || value > props.maxW) return new Error(\"minWidth larger than item width/maxWidth\");\n  },\n  maxW: function (props /*: Props*/, propName /*: string*/) {\n    const value = props[propName];\n    if (typeof value !== \"number\") return new Error(\"maxWidth not Number\");\n    if (value < props.w || value < props.minW) return new Error(\"maxWidth smaller than item width/minWidth\");\n  },\n  minH: function (props /*: Props*/, propName /*: string*/) {\n    const value = props[propName];\n    if (typeof value !== \"number\") return new Error(\"minHeight not Number\");\n    if (value > props.h || value > props.maxH) return new Error(\"minHeight larger than item height/maxHeight\");\n  },\n  maxH: function (props /*: Props*/, propName /*: string*/) {\n    const value = props[propName];\n    if (typeof value !== \"number\") return new Error(\"maxHeight not Number\");\n    if (value < props.h || value < props.minH) return new Error(\"maxHeight smaller than item height/minHeight\");\n  },\n  // ID is nice to have for callbacks\n  i: _propTypes.default.string.isRequired,\n  // Resize handle options\n  resizeHandles: _ReactGridLayoutPropTypes.resizeHandleAxesType,\n  resizeHandle: _ReactGridLayoutPropTypes.resizeHandleType,\n  // Functions\n  onDragStop: _propTypes.default.func,\n  onDragStart: _propTypes.default.func,\n  onDrag: _propTypes.default.func,\n  onResizeStop: _propTypes.default.func,\n  onResizeStart: _propTypes.default.func,\n  onResize: _propTypes.default.func,\n  // Flags\n  isDraggable: _propTypes.default.bool.isRequired,\n  isResizable: _propTypes.default.bool.isRequired,\n  isBounded: _propTypes.default.bool.isRequired,\n  static: _propTypes.default.bool,\n  // Use CSS transforms instead of top/left\n  useCSSTransforms: _propTypes.default.bool.isRequired,\n  transformScale: _propTypes.default.number,\n  // Others\n  className: _propTypes.default.string,\n  // Selector for draggable handle\n  handle: _propTypes.default.string,\n  // Selector for draggable cancel (see react-draggable)\n  cancel: _propTypes.default.string,\n  // Current position of a dropping element\n  droppingPosition: _propTypes.default.shape({\n    e: _propTypes.default.object.isRequired,\n    left: _propTypes.default.number.isRequired,\n    top: _propTypes.default.number.isRequired\n  })\n});\n_defineProperty(GridItem, \"defaultProps\", {\n  className: \"\",\n  cancel: \"\",\n  handle: \"\",\n  minH: 1,\n  minW: 1,\n  maxH: Infinity,\n  maxW: Infinity,\n  transformScale: 1\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _fastEquals = require(\"fast-equals\");\nvar _clsx = _interopRequireDefault(require(\"clsx\"));\nvar _utils = require(\"./utils\");\nvar _calculateUtils = require(\"./calculateUtils\");\nvar _GridItem = _interopRequireDefault(require(\"./GridItem\"));\nvar _ReactGridLayoutPropTypes = _interopRequireDefault(require(\"./ReactGridLayoutPropTypes\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction _interopRequireWildcard(e, t) { if (\"function\" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || \"object\" != typeof e && \"function\" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) \"default\" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/*:: import type {\n  ChildrenArray as ReactChildrenArray,\n  Element as ReactElement\n} from \"react\";*/\n/*:: import type {\n  CompactType,\n  GridResizeEvent,\n  GridDragEvent,\n  DragOverEvent,\n  Layout,\n  DroppingPosition,\n  LayoutItem\n} from \"./utils\";*/\n// Types\n/*:: import type { PositionParams } from \"./calculateUtils\";*/\n/*:: type State = {\n  activeDrag: ?LayoutItem,\n  layout: Layout,\n  mounted: boolean,\n  oldDragItem: ?LayoutItem,\n  oldLayout: ?Layout,\n  oldResizeItem: ?LayoutItem,\n  resizing: boolean,\n  droppingDOMNode: ?ReactElement<any>,\n  droppingPosition?: DroppingPosition,\n  // Mirrored props\n  children: ReactChildrenArray<ReactElement<any>>,\n  compactType?: CompactType,\n  propsLayout?: Layout\n};*/\n/*:: import type { Props, DefaultProps } from \"./ReactGridLayoutPropTypes\";*/\n// End Types\nconst layoutClassName = \"react-grid-layout\";\nlet isFirefox = false;\n// Try...catch will protect from navigator not existing (e.g. node) or a bad implementation of navigator\ntry {\n  isFirefox = /firefox/i.test(navigator.userAgent);\n} catch (e) {\n  /* Ignore */\n}\n\n/**\n * A reactive, fluid grid layout with draggable, resizable components.\n */\n\nclass ReactGridLayout extends React.Component /*:: <Props, State>*/{\n  constructor() {\n    super(...arguments);\n    _defineProperty(this, \"state\", {\n      activeDrag: null,\n      layout: (0, _utils.synchronizeLayoutWithChildren)(this.props.layout, this.props.children, this.props.cols,\n      // Legacy support for verticalCompact: false\n      (0, _utils.compactType)(this.props), this.props.allowOverlap),\n      mounted: false,\n      oldDragItem: null,\n      oldLayout: null,\n      oldResizeItem: null,\n      resizing: false,\n      droppingDOMNode: null,\n      children: []\n    });\n    _defineProperty(this, \"dragEnterCounter\", 0);\n    /**\n     * When dragging starts\n     * @param {String} i Id of the child\n     * @param {Number} x X position of the move\n     * @param {Number} y Y position of the move\n     * @param {Event} e The mousedown event\n     * @param {Element} node The current dragging DOM element\n     */\n    _defineProperty(this, \"onDragStart\", (i /*: string*/, x /*: number*/, y /*: number*/, _ref /*:: */) => {\n      let {\n        e,\n        node\n      } /*: GridDragEvent*/ = _ref /*: GridDragEvent*/;\n      const {\n        layout\n      } = this.state;\n      const l = (0, _utils.getLayoutItem)(layout, i);\n      if (!l) return;\n\n      // Create placeholder (display only)\n      const placeholder = {\n        w: l.w,\n        h: l.h,\n        x: l.x,\n        y: l.y,\n        placeholder: true,\n        i: i\n      };\n      this.setState({\n        oldDragItem: (0, _utils.cloneLayoutItem)(l),\n        oldLayout: layout,\n        activeDrag: placeholder\n      });\n      return this.props.onDragStart(layout, l, l, null, e, node);\n    });\n    /**\n     * Each drag movement create a new dragelement and move the element to the dragged location\n     * @param {String} i Id of the child\n     * @param {Number} x X position of the move\n     * @param {Number} y Y position of the move\n     * @param {Event} e The mousedown event\n     * @param {Element} node The current dragging DOM element\n     */\n    _defineProperty(this, \"onDrag\", (i, x, y, _ref2) => {\n      let {\n        e,\n        node\n      } = _ref2;\n      const {\n        oldDragItem\n      } = this.state;\n      let {\n        layout\n      } = this.state;\n      const {\n        cols,\n        allowOverlap,\n        preventCollision\n      } = this.props;\n      const l = (0, _utils.getLayoutItem)(layout, i);\n      if (!l) return;\n\n      // Create placeholder (display only)\n      const placeholder = {\n        w: l.w,\n        h: l.h,\n        x: l.x,\n        y: l.y,\n        placeholder: true,\n        i: i\n      };\n\n      // Move the element to the dragged location.\n      const isUserAction = true;\n      layout = (0, _utils.moveElement)(layout, l, x, y, isUserAction, preventCollision, (0, _utils.compactType)(this.props), cols, allowOverlap);\n      this.props.onDrag(layout, oldDragItem, l, placeholder, e, node);\n      this.setState({\n        layout: allowOverlap ? layout : (0, _utils.compact)(layout, (0, _utils.compactType)(this.props), cols),\n        activeDrag: placeholder\n      });\n    });\n    /**\n     * When dragging stops, figure out which position the element is closest to and update its x and y.\n     * @param  {String} i Index of the child.\n     * @param {Number} x X position of the move\n     * @param {Number} y Y position of the move\n     * @param {Event} e The mousedown event\n     * @param {Element} node The current dragging DOM element\n     */\n    _defineProperty(this, \"onDragStop\", (i, x, y, _ref3) => {\n      let {\n        e,\n        node\n      } = _ref3;\n      if (!this.state.activeDrag) return;\n      const {\n        oldDragItem\n      } = this.state;\n      let {\n        layout\n      } = this.state;\n      const {\n        cols,\n        preventCollision,\n        allowOverlap\n      } = this.props;\n      const l = (0, _utils.getLayoutItem)(layout, i);\n      if (!l) return;\n\n      // Move the element here\n      const isUserAction = true;\n      layout = (0, _utils.moveElement)(layout, l, x, y, isUserAction, preventCollision, (0, _utils.compactType)(this.props), cols, allowOverlap);\n\n      // Set state\n      const newLayout = allowOverlap ? layout : (0, _utils.compact)(layout, (0, _utils.compactType)(this.props), cols);\n      this.props.onDragStop(newLayout, oldDragItem, l, null, e, node);\n      const {\n        oldLayout\n      } = this.state;\n      this.setState({\n        activeDrag: null,\n        layout: newLayout,\n        oldDragItem: null,\n        oldLayout: null\n      });\n      this.onLayoutMaybeChanged(newLayout, oldLayout);\n    });\n    _defineProperty(this, \"onResizeStart\", (i, w, h, _ref4) => {\n      let {\n        e,\n        node\n      } = _ref4;\n      const {\n        layout\n      } = this.state;\n      const l = (0, _utils.getLayoutItem)(layout, i);\n      if (!l) return;\n      this.setState({\n        oldResizeItem: (0, _utils.cloneLayoutItem)(l),\n        oldLayout: this.state.layout,\n        resizing: true\n      });\n      this.props.onResizeStart(layout, l, l, null, e, node);\n    });\n    _defineProperty(this, \"onResize\", (i, w, h, _ref5) => {\n      let {\n        e,\n        node,\n        size,\n        handle\n      } = _ref5;\n      const {\n        oldResizeItem\n      } = this.state;\n      const {\n        layout\n      } = this.state;\n      const {\n        cols,\n        preventCollision,\n        allowOverlap\n      } = this.props;\n      let shouldMoveItem = false;\n      let finalLayout;\n      let x;\n      let y;\n      const [newLayout, l] = (0, _utils.withLayoutItem)(layout, i, l => {\n        let hasCollisions;\n        x = l.x;\n        y = l.y;\n        if ([\"sw\", \"w\", \"nw\", \"n\", \"ne\"].indexOf(handle) !== -1) {\n          if ([\"sw\", \"nw\", \"w\"].indexOf(handle) !== -1) {\n            x = l.x + (l.w - w);\n            w = l.x !== x && x < 0 ? l.w : w;\n            x = x < 0 ? 0 : x;\n          }\n          if ([\"ne\", \"n\", \"nw\"].indexOf(handle) !== -1) {\n            y = l.y + (l.h - h);\n            h = l.y !== y && y < 0 ? l.h : h;\n            y = y < 0 ? 0 : y;\n          }\n          shouldMoveItem = true;\n        }\n\n        // Something like quad tree should be used\n        // to find collisions faster\n        if (preventCollision && !allowOverlap) {\n          const collisions = (0, _utils.getAllCollisions)(layout, {\n            ...l,\n            w,\n            h,\n            x,\n            y\n          }).filter(layoutItem => layoutItem.i !== l.i);\n          hasCollisions = collisions.length > 0;\n\n          // If we're colliding, we need adjust the placeholder.\n          if (hasCollisions) {\n            // Reset layoutItem dimensions if there were collisions\n            y = l.y;\n            h = l.h;\n            x = l.x;\n            w = l.w;\n            shouldMoveItem = false;\n          }\n        }\n        l.w = w;\n        l.h = h;\n        return l;\n      });\n\n      // Shouldn't ever happen, but typechecking makes it necessary\n      if (!l) return;\n      finalLayout = newLayout;\n      if (shouldMoveItem) {\n        // Move the element to the new position.\n        const isUserAction = true;\n        finalLayout = (0, _utils.moveElement)(newLayout, l, x, y, isUserAction, this.props.preventCollision, (0, _utils.compactType)(this.props), cols, allowOverlap);\n      }\n\n      // Create placeholder element (display only)\n      const placeholder = {\n        w: l.w,\n        h: l.h,\n        x: l.x,\n        y: l.y,\n        static: true,\n        i: i\n      };\n      this.props.onResize(finalLayout, oldResizeItem, l, placeholder, e, node);\n\n      // Re-compact the newLayout and set the drag placeholder.\n      this.setState({\n        layout: allowOverlap ? finalLayout : (0, _utils.compact)(finalLayout, (0, _utils.compactType)(this.props), cols),\n        activeDrag: placeholder\n      });\n    });\n    _defineProperty(this, \"onResizeStop\", (i, w, h, _ref6) => {\n      let {\n        e,\n        node\n      } = _ref6;\n      const {\n        layout,\n        oldResizeItem\n      } = this.state;\n      const {\n        cols,\n        allowOverlap\n      } = this.props;\n      const l = (0, _utils.getLayoutItem)(layout, i);\n\n      // Set state\n      const newLayout = allowOverlap ? layout : (0, _utils.compact)(layout, (0, _utils.compactType)(this.props), cols);\n      this.props.onResizeStop(newLayout, oldResizeItem, l, null, e, node);\n      const {\n        oldLayout\n      } = this.state;\n      this.setState({\n        activeDrag: null,\n        layout: newLayout,\n        oldResizeItem: null,\n        oldLayout: null,\n        resizing: false\n      });\n      this.onLayoutMaybeChanged(newLayout, oldLayout);\n    });\n    // Called while dragging an element. Part of browser native drag/drop API.\n    // Native event target might be the layout itself, or an element within the layout.\n    _defineProperty(this, \"onDragOver\", e => {\n      e.preventDefault(); // Prevent any browser native action\n      e.stopPropagation();\n\n      // we should ignore events from layout's children in Firefox\n      // to avoid unpredictable jumping of a dropping placeholder\n      // FIXME remove this hack\n      if (isFirefox &&\n      // $FlowIgnore can't figure this out\n      !e.nativeEvent.target?.classList.contains(layoutClassName)) {\n        return false;\n      }\n      const {\n        droppingItem,\n        onDropDragOver,\n        margin,\n        cols,\n        rowHeight,\n        maxRows,\n        width,\n        containerPadding,\n        transformScale\n      } = this.props;\n      // Allow user to customize the dropping item or short-circuit the drop based on the results\n      // of the `onDragOver(e: Event)` callback.\n      const onDragOverResult = onDropDragOver?.(e);\n      if (onDragOverResult === false) {\n        if (this.state.droppingDOMNode) {\n          this.removeDroppingPlaceholder();\n        }\n        return false;\n      }\n      const finalDroppingItem = {\n        ...droppingItem,\n        ...onDragOverResult\n      };\n      const {\n        layout\n      } = this.state;\n\n      // $FlowIgnore missing def\n      const gridRect = e.currentTarget.getBoundingClientRect(); // The grid's position in the viewport\n\n      // Calculate the mouse position relative to the grid\n      const layerX = e.clientX - gridRect.left;\n      const layerY = e.clientY - gridRect.top;\n      const droppingPosition = {\n        left: layerX / transformScale,\n        top: layerY / transformScale,\n        e\n      };\n      if (!this.state.droppingDOMNode) {\n        const positionParams /*: PositionParams*/ = {\n          cols,\n          margin,\n          maxRows,\n          rowHeight,\n          containerWidth: width,\n          containerPadding: containerPadding || margin\n        };\n        const calculatedPosition = (0, _calculateUtils.calcXY)(positionParams, layerY, layerX, finalDroppingItem.w, finalDroppingItem.h);\n        this.setState({\n          droppingDOMNode: /*#__PURE__*/React.createElement(\"div\", {\n            key: finalDroppingItem.i\n          }),\n          droppingPosition,\n          layout: [...layout, {\n            ...finalDroppingItem,\n            x: calculatedPosition.x,\n            y: calculatedPosition.y,\n            static: false,\n            isDraggable: true\n          }]\n        });\n      } else if (this.state.droppingPosition) {\n        const {\n          left,\n          top\n        } = this.state.droppingPosition;\n        const shouldUpdatePosition = left != layerX || top != layerY;\n        if (shouldUpdatePosition) {\n          this.setState({\n            droppingPosition\n          });\n        }\n      }\n    });\n    _defineProperty(this, \"removeDroppingPlaceholder\", () => {\n      const {\n        droppingItem,\n        cols\n      } = this.props;\n      const {\n        layout\n      } = this.state;\n      const newLayout = (0, _utils.compact)(layout.filter(l => l.i !== droppingItem.i), (0, _utils.compactType)(this.props), cols, this.props.allowOverlap);\n      this.setState({\n        layout: newLayout,\n        droppingDOMNode: null,\n        activeDrag: null,\n        droppingPosition: undefined\n      });\n    });\n    _defineProperty(this, \"onDragLeave\", e => {\n      e.preventDefault(); // Prevent any browser native action\n      e.stopPropagation();\n      this.dragEnterCounter--;\n\n      // onDragLeave can be triggered on each layout's child.\n      // But we know that count of dragEnter and dragLeave events\n      // will be balanced after leaving the layout's container\n      // so we can increase and decrease count of dragEnter and\n      // when it'll be equal to 0 we'll remove the placeholder\n      if (this.dragEnterCounter === 0) {\n        this.removeDroppingPlaceholder();\n      }\n    });\n    _defineProperty(this, \"onDragEnter\", e => {\n      e.preventDefault(); // Prevent any browser native action\n      e.stopPropagation();\n      this.dragEnterCounter++;\n    });\n    _defineProperty(this, \"onDrop\", (e /*: Event*/) => {\n      e.preventDefault(); // Prevent any browser native action\n      e.stopPropagation();\n      const {\n        droppingItem\n      } = this.props;\n      const {\n        layout\n      } = this.state;\n      const item = layout.find(l => l.i === droppingItem.i);\n\n      // reset dragEnter counter on drop\n      this.dragEnterCounter = 0;\n      this.removeDroppingPlaceholder();\n      this.props.onDrop(layout, item, e);\n    });\n  }\n  componentDidMount() {\n    this.setState({\n      mounted: true\n    });\n    // Possibly call back with layout on mount. This should be done after correcting the layout width\n    // to ensure we don't rerender with the wrong width.\n    this.onLayoutMaybeChanged(this.state.layout, this.props.layout);\n  }\n  static getDerivedStateFromProps(nextProps /*: Props*/, prevState /*: State*/) /*: $Shape<State> | null*/{\n    let newLayoutBase;\n    if (prevState.activeDrag) {\n      return null;\n    }\n\n    // Legacy support for compactType\n    // Allow parent to set layout directly.\n    if (!(0, _fastEquals.deepEqual)(nextProps.layout, prevState.propsLayout) || nextProps.compactType !== prevState.compactType) {\n      newLayoutBase = nextProps.layout;\n    } else if (!(0, _utils.childrenEqual)(nextProps.children, prevState.children)) {\n      // If children change, also regenerate the layout. Use our state\n      // as the base in case because it may be more up to date than\n      // what is in props.\n      newLayoutBase = prevState.layout;\n    }\n\n    // We need to regenerate the layout.\n    if (newLayoutBase) {\n      const newLayout = (0, _utils.synchronizeLayoutWithChildren)(newLayoutBase, nextProps.children, nextProps.cols, (0, _utils.compactType)(nextProps), nextProps.allowOverlap);\n      return {\n        layout: newLayout,\n        // We need to save these props to state for using\n        // getDerivedStateFromProps instead of componentDidMount (in which we would get extra rerender)\n        compactType: nextProps.compactType,\n        children: nextProps.children,\n        propsLayout: nextProps.layout\n      };\n    }\n    return null;\n  }\n  shouldComponentUpdate(nextProps /*: Props*/, nextState /*: State*/) /*: boolean*/{\n    return (\n      // NOTE: this is almost always unequal. Therefore the only way to get better performance\n      // from SCU is if the user intentionally memoizes children. If they do, and they can\n      // handle changes properly, performance will increase.\n      this.props.children !== nextProps.children || !(0, _utils.fastRGLPropsEqual)(this.props, nextProps, _fastEquals.deepEqual) || this.state.activeDrag !== nextState.activeDrag || this.state.mounted !== nextState.mounted || this.state.droppingPosition !== nextState.droppingPosition\n    );\n  }\n  componentDidUpdate(prevProps /*: Props*/, prevState /*: State*/) {\n    if (!this.state.activeDrag) {\n      const newLayout = this.state.layout;\n      const oldLayout = prevState.layout;\n      this.onLayoutMaybeChanged(newLayout, oldLayout);\n    }\n  }\n\n  /**\n   * Calculates a pixel value for the container.\n   * @return {String} Container height in pixels.\n   */\n  containerHeight() /*: ?string*/{\n    if (!this.props.autoSize) return;\n    const nbRow = (0, _utils.bottom)(this.state.layout);\n    const containerPaddingY = this.props.containerPadding ? this.props.containerPadding[1] : this.props.margin[1];\n    return nbRow * this.props.rowHeight + (nbRow - 1) * this.props.margin[1] + containerPaddingY * 2 + \"px\";\n  }\n  onLayoutMaybeChanged(newLayout /*: Layout*/, oldLayout /*: ?Layout*/) {\n    if (!oldLayout) oldLayout = this.state.layout;\n    if (!(0, _fastEquals.deepEqual)(oldLayout, newLayout)) {\n      this.props.onLayoutChange(newLayout);\n    }\n  }\n  /**\n   * Create a placeholder object.\n   * @return {Element} Placeholder div.\n   */\n  placeholder() /*: ?ReactElement<any>*/{\n    const {\n      activeDrag\n    } = this.state;\n    if (!activeDrag) return null;\n    const {\n      width,\n      cols,\n      margin,\n      containerPadding,\n      rowHeight,\n      maxRows,\n      useCSSTransforms,\n      transformScale\n    } = this.props;\n\n    // {...this.state.activeDrag} is pretty slow, actually\n    return /*#__PURE__*/React.createElement(_GridItem.default, {\n      w: activeDrag.w,\n      h: activeDrag.h,\n      x: activeDrag.x,\n      y: activeDrag.y,\n      i: activeDrag.i,\n      className: `react-grid-placeholder ${this.state.resizing ? \"placeholder-resizing\" : \"\"}`,\n      containerWidth: width,\n      cols: cols,\n      margin: margin,\n      containerPadding: containerPadding || margin,\n      maxRows: maxRows,\n      rowHeight: rowHeight,\n      isDraggable: false,\n      isResizable: false,\n      isBounded: false,\n      useCSSTransforms: useCSSTransforms,\n      transformScale: transformScale\n    }, /*#__PURE__*/React.createElement(\"div\", null));\n  }\n\n  /**\n   * Given a grid item, set its style attributes & surround in a <Draggable>.\n   * @param  {Element} child React element.\n   * @return {Element}       Element wrapped in draggable and properly placed.\n   */\n  processGridItem(child /*: ReactElement<any>*/, isDroppingItem /*: boolean*/) /*: ?ReactElement<any>*/{\n    if (!child || !child.key) return;\n    const l = (0, _utils.getLayoutItem)(this.state.layout, String(child.key));\n    if (!l) return null;\n    const {\n      width,\n      cols,\n      margin,\n      containerPadding,\n      rowHeight,\n      maxRows,\n      isDraggable,\n      isResizable,\n      isBounded,\n      useCSSTransforms,\n      transformScale,\n      draggableCancel,\n      draggableHandle,\n      resizeHandles,\n      resizeHandle\n    } = this.props;\n    const {\n      mounted,\n      droppingPosition\n    } = this.state;\n\n    // Determine user manipulations possible.\n    // If an item is static, it can't be manipulated by default.\n    // Any properties defined directly on the grid item will take precedence.\n    const draggable = typeof l.isDraggable === \"boolean\" ? l.isDraggable : !l.static && isDraggable;\n    const resizable = typeof l.isResizable === \"boolean\" ? l.isResizable : !l.static && isResizable;\n    const resizeHandlesOptions = l.resizeHandles || resizeHandles;\n\n    // isBounded set on child if set on parent, and child is not explicitly false\n    const bounded = draggable && isBounded && l.isBounded !== false;\n    return /*#__PURE__*/React.createElement(_GridItem.default, {\n      containerWidth: width,\n      cols: cols,\n      margin: margin,\n      containerPadding: containerPadding || margin,\n      maxRows: maxRows,\n      rowHeight: rowHeight,\n      cancel: draggableCancel,\n      handle: draggableHandle,\n      onDragStop: this.onDragStop,\n      onDragStart: this.onDragStart,\n      onDrag: this.onDrag,\n      onResizeStart: this.onResizeStart,\n      onResize: this.onResize,\n      onResizeStop: this.onResizeStop,\n      isDraggable: draggable,\n      isResizable: resizable,\n      isBounded: bounded,\n      useCSSTransforms: useCSSTransforms && mounted,\n      usePercentages: !mounted,\n      transformScale: transformScale,\n      w: l.w,\n      h: l.h,\n      x: l.x,\n      y: l.y,\n      i: l.i,\n      minH: l.minH,\n      minW: l.minW,\n      maxH: l.maxH,\n      maxW: l.maxW,\n      static: l.static,\n      droppingPosition: isDroppingItem ? droppingPosition : undefined,\n      resizeHandles: resizeHandlesOptions,\n      resizeHandle: resizeHandle\n    }, child);\n  }\n  render() /*: React.Element<\"div\">*/{\n    const {\n      className,\n      style,\n      isDroppable,\n      innerRef\n    } = this.props;\n    const mergedClassName = (0, _clsx.default)(layoutClassName, className);\n    const mergedStyle = {\n      height: this.containerHeight(),\n      ...style\n    };\n    return /*#__PURE__*/React.createElement(\"div\", {\n      ref: innerRef,\n      className: mergedClassName,\n      style: mergedStyle,\n      onDrop: isDroppable ? this.onDrop : _utils.noop,\n      onDragLeave: isDroppable ? this.onDragLeave : _utils.noop,\n      onDragEnter: isDroppable ? this.onDragEnter : _utils.noop,\n      onDragOver: isDroppable ? this.onDragOver : _utils.noop\n    }, React.Children.map(this.props.children, child => this.processGridItem(child)), isDroppable && this.state.droppingDOMNode && this.processGridItem(this.state.droppingDOMNode, true), this.placeholder());\n  }\n}\nexports.default = ReactGridLayout;\n// TODO publish internal ReactClass displayName transform\n_defineProperty(ReactGridLayout, \"displayName\", \"ReactGridLayout\");\n// Refactored to another module to make way for preval\n_defineProperty(ReactGridLayout, \"propTypes\", _ReactGridLayoutPropTypes.default);\n_defineProperty(ReactGridLayout, \"defaultProps\", {\n  autoSize: true,\n  cols: 12,\n  className: \"\",\n  style: {},\n  draggableHandle: \"\",\n  draggableCancel: \"\",\n  containerPadding: null,\n  rowHeight: 150,\n  maxRows: Infinity,\n  // infinite vertical growth\n  layout: [],\n  margin: [10, 10],\n  isBounded: false,\n  isDraggable: true,\n  isResizable: true,\n  allowOverlap: false,\n  isDroppable: false,\n  useCSSTransforms: true,\n  transformScale: 1,\n  verticalCompact: true,\n  compactType: \"vertical\",\n  preventCollision: false,\n  droppingItem: {\n    i: \"__dropping-elem__\",\n    h: 1,\n    w: 1\n  },\n  resizeHandles: [\"se\"],\n  onLayoutChange: _utils.noop,\n  onDragStart: _utils.noop,\n  onDrag: _utils.noop,\n  onDragStop: _utils.noop,\n  onResizeStart: _utils.noop,\n  onResize: _utils.noop,\n  onResizeStop: _utils.noop,\n  onDrop: _utils.noop,\n  onDropDragOver: _utils.noop\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.findOrGenerateResponsiveLayout = findOrGenerateResponsiveLayout;\nexports.getBreakpointFromWidth = getBreakpointFromWidth;\nexports.getColsFromBreakpoint = getColsFromBreakpoint;\nexports.sortBreakpoints = sortBreakpoints;\nvar _utils = require(\"./utils\");\n/*:: import type { CompactType, Layout } from \"./utils\";*/\n/*:: export type Breakpoint = string;*/\n/*:: export type DefaultBreakpoints = \"lg\" | \"md\" | \"sm\" | \"xs\" | \"xxs\";*/\n/*:: export type ResponsiveLayout<T: Breakpoint> = {\n  +[breakpoint: T]: Layout\n};*/\n// + indicates read-only\n/*:: export type Breakpoints<T: Breakpoint> = {\n  +[breakpoint: T]: number\n};*/\n/*:: export type OnLayoutChangeCallback = (\n  Layout,\n  { [key: Breakpoint]: Layout }\n) => void;*/\n/**\n * Given a width, find the highest breakpoint that matches is valid for it (width > breakpoint).\n *\n * @param  {Object} breakpoints Breakpoints object (e.g. {lg: 1200, md: 960, ...})\n * @param  {Number} width Screen width.\n * @return {String}       Highest breakpoint that is less than width.\n */\nfunction getBreakpointFromWidth(breakpoints /*: Breakpoints<Breakpoint>*/, width /*: number*/) /*: Breakpoint*/{\n  const sorted = sortBreakpoints(breakpoints);\n  let matching = sorted[0];\n  for (let i = 1, len = sorted.length; i < len; i++) {\n    const breakpointName = sorted[i];\n    if (width > breakpoints[breakpointName]) matching = breakpointName;\n  }\n  return matching;\n}\n\n/**\n * Given a breakpoint, get the # of cols set for it.\n * @param  {String} breakpoint Breakpoint name.\n * @param  {Object} cols       Map of breakpoints to cols.\n * @return {Number}            Number of cols.\n */\nfunction getColsFromBreakpoint(breakpoint /*: Breakpoint*/, cols /*: Breakpoints<Breakpoint>*/) /*: number*/{\n  if (!cols[breakpoint]) {\n    throw new Error(\"ResponsiveReactGridLayout: `cols` entry for breakpoint \" + breakpoint + \" is missing!\");\n  }\n  return cols[breakpoint];\n}\n\n/**\n * Given existing layouts and a new breakpoint, find or generate a new layout.\n *\n * This finds the layout above the new one and generates from it, if it exists.\n *\n * @param  {Object} layouts     Existing layouts.\n * @param  {Array} breakpoints All breakpoints.\n * @param  {String} breakpoint New breakpoint.\n * @param  {String} breakpoint Last breakpoint (for fallback).\n * @param  {Number} cols       Column count at new breakpoint.\n * @param  {Boolean} verticalCompact Whether or not to compact the layout\n *   vertically.\n * @return {Array}             New layout.\n */\nfunction findOrGenerateResponsiveLayout(layouts /*: ResponsiveLayout<Breakpoint>*/, breakpoints /*: Breakpoints<Breakpoint>*/, breakpoint /*: Breakpoint*/, lastBreakpoint /*: Breakpoint*/, cols /*: number*/, compactType /*: CompactType*/) /*: Layout*/{\n  // If it already exists, just return it.\n  if (layouts[breakpoint]) return (0, _utils.cloneLayout)(layouts[breakpoint]);\n  // Find or generate the next layout\n  let layout = layouts[lastBreakpoint];\n  const breakpointsSorted = sortBreakpoints(breakpoints);\n  const breakpointsAbove = breakpointsSorted.slice(breakpointsSorted.indexOf(breakpoint));\n  for (let i = 0, len = breakpointsAbove.length; i < len; i++) {\n    const b = breakpointsAbove[i];\n    if (layouts[b]) {\n      layout = layouts[b];\n      break;\n    }\n  }\n  layout = (0, _utils.cloneLayout)(layout || []); // clone layout so we don't modify existing items\n  return (0, _utils.compact)((0, _utils.correctBounds)(layout, {\n    cols: cols\n  }), compactType, cols);\n}\n\n/**\n * Given breakpoints, return an array of breakpoints sorted by width. This is usually\n * e.g. ['xxs', 'xs', 'sm', ...]\n *\n * @param  {Object} breakpoints Key/value pair of breakpoint names to widths.\n * @return {Array}              Sorted breakpoints.\n */\nfunction sortBreakpoints(breakpoints /*: Breakpoints<Breakpoint>*/) /*: Array<Breakpoint>*/{\n  const keys /*: Array<string>*/ = Object.keys(breakpoints);\n  return keys.sort(function (a, b) {\n    return breakpoints[a] - breakpoints[b];\n  });\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _fastEquals = require(\"fast-equals\");\nvar _utils = require(\"./utils\");\nvar _responsiveUtils = require(\"./responsiveUtils\");\nvar _ReactGridLayout = _interopRequireDefault(require(\"./ReactGridLayout\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction _interopRequireWildcard(e, t) { if (\"function\" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || \"object\" != typeof e && \"function\" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) \"default\" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); } /*:: import { type Layout, type Pick } from \"./utils\";*/ /*:: import { type ResponsiveLayout, type OnLayoutChangeCallback, type Breakpoints } from \"./responsiveUtils\";*/\n// $FlowFixMe[method-unbinding]\nconst type = obj => Object.prototype.toString.call(obj);\n\n/**\n * Get a value of margin or containerPadding.\n *\n * @param  {Array | Object} param Margin | containerPadding, e.g. [10, 10] | {lg: [10, 10], ...}.\n * @param  {String} breakpoint   Breakpoint: lg, md, sm, xs and etc.\n * @return {Array}\n */\nfunction getIndentationValue /*:: <T: ?[number, number]>*/(param /*: { [key: string]: T } | T*/, breakpoint /*: string*/) /*: T*/{\n  // $FlowIgnore TODO fix this typedef\n  if (param == null) return null;\n  // $FlowIgnore TODO fix this typedef\n  return Array.isArray(param) ? param : param[breakpoint];\n}\n/*:: type State = {\n  layout: Layout,\n  breakpoint: string,\n  cols: number,\n  layouts?: ResponsiveLayout<string>\n};*/\n/*:: type Props<Breakpoint: string = string> = {|\n  ...React.ElementConfig<typeof ReactGridLayout>,\n\n  // Responsive config\n  breakpoint?: ?Breakpoint,\n  breakpoints: Breakpoints<Breakpoint>,\n  cols: { [key: Breakpoint]: number },\n  layouts: ResponsiveLayout<Breakpoint>,\n  width: number,\n  margin: { [key: Breakpoint]: [number, number] } | [number, number],\n  /* prettier-ignore *-/\n  containerPadding: { [key: Breakpoint]: ?[number, number] } | ?[number, number],\n\n  // Callbacks\n  onBreakpointChange: (Breakpoint, cols: number) => void,\n  onLayoutChange: OnLayoutChangeCallback,\n  onWidthChange: (\n    containerWidth: number,\n    margin: [number, number],\n    cols: number,\n    containerPadding: ?[number, number]\n  ) => void\n|};*/\n/*:: type DefaultProps = Pick<\n  Props<>,\n  {|\n    allowOverlap: 0,\n    breakpoints: 0,\n    cols: 0,\n    containerPadding: 0,\n    layouts: 0,\n    margin: 0,\n    onBreakpointChange: 0,\n    onLayoutChange: 0,\n    onWidthChange: 0\n  |}\n>;*/\nclass ResponsiveReactGridLayout extends React.Component\n/*:: <\n  Props<>,\n  State\n>*/\n{\n  constructor() {\n    super(...arguments);\n    _defineProperty(this, \"state\", this.generateInitialState());\n    // wrap layouts so we do not need to pass layouts to child\n    _defineProperty(this, \"onLayoutChange\", (layout /*: Layout*/) => {\n      this.props.onLayoutChange(layout, {\n        ...this.props.layouts,\n        [this.state.breakpoint]: layout\n      });\n    });\n  }\n  generateInitialState() /*: State*/{\n    const {\n      width,\n      breakpoints,\n      layouts,\n      cols\n    } = this.props;\n    const breakpoint = (0, _responsiveUtils.getBreakpointFromWidth)(breakpoints, width);\n    const colNo = (0, _responsiveUtils.getColsFromBreakpoint)(breakpoint, cols);\n    // verticalCompact compatibility, now deprecated\n    const compactType = this.props.verticalCompact === false ? null : this.props.compactType;\n    // Get the initial layout. This can tricky; we try to generate one however possible if one doesn't exist\n    // for this layout.\n    const initialLayout = (0, _responsiveUtils.findOrGenerateResponsiveLayout)(layouts, breakpoints, breakpoint, breakpoint, colNo, compactType);\n    return {\n      layout: initialLayout,\n      breakpoint: breakpoint,\n      cols: colNo\n    };\n  }\n  static getDerivedStateFromProps(nextProps /*: Props<*>*/, prevState /*: State*/) /*: ?$Shape<State>*/{\n    if (!(0, _fastEquals.deepEqual)(nextProps.layouts, prevState.layouts)) {\n      // Allow parent to set layouts directly.\n      const {\n        breakpoint,\n        cols\n      } = prevState;\n\n      // Since we're setting an entirely new layout object, we must generate a new responsive layout\n      // if one does not exist.\n      const newLayout = (0, _responsiveUtils.findOrGenerateResponsiveLayout)(nextProps.layouts, nextProps.breakpoints, breakpoint, breakpoint, cols, nextProps.compactType);\n      return {\n        layout: newLayout,\n        layouts: nextProps.layouts\n      };\n    }\n    return null;\n  }\n  componentDidUpdate(prevProps /*: Props<*>*/) {\n    // Allow parent to set width or breakpoint directly.\n    if (this.props.width != prevProps.width || this.props.breakpoint !== prevProps.breakpoint || !(0, _fastEquals.deepEqual)(this.props.breakpoints, prevProps.breakpoints) || !(0, _fastEquals.deepEqual)(this.props.cols, prevProps.cols)) {\n      this.onWidthChange(prevProps);\n    }\n  }\n  /**\n   * When the width changes work through breakpoints and reset state with the new width & breakpoint.\n   * Width changes are necessary to figure out the widget widths.\n   */\n  onWidthChange(prevProps /*: Props<*>*/) {\n    const {\n      breakpoints,\n      cols,\n      layouts,\n      compactType\n    } = this.props;\n    const newBreakpoint = this.props.breakpoint || (0, _responsiveUtils.getBreakpointFromWidth)(this.props.breakpoints, this.props.width);\n    const lastBreakpoint = this.state.breakpoint;\n    const newCols /*: number*/ = (0, _responsiveUtils.getColsFromBreakpoint)(newBreakpoint, cols);\n    const newLayouts = {\n      ...layouts\n    };\n\n    // Breakpoint change\n    if (lastBreakpoint !== newBreakpoint || prevProps.breakpoints !== breakpoints || prevProps.cols !== cols) {\n      // Preserve the current layout if the current breakpoint is not present in the next layouts.\n      if (!(lastBreakpoint in newLayouts)) newLayouts[lastBreakpoint] = (0, _utils.cloneLayout)(this.state.layout);\n\n      // Find or generate a new layout.\n      let layout = (0, _responsiveUtils.findOrGenerateResponsiveLayout)(newLayouts, breakpoints, newBreakpoint, lastBreakpoint, newCols, compactType);\n\n      // This adds missing items.\n      layout = (0, _utils.synchronizeLayoutWithChildren)(layout, this.props.children, newCols, compactType, this.props.allowOverlap);\n\n      // Store the new layout.\n      newLayouts[newBreakpoint] = layout;\n\n      // callbacks\n      this.props.onBreakpointChange(newBreakpoint, newCols);\n      this.props.onLayoutChange(layout, newLayouts);\n      this.setState({\n        breakpoint: newBreakpoint,\n        layout: layout,\n        cols: newCols\n      });\n    }\n    const margin = getIndentationValue(this.props.margin, newBreakpoint);\n    const containerPadding = getIndentationValue(this.props.containerPadding, newBreakpoint);\n\n    //call onWidthChange on every change of width, not only on breakpoint changes\n    this.props.onWidthChange(this.props.width, margin, newCols, containerPadding);\n  }\n  render() /*: React.Element<typeof ReactGridLayout>*/{\n    /* eslint-disable no-unused-vars */\n    const {\n      breakpoint,\n      breakpoints,\n      cols,\n      layouts,\n      margin,\n      containerPadding,\n      onBreakpointChange,\n      onLayoutChange,\n      onWidthChange,\n      ...other\n    } = this.props;\n    /* eslint-enable no-unused-vars */\n\n    return /*#__PURE__*/React.createElement(_ReactGridLayout.default, _extends({}, other, {\n      // $FlowIgnore should allow nullable here due to DefaultProps\n      margin: getIndentationValue(margin, this.state.breakpoint),\n      containerPadding: getIndentationValue(containerPadding, this.state.breakpoint),\n      onLayoutChange: this.onLayoutChange,\n      layout: this.state.layout,\n      cols: this.state.cols\n    }));\n  }\n}\nexports.default = ResponsiveReactGridLayout;\n// This should only include propTypes needed in this code; RGL itself\n// will do validation of the rest props passed to it.\n_defineProperty(ResponsiveReactGridLayout, \"propTypes\", {\n  //\n  // Basic props\n  //\n\n  // Optional, but if you are managing width yourself you may want to set the breakpoint\n  // yourself as well.\n  breakpoint: _propTypes.default.string,\n  // {name: pxVal}, e.g. {lg: 1200, md: 996, sm: 768, xs: 480}\n  breakpoints: _propTypes.default.object,\n  allowOverlap: _propTypes.default.bool,\n  // # of cols. This is a breakpoint -> cols map\n  cols: _propTypes.default.object,\n  // # of margin. This is a breakpoint -> margin map\n  // e.g. { lg: [5, 5], md: [10, 10], sm: [15, 15] }\n  // Margin between items [x, y] in px\n  // e.g. [10, 10]\n  margin: _propTypes.default.oneOfType([_propTypes.default.array, _propTypes.default.object]),\n  // # of containerPadding. This is a breakpoint -> containerPadding map\n  // e.g. { lg: [5, 5], md: [10, 10], sm: [15, 15] }\n  // Padding inside the container [x, y] in px\n  // e.g. [10, 10]\n  containerPadding: _propTypes.default.oneOfType([_propTypes.default.array, _propTypes.default.object]),\n  // layouts is an object mapping breakpoints to layouts.\n  // e.g. {lg: Layout, md: Layout, ...}\n  layouts(props /*: Props<>*/, propName /*: string*/) {\n    if (type(props[propName]) !== \"[object Object]\") {\n      throw new Error(\"Layout property must be an object. Received: \" + type(props[propName]));\n    }\n    Object.keys(props[propName]).forEach(key => {\n      if (!(key in props.breakpoints)) {\n        throw new Error(\"Each key in layouts must align with a key in breakpoints.\");\n      }\n      (0, _utils.validateLayout)(props.layouts[key], \"layouts.\" + key);\n    });\n  },\n  // The width of this component.\n  // Required in this propTypes stanza because generateInitialState() will fail without it.\n  width: _propTypes.default.number.isRequired,\n  //\n  // Callbacks\n  //\n\n  // Calls back with breakpoint and new # cols\n  onBreakpointChange: _propTypes.default.func,\n  // Callback so you can save the layout.\n  // Calls back with (currentLayout, allLayouts). allLayouts are keyed by breakpoint.\n  onLayoutChange: _propTypes.default.func,\n  // Calls back with (containerWidth, margin, cols, containerPadding)\n  onWidthChange: _propTypes.default.func\n});\n_defineProperty(ResponsiveReactGridLayout, \"defaultProps\", {\n  breakpoints: {\n    lg: 1200,\n    md: 996,\n    sm: 768,\n    xs: 480,\n    xxs: 0\n  },\n  cols: {\n    lg: 12,\n    md: 10,\n    sm: 6,\n    xs: 4,\n    xxs: 2\n  },\n  containerPadding: {\n    lg: null,\n    md: null,\n    sm: null,\n    xs: null,\n    xxs: null\n  },\n  layouts: {},\n  margin: [10, 10],\n  allowOverlap: false,\n  onBreakpointChange: _utils.noop,\n  onLayoutChange: _utils.noop,\n  onWidthChange: _utils.noop\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = WidthProvideRGL;\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _resizeObserverPolyfill = _interopRequireDefault(require(\"resize-observer-polyfill\"));\nvar _clsx = _interopRequireDefault(require(\"clsx\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction _interopRequireWildcard(e, t) { if (\"function\" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || \"object\" != typeof e && \"function\" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) \"default\" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/*:: import type { ReactRef } from \"../ReactGridLayoutPropTypes\";*/\n/*:: type WPDefaultProps = {|\n  measureBeforeMount: boolean\n|};*/\n/*:: type WPProps = {|\n  className?: string,\n  style?: Object,\n  ...WPDefaultProps\n|};*/\n// eslint-disable-next-line no-unused-vars\n/*:: type WPState = {|\n  width: number\n|};*/\n/*:: type ComposedProps<Config> = {|\n  ...Config,\n  measureBeforeMount?: boolean,\n  className?: string,\n  style?: Object,\n  width?: number\n|};*/\nconst layoutClassName = \"react-grid-layout\";\n\n/*\n * A simple HOC that provides facility for listening to container resizes.\n *\n * The Flow type is pretty janky here. I can't just spread `WPProps` into this returned object - I wish I could - but it triggers\n * a flow bug of some sort that causes it to stop typechecking.\n */\nfunction WidthProvideRGL /*:: <Config>*/(ComposedComponent /*: React.AbstractComponent<Config>*/) /*: React.AbstractComponent<ComposedProps<Config>>*/{\n  var _WidthProvider;\n  return _WidthProvider = class WidthProvider extends React.Component\n  /*:: <\n      ComposedProps<Config>,\n      WPState\n    >*/\n  {\n    constructor() {\n      super(...arguments);\n      _defineProperty(this, \"state\", {\n        width: 1280\n      });\n      _defineProperty(this, \"elementRef\", /*#__PURE__*/React.createRef());\n      _defineProperty(this, \"mounted\", false);\n      _defineProperty(this, \"resizeObserver\", void 0);\n    }\n    componentDidMount() {\n      this.mounted = true;\n      this.resizeObserver = new _resizeObserverPolyfill.default(entries => {\n        const node = this.elementRef.current;\n        if (node instanceof HTMLElement) {\n          const width = entries[0].contentRect.width;\n          this.setState({\n            width\n          });\n        }\n      });\n      const node = this.elementRef.current;\n      if (node instanceof HTMLElement) {\n        this.resizeObserver.observe(node);\n      }\n    }\n    componentWillUnmount() {\n      this.mounted = false;\n      const node = this.elementRef.current;\n      if (node instanceof HTMLElement) {\n        this.resizeObserver.unobserve(node);\n      }\n      this.resizeObserver.disconnect();\n    }\n    render() {\n      const {\n        measureBeforeMount,\n        ...rest\n      } = this.props;\n      if (measureBeforeMount && !this.mounted) {\n        return /*#__PURE__*/React.createElement(\"div\", {\n          className: (0, _clsx.default)(this.props.className, layoutClassName),\n          style: this.props.style\n          // $FlowIgnore ref types\n          ,\n          ref: this.elementRef\n        });\n      }\n      return /*#__PURE__*/React.createElement(ComposedComponent, _extends({\n        innerRef: this.elementRef\n      }, rest, this.state));\n    }\n  }, _defineProperty(_WidthProvider, \"defaultProps\", {\n    measureBeforeMount: false\n  }), _defineProperty(_WidthProvider, \"propTypes\", {\n    // If true, will not render children until mounted. Useful for getting the exact width before\n    // rendering, to prevent any unsightly resizing.\n    measureBeforeMount: _propTypes.default.bool\n  }), _WidthProvider;\n}","module.exports = require(\"./build/ReactGridLayout\").default;\nmodule.exports.utils = require(\"./build/utils\");\nmodule.exports.calculateUtils = require(\"./build/calculateUtils\");\nmodule.exports.Responsive =\n  require(\"./build/ResponsiveReactGridLayout\").default;\nmodule.exports.Responsive.utils = require(\"./build/responsiveUtils\");\nmodule.exports.WidthProvider =\n  require(\"./build/components/WidthProvider\").default;\n","// RGL容器子元素默认间距\nexport const DEFAULT_RGL_GAP = 12;\n// RGL容器默认列数\nexport const DEFAULT_RGL_COLS = 12;\n// RGL容器默认行高\nexport const DEFAULT_RGL_ROW_HEIGHT = 10;\n\nexport const RGL_CONTAINER_CLASSNAME = \"yt-rgl-container\";\nexport const RGL_ITEM_CLASSNAME = \"yt-rgl-item\";\nexport const RGL_ITEM_AUTOHEIGHT_CLASSNAME = \"auto-height\";\nexport const RGL_ITEM_WRAP_CONTAINER = \"yt-rgl-item-container\";\n","import _ from \"lodash\";\nimport React, { useState, useMemo, useEffect, useRef } from \"react\";\nimport ReactGridLayout, { WidthProvider } from \"react-grid-layout\";\nimport {\n  DEFAULT_RGL_GAP,\n  DEFAULT_RGL_COLS,\n  DEFAULT_RGL_ROW_HEIGHT,\n  RGL_CONTAINER_CLASSNAME,\n  RGL_ITEM_CLASSNAME,\n  RGL_ITEM_AUTOHEIGHT_CLASSNAME,\n  RGL_ITEM_WRAP_CONTAINER,\n} from \"./const\";\nimport \"./view.less\";\n\nconst ResponsiveReactGridLayout = WidthProvider(ReactGridLayout); // 自适应宽度\n\ninterface LayoutItem {\n  i: string;\n  x: number;\n  y: number;\n  w: number;\n  h: number;\n  minW?: number;\n  minH?: number;\n  autoHeight?: boolean;\n}\n\ninterface YtRglContainerProps {\n  _leaf: any;\n  _context: any;\n  children: React.ReactNode;\n  className?: string;\n  style?: React.CSSProperties;\n  RGLlayout?: LayoutItem[];\n  gap?: number;\n  cols?: number;\n  rowHeight?: number;\n}\n\nconst YtRglContainer: React.FC<YtRglContainerProps> = (props) => {\n  const {\n    children,\n    className = \"\",\n    style = {},\n    RGLlayout, // RGLlayout配置\n    gap = DEFAULT_RGL_GAP,\n    cols = DEFAULT_RGL_COLS,\n    rowHeight = DEFAULT_RGL_ROW_HEIGHT,\n  } = props;\n\n  const rglContainerRef = useRef({} as any);\n  const resizeObserverRef = useRef(null);\n  const timerRef = useRef(null);\n  const freezeingLayoutRef = useRef(null);\n\n  // 获取子组件\n  const childrenArray = React.Children.toArray(children);\n  // 生成默认布局\n  const [currentLayout, setCurrentLayout] = useState<LayoutItem[]>(() => {\n    return RGLlayout || [];\n  });\n\n  // 根据 key 取 RGL layout 配置的方法\n  const getNodeLayoutConfig = (key) => {\n    return currentLayout.find(({ i }) => i === key);\n  };\n\n  // 更新currentLayout的方法, 不直接使用setCurrentLayout是为了: 只允许写入白名单字段\n  const updateCurrentLayout = (layout) => {\n    if (!layout) return;\n    const newLayout = layout.map(({ i, w, h, x, y, autoHeight }) => ({\n      i,\n      w,\n      h,\n      x,\n      y,\n      autoHeight,\n    }));\n    setCurrentLayout(newLayout);\n  };\n\n  // 高度自适应核心逻辑\n  const autoHeightHandler = _.debounce(() => {\n    timerRef.current && clearTimeout(timerRef.current);\n\n    timerRef.current = setTimeout(() => {\n      // 找出需要自适应高度的RGL子容器\n      const sizeAutoElements: HTMLDivElement[] =\n        rglContainerRef.current?.elementRef.current.querySelectorAll(\n          `.${RGL_ITEM_CLASSNAME}.${RGL_ITEM_AUTOHEIGHT_CLASSNAME}`,\n        );\n\n      if (sizeAutoElements && sizeAutoElements.length) {\n        // 存储子组件实际高度\n        const nodeLatestHeightMap = new Map();\n        sizeAutoElements.forEach((item, index) => {\n          const itemKey = item.getAttribute(\"data-key\");\n          // 找到实际子组件的wrap元素\n          const wrapElement = item.querySelector(\n            `.${RGL_ITEM_WRAP_CONTAINER}`,\n          ) as HTMLDivElement;\n          // 监听wrap元素的dom变化, 以获取实际高度\n          resizeObserverRef.current?.observe(wrapElement);\n          // 实际高度写入map {'key' => 'height'}\n          nodeLatestHeightMap.set(itemKey, wrapElement?.offsetHeight);\n        });\n\n        // 计算新高度  TODO: 这里和编辑态存在不一致, 根据实际情况看是否需要保持统一\n        const newLayout = currentLayout.map((item) => {\n          if (nodeLatestHeightMap.has(item.i)) {\n            return {\n              ...item,\n              h: Math.ceil(\n                (nodeLatestHeightMap.get(item.i) + gap) / (rowHeight + gap),\n              ),\n            };\n          }\n          return item;\n        });\n        // 判断是否需要更新\n        if (JSON.stringify(newLayout) !== freezeingLayoutRef?.current) {\n          updateCurrentLayout(newLayout);\n        } else {\n          // TODO\n        }\n      } else {\n        // TODO\n      }\n    }, 100);\n  }, 300);\n\n  // 统一处理 RGL layout 布局配置变化 变化\n  useEffect(() => {\n    // 首先把当前的layout信息freezeing下来, 供高度计算的时候对比使用\n    freezeingLayoutRef.current = JSON.stringify(currentLayout);\n    // 任何 currentLayout 的变更操作都有可能引起高度变化, 在这里统一处理\n    autoHeightHandler();\n  }, [currentLayout]);\n\n  useEffect(() => {\n    // 子节点宽高监听\n    const createResizeObserver = () => {\n      if (window.ResizeObserver) {\n        return new ResizeObserver((entries) => {\n          entries.forEach(() => {\n            autoHeightHandler();\n          });\n        });\n      }\n    };\n    resizeObserverRef.current = createResizeObserver();\n    return () => {\n      resizeObserverRef.current && resizeObserverRef.current.disconnect();\n    };\n  }, []);\n\n  // 渲染子组件的方法\n  const renderChildren = useMemo(() => {\n    return childrenArray?.map((child, index) => {\n      const childElement = child as React.ReactElement;\n      // key的取值逻辑：组件的 componentId > schema.id(渲染FaultComponent的场景) > key\n      const key =\n        childElement?.props?.__id ||\n        childElement?.props?.schema?.id ||\n        childElement?.key;\n\n      // const nodeLayoutConfig = getNodeLayoutConfig(key);\n      const isAutoHeightItem = getNodeLayoutConfig(key)?.autoHeight\n        ? true\n        : false;\n\n      return (\n        <div\n          key={key}\n          data-key={key}\n          className={`${RGL_ITEM_CLASSNAME} ${isAutoHeightItem ? RGL_ITEM_AUTOHEIGHT_CLASSNAME : \"\"}`}\n        >\n          {/* 真正的子组件内容包裹在这个div中 */}\n          <div className={RGL_ITEM_WRAP_CONTAINER}>{child}</div>\n        </div>\n      );\n    });\n  }, [childrenArray]);\n\n  return (\n    <ResponsiveReactGridLayout\n      ref={rglContainerRef}\n      className={`yt-rgl-container ${className}`}\n      style={style}\n      layout={currentLayout}\n      cols={cols}\n      rowHeight={rowHeight}\n      containerPadding={[0, 0]}\n      margin={[gap, gap]}\n      autoSize={true}\n      isDroppable={false}\n      isDraggable={false}\n      isResizable={false}\n      resizeHandles={[]} // 强制置空, 否则会有右下角的内容\n      // measureBeforeMount={true}\n      allowOverlap={false} // 不允许叠放\n      preventCollision={false} // 需要换顺序\n      compactType=\"vertical\"\n      // onLayoutChange={handleLayoutChange}\n    >\n      {renderChildren}\n    </ResponsiveReactGridLayout>\n  );\n};\n\nexport default YtRglContainer;\n"],"names":["e","require$$0","process","React","ReactDebugCurrentFrame","location","config","self","defaultProps","propTypes","jsxRuntimeModule","require$$1","forwardRef","jsx","Button","Text","Typography","Fragment","Link","jsxs","Progress","Tag","dayjs","label","index","error","Space","PaperClipOutlined","Modal","useState","useMemo","useEffect","Image","EyeOutlined","Avatar","_","isFunction","createContext","useCallback","useRef","isBrowser","useEffectWithTarget","ResizeObserverController","observers","ResizeObservation","ResizeObserverEntry","ResizeObserverSPI","ResizeObserver","useContext","Checkbox","Tooltip","VerticalAlignTopOutlined","UndoOutlined","VerticalAlignBottomOutlined","MenuOutlined","SettingOutlined","React.useState","React.useMemo","React.useEffect","Dropdown","InfoCircleFilled","YtTable","Table","classNames","parseValue","module","last","EventEmitter","events","isNumber","isString","debounce","Cell","Children","isNil","Block","cloneElement","useImperativeHandle","Form","Select","Input","DeleteOutlined","CopyOutlined","WarningOutlined","Context","memo","YtAmountInput","value","InputNumber","CURRENCY_MAP","YtCurrencySelect","props","cx","classnames","this","t","n","r","u","i","a","s","has","set","get","OriginalSleleton","Slider","Component","OriginalTabs","OriginalUpload","message","token","components","decode","decodeComponent","queryString","qs","flowAction","dialog","closeDialog","request","link","reset","submit","jsAction","isPlainObject","actionMap","getActionItem","position","disabled","action","UICard","TimePicker","SourceAmountInput","option","SourceCurrencySelect","Radio","DatePicker","options","Cascader","Switch","Spin","TreeSelect","Transfer","Rate","SwapRightOutlined","Upload","InboxOutlined","Drawer","Grid","Col","Row","DownOutlined","UpOutlined","isValidElement","QuestionCircleOutlined","ConfigProvider","UIYtLayoutSection","UIYtLayoutBlock","OriginalModal","locale","o","defineProperty","_objectSpread","CalendarLocale","TimePickerLocale","Pagination","Calendar","theme","Breadcrumb","children","zhCN","util","objectUtil","defaultErrorMap","errorUtil","errorMap","ctx","result","issues","elements","processed","ZodFirstPartyTypeKind","z.object","z.number","z.array","z.any","validationResult","SourceYtTable","global","exports","cache","areArraysEqual","areDatesEqual","areMapsEqual","areObjectsEqual","areRegExpsEqual","areSetsEqual","clsxModule","fastRGLPropsEqual","utils","require$$2","compactType","collides","log","noop","getPrefix_1","getPrefix","log_1","DraggableCore_1","require$$3","require$$4","require$$5","require$$6","_defineProperty","DraggableCore","require$$7","require$$8","Draggable","cjsModule","ownKeys","Resizable_1","_getRequireWildcardCache","nodeInterop","_setPrototypeOf","p","Resizable","ResizableBox_1","ResizableBox","reactResizableModule","GridItem_1","GridItem","ReactGridLayout_1","ReactGridLayout","l","ResponsiveReactGridLayout_1","ResponsiveReactGridLayout","WidthProvider_1","node","WidthProvider"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,7,15,19,20,21,22,23,24,25,26,27,28,29,45,46,47,48,49,50,51,52,53,54,55,56,57,69,72,98,99,115,116,117,118,168,169,170,171,172,173,174,175,176,177,178,180,181,182,183,184,185,186,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215]}